Thanks for hacking on this flake! This guide covers the basics.
nix fmt # runs nixpkgs-fmt on all .nix filesA move to treefmt-nix (nix + shell + markdown) is planned — see
ROADMAP.md. Until then, just make sure nix fmt is clean before
pushing.
Conventional Commits preferred:
feat(home): add starship prompt module
fix(chopper): correct ZFS scrub timer
docs: rewrite README to match repo structure
chore: update flake inputs
Common scopes: darwin, chopper, home, modules, packages, ci.
feat/<short-description>
fix/<short-description>
docs/<short-description>
chore/<short-description>
Keep branches short-lived; rebase on main before merging.
A full guide will live at
docs/add-a-host.mdonce created.
Quick version:
- Create
hosts/<name>/with at leastconfiguration.nix. - Add a
nixosConfigurations.<name>(ordarwinConfigurations.<name>) entry inflake.nix. - If using Home Manager, create
home/<name>/default.nixand a correspondinghomeConfigurationsentry.
- Create
home/common/<module>/default.nix(cross-platform) orhome/<host>/<module>/default.nix(host-specific). - Import it from the parent
default.nix. - Rebuild to test:
nh darwin switch ./nh os switch ..
See home/README.md for more detail.
- Create
modules/<service>.nix. - Import it from the host configuration that needs it.
- Ideally expose
options.services.<name>.enableso the module is opt-in.
nix run nixpkgs#statix -- check .
nix run nixpkgs#deadnix -- .These will be added to CI in a future milestone.
Open an issue or check CLAUDE.md and ROADMAP.md for project context.