aboutsummaryrefslogtreecommitdiff
path: root/src/nix/flake.cc
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2019-06-04 19:10:35 +0200
committerEelco Dolstra <edolstra@gmail.com>2019-06-04 19:17:03 +0200
commit6dbd5c26e6c853f302cd9d3ed171d134ff24ffe1 (patch)
treee5bb9ee635a54a1436547dfea206679df9af1f45 /src/nix/flake.cc
parentc7c562416c75ed60e024f84e4ac440e29b98e0e3 (diff)
Make flake input fetching lazy
As long as the flake input is locked, it is now only fetched when it is evaluated (e.g. "nixpkgs" is fetched when "inputs.nixpkgs.<something>" is evaluated). This required adding an "id" attribute to the members of "inputs" in lockfiles, e.g. "inputs": { "nixpkgs/release-19.03": { "id": "nixpkgs", "inputs": {}, "narHash": "sha256-eYtxncIMFVmOHaHBtTdPGcs/AnJqKqA6tHCm0UmPYQU=", "nonFlakeInputs": {}, "uri": "github:edolstra/nixpkgs/e9d5882bb861dc48f8d46960e7c820efdbe8f9c1" } } because the flake ID needs to be known beforehand to construct the "inputs" attrset. Fixes #2913.
Diffstat (limited to 'src/nix/flake.cc')
-rw-r--r--src/nix/flake.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/nix/flake.cc b/src/nix/flake.cc
index 8d6716391..d229c7512 100644
--- a/src/nix/flake.cc
+++ b/src/nix/flake.cc
@@ -136,6 +136,7 @@ static nlohmann::json nonFlakeToJson(const NonFlake & nonFlake)
return j;
}
+#if 0
// FIXME: merge info CmdFlakeInfo?
struct CmdFlakeDeps : FlakeCommand
{
@@ -173,6 +174,7 @@ struct CmdFlakeDeps : FlakeCommand
}
}
};
+#endif
struct CmdFlakeUpdate : FlakeCommand
{
@@ -232,6 +234,7 @@ struct CmdFlakeInfo : FlakeCommand, MixJSON
if (json) {
auto json = flakeToJson(flake);
+#if 0
auto state = getEvalState();
auto vFlake = state->allocValue();
@@ -254,6 +257,7 @@ struct CmdFlakeInfo : FlakeCommand, MixJSON
});
json["outputs"] = std::move(outputs);
+#endif
std::cout << json.dump() << std::endl;
} else
@@ -518,7 +522,7 @@ struct CmdFlake : virtual MultiCommand, virtual Command
, make_ref<CmdFlakeUpdate>()
, make_ref<CmdFlakeInfo>()
, make_ref<CmdFlakeCheck>()
- , make_ref<CmdFlakeDeps>()
+ //, make_ref<CmdFlakeDeps>()
, make_ref<CmdFlakeAdd>()
, make_ref<CmdFlakeRemove>()
, make_ref<CmdFlakePin>()