Skip to content

Wire deferred children and cross-child references, fix colmena nodes, name single outputs for their outputs - #141

Merged
clhodapp merged 2 commits into
mainfrom
feat/deferred-and-cross-child
Oct 29, 2026
Merged

clhodapp merged 2 commits into
mainfrom
feat/deferred-and-cross-child

Conversation

@clhodapp

Copy link
Copy Markdown
Contributor

Builds on nix-caisson/caisson-core#57 (pinned to its branch in both locks); implements the caisson part of section 21 of the design document except the NixOps4 integrations, which follow in a stacked pull request.

Deferred children. configurationsOptionsOf holds a deferred configuration as caisson-core's deferred entry (deferChild), and entriesOf skips it, since a deferred child passes nothing up at flake time.

New options on every configuration. caisson.forDirectChildren (extraDefaultModuleImports, unsafeCrossChildReferences), and unsafeCrossChildReferences on caisson.forChildren and caisson.forNearestChildren, handed to caisson-core with the other additions.

Colmena nodes. The upstream-compatible colmena integration built nodes from separate tops (mkTopConfiguration) that inherited nothing from the colmena configuration and became per-system sets when several systems were in force. The colmena configuration now sets forNearestChildren.unsafeCrossChildReferences.nixos, and nodes is the nodes of its full evaluation. New pinned-world probe colmenaUpstreamNodesAreTheNodes; removing the setting fails it alone.

Single outputs. A configuration of an integration with a single output is named for that output: colmenaHive (caisson-colmena, colmena), formatter (treefmt), topology. This breaks consumers that declare these under default; they are updated in their own pull requests.

Checks: all x86_64-linux checks pass locally, the three VM tests and eval-weight included.

🤖 Generated with Claude Code

…ces; fix colmena nodes

Configurations may declare deferred children: configurationsOptionsOf holds a deferred configuration as caisson-core's deferred entry, and publication skips it, since it passes nothing up at flake time. Every configuration gets caisson.forDirectChildren, and the three containers get unsafeCrossChildReferences, handed to caisson-core with the other additions.

The upstream-compatible colmena integration built the nodes special argument from separate tops that inherited nothing from the colmena configuration and became per-system sets when several systems were in force. The colmena configuration now sets unsafeCrossChildReferences for its nearest NixOS configurations, and nodes are the nodes of its full evaluation.

A configuration of an integration with a single output is named for that output: colmenaHive, formatter, topology.

caisson-core is pinned to nix-caisson/caisson-core#57.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@clhodapp
clhodapp merged commit c75f61c into main Oct 29, 2026
9 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