Skip to content

03: build the options index from the host flake lock - #4

Merged
jrcruciani merged 2 commits into
mainfrom
jrcruciani-03-pinned-options-index
Sep 21, 2026
Merged

jrcruciani merged 2 commits into
mainfrom
jrcruciani-03-pinned-options-index

Conversation

@jrcruciani

@jrcruciani jrcruciani commented Sep 21, 2026 •

Copy link
Copy Markdown
Owner

What changed

Rule seven used a channel-based import unrelated to the host's flake.lock. The module now installs aether-index, with services.aether.flake (default /etc/nixos) and an explicit services.aether.host configuration key. Missing host setup fails only when indexing, so timer-only installs remain valid. The helper requires a reviewed lock, prevents lock updates, validates inputs, declares its runtime dependencies, and leaves the previous output link in place after build failure.

README, playbook, agent prompt and example setup now agree on the command, unchanged JSON path, name versus type checks and imported-module caveats. Section 03 of the changelog records actual results. This is item 03 only; no later work-order items, merges, LICENSE changes or live-host timer tests.

Executed Linux evidence

Final-head CI: both jobs passed at 686e100839925b7b21fe1eec9981cd97e7766103. The first successful run is recorded in the changelog.

Example-host lock Real option count
NixOS 25.05 ac62194c3917d5f474c1a844b6fd6da2db95077d 22,116
NixOS 25.11 b6018f87da91d19d0ab4cf979885689b469cdd41 23,290

tests/index-pins.sh copies examples/, generates the fixture lock, builds the exact nixosConfigurations.vps.config.system.build.manual.optionsJSON attribute, then changes the same lock to the second revision and requires different counts. It checks the real share/doc/nixos/options.json layout. The packaged helper matches the direct build with an empty caller PATH, a space-containing flake directory, and an OS hostname different from the explicit host key.

On both pins, disabling documentation.nixos.enable or documentation.enable removes system.build.manual; failed regeneration preserves the existing symlink. Disabling only documentation.doc.enable still builds JSON. Missing locks, invalid host/flake inputs, unknown host keys and unexpected arguments fail without replacing the index.

The existing nix flake check --no-update-lock-file --print-build-logs passed all eight deadman VM subtests, including timer-only installation compatibility. This locked offline VM uses the root's test-only input; the separate networked index job uses the host's actual pins. The macOS workspace has no local Nix; all Nix execution evidence above is from hosted Linux.

No blockers. Ready for parent review and merge; this session has not merged the PR.

JL Revilla and others added 2 commits September 21, 2026 16:38
Add an explicitly configured aether-index helper without changing timer-only installations. Exercise real example-host pins separately from the offline deadman VM and document the manual attribute's documentation gates.

Co-authored-by: Copilot App <[email protected]>
Document the executed example-host option counts, disabled-documentation behavior, helper failure checks and successful deadman VM coverage.

Co-authored-by: Copilot App <[email protected]>
@jrcruciani
jrcruciani marked this pull request as ready for review September 21, 2026 14:51
@jrcruciani
jrcruciani merged commit bf51a95 into main Sep 21, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant