four years on NixOS
It’s another yearly instance of my NixOS journey
(2024 instance). I meant to
write it around 25.05 but completely forgot!
system maintenance
As usual I don’t remember what I did to my system over the past year,
so I’m at the git log for /etc/nixos as it contains all the changes:
- follow
hardware.opengl->hardware.graphicsrename - follow
hardware.opengl.driSupport{,32Bit}removal - follow rename of
gnome.adwaita-icon-theme - follow
hardware.pulseaudio->services.pulseaudiorename - follow
okular->kdePackages.okularrename - drop deprecated
i18n.supportedLocales - follow
networking.wireless.iwd.settings.General->networking.wireless.iwd.settings.DriverQuirksrename - follow
services.postfix.config->services.postfix.settings.mainrename - fix
services.postfix.settings.main.mynetworkstype (changed fromstringto array)
It is quite a bit more of renames than last year. I think locale changes actually broke my locales at runtime and I had to figure out what to change to get them back.
I did not have major package build failures that required any local changes.
This time I had the following non-trivial problems in upstream packages:
duperemovewould hang up onNoCOWfiles: https://github.com/markfasheh/duperemove/pull/376. I had to bisect the regression and fix it upstream. It was easy as I am somewhat familiar withduperemoveimplementation.nixstarted stripping too much ingcc-14warning logs: https://github.com/NixOS/nix/pull/13109. It came up afternixpkgsswitched togcc-14. Took some time to figure out what is so special aboutgccwarnings. Ended up being quite easy.perfstated to hang up on my system: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c21986d33d6beb269a35b38dcb8adaa5bd228527. It came up after I ran system-wide profiler to see whatwinedoes to use 100% CPU on an ancient game. THe fix was trivial once looked at. I don’t remember what changed to expose the hangups. Maybe I just never did it before? Ended up being easy as well.mpvstarted failing GPU rendering due tolibplacebo/shadercincompatibility: https://code.videolan.org/videolan/libplacebo/-/issues/335. Most arcane bug of all: had to bisect the whole system to find the package first, then had to bisect down to the commit. Upstream eventually fixed it. But ifnixpkgshad up-to-dateshadercwe would not stumble on this bug. The only non-trivial bug from the whole list.
Community support
I still feel that NixOS community is a welcoming place for newcomers,
experimenters and people who do grunt maintenance work. NixOS community
now had elected their first Steering Committee who can help resolving
high-level conflicts.
Some of the amusing things I did over the past year:
nixlanguage non-determinism insortbuilt-instdenvfix to handle root directories that start with dash (-): https://github.com/NixOS/nixpkgs/pull/317106.diffoscope-269release was a great stress test fornixpkgsbashcode :)- Found and fixed ~50 more eval failures in
nixpkgsfound by the hack. This hack was also the trigger that exposedsortnon-determinism above. - Fixed
nixpkgsisMachOhelper: https://github.com/NixOS/nixpkgs/pull/432097. Reading 4 bytes from the file in purebash. How hard could it be?
Just like last year I managed to get about 800 commits into nixpkgs
this year.
I stopped reading any Matrix channels completely and only skim through
discourse and read github notifications.
Home server experience
I did not have to adapt anything for the past year. Things still Just Work.
Local experiments
I switched to helix editor
and to chromium browser. Both were quite
smooth transitions.
I continued gcc testing. This year it was gcc-15 branch. nixpkgs
still manages to serve as a reasonable vehicle to
find bugs. Just like last year I
found about 50 compiler bugs. Did not manage to fix any myself.
Parting words
NixOS still works for me.
Give NixOS a go if you did not yet :)