My dotfiles are managed using Home Manager. All my computers (even my work laptop that utilizes WSL) run Home Manager using nix to specify my configuration files and installed user-space tools and applications. Similarly, my linux machines run NixOS, an operating whose configuration is built on nix. NixOS manages system configuration, like hardware drivers, firewall rules, systemd units, file systems, containers, and desktop environments.
Together, these tools entirely define my home (and soon cloud) infrastructure and user-space configuration and tools.
On a new NixOS installation, run this from the home directory.
nix-shell -p git
git clone [email protected]:rutrum/dots.git
cd ~/dots
nixos-rebuild switch --extra-experimental-features flakes \
--extra-experimental-features nix-command switch --flake .#<host>
In any linux environment with nix installed, run the following from the home directory.
nix-shell -p git home-manager
git clone [email protected]:rutrum/dots.git
cd ~/dots
home-manager --extra-experimental-features flakes \
--extra-experimental-features nix-command switch --flake .#rutrum
Then run snrs to load the system configuration or run hms to reload the home-manager configuration.
hosts: machine specific NixOS configurationshosts/modules: NixOS modulesusers: user/machine specific home-manager configurationsusers/modules: home-manager modulessecrets: contains secret files encrypted with sops-nix
The modules are not polished, nor meant for external use. They are simply used to break up parts of my configuration and share between hosts and users.
I manage a few host machines on my home network:
rumtower: my gaming and main productivity rigrumprism: my laptop for light productivity workrumnas: my home NAS and serverrumpi: my Raspberry Pi 4
Similarly, home-manager configurations:
rutrum@rumtowerrutrum@rumprismrutrum@rumnasrutrum: for every other system, including non-nixos systems, like my work laptop running Windows with WSL. It is also the baseline for the system-specific user configurations to extend upon.