Peter Bohner

My Adventures in NixOS

- 488 words

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?

  1. The idea of declarative system configuration intrigued me.
  2. My existing openSUSE Tumbleweed install needed redoing1, so I might as well try something new.
  3. Multiple respected colleagues of mine run NixOS and can not stop talking about it.
  4. 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

  1. All updates in one place: I don’t need to update e.g. python packages or neovim plugins manually
  2. Ease of experimentation: I can quickly try out a new desktop or tool, then revert to my working setup.

What is not so great

  1. Nix Expression Language: the syntax is weird, fight me
  2. 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.
  3. Slow: Nix evaluations regularly take more than 20s, which is way slower than modifying config files directly, making iterating on my config painful.
  4. 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.


  1. 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. ↩︎