A highly modular NixOS configuration repository targeting desktop, server, and virtualized environments.
This flake is built on a dendritic aspect-oriented structure, focusing on small, fully self-contained, modular, and shareable aspects. It leverages den as the underlying configuration framework.
The configuration is structured as independent modules, each containing distinct aspects that package system options, home-manager environments, and dependencies together:
| Module Category | Description |
|---|---|
| 🖥️ apps | GUI applications (Chromium, Neovide, Wezterm, etc.) and their user configurations. |
| 🥾 boot | Bootloaders, systemd-initrd configurations, and Disko declarations. |
| 🐚 cli | Command-line utilities, shells (Zsh), terminal multiplexers (Tmux), and git configurations. |
| 📦 containers | Docker and OCI container services (media stacks, databases, self-hosted applications). |
| 🛠️ dev | Developer environments, language servers (LSPs), runtimes, and compiler setups. |
| 🔤 fonts | System-wide custom font packages and rendering settings. |
| 👥 groups | User groups and shared access roles declarations. |
| 🖼️ gui | Compositor configuration (Niri), bar modules (Quickshell), and notification daemons (Mako). |
| 💻 hosts | Machine-specific host profiles (desktop, server) and hardware configurations. |
| 🔌 hw | Hardware-specific drivers (Nvidia, AMD), controllers (liquidctl, coolercontrol), and peripherals. |
| 💿 iso | Custom minimal installation ISO generation rules and automated setup scripts. |
| 🌐 networking | Subnets, virtual bridges, bonding configs, network interfaces, and NAT tables. |
| 🔒 security | Secret management setup utilizing SOPS-NIX and age keys. |
| ⚙️ services | System daemons (SSH, resolving, sd-login, Btrfs scrubbing utilities). |
| 🎨 style | Theme and system styling setup using Stylix (base16 templates). |
| 👤 users | User account definitions and individual home-manager profiles. |
We use a Justfile to organize common administration, building, and maintenance operations.
just build: Builds the configuration locally without applying changes (dry run).just test: Test changes in place temporarily (reverts on reboot).just switch: Apply changes immediately and switch the current system to the new profile.just boot: Apply changes and write them to the bootloader (active on next reboot).
just flake: Regenerates theflake.nixoutput mappings usingflake-fileto register new modules.just update: Performs anix flake updateto bump all input dependencies.just update-den: Updates specifically thedenframework dependency.just format: Formats all Nix source files recursively.
just vm-desktop: Launches thedesktopconfiguration in a virtual machine for local testing.just vm-server: Launches theserverconfiguration in a virtual machine.just make-iso [out]: Builds the custom installation ISO image (defaults output to/tmp/nixos-installer).just test-iso [out] [key]: Boots the generated installer ISO in QEMU to test partitioning and automated installs.
just clean: Garbage collects the Nix store using root privileges.just gc: Runsnh clean allto prune old generations and optimize storage.
- Enter the environment:
If you have
direnvenabled, entering the directory will automatically initialize the environment and install git hooks. Otherwise, run:nix develop - Apply changes:
Modify your settings, regenerate the flake configuration if you added new modules, and switch:
just flake just switch