It seems that there is a push or desire to have everything declared via nix and/or flakes. What I rarely see incorporated is 'git clone' or 'stow' for dotfile management. My simple question is: why not both? What is so wrong with using a 3rd party system as part of the deployment.
Let's say I want to fiddle with my vim/neovim .rc file. If I change it 10 times in the course of an hour, and run 'nixos rebuild switch' (did I get that right?) each time to set it, then I'm going to be spending a bunch of time/CPU cycles rebuilding world.
It seems to me a hybrid approach would work best.
-nix rebuild scratch for OS-level modifications
-git push/pull/clone for frequently modified files.
Nobody would ever suggest using the nix approach for storing their 'recipe folder'.
You don't actually need to rebuild the world, just the part that changed. It's rare to have other nix derivations depend on the dotfiles directly, so changes don't "cascade" to the rest of the system. I just timed how long it takes to rebuild my system after changing my neovim config and it's ~30 seconds. Which sounds like a lot compared to the zero seconds it takes to edit the config without nix, but it's fast enough that I personally don't mind.
Some people do use nix just for their system config and manage their dotfiles separately, but for me it's simpler to just have one system that installs the software I want and configures it the way I like it, rather than two things I'd need to keep in sync with each other.
Comments
Beginner Nix question.
Regarding .dotfiles
It seems that there is a push or desire to have everything declared via nix and/or flakes. What I rarely see incorporated is 'git clone' or 'stow' for dotfile management. My simple question is: why not both? What is so wrong with using a 3rd party system as part of the deployment.
Let's say I want to fiddle with my vim/neovim .rc file. If I change it 10 times in the course of an hour, and run 'nixos rebuild switch' (did I get that right?) each time to set it, then I'm going to be spending a bunch of time/CPU cycles rebuilding world.
It seems to me a hybrid approach would work best. -nix rebuild scratch for OS-level modifications -git push/pull/clone for frequently modified files.
Nobody would ever suggest using the nix approach for storing their 'recipe folder'.
You don't actually need to rebuild the world, just the part that changed. It's rare to have other nix derivations depend on the dotfiles directly, so changes don't "cascade" to the rest of the system. I just timed how long it takes to rebuild my system after changing my neovim config and it's ~30 seconds. Which sounds like a lot compared to the zero seconds it takes to edit the config without nix, but it's fast enough that I personally don't mind.
Some people do use nix just for their system config and manage their dotfiles separately, but for me it's simpler to just have one system that installs the software I want and configures it the way I like it, rather than two things I'd need to keep in sync with each other.