The big thing is undoing: if I want to uninstall something, I delete it from the text file and rerun my nix init. I also just decided to get more serious about having all my aliases and shell functions in source control, but then I need to be able to guarantee that I have my little dependencies like fzf, jq, fd, etc. Another option for those is to write the shell functions in nix-script so that they require their command line utilities when run for the first time. The other reason is that it makes me more disciplined about per-project dependencies. I use nix flakes for all my little projects too, so I end up with a project owning its npm or rails installs and database binary and database data and… you get the idea. It takes like 20 more minutes to get coding on something if I set it up that way but I let the LLMs handle that part. It's not quite "make the AI do the dishes while I make art" but it's pretty close!
I've poked around articles and other posts about this, but I'm not sure I quite get it.
If I just need to install packages, would brew just work for me?
I have a collection of bash scripts in my dotfiles for setting things up, and I've been meaning to adapt them for my linux laptop. It seems like Nix may be helpful here!