Some years ago I moved to using a relatively new kid on the Linux distribution block - NixOS. The distribution sounded like it offered a lot of promise: ease of repeatable configuration paired with the ability to always roll back to a previous version in the event of problems. I installed NixOS and was fairly happy, despite the steep learning curve. In October this year I moved away from NixOS and in this post I explain why I moved and what I'll miss.
NixOS: the good
Part of the joy of NixOS is how the entire environment can be declared in a configuration file. You specify the programs you want installed, any firewall settings, network information, user details and tell Nix, a powerful scripting language and tool, to build the environment based on that file. A fantastic advantage of this is the ability to use the same configuration file on multiple devices and produce identical environments.
There's a very good resource for searching NixOS options and a similar one for NixOS packages although it's worth noting the packages search only looks for free packages and not commercial ones. There's a lot of documentation for NixOS but I didn't find it entirely beginner friendly. What is friendly though is the NixOS IRC channel on Freenode, and I received a lot of support from users there.
NixOS containers are really useful too. You create a new one via
nixos-container and then adjust its configuration file based on your needs. Configuration syntax is the same as the main NixOS system so you can directly transfer your knowledge. I had containers for each of my development projects meaning I could avoid running a web server on my host machine. I don't know how to use Docker and NixOS containers saved me some time in that regard.
By far my favourite feature was the ability to switch back to an older system state. I've been bitten before by a system update breaking my environment, and lost two days because I didn't have an Internet connection to allow me to fix the problem. NixOS meant I never had to worry about that again and I happily ran with the unstable (testing) channel of NixOS knowing I could always flick back to something that worked.
Sadly I was increasingly finding things that didn't work in NixOS, with no fix in sight. For example, optical media burning software Brasero simply wouldn't work, citing permissions. All the permissions were correct though. Running as a different user (e.g.
root) would result in icons with no text, making the program unusable. There were problems with downloaded programs too, like the Linux versions of TeamViewer and Zoom for which NixOS would just give errors in a terminal when running. Seemingly the fix would have been to re-write their scripts but I couldn't be doing that all the time. I also found that Steam was no longer able to show me my games library and I couldn't use the Steam community. Looking at the logs the NixOS environment was broken (GLib I think, can't remember) so Steam couldn't use these features.
I did contemplate reporting this as a bug but then I checked the state of the Nixpkgs repository on Github to find there were so many issues logged that this wasn't likely to be fixed any time soon. As I write this that repository has 4.4 thousand issues logged and 2.6 thousand open pull requests (PR). For a while I'd been listed as a maintainer for a few packages in NixOS and I'd seen the plea for maintainers to test and comment on PRs - seems there's too few volunteers. I fully appreciate that by leaving NixOS I contribute to the problem, but at the moment I just don't have the time.
NixOS was also a very niche operating system. Asking for help with my Ubikey FIDO U2F in the Ubikey IRC channel pretty much got a response of "hahaha, NixOS, good luck!" and while the NixOS community itself was good at providing support it still suffered the issue of not enough volunteers. Ultimately I need my system to work out of the box or I need to be able to find proven solutions online. Unfortunately this meant it was time to move.
Moving, but to where?
For this move I decided I'd try to match my good friend Andee's Linux distro, as he'd been extoling the benefits and had had no problems. Andee's currently running Manjaro so I figured I'd head there.
My first impressions were positive. The boot menu allowed me to set my keymap (UK Dvorak), timezone, language (British English) and a host of other options. A nice touch, ensuring the live / installer environment was localised how I wanted it. Regrettably after attempting to install Manjaro a whopping six times I never had a bootable system at the end of it. Various errors presented (rarely the same) and I gave up. Andee, meanwhile, was dumbfounded - his experience was so different to mine.
I considered my options, and let's face it there's a lot of distributions out there. Previously I've used Debian, Gentoo, Sabayon, Ubuntu, Mint and left each of those for various reasons. Debian was out as the packages tend to lag behind. Gentoo was out because I didn't want to compile everything every time. Eventually I settled on Ubuntu, an OS I'd previously abandoned as I was having to fix PulseAudio from a terminal while their head honcho was on the news saying "with this release you'll never need to use a terminal again". Ahem.
I got Ubuntu up and running on my laptop and started to install my applications (I'm going to miss just building the system from config file). Each one worked straight away, as did Steam. Pretty much all my applications picked up my settings from my existing user profile too so all in all that was fairly painless. I've even done the 20.04 Long Term Support --> 20.10 release upgrade since with no issues.
Curiously I've had a number of app crashes in Ubuntu too, mainly the crash reporter, so I'm not sure what's happening there. On the plus side nothing has stopped me actually working or using the computer though so I'm not too worried.
Next on my list is learning Docker so I can get my containers back. Docker's going to be useful in the long run, so I really don't mind. Hopefully my environment will be nice and stable for a good while to come.
 That's "free as in speech, not free as in beer" - open source