I made the switch around this time last year and haven't looked back. A few things have taken a bit of effort to figure out, but largely it has been a breeze. I should've done this many years earlier.

you are viewing a single comment's thread
view the rest of the comments
[–] 2 points 8 hours ago (1 child)

nixos is one I hear people talking about positively but don't know much on. What's so great about it? And is it a niche distro for certain users (the subset who like to tinker with their machines?) or is it good for general use?

  • source
  • parent
  • hideshow 1 child comment
  • [–] 1 point 8 hours ago

    The short version is it makes your whole system deterministic and auditable, and that does some automatic stuff that is very nice.

    Basically you write a configuration for your computer, then it generates atomic images from your config and manages your system for you. You update by generating then switching to the new snapshot. If anything goes wrong, you roll back, and your system is exactly as it was.

    The whole system lives as code, it’s tied to git, and up to hardware specific things, I can checkout the exact same system across machines.

    This is really great for people like me who dislike having to manage long term state like a grub config change or managing firewall rules or fiddling with committing systemd changes and managing them directly.

    The packages are very well thought out.

    For example if you add a systemd service it has rules for starting and stopping and the system is smart enough to know when to use them. That makes things like updating a server really nice, it’s just one command and everything is done for you, anything not affected by an update doesn’t restart, so services run smoothly (I have one config that manages all my services, their URL, firewall rules and healthcheck, and automatically adds them to a system monitoring dashboard for example).

    As another example I can manage accounts on my system very easily, and I can clean them up by just removing that user from the nix files, and the system will do all the Linux user management stuff for me. This is great on a server where you want limited permissions users running specific applications — I just define what they should have and it works.

    That has costs. Everything has to be thought of as either a system package or a user package, updating system packages is always a snapshot change with lock file update. You’re also locked into using nix packages which can lag releases (though this is most package managers).

    Your average Arch Linux user probably doesn’t care or like this, they like the full control and flexibility Arch provides (which is just different tastes/philosophies).

    You can install user local applications too outside of your main nix configuration (with something like homebrew, which works great on nix), or you can use home-manager to add more nix and manage your apps and generate user account dot files files.

    You can also use nix-env to create reproducible software builds without containers, but I find it a little heavy to manage and haven’t learned it.

  • source
  • parent