ralph(eval): reduce Nix eval time for pureintent + zest (#120)

* ralph(eval): baseline + benchmark harness

pureintent cpuTime 23.17s, zest cpuTime 14.93s (median of 5).
Methodology: NIX_SHOW_STATS cpuTime, eval-cache off, warm fetcher cache.

* ralph(eval) cycle 1: disable NixOS options manual on pureintent

documentation.nixos.enable = false. Generating the NixOS manual evaluates
every option's doc string. nrThunks 20,400,114 -> 19,201,996 (-5.9%),
nrFunctionCalls -6.2%, nrPrimOpCalls -7.5%. Package man pages unaffected.

Metric pivoted to deterministic NIX_SHOW_STATS counters: cpuTime is unusable
on this thermally-throttling machine (same eval = 11s..21s).

* ralph(eval): switch home target zest -> sincereintent (per request)

sincereintent home config baseline: nrThunks 5,323,428 / calls 3,227,404 /
primops 1,565,120 (deterministic).

* ralph(eval) cycle 2: disable home-manager options manpage

manual.manpages.enable = false in shared modules/home/default.nix. HM builds
home-configuration.nix(5) by default, evaluating every HM option's doc string.
sincereintent nrThunks 5,323,428 -> 3,551,679 (-33.3%), calls -35%, primops -39%.

* ralph(eval): record cycle-2 pureintent gain (shared HM module)

pureintent nrThunks 19,201,996 -> 17,431,437 (-9.2%); cycle-2's
manual.manpages.enable=false also feeds pureintent's embedded home-manager
via modules/nixos/default.nix. Total pureintent -14.6% from baseline.

* ralph(eval) cycle 3: profiling + dead-ends (no behaviour-preserving win)

Confirmed: nixpkgs single-instantiation (no 2x trap), unused inputs are lazy
(no counter impact), escapeShellArg hotspot is HM file-linking + /etc (not
patchable here). Remaining eval cost is feature-bound (embedded HM, vira/kolu,
google-cloud-sdk/pandoc/omnix).

* ralph(eval) cycle 4: drop heavy home.packages (yt-dlp/lima/omnix/pandoc/gcloud)

User-approved behaviour change. Removed from shared modules/home/cli/terminal.nix
(kept hledger). pureintent nrThunks 17,431,437 -> 16,989,720 (-2.5%),
sincereintent 3,551,679 -> 2,757,201 (-22.4%). Totals from baseline:
pureintent -16.7%, sincereintent -48.2%.

* ralph(eval): finalize report (final measurement, key findings, cost breakdown)
This commit is contained in:
Sridhar Ratnakumar 2026-05-29 07:19:48 -04:00 committed by GitHub
parent 87441d5270
commit b4a60aaf3a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 185 additions and 7 deletions

View file

@ -17,29 +17,22 @@ in
gnumake
killall
television
yt-dlp
gh
# Broken, https://github.com/NixOS/nixpkgs/issues/299680
# ncdu
# Useful for Nix development
ci
omnix
nixpkgs-fmt
just
watchexec
fswatch
eternal-terminal
lima
# AI
google-cloud-sdk
# Publishing
asciinema
ispell
pandoc
# Dev
fuckport

View file

@ -3,6 +3,11 @@
home.sessionVariables = {
DO_NOT_TRACK = "1";
};
# Home-manager generates an options manpage (`home-configuration.nix(5)`) by
# default, which evaluates the doc string of every HM option. Options are
# searched online, not via `man`, so skip it — measurable eval-time win.
manual.manpages.enable = false;
imports = [
./cli/tmux.nix
./editors/neovim