nixos-config/modules/home/cli/terminal.nix
Sridhar Ratnakumar b4a60aaf3a
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)
2026-05-29 07:19:48 -04:00

82 lines
1.3 KiB
Nix

# Platform-independent terminal setup
{ flake, pkgs, ... }:
let
inherit (flake) inputs;
in
{
imports = [
inputs.nix-index-database.homeModules.nix-index
];
home.packages = with pkgs; [
# Unixy tools
ripgrep
fd
wget
moreutils # ts, etc.
gnumake
killall
television
gh
# Broken, https://github.com/NixOS/nixpkgs/issues/299680
# ncdu
# Useful for Nix development
ci
nixpkgs-fmt
just
watchexec
fswatch
eternal-terminal
# Publishing
asciinema
ispell
# Dev
fuckport
sshuttle-via
entr
hackage-publish
zellij-one
# Fonts
cascadia-code
monaspace
# Txns
hledger
gnupg
# Temporarily disabled: pulls in ffmpeg-full which fails to build (kvazaar test failures)
# compress-video
];
fonts.fontconfig.enable = true;
home.shellAliases = {
g = "git";
lg = "lazygit";
l = "ls";
beep = "say 'beep'";
};
programs = {
nix-index = {
enable = true;
enableZshIntegration = true;
};
nix-index-database.comma.enable = true;
bat.enable = true;
autojump.enable = false;
zoxide.enable = true;
fzf = {
enable = true;
defaultCommand = "fd --type f";
enableBashIntegration = true;
};
jq.enable = true;
btop.enable = true;
};
}