NixOS is not for the impatient. Maintaining your system configuration is an exercise in software development like any other - if you lack rigor or discipline, your codebase will become painful to work with. Nothing is ever one shell incantation away - it has to be carefully architected into the existing system.
That being said, once you get the hang of things, you reap amazing benefits:
- You can clone your system to any machine, and immediately have an identical environment
- You can share system configurations as code (declare the means for hosting a website in its repository, for example)
- You can use a fully-fledged programming language to configure any part of your system
- You can make use of an extensive ecosystem of easily composable, prebuilt NixOS modules
- You can seamlessly integrate with Nix, allowing for ephemeral development environments and shells with packages, eliminating much of the need for imperative package management
- Everything in a Nix-based system must be derived strictly from (lockfiled) inputs, making the reproducibility guarantees incredibly strong (barring any network errors or resources being taken down)
- The declarative nature of anything Nix-based means that every change is documented - your system never shifts from the source of truth, compared to other distros where discipline is required to maintain reproducibility
- Nix is so robust that you could even nuke your filesystems on every log out, if you'd like
The fact that such articles appear shows an untold problem of NixOS which is: complexity.
I've been a programmer and Linux user for many years, I know a lot of terminology behind it and I think it's a lot less of a problem for me to read technical documentation than for the average user. When I heard about NixOS I thought: "how awesome, it solves some of the problems that I have". But then I started to read official docs and dig into all of it and got quickly discouraged. It might solve "some of my problems" but at a time cost that I just couldn't afford. Well, maybe it's just not for me...
AFAICT, you can get much of the benefit in a polished package without the pain by using Fedora Silverblue/Kinoite/Sericea for the OS and then creating dev sandboxes using either Fedora's toolbox or by harnessing the incredible Nix ecosystem using JetPack's devbox.
I haven't tried that combination. I'm currently using NixOS and loving part of it, but am bleeding on the sharp edges.
> There was a time when the idea of spending an afternoon typing cryptsetup incantations into a terminal would have been appealing.
Oddly enough, I use NixOS as a network-disabled USB live image for handling my Yubikey, SSH, and GNUPG setup. I'm bashing cryptsetup all the time!
> I don’t use distros that lack a graphical installer (running fdisk is frankly beneath my dignity)
Ironically, I couldn't get the 22.11 graphical installer to work. I had to drop down to an Arch style install (which was fine).
My biggest complaint with NixOS is the pain of trying to run things that weren't built in nix (like Minecraft, or some other binary-only tool). I end up creating a podman image to run some of these things. I'm sure I could also create a derivation for them, but haven't bothered running down that rabbit hole yet.
If you're a programmer, Nix is awesome. But I don't think it's for the masses.
Random question, and yes, I’ll google it and ask GPT-4 or Bing (lol) but does anyone here know if it would be possible to run NixOS within WSL2 on a Windows 11 machine without having to dual boot and stuff? That would be incredibly useful for dev work.
Right now I’m using Ubuntu, and it’s awesome, with the obvious caveats, but I am Nix-curious for quite a while and would love to give it a spin in that way if it were reasonably doable. Especially to help friends who are less technical easily install all of the things, it could be a game changer.
nixos for the REALLY impatient:
its a giant pile of symlinks
great *not bot btw