NixOS Config
Personal Nix flake for four machines:
michael- x86_64 Linux servertahani- x86_64 Linux home server / workstationchidi- aarch64 Darwin work laptopjanet- aarch64 Darwin personal laptop
Repository Map
modules/- flake-parts modules, auto-imported viaimport-treemodules/hosts/- per-host composition modulesmodules/hosts/_parts/- host-private leaf modules like hardware, disks, and literal networkingmodules/profiles/- shared host and user profile bundlesmodules/_lib/- local helper functionsmodules/_notability/,modules/_paperless/- feature-owned scripts and templatesapps/- Nushell apps exposed through the flakesecrets/- SOPS-encrypted secretsflake.nix- generated flake entrypointmodules/dendritic.nix- source of truth for flake inputs andflake.nixgeneration
How It Is Structured
This repo uses den and organizes configuration around aspects instead of putting everything directly in host files.
- shared behavior lives in
den.aspects.<name>.<class>modules undermodules/*.nix - the machine inventory lives in
modules/inventory.nix - shared bundles live in
modules/profiles/{host,user}/ - host composition happens in
modules/hosts/<host>.nix - host-private imports live in
modules/hosts/_parts/<host>/and stay limited to true machine leaf files - feature-owned services live in top-level modules like
modules/gitea.nix,modules/notability.nix, andmodules/paperless.nix - user-level config mostly lives in Home Manager aspects
Common examples:
modules/core.nix- shared Nix and shell foundationmodules/dev-tools.nix- VCS, language, and developer toolingmodules/network.nix- SSH, fail2ban, and tailscale aspectsmodules/gitea.nix- Gitea, Litestream, and backup stack formichaelmodules/notability.nix- Notability ingest services and user tooling fortahanimodules/profiles/user/workstation.nix- shared developer workstation user bundlemodules/hosts/michael.nix- server composition formichaelmodules/hosts/tahani.nix- server/workstation composition fortahani
Common Commands
nix run .#build
nix run .#build -- michael
nix run .#apply
nix run .#deploy -- .#tahani
nix flake check
alejandra .
Updating The Flake
flake.nix is generated. Update inputs in modules/dendritic.nix, then regenerate:
nix run .#write-flake
alejandra .
Description
Languages
Nix
66.5%
TypeScript
29.9%
Nushell
3.6%