a few people in the replies are asking why someone might want to use nix as an OS / to manage your python packages / to manage your config files.
does anyone want to share their reasons for doing those things? I don't really know.
(please give examples of some specific problems Nix solves for you and what you like about it, don't just say "it's reproducible/declarative” :) )
@b0rk so I've been thinking about this for a little bit, and it's still kinda unformed, but I think the main reason is *emotional* rather than technical.
For my macOS computers, I have 1.6k lines of setup script. It tries to do everything -- configure preferences, set up the dock, use bitwarden's CLI to generate the passwords for GPG keys, which it adds to GitHub and the keychain without interaction, etc. This has not saved me time, I have only ever used it on two computers. But it gives a feeling of safety. For the most part, I could wipe this laptop and the setup wouldn't be terrible.
I've been using NixOS for a month or so for a similar promise. If the server falls over, I don't really have to remember what I did. (Okay well this tool I think needed certain ports open, and then that tool needed to be told about the port... and how did I even install it in the first place?) In that way, it feels less precarious. (In other ways, more, due to the instability of the nix ecosystem.)
I always kind of feel like computers I manage are only fine right now by the grace of god, and any update could break them, or *I* could break them and then forget how to get back to where I was. Changes in NixOS feel both more and less permanent. More in that I've succeeded in pinning down an aspect of the system so that it can't wiggle away, and less in that because everything is version controlled, I can experiment however I want and always be able to go back.
As for specific problems solved: the *arr stack has community written configuration for something called quality profiles. This is synced from the community to the software using a tool called recyclarr. Recyclarr needs to be run regularly, so I made a systemd unit. It also needs a config file, which it expects to be in one of several places. Unfortunately no matter where it is (/etc), it expects a second config file with secrets to be in a ~/.config/ directory. This took me a little while to figure out. Now I can say the problem is solved. Everything is written down exactly as it should be, and I can even keep the secrets in the git repo, which get decrypted by the server's keys. I don't have to remember where I put any of the files, or remember that I need to write the systemd unit if I'm reinstalling or helping someone else get set up. I can change the files by editing my nixos config instead of going "wait I thought the secrets were over here, where are they??" The existing solution for solving this uses containers for all the parts of the system, which I try to avoid when possible.