aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nix/flake.cc19
-rw-r--r--src/nix/installables.cc7
2 files changed, 14 insertions, 12 deletions
diff --git a/src/nix/flake.cc b/src/nix/flake.cc
index 2e352306e..d0135143c 100644
--- a/src/nix/flake.cc
+++ b/src/nix/flake.cc
@@ -174,11 +174,12 @@ static void enumerateOutputs(EvalState & state, Value & vFlake,
{
state.forceAttrs(vFlake);
- auto vOutputs = (*vFlake.attrs->get(state.symbols.create("outputs")))->value;
+ auto aOutputs = vFlake.attrs->get(state.symbols.create("outputs"));
+ assert(aOutputs);
- state.forceAttrs(*vOutputs);
+ state.forceAttrs(*(*aOutputs)->value);
- for (auto & attr : *vOutputs->attrs)
+ for (auto & attr : *((*aOutputs)->value->attrs))
callback(attr.name, *attr.value, *attr.pos);
}
@@ -191,15 +192,12 @@ struct CmdFlakeInfo : FlakeCommand, MixJSON
void run(nix::ref<nix::Store> store) override
{
- auto flake = getFlake();
- stopProgressBar();
-
if (json) {
- auto json = flakeToJson(flake);
-
auto state = getEvalState();
auto flake = resolveFlake();
+ auto json = flakeToJson(flake.flake);
+
auto vFlake = state->allocValue();
flake::callFlake(*state, flake, *vFlake);
@@ -222,8 +220,11 @@ struct CmdFlakeInfo : FlakeCommand, MixJSON
json["outputs"] = std::move(outputs);
std::cout << json.dump() << std::endl;
- } else
+ } else {
+ auto flake = getFlake();
+ stopProgressBar();
printFlakeInfo(flake);
+ }
}
};
diff --git a/src/nix/installables.cc b/src/nix/installables.cc
index 85005cc95..867133653 100644
--- a/src/nix/installables.cc
+++ b/src/nix/installables.cc
@@ -291,11 +291,12 @@ struct InstallableFlake : InstallableValue
makeFlakeClosureGCRoot(*state.store, flakeRef, resFlake);
- auto vOutputs = (*vFlake->attrs->get(state.symbols.create("outputs")))->value;
+ auto aOutputs = vFlake->attrs->get(state.symbols.create("outputs"));
+ assert(aOutputs);
- state.forceValue(*vOutputs);
+ state.forceValue(*(*aOutputs)->value);
- return vOutputs;
+ return (*aOutputs)->value;
}
std::vector<flake::EvalCache::Derivation> toDerivations() override