aboutsummaryrefslogtreecommitdiffstats
path: root/pkgs/default.nix
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2026-11-12 02:17:48 +0000
committertv <tv@krebsco.de>2026-11-12 02:17:48 +0000
commit5906453bc0c6e31cee65a20aa8e7811b6eaf3b1e (patch)
tree654fce4aee7a9926739e3707e3e0e009106c28b7 /pkgs/default.nix
parentd4c352a402aec1682625144c0440ca31c232ee74 (diff)
populate flake-input: deliver the inputs the input's own lock file pins
A flake-input source delivers an input as its own flake, which evaluating it uses with its own lock file. Populate, however, took the input's inputs from the parent flake's lock file: on the target, by walking the lock file, and on the deploying machine, from the parent's nix flake archive. That had several consequences: - An empty follows path, which removes an input, or two inputs following each other made the walk loop forever. - Copying left out inputs that follow other inputs, and rejected names through them, e.g. dep/inner where dep's inner follows another input. - Inputs given by relative paths, e.g. path:./lib, which have no lock entry of their own to fetch, broke fetching on the target and flake-input sources. - Where the parent overrides an input's inputs, the input's own lock file pins other versions than the delivered ones. Populate now resolves the name through the parent's lock file, follows included and guarded against cycles, to what to fetch: a locked reference, or the flake itself, which inputs given by relative paths are part of. It fetches that, on the deploying machine or on the target, and then the inputs the input's own lock file pins, using nix flake archive. An input without a lock file comes without its inputs. New edge cases cover lock files with empty and cyclic follows, names through follows, the delivered closure, and relative path inputs.
Diffstat (limited to 'pkgs/default.nix')
0 files changed, 0 insertions, 0 deletions