A declarative NixOS configuration for my homelab setup.
.
├── flake.nix # Main flake configuration
├── hosts/
│ └── homelab/
│ ├── configuration.nix # Main system configuration
│ └── hardware-configuration.nix # Hardware-specific config (generated)
└── modules/
└── services/
├── default.nix # Service imports
├── jellyfin.nix # Media server
├── dns.nix # DNS/Pi-hole replacement
├── wireguard.nix # VPN configuration
└── storage.nix # Storage/SFTP configuration
-
Generate hardware configuration:
nixos-generate-config --root /mnt --dir ./hosts/homelab/
-
Build the configuration:
nix flake check
-
Test in a VM:
nixos-rebuild build-vm --flake .#homelab -
Deploy to actual hardware:
sudo nixos-rebuild switch --flake .#homelab
Service modules are located in modules/services/ and can be enabled/configured individually.
