No description
- Nix 76.3%
- Shell 20.6%
- Just 3.1%
| .engram | ||
| .githooks | ||
| data | ||
| docs | ||
| hosts | ||
| lib | ||
| modules | ||
| overlays | ||
| pkgs | ||
| progress | ||
| scripts | ||
| secrets | ||
| .editorconfig | ||
| .gitignore | ||
| AGENTS.md | ||
| CHECKPOINTS.md | ||
| CLAUDE.md | ||
| CONTEXT.md | ||
| flake.lock | ||
| flake.nix | ||
| home.nix | ||
| justfile | ||
| README.md | ||
| treefmt.nix | ||
| variables.nix | ||
nixos
Personal NixOS flake for two hosts:
main— desktop (AMD GPU, gaming, Docker, virt-manager)fw— Framework 13 AMD laptop
Home Manager is wired in as a NixOS module; dotfiles are owned by GNU Stow
(~/dotfiles/), not Home Manager. See CLAUDE.md for the full
architecture notes and conventions.
Common commands
just # list all recipes (see the root justfile)
just rebuild [host] # build + switch via nh (host defaults to $(hostname))
just update [host] # nix flake update, then rebuild
nix flake check # eval both host toplevels (also run by ./scripts/verify.sh)
nix fmt # format all *.nix with treefmt/nixfmt
nix develop # maintenance shell: nixfmt, statix, deadnix, nh, nil
Channel & pinning policy
- Channel:
nixos-26.05(release branch).nixpkgsis pinned to it; every other inputfollows = "nixpkgs". Don't drive-by upgrade to a newer release ornixos-unstable. nixos-hardwaretracksmaster— it has no release branches, so it is the one input that can move under you. The exact rev is pinned byflake.lock.- The lock file is the pin. Rebuilds read this local checkout, so whatever is
committed in
flake.lockis what the hosts run. - Update cadence: run
nix flake updatedeliberately (roughly biweekly), rebuild both hosts, then commit the newflake.lock. There is intentionally no auto-bump bot — for two hosts the manual cadence keeps the lock predictable. stateVersion(26.05for both system and home) is upgrade-coupled, not channel-coupled. Bumping it is a separate, deliberate operation.