Which is both good, and actually sane.
NixOS: Exists. (And runs great after I moved from Arch 1.5 years ago!)
Which is both good, and actually sane.
NixOS: Exists. (And runs great after I moved from Arch 1.5 years ago!)
I found this to be 100% correct. You feel like you won’t ever need to distro-hop again, right? Like this is the penultimate Linux distro? Right?
Since NixOS's rough edges can be quite rough, perhaps 'penultimate' may be more apt. (I mean, when NixOS works well, then it is amazing; but if you hit some use case where NixOS is difficult to use, then it requires more effort/understanding to get through).
1. Use flakes to set up your system and do work with. It sometimes feels underdocumented, but it's worth some headscratching imo.
2. Don't worry about putting everything in the base system. Stick to services (Tailscale, Syncthing, etc) and system/base desktop software. It's easy enough to use nix run, or Podman, or flatpak, or even AppImage to a degree.
3. Want to configure something declaratively? Before pulling out HomeManager or another user tool, consider configuring software at the system level. I do this for Zsh, SwayWM, etc. As a bonus, you can easily block off shell startup files and chown them to root so that malware can't trivially insert themselves there. (It's a weak protection, but definitely doesn't hurt in addition to other approaches.)
There's more (I recommend using Nix-ld to support AppImage and raw binaries better) but these things go a long way.
Nix is basically the future of operating systems. The one problem that still needs solving, which is blocking wider adoption, is ease of use. People are working on making the command line tools easier, but what will really do it is something that abstracts away config generation with a UI installer and tools, but opens up the config if you go into "advanced mode" or something like that.
Helps to get some intuition on what fits where.