Repository navigation
Record where each part of the stack came from - #129
Merged
Merged
Conversation
Every configuration records ecosystems: an account for each part of the stack its evaluation used, keyed as the parts are resolved. Each account names the declaration that supplied the source (the ecosystemSrc of the configuration, the defaultEcosystemSrc of the tree, or the source pinned under exactly that name) and the name of that source among the pinned sources. nixpkgs-lib is recorded for every evaluation, each integration adds the ecosystems it resolves, and a package config also lists the names its sets take from the source of the package set. flake-parts resolves a selected source once. A flake-parts configuration that passed ecosystemSrc threw, because the selected source went back into resolveEcosystemSrc, which takes a function. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 24, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Builds on nix-caisson/caisson-core#54, merged, which records
defaultEcosystemSrcNameson the lib manifest. The locks pin caisson-core main at its merge commit,68fe584.Every configuration records
ecosystems: an account for each part of the stack its evaluation used, keyed as the parts are resolved. This is item 4 of what topside needs from the record, and design section 5 lists it.fromnames the declaration that supplied the source:ecosystemSrcfor the configuration's selection,defaultEcosystemSrcfor the tree's, andsourcesfor the source pinned under exactly that name.sourceis the name of that source among the pinned sources, wheresources.<name>.pinrecords its revision. It is null where a selection builds the value in another way.lib.caisson.integrations.ecosystemAccountOfcomputes an account from the argumentsresolveEcosystemSrctakes.mkModuleConfigurationrecordsnixpkgs-libfor every evaluation, and each integration'sevaluatereturns the ecosystems it resolves, with the same arguments it resolves them with. Every integration that resolves a source records it: nixos and nixos-minimal, home-manager, darwin, system-manager, colmena and caisson-colmena, disko and caisson-disko, hjem, nixvim, nvf, nixidy, treefmt, flake-parts, kubenix, topology and terranix.nixpkgs-libandnixpkgs. Itsnixpkgsentry also listslibraries, the top-level names its sets take from the package set's source.A fix in flake-parts. Since #128, a flake-parts configuration that passed
ecosystemSrcthrew. The selected source went back intoresolveEcosystemSrc, which takes a function. flake-parts now resolves a selected source once.structuralTopMatchesFlakePartscovers it.Tests:
ecosystemsRecordWhereEachPartCameFromandecosystemsRecordWhereEachIntegrationsPartsCameFromin the pinned-world suite, assertions in the existing test of each integration, andnixpkgs-lib-onlyfor the package config, including a library that names no pinned source. The fullnix flake checkpasses, VM tests included.🤖 Generated with Claude Code