Personal dotfiles using Nix for reproducible system/package management and GNU Stow for dotfile symlinking.
Note
- This requires having Nix installed. See the Nix README.
- The
flake.nixis designed to set up the machine based on its hostname.
# Rebuild system + packages + dotfiles (reproducible, uses flake.lock)
./rebuild.sh
# Update ALL flake inputs + upgrade uv tools + upgrade bun packages
./rebuild.sh --update
# Update unstable inputs + upgrade uv tools + upgrade bun packages
./rebuild.sh --update-unstable
# Dotfiles only (no Nix rebuild)
./rebuild.sh --stowDotfiles are managed with GNU Stow, not Nix:
- Edit files in
stow/directory and run stow - Changes are immediately active (no rebuild needed)
- Nix runs stow commands during home-manager activation
# Manual stow (if needed)
cd ~/.dotfiles/stow
stow --target="$HOME" --restow shared "$(uname -s)"The shell entrypoint is stow/shared/.zshrc, which sources
stow/shared/.zshrc_user. The user file loads the shell configuration chain:
shell/exports.sh— PATH (includingshell/bin/utils), globals, env varsshell/aliases.sh— shell aliasesshell/sourcing.sh— tool initialization, plugins, completions
See Project config for details on shell initialization, direnv, and per-project tooling.
- Neovim ⌨️
- Workflows 🌊
- Fonts
- Host-specific documentation
- rpi5-homelab - requires custom installation procedure
