A fully declarative, modular NixOS setup using flakes — built for a 3-person family household across 6 desktops/laptops and 3 headless servers. Everything from disk partitioning to app configuration is version-controlled and reproducible.
- Hyprland on linuxury's machines — tiling Wayland compositor with a full Lua config, matugen color theming, Waybar, swaync, and hypridle
- COSMIC DE on babylinux and alex's machines — System76's Rust-based desktop; config written declaratively via Home Manager
- matugen theming — wallpaper-driven color pipeline; terminal, editor, and desktop colors all update automatically when the wallpaper rotates
- BTRFS everywhere —
@,@home,@nix,@log,@cache,@snapshots, and@swapsubvolumes on every host - Automatic snapshots — Snapper takes hourly, daily, and weekly snapshots of
/and/home - ragenix secrets — SSH keys, WireGuard config, and service passwords encrypted in the repo; no plaintext ever in version control
- Firefox enterprise policies — uBlock Origin, search engine, and privacy settings locked in declaratively
- Gaming — Steam, MangoHud, GameMode, Proton, and Hytale on all gaming machines
- VPN-scoped qBittorrent — WireGuard network namespace killswitch on Radxa-X4; IP leaks are structurally impossible
- Media server — Plex, Sonarr, Radarr, Prowlarr, Immich, and FreshRSS on dedicated hardware
- Family Samba shares — network shares auto-mounted on all desktops via CIFS + agenix credentials
- Tailscale mesh — all machines reachable by hostname from anywhere
- Zsh + Starship + Kitty — terminal environment with NixOS management abbreviations
| Host | User | Role | LUKS |
|---|---|---|---|
| ThinkPad | linuxury | Laptop (Hyprland) | ✅ |
| Ryzen5900x | linuxury | Desktop (Hyprland) | ❌ |
| Ryzen5800x | babylinux | Desktop (COSMIC) | ❌ |
| Asus-A15 | babylinux | Laptop (COSMIC) | ✅ |
| Alex-Desktop | alex | Kid's desktop (COSMIC) | ❌ |
| Alex-Laptop | alex | Kid's laptop (COSMIC) | ❌ |
| Media-Server | — | Plex · Arr stack · Immich · FreshRSS | ❌ |
| Radxa-X4 | — | Torrent (Mullvad VPN killswitch) | ❌ |
| MinisForum | — | Game servers (Minecraft · Hytale) | ❌ |
nixos-config/
├── flake.nix # Entry point — all hosts defined here
├── hosts/ # Per-host system configuration
│ ├── ThinkPad/
│ ├── Ryzen5900x/
│ ├── Ryzen5800x/
│ ├── Asus-A15/
│ ├── Alex-Desktop/
│ ├── Alex-Laptop/
│ ├── Media-Server/
│ ├── Radxa-X4/
│ └── MinisForum/
├── modules/
│ ├── system/ # Core kernel settings, graphical base, server shell
│ ├── compositors/ # Hyprland, MangoWC, Niri
│ ├── desktops/ # COSMIC DE, GNOME, KDE
│ ├── hardware/ # GPU driver logic (AMD / Nvidia / Intel)
│ ├── services/ # Samba, Syncthing, Snapper, wallpaper slideshow, VPN
│ ├── gaming/ # Steam, MangoHud, GameMode
│ ├── development/ # Dev tools
│ ├── shells/ # Zsh configuration
│ ├── greeters/ # SDDM + Catppuccin theme
│ ├── themes/ # GTK theming
│ ├── components/ # Shared UI components (Home Manager modules)
│ └── users/ # Per-user system-level setup (description, groups)
├── users/ # Home Manager configs
│ ├── linuxury/home.nix
│ ├── babylinux/home.nix
│ └── alex/home.nix
├── dotfiles/ # Config files symlinked by Home Manager
│ ├── hypr/ # Hyprland, hyprlock, hypridle (Lua)
│ ├── waybar/ # Status bar config + matugen color templates
│ ├── swaync/ # Notification center + matugen color templates
│ ├── kitty/ # Terminal emulator
│ ├── zsh/ # Shared zsh init and completions
│ ├── starship/ # Prompt config
│ ├── MangoHud/ # Performance overlay config
│ ├── mangowc/ # MangoWC compositor config + matugen template
│ ├── nvim-extra/ # Neovim extras
│ └── ... # rofi, wofi, vscodium, opencode, swappy, topgrade
├── secrets/ # age-encrypted secrets (safe to commit)
│ ├── secrets.nix # Access control — who can read what
│ └── *.age # Encrypted secret files
├── assets/ # Wallpapers, avatars, SteamGridDB art, flatpak bundles
└── docs/ # Documentation (see below)
Installation — pick one based on your hardware:
| # | File | Boot mode | Encryption |
|---|---|---|---|
| 01 | Getting Started | — | — |
| 02 | Install: UEFI | UEFI | None |
| 03 | Install: LUKS | UEFI | LUKS full-disk |
| 04 | Install: Legacy BIOS | Legacy BIOS | None |
| 05 | Install: Legacy BIOS + LUKS | Legacy BIOS | LUKS full-disk |
Reference:
| # | File | What it covers |
|---|---|---|
| 06 | First Boot | Tailscale, SSH keys, secrets, assets, per-host steps |
| 07 | Flake & Module Reference | Config structure, mkHost, adding hosts and packages |
| 08 | Secrets Management | ragenix workflow, secrets.nix, creating and re-keying secrets |
| 09 | Maintenance | Rebuilds, updates, snapshots, rollback, garbage collection |
| 10 | Server Management | Media-Server, Radxa-X4, MinisForum — services and operations |
| 11 | Applications | Neovim, Kitty, Ghostty, Zsh, Helix, Zed, and more |
| 12 | Gaming | Proton-GE, Steam, MangoHud, Hytale, launch options |
| 13 | Theming | matugen pipeline, Hyprland and COSMIC color sync |
| 14 | Desktop Environment | COSMIC DE config, Hyprland setup, sidebar favorites, Flatpak |
| 15 | Troubleshooting | Common failures and fixes across all areas |
MIT — feel free to use and adapt for your own systems.