Personal NixOS flake managing two hosts (ninja, windy). Tracks nixos-unstable.
Custom packages live in a separate nix-packages repo consumed as a flake input.
- OS: NixOS (Branch: 25.11)
- DM: cosmic-greeter (greetd)
- DE: COSMIC (Epoch 1)
- Theme: Catppuccin Mocha (Blue Accent, system-wide via catppuccin/nix)
- Shell: Brush (Rust bash-compatible) + Starship + Atuin + Zoxide
- Terminal: WezTerm + Zellij
- Editor: Helix
- Security: dbus-broker, sops-nix + age, YubiKey (U2F)
- Gaming: Steam (NVIDIA Optimized), Heroic, Lutris, Bottles, GameMode, sched-ext
flake.nix # Entry point — defines inputs, hosts, devShells, checks
lib/ # mkSystem helper, user config
hosts/ # Per-host configuration.nix + hardware
modules/ # Reusable NixOS modules (mySystem.* options)
core/ # Audio, codecs, nix-ld, performance, sops, maintenance
desktop/ # COSMIC DE, display manager
gaming/ # Steam, GameMode, sched-ext (SCX)
home/ # Home Manager modules (per-app .nix files)
shell/ # Split shell config (aliases, functions, packages)
users/ # Per-user profile composition
overlays/ # Package overrides
secrets.yaml # SOPS-encrypted secrets
docs/ # Human-readable documentation
Custom packages live in nix-packages and are consumed as a flake input. Use nix-init to bootstrap new package definitions.
- Hardware (ninja) | Hardware (windy)
- NVIDIA Driver Updates
- Security & Hardening | Secrets
- Disaster Recovery & Disko
- Zellij | Wezterm | Workflow
- Helix Editor | CLI Tools | Just Commands
- Full Index
To apply changes and switch to the new configuration:
# Using nh (recommended)
nh os switch .
# Standard Nix
sudo nixos-rebuild switch --flake .
# Update all flake inputs
nix flake update
# Clean old generations
nh clean all