- Nix 74.4%
- Lua 14.2%
- Python 11.4%
| assets | ||
| modules | ||
| templates/generic | ||
| .gitignore | ||
| flake.lock | ||
| flake.nix | ||
| README.md | ||
Chad's NixOS Config
A dendritic-style, flake-parts-based NixOS configuration. Based on JackJohn7's dendritic Nix setup — the module structure and tooling (boilerplate generator, import-tree wiring) are his; the package choices, host configs, and defaults are mine.
Every .nix file under modules/ is auto-discovered via import-tree, so new files just need to declare a flake.nixosModules.<name> (or nixosConfigurations, packages, etc.) and they're picked up automatically — no manual list of imports to maintain at the top level.
Hosts
| Host | Notes |
|---|---|
remus |
AMD CPU + Nvidia MX350 (Optimus/PRIME hybrid graphics), KDE Plasma desktop (Niri available as a switchable session). |
severus |
Intel CPU + NVMe, mango/Noctalia desktop. |
Hardware config for each host lives in modules/hosts/<host>/hardware-configuration.nix and is exported as <host>Hardware — do not share a hardware module between hosts, since it hardcodes filesystem UUIDs and kernel modules specific to that machine's disks and CPU.
Structure
modules/
hosts/<name>/ # per-host: default.nix (nixosSystem), configuration.nix, hardware-configuration.nix
features/ # reusable modules (apps, services, desktop layers, etc.)
layers/ # base system layers (user, base, wallpapers, icons, cursors...)
packages/ # custom packages built for this flake (ghostty, myNoctalia, zen, boilerplate...)
options.nix # shared options (e.g. global `username`)
parts.nix # flake-parts systems list
shell.nix # devShell for working on this repo
templates.nix # exposes the `generic` flake template
templates/generic/ # standalone starter template for a new dendritic flake
assets/ # wallpapers, profile picture
The global username used across modules (home directory, git config, hjem file placement, etc.) is set once via config.username in modules/features/layers/base.nix.
Rebuilding
sudo nixos-rebuild switch --flake .#remus
sudo nixos-rebuild switch --flake .#severus
Generating new modules
A small Python-based boilerplate generator (self'.packages.boilerplate, available in the repo's devShell) scaffolds new modules in the right place with the right shape:
boilerplate host my-host # modules/hosts/my-host/
boilerplate feature my-feature # modules/features/my-feature.nix
boilerplate layer my-layer # modules/features/layers/my-layer.nix
boilerplate package my-package # modules/packages/my-package/
Enter the devShell first (nix develop) if boilerplate isn't on your $PATH.
Known gaps / TODO
- Gaming module (
modules/features/gaming.nix) has a hardcoded/home/userpath inSTEAM_EXTRA_COMPAT_TOOLS_PATHinstead of${config.username}— fix before enabling it on any host. - General cleanup pass for leftover inconsistencies from the original template.