We all remember the aur malware attacks, right? Thankfully I wasn't affected, but it made me want to get away from arch. At a similiar time I had heard about nixos, here is what it promised
- The stability of debian with the rolling updates of arch
- Easily reproducable on other devices
- Safe from malware attacks unlike the aur
Only one of these ended up being true for me
The thinkpad
The first place I installed nixos was my thinkpad, after fighting with the installer (turns out it doesn't support ventoy).
After installing the os, I installed a few basic programs, and then started trying to configure them, I had a few minor problems setting up home manager but I don't remember exactly what they were.
Next, I wanted to try niri (i didn't feel like rewriting my hyprland configuration in lua, and it doesn't help that the lead developer is a chud). but it didn't have native nixlang configuration - so I set up flakes and used a flake that provides it (surely this won't cause any problems later)
Doing it for real
After about 2 weeks of using nixos on the thinkpad, I installed it on my main pc and nixos broke its first promise.
"Easily reproducable on other devices": For some reason, nix really cares about the hostname of the device, so when I wanted a different hostname to differentiate the devices, I needed to change the config file, meaning I threw away the possibility of running both devices from one config file. This also made me give up using git to version control the config (which nixos really should do by itself, considering it already stores the old versions of a lot of stuff, but it doesn't).
After the initial struggles, it worked fine for a while, although a bit more tedious than I was used to with arch. take the example of installing an app.
Arch
$ pacseek search the name of the program, briefly look at the pkgbuild and hit enter to install it
Nixos
Go to the nixpkgs website, search for the name of the package, open the terminal, cd /etc/nixos sudo -e configurarion.nix, search for systemPackages and add the package name to the list. :wq then sudo nixos-rebuild switch
By the time it finishes rebuilding, it takes a few minutes, compared to 30 seconds on arch
Fast forward a bit and nixos breaks its next promise.
"The stability of debian with the rolling updates of arch": This made me realise that the 5 minute installation process was the best case scenario
When I installed signal, I logged in and got told. I needed to update, no problem, sudo nix flake update && sudo nixos-rebuild switch. then I got hit with an error about a deprecated version of libdisplay-info, so naturally I grepped /etc/nixos for libdisplay-info, and found nothing.
After a bit of searching I found that the problem was because that niri flake was no longer being maintained, and that broke my whole system's configuration.
The final straw was summed up pretty well by a wafrn post I saw at a similiar time.
"Nixos has 3 ways to do everything, 2 of them are deprecated and the other has been in beta for 7 years".
For whatever reason, my configuration for my computer fans was reset (it initially persisted when I installed nixos), so my computer started overheating.
So I installed rog-control-center to fix it.
$ rog-control-centre: "service asusd is not running", "easy fix" I thought. $ sudo systemctl start asusd.
But asusd.service didn't exist. So despite being able to install it without any problems, the way I installed it (adding it to environment.systemPackages) was wrong and I had to instead use programs.asusctl.enable=true
Just to add to the confusion (and prove that post right), some things need to be installed through flakes, which are still technically in beta.
To conclude, the only promise nixos kept was not giving me malware, but any OS can do that if you verify that what you are installing is safe. So I installed cachyOS - Arch may not be perfect, but I prefer it over Nixos