Nix(OS) Sucks
I have been using NixOS since — according to the date of the earliest commit in my dotfiles repository — September 8th, 2023. I started by using a barebones configuration.nix and a decent enough rice. I eventually switched to using flakes by forking ZaneyOS, then, a few months later, scrapping it and writing my own flake.
Nix is a: reproducible and declarative Linux distribution (NixOS), package manager (the package repository is called Nixpkgs), and language (Nix). This means that with Nix/NixOS/Nixpkgs:
- Replicate your configuration on one machine to any other machine.
- In Nix, programs, settings, "dotfiles", and much more are all configured declaratively in a
.nix
file, as opposed to setting things up imperatively via commands in the CLI, leading to a much more consistent and easier to understand system configuration. - Access to the largest package repository on Earth — nixpkgs.1
- Portable; run Nix on any Linux distribution or even MacOS.
- Immutability.
- Easy to package programs if they aren't in nixpkgs.
- Easily try out new packages without installing them (e.g.
nix run nixpkgs#firefox
). - Nix uses binary caches so you rarely have to compile anything; it's also easy to set up your own binary cache up.
- Nix solves dependency hell. You can mix and match different versions of packages without any conflicts.
- Rollbacks are builtin and enabled by default. Did you break.. everything? Don't sweat it; restart your computer and boot into an older version of your configuration.
- And much more.
Fun, right? Now let me list the downsides!
- The documentation tends to suck. —On that note, here are some resources for beginners:
- Steep learning curve.2
- NixOS is very different from other Linux distributions. The problems you face will be niche, poorly documented, and you'll struggle. Things that work on Ubuntu won't work on Nix.
- Massive time sink.
- Refer to Hlissner's thoughts on NixOS.
Long live Nix(OS).