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@rumtower
rutrum@rumprism
rutrum@rumnas
rutrum
: 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.