NixOS is for people who have accidentally uninstalled 90% of their system because they didn’t pay attention to what other packages depend on the thing they were uninstalling and were desperately looking for a an undo button.
I'm still a Linux noob all things considered, and I've been using NixOS for six months or more.
It is HARD, but I see the true value of it. I will never need to reinstall Linux because I broke it, that's simply impossible.
If I ever need to migrate my system, it's all backed up to github. With a single
Bash update.sh
every single .config file backed up, system upgraded, all packages updated.
I just love Nix, it's the perfect OS for me.
Now I just need to learn how to use flakes...
Sidebar: I've never asked before, but maybe someone can help me out. If I install a flake of an application, am I supposed to add it to the existing flake, or can I modulate flakes?
I've noticed when installing the nixvim flake it generates a new flake and it runs when I issue the
nix run ~/.dotfiles/nixvim/flake.nix
command, but I don't want to have to run that command every time. I feel like making a fish abbreviation isn't the correct way of doing this.
So I've only been using nix about a year and only used flakes. I use in two ways.
First, I have my main nix flake. Most everything is controlled from that. It has several outputs from full blown nixos builds per host or some home manager builds for non-nixos systems.
Third-party flakes I use as inputs to my own flake then use the override system to inject them into nixpkgs. Then I just install whatever like normal from nixpkgs. I can either override an existing pkg (neovim nightly replaces regular neovim for me), or you can just add as a new package to nixpkgs by using a different attribute name.
Second way is for projects with their own repo. I'll add a project flake that has a devshell with direnv so as soon as I enter that directory it sets up a sort of virtual environment just for that project. You can add outputs to it so others can use as a third-party flake.