Is NixOS good? I tried it.

My new PC's warranty ended this month and I'm on vacation which is a perfect time to try out some distros. This week I went with NixOS, after seeing a post talking about it. Here are some notes I've taken while trying it.

Pros

Cons

Trying the system

I had a small bug where hovering over links didn't turn my cursor into a hand. It seems that changing the cursor to another one like Vanilla-VMZ fixes it. But what I like is Adwaita, the default cursor in Artix, where's Adwaita? Anyway, I put Capitaine cursor theme, which is the right size (Vanilla-VMZ was a big blurry cursor), and went on with my day.

My system froze after a sudo nixos-rebuild switch when trying to install Home Manager. Can't switch to TTY, absolutely frozen. After a reboot it worked all fine. Is it my disk?

I had some trouble installing Home Manager but mainly because I'm dumb. Apparently the "NixOS module" method didn't work or I was dumb (you'll see later why) and I tried the "Standalone installation" method which worked but I was trying to install zsh with the "Example Configuration" from the wiki without seeing the "Installation See Command Shell". You can tell my face when I found out why it was not working: I needed to set programs.zsh.enable = true in configuration.nix. Aaaaggghh!

To apply the zsh changes I had to restart X, which got me to a broken system (terminal didn't open). So I practiced my inner Brazilian by going into root in a tty and changing the "nologin" part in my user in /etc/passwd to zsh, and it all worked out! If it ain't broken don't fix it, right? Well not so fast, it resets with reboot, so we're back to square one...

I tried mounting an NTFS drive and it didn't work. Adding boot.supportedFilesystems = [ "ntfs" ]; as per the wiki and rebooting worked fine.

Onto X and Nvidia: To set my resolution correctly I used the nvidia-settings app which gave me a Xorg.conf file. So I put it into /etc/xorg.conf.d/01-video-settings.conf and it worked flawlessly

Sound surprisingly also worked flawlessly, just followed the instructions on the wiki for PipeWire. I also enabled hardware.enableAllFirmware and added boot.extraModprobeConfig = ''options snd-intel-dspcfg dsp_driver=1''; from suggestion from someone in the Web, not sure if they do something.

Two hours later I finally found out what was causing zsh to break: It was users.users.myuser.useDefaultShell which was set to false, for some reason. Finally fixed.

I used nix-shell to open pavucontrol which I didn't had installed to increase my sound. This feature is epic.

When copying and when the terminal sends a beep it makes a funny bubble noise! Please tell me how do I do this in Arch/tix!

I didn't know how to set up hibernate. No s2disk nor uswsusp in repos, no wiki page... Then I found out about systemctl hibernate, but it said I didn't have a swap partition set. NixOS didn't configure my swap partition that I said was a swap partition on installation. I quickly fixed it in cfdisk and runned mkswap and nixos-rebuild wasn't complaining, and htop was now showing 8GB of swap, but then systemd was complaining about resume not set. Which is weird, since I had resume set in my grub.cfg, and rebooting, to add the resume option into my kernel params, didn't fix systemd's complaint either. As a last hope, from suggestion of a redditor, I asked Mixtral/ChatGPT how to configure it. Initially it gave me some instructions for systemctl and gave me a broken boot.initrd.availableKernelModules, but later he suggested I could use pmutils, so I tried it via nix-shell and voila it worked! Thanks Mixtral. Didn't even need the availableKernelModules

Steam installed wonderfully but Clicker Heroes only crashed on startup. Tried many Proton versions, PROTON_USE_WINED3D=1, Proton-GE, asking Mixtral how to solve it, to no avail. Everyone on ProtonDB could run it, so it must be a problem with NixOS, right?

Note : Wrong. I'm in my new Artix right now, and it doesn't work here either with Proton 7 (it probably got fixed in Proton 8 as people reported it working on ProtonDB), so it's not a NixOS issue, it's the last Clicker Heroes update that broke things.

Native Hollow Knight booted properly, but had the same issue as my old Artix where it has huge delay. Proton Hollow Knight worked fine, could play and all, no lag at all.

I was looking at Servo and saw it's a one-file executable and tried running it, but then NixOS complained it's a dynamically linked executable. But I used steam-run as was advised in nix.dev/guides/faq and it worked fine.

I installed dnscrypt-proxy as per the wiki and used configFile to set my Anonymized DNS routes. Initially it was not working and I needed the log file to know what was wrong. The challenge: finding the log file. I put find to the work to try finding it and meanwhile I had the idea to look up journalctl. It logged there, and the problem was a missing bracket, so I put the bracket and everything was working. The log file? find didn't find anything. It will remain a mystery where the log file was located.

Setting up neocities-cli and python was as simple as putting the packages in environment.systemPackages, worked perfectly

I ended up with the root partition half full (from 40GB). Running nix-collect-garbage reduced that to 17GB used.

Final Verdict

I like it, but I don't like it. The configuration file and Home Manager are interesting but a complicated case, I would have a much easier time configurating the system the old way. It consumes a lot of space from root. Also ly and Clicker Heroes not working is a bummer. (Note : Again, Clicker Heroes doesn't work in Artix either, so it's not a NixOS thing.) But I love the nix-shell feature and the rollback feature seems nice, although i never got to use, and probably never would. Of course, maybe one week is too little to learn it all.