How This README Is Generated1
Each section is contributed by whichever module it documents,
via text.readme.parts.<name>,
and assembled in the order listed by text.readme.order.
For example, the Hosts section below comes from
hosts.nix, not this file -
each module documents itself next to its own definition
rather than everything living in one place.
Regenerate after editing any parts.* with:
write-files(available in the devshell).
Input Management2
Inputs are pinned with nixtamal
and resolved with with-inputs.
There is no flake.lock;
pins live in lock.json.
| File | Purpose |
|---|---|
default.nix |
Primary entry point; returns full flake outputs |
system.nix |
Convenience entry point; selects the NixOS config for the current hostname (impure - reads /etc/hostname) |
flake.nix |
Thin shim so flake-aware tools still work |
nh os switch -f ./system.nixnixtamal refresh # refresh all non-frozen inputs
nixtamal refresh <name> # refresh one input
nixtamal check-soundness # verify all fetches resolveHosts3
The set of NixOS hosts is defined via an option which accepts deferred modules. Differentiating the hosts as a subset of the NixOS modules allows us to map over the hosts without string matching.
See usage at autolycus.
Closure Checks4
Closure size checks are defined via the closureChecks option.
Each entry logs the human-readable closure size;
an optional budget field causes the check to fail if the size exceeds it.
See checks at closureChecks/.
Footnotes
-
Written at
readme.nix. ↩ -
Written at
inputs.nix. ↩ -
Written at
closureChecks.nix. ↩