Latest posts
- Coding Agent VMs on NixOS with microvm.nixFeb 01, 2026
I have come to appreciate coding agents to be valuable tools for working with computer program code in any capacity, such as learning about any program’s architecture, diagnosing bugs or developing proofs of concept. Depending on the use-case, reviewing each command the agent wants to run can get tedious and time-consuming very quickly. To safely run a coding agent without review, I wanted a Virtu
- Can I finally start using Wayland in 2026?Jan 04, 2026
Wayland is the successor to the X server (X11, Xorg) to implement the graphics stack on Linux. The Wayland project was actually started in 2008, a year before I created the i3 tiling window manager for X11 in 2009 — but for the last 18 years (!), Wayland was never usable on my computers. I don’t want to be stuck on deprecated software, so I try to start using Wayland each year, and this articles o
- Self-hosting my photos with ImmichNov 29, 2025
For every cloud service I use, I want to have a local copy of my data for backup purposes and independence. Unfortunately, the gphotos-sync tool stopped working in March 2025 when Google restricted the OAuth scopes, so I needed an alternative for my existing Google Photos setup. In this post, I describe how I have set up Immich, a self-hostable photo manager. Here is the end result: a few (live) p
- My impressions of the MacBook Pro M4Oct 31, 2025
I have been using a MacBook Pro M4 as my portable computer for the last half a year and wanted to share a few short impressions. As always, I am not a professional laptop reviewer, so in this article you won’t find benchmarks, just subjective thoughts! Back in 2021, I wrote about the MacBook Air M1, which was the first computer I used that contained Apple’s own ARM-based CPU. Having a silent lapto
- NixCon 2025 Trip Report 🐝Sep 21, 2025
I liked the NixOS meetup earlier this year, and at the end of the meetup they told everyone about NixCon 2025, which would be happening in Switzerland this year, at the very same location, the University Of Applied Sciences OST in Rapperswil, so I decided to go! In this trip report, I want to give you a rough impression of how I experienced this awesome conference :) The bee in the title is a NixC
- Bye Intel, hi AMD! I’m done after 2 dead IntelsSep 07, 2025
The Intel 285K CPU in my high-end 2025 Linux PC died again! 😡 Notably, this was the replacement CPU for the original 285K that died in March, and after reading through the reviews of Intel CPUs on my electronics store of choice, many of which (!) mention CPU replacements, I am getting the impression that Intel’s current CPUs just are not stable 😞. Therefore, I am giving up on Intel for the comin
- Secret Management on NixOS with sops-nixAug 24, 2025
Passwords and secrets like cryptographic key files are everywhere in computing. When configuring a Linux system, sooner or later you will need to put a password somewhere — for example, when I migrated my existing Linux Network Storage (NAS) setup to NixOS, I needed to specify the desired Samba passwords in my NixOS config (or manage them manually, outside of NixOS). For personal computers, this i
- Development shells with Nix: four quick examplesJul 27, 2025
I wanted to use GoCV for one of my projects (to find and extract paper documents from within a larger scan), without permanently having OpenCV on my system. This seemed like a good example use-case to demonstrate a couple of Nix commands I like to use, covering quick interactive one-off dev shells to fully declarative, hermetic, reproducible, shareable dev shells. Notably, you don’t need to use Ni
- Migrating my NAS from CoreOS/Flatcar Linux to NixOSJul 13, 2025
In this article, I want to show how to migrate an existing Linux server to NixOS — in my case the CoreOS/Flatcar Linux installation on my Network Attached Storage (NAS) PC. I will show in detail how the previous CoreOS setup looked like (lots of systemd units starting Docker containers), how I migrated it into an intermediate state (using Docker on NixOS) just to get things going, and finally how
- How I like to install NixOS (declaratively)Jun 01, 2025
For one of my network storage PC builds, I was looking for an alternative to Flatcar Container Linux and tried out NixOS again (after an almost 10 year break). There are many ways to install NixOS, and in this article I will outline how I like to install NixOS on physical hardware or virtual machines: over the network and fully declaratively. Introduction: Declarative? The term declarative means t
- My 2025 high-end Linux PC 🐧May 15, 2025
Update (2025-09-07): The replacement CPU also died and I have given up on Intel. See Bye Intel, hi AMD! for more details on the AMD 9950X3D. Turns out my previous attempt at this build had a faulty CPU! With the CPU replaced, the machine now is stable and fast! 🚀 In this article, I’ll go into a lot more detail about the component selection, but in a nutshell, I picked an Intel 285K CPU for low id
- In praise of grobi for auto-configuring X11 monitorsMay 10, 2025
I have recently started using the grobi program by Alexander Neumann again and was delighted to discover that it makes using my fiddly (but wonderful) Dell 32-inch 8K monitor (UP3218K) monitor much more convenient — I get a signal more quickly than with my previous, sleep-based approach. Previously, when my PC woke up from suspend-to-RAM, there were two scenarios: The monitor was connected. My sle
- Intel 9 285K on ASUS Z890: not stable!Mar 19, 2025
Update (2025-05-15): Turns out the CPU was faulty! See My 2025 high-end Linux PC for a new article on this build, now with a working CPU. Update (2025-09-07): The replacement CPU also died and I have given up on Intel. See Bye Intel, hi AMD! for more details on the AMD 9950X3D. In January I ordered the components for a new PC and expected that I would publish a successor to my 2022 high-end Linux
- Tips to debug hanging Go programsFeb 27, 2025
I was helping someone get my gokrazy/rsync implementation set up to synchronize RPKI data (used for securing BGP routing infrastructure), when we discovered that with the right invocation, my rsync receiver would just hang indefinitely. This was a quick problem to solve, but in the process, I realized that I should probably write down a few Go debugging tips I have come to appreciate over the year
- Go Protobuf: The new Opaque APIDec 21, 2024
I originally published this post in the Go blog, but am publishing this copy of it in my own blog as well for readers who don’t follow the Go blog. [Protocol Buffers (Protobuf) is Google’s language-neutral data interchange format. See protobuf.dev.] Back in March 2020, we released a major overhaul of the Go Protobuf API. The google.golang.org/protobuf package introduced first-class support for ref