Having everything in a central config is one of the things I love about NixOS and Home Manager, but I’m starting to wonder if there are options for better separating user-specific configuration from the programs that are installed.
For example, there are modules to install graphical window managers as modules, so that you can include all of the config directly in Nix and have the program’s actual config get generated. But apart from the fact that the window manager is installed, almost all of that configuration is user-specific.
This is also why I’ve been running Home Manager in stand-alone mode. I have extensive user-specific configurations within the program modules, but at least the entirety of Home Manager is managed within the context of that user, so it’s tolerable. However, there have been times I considered switching to using Home Manager as a NixOS module (for program modules that don’t support stand-alone mode), but that again brings up the issue of my personal customizations being treated as global state.
I know I could give each user an entirely separate config, but I’m trying to see if there’s a way to centralize the programs and just separate the customization.
Is there a way to separate program settings, in Nix, to be separate from the installation of those programs, without abandoning Nix entirely and going back to per-program config files? Maybe a per-user Nix file that provides all of their settings and overrides module configuration settings? Is that possible?