mirror of
https://github.com/privatevoid-net/nix-super.git
synced 2024-11-10 16:26:18 +02:00
22 lines
640 B
Nix
22 lines
640 B
Nix
locks: rootSrc: rootSubdir:
|
|
|
|
let
|
|
|
|
callFlake = sourceInfo: subdir: locks:
|
|
let
|
|
flake = import (sourceInfo + "/" + subdir + "/flake.nix");
|
|
|
|
inputs = builtins.mapAttrs (n: v:
|
|
if v.flake or true
|
|
then callFlake (fetchTree (removeAttrs v.locked ["dir"])) (v.locked.dir or "") v.inputs
|
|
else fetchTree v.locked) locks;
|
|
|
|
outputs = flake.outputs (inputs // { self = result; });
|
|
|
|
result = outputs // sourceInfo // { inherit inputs; inherit outputs; inherit sourceInfo; };
|
|
in
|
|
assert flake.edition == 201909;
|
|
|
|
result;
|
|
|
|
in callFlake rootSrc rootSubdir (builtins.fromJSON locks).inputs
|