Two years on NixOS

July 9, 2023

Yet another year has passed since I switched to NixOS as my main desktop system. Time to look back and see how it went (2022 instance).

System maintenance

I did not have any problems related to package build failures for any amount of time on nixos-unstable. Probably because I did a bit of testing when changes were in staging.

I had to deal with a few fallouts around configuration changes related to upgrades:

All 3 were easy to track down and fix. It’s a bit more maintenance than last year’s but still manageable.

Community support

NixOS community remains to be a friendly place that welcomes newcomers, experiments and day-to-day maintenance work. I have not seen instances of large conflicts or abusive behaviours towards anyone.

I had a few chances to interact with wider community by attempting larger-scale nixpkgs changes: I succeeded on one change and failed on another change.

More successful change was enabling parallel installs by default. It’s a good example of a small change with small impact that touches most packages. I managed to speed up quite a few slow-to-install packages without major regressions. We have 32 nixpkgs packages marked with enableParallelInstalling = false. The rest should install in parallel (as long as a package builds in parallel).

Less successful change was the initially minor bootstrap process change. It’s a good example of a medium change with some impact on most packages. I successfully pushed a few small cleanups but ended up reverting larger changes. Those exposed bugs either in changes themselves (gcc bootstrap is hard) or on incorrect assumptions of downstream packages. This change is also very hard to communicate: people tend to dismiss finer details of the change and don’t see the reason for a particular change. Maybe I’ll try again next year :) In any case I learned a lot in the process!

I follow Matrix channels even less than I did last year as I focus a bit more on personal and select nixpkgs projects.

Maintenance model

I think nixpkgs maintenance model still holds today. There are RFCs like RFC127 to label problematic packages in a more fine-grained form than just ok/broken. Most updates are still done by a robot auto-updater.

Looking at commit activity nixpkgs gets about 1000 commits a week. That’s a lot.

Home server experience

Don’t have anything to complain about here. The server required zero maintenance from me this year as well.

The only thing I changed was the switch from nixos-unstable to direct master branch from nixpkgs to get upstream kernel upgrades slightly faster at the expense of local kernel build.

Fun fact: when I had a cooling failure on my main desktop system I switched to home server as my main machine. It took a few config lines to turn a headless machine to wayland desktop (and then back a week later when repair finished). As it’s an old machine I noticed how some builds are slower than they ought to be. This prompted me to work on parallel installs.

Local experiments

I switched my machine configurations to flake-based configuration to have configuration update history in a single /etc/nixos git repository.

While at it I also switched my desktop from nixos-unstable channel directly to master branch to get latest kernels and firefox as soon as they are available. This means a bit of local compiling from time to time.

I switched from i3+x11 to wayland+sway as my main desktop window manager. This exposed minor bugs in waypipe and even wine!

Parting words

NixOS still works fine for me. Compared to last year I was able to do larger projects within NixOS community (bootstrap, parallel builds, closure shrinking, large package updates, …) and outside NixOS community (gcc, wayland, xmms2, ski, …).

Give it a go if you did not yet :)