Allow calling flakes without a flake.lock

If no inputs but "self" are specified, Nix will not generate a
flake.lock at all. In this case, Flakes are mostly just used to
provide a more pure Nix experience, while sources are locked through
some other means (niv, ob thunk, manually, etc.). Supporting this is a
little weird, but it ends up working for my
repo (https://github.com/matthewbauer/nixiosk).
This commit is contained in:
Matthew Bauer 2020-08-20 15:49:28 -05:00
parent c75e76f80c
commit c71d063a2f

View file

@ -54,6 +54,12 @@ let
assert flake.edition == 201909;
outputs;
callLocklessFlake = flakeSrc:
let
flake = import (flakeSrc + "/flake.nix");
outputs = flakeSrc // (flake.outputs ({ self = outputs; }));
in outputs;
rootSrc = let
dir = builtins.readDir src;
gitDir = builtins.readDir (src + "/.git");
@ -144,7 +150,9 @@ let
lockFile.nodes;
result =
if lockFile.version == 4
if !(builtins.pathExists lockFilePath)
then callLocklessFlake rootSrc
else if lockFile.version == 4
then callFlake4 rootSrc (lockFile.inputs)
else if lockFile.version >= 5 && lockFile.version <= 7
then allNodes.${lockFile.root}