A dendritic nix configuration to define immutable desktop and homelab systems with one click installation using flake-parts.
- 🔒 Secrets
- 💾 Impermanence
- 💽 Disko
- 🪝 Git-hooks
- 🔒 LUKS disk encryption
- 🪧 Plymouth boot screen
- 🔃 Automatic updates
- 🧹 Garbage collection
- 📚 Documentation generation
- 📦 Flatpak installation
- 🖥️ KDE Plasma management
- 🗔 Cosmic Desktop management
- 🖌️ Stylix Theming
- 🗄️ Restic backup
- 🧰 Development tools
- 🔍 Web browsers
- 📷 Photo scanning/editing tools
- 🎮 Game launchers
- ⚙️ Utilities
# Provision disks
sudo nix run --experimental-features "nix-command flakes" github:nix-community/disko/latest -- --mode destroy,format,mount --flake github:robbiejennings/nix-config#<system># Install NixOS
sudo nixos-install --flake github:robbiejennings/nix-config#<system>Encrypted secrets can be included using sops-nix. This requires the installed system have the necessary SSH keys as defined in .sops.yaml located in /root/.ssh/ for system level secrets and /home/<username>/.ssh/ for user level secrets.
These secrets can then be edited by generating age keys using sudo just generate-root-age or just generate-user-age. Each host or user has a single secret file located in the secrets/ directory of this project. Once these keys are generated secret files can be decrypted using just edit-secret <filename>.
With SSH keys and secrets in place, setting secrets.enable=true in a configuration will load decrypted secrets on installation whose filepaths are then consumed by various modules in this project.
Setting ìmpermenance.enable = true in a system configuration will cause the deletion of all files outside the nix store at boot time to ensure a clean environment on every startup. To persist files between boots add their paths to the persistence config option.
To add git hooks to your development environment run just hooks to enter the default development shell for this project which will automatically add formatting and static code analysis checks. This shell can be exited straight away.
To generate markdown documentation of all nixos and home-manager module options in this project run just docs. This will output home-manager-options.md and nixos-options.md into the docs/ directory.