Editor’s note: I forgot about this draft article I started in early 2024, but re-discovered my handwritten notes while rummaging through my drawers in July 2025. I have decided to write them up in August. I’ll publish an updated piece soon™.
Like a lot of people with seemingly too much time on their hands, I decided to try out NixOS. You can find my new configuration here.
But why?
- The idea of declarative system configuration intrigued me.
- My existing openSUSE Tumbleweed install needed redoing1, so I might as well try something new.
- Multiple respected colleagues of mine run NixOS and can not stop talking about it.
- Procrastination: I have a bunch of exams coming up, and I wanted something to take my mind of them for a day.
How it went
Initial Porting
This was remarkably painless. I started out taking note of all installed packages,
by running zypper se -i
and manually filtering the output.
I then installed NixOS through the installer, after which I one-by-one added the packages
noted earlier. After only an afternoon my system was useable again.
Configuring and Tweaking the rest
Over the next couple of days, I transitioned to a flake-based setup and added home-manager. This took much longer than getting the base system set up, but it was fun.
Impressions
What I like so far
- All updates in one place: I don’t need to update e.g. python packages or neovim plugins manually
- Ease of experimentation: I can quickly try out a new desktop or tool, then revert to my working setup.
What is not so great
- Nix Expression Language: the syntax is weird, fight me
- Not reproducible: Even though I could rebuild the same set of installed packages, so much of desktop configuration is imperative that it would still take me a while, to e.g. configure mouse settings, wallpapers, themes, etc. I may have to look at managing these things through home-manager in future, but then again, I am using KDE instead of my beloved i3, because I can’t be bothered to configure everything through text files right now, especially because of the next point.
- Slow: Nix evaluations regularly take more than 20s, which is way slower than modifying config files directly, making iterating on my config painful.
- Software compatibility: I have never run into so many workarounds/nix specific ways of running (proprietary) software, like Mathematica, Da Vinci Resolve, or even just Sublime Text. Luckily the community seems quite active, and I have managed to get everything I wanted working, but using nix-ld or random flakes from GitHub is not exactly user-friendly.
Conclusion
I don’t dislike NixOS so far, and I plan on sticking with it for the foreseeable future. Who knows, maybe it’ll finally put a stop to my distro hopping.
While switching to the KDE Plasma 6 beta, I messed up the manual package conflict resolution badly. Unfortunately, I did not have a recent but working snapper snapshot anymore. ↩︎