Walking the install-shaped toplevel's drv graph against the ISO's actual path set (tools/gap analysis) found why offline installs kept building from source: - system-path is rebuilt on EVERY machine: buildEnv's package-list order follows module-graph order, which any hardware profile reshuffles → pin its builders (texinfo, getconf) - greetd.toml embeds the auto-login user and is generated by remarshal; building remarshal offline drags its test closure (matplotlib → ffmpeg → x265…, ~1900 drvs) → pin pkgs.remarshal - second-level tools for the always-rebuilt drvs: kmod.dev + nukeReferences (modules-shrunk), xorg.lndir (unit dirs), libxslt.bin (dbus config), python3Minimal (etc) - the representative pin now has a vfat /boot like a real install (mtools/dosfstools enter systemPackages via the vfat fs-type gate) Verified on the host: the remaining offline build set for a foreign username/hostname/UUID config is 66 trivial config drvs + eval-time file copies from the pinned nixpkgs tree — zero network. Same check for the per-username HM activation: 15 drvs, offline-clean. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
14 KiB
14 KiB