I used to daily drive NixOS, but got overly frustrated with fighting with nvidia drivers, wayland, and portals. I had modularized both the system configuration and home configurations which made customizing different hosts really easy. This is a huge selling point of NixOS. However, getting to that point was and still is a very painful process. It’s probably cliche at this point, but the documentation is still lacking greatly. Also, you cannot reliably look at old message boards and use other peoples’ solutions since Nix configuration options themselves are still evolving. This means that, even if other NixOS users have solved a problem, their solution is not guaranteed to work for you.
If configuration and tools start to standardize and documentation improves, I’d 100% consider going back. Unfortunately, it’s not there yet for me as both a software engineer and gamer.
Ultimately, I want an OS I can easily setup on any machine I have and be up and running within minutes. NixOS got me most of the way there, but I got sick of troubleshooting/debugging my configuration and just wanted to use my computer.
Alternatively, after first installing Silverblue and understanding the philosophy behind it, things just made sense and, more importantly, worked. Personally, working with atomic desktops comes more naturally to me than what NixOS is doing with reproducibility. Also, after rebasing to Bazzite-nvidia, Steam and Lutris just worked (although nvidia + wayland is still wonky on the current release). Essentially, this lets me stand on the shoulder of the giants who figured out the nitty gritty / lower level pieces of system configuration this I frankly have no interest in like nvidia drivers.
Contrast this with my NixOS experience with nvidia + wayland where I had to scour various message boards for potential solutions after even doing everything the official documentation suggested failed to work. Further, I was forced to research topics that, again, I have no interest in like xdg-desktop-portal and figure out how to make sure I had the right ones installed and didn’t conflict with others that got installed by default if you happened to as have Gnome installed as part of your configuration. Many of these sorts of configuration/package conflicts are undocumented, and the error messages felt like gibberish to me. These hidden footguns made the experience that much more difficult and frustrating.
After writing this out, one way I think I could describe the difference between atomic desktops and reproducible desktops is the following:
Silverblue/Bazzite let’s me think more about higher level concepts of my configuration without the need to worry about configuring lower level parts of my system like nvidia drivers and portals. On the other hand, NixOS forced me to care about everything: both high and low level. I feel like this is fantastic for Cloud Engineers who need to deploy to a variety of different hosts and have everything configured to a tee. However, I just want to use my machine for personal projects and some games without much faffing around.
Bonus note: I am using the Nix package manager on my Bazzite install and feel like I’m getting the best of both worlds. Well, I do have an outstanding issue installing certain packages but its not stopping me from actually using my machine. I would highly recommend the combo.