aboutsummaryrefslogtreecommitdiff
path: root/src/nix/installables.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/nix/installables.cc')
-rw-r--r--src/nix/installables.cc20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/nix/installables.cc b/src/nix/installables.cc
index 963321336..9d87c70c3 100644
--- a/src/nix/installables.cc
+++ b/src/nix/installables.cc
@@ -21,6 +21,11 @@ SourceExprCommand::SourceExprCommand()
.label("file")
.description("evaluate a set of attributes from FILE (deprecated)")
.dest(&file);
+
+ mkFlag()
+ .longName("no-update")
+ .description("don't create/update flake lock files")
+ .set(&updateLockFile, false);
}
ref<EvalState> SourceExprCommand::getEvalState()
@@ -147,8 +152,13 @@ struct InstallableFlake : InstallableValue
Value * toValue(EvalState & state) override
{
+ auto path = std::get_if<FlakeRef::IsPath>(&flakeRef.data);
+ if (cmd.updateLockFile && path) {
+ updateLockFile(state, path->path);
+ }
+
auto vFlake = state.allocValue();
- makeFlakeValue(state, flakeRef, true, *vFlake);
+ makeFlakeValue(state, flakeRef, AllowRegistryAtTop, *vFlake);
auto vProvides = (*vFlake->attrs->get(state.symbols.create("provides")))->value;
@@ -169,14 +179,6 @@ struct InstallableFlake : InstallableValue
state.forceValue(*v);
return v;
}
-
- std::optional<std::string> installableToFlakeUri() override
- {
- if (std::get_if<FlakeRef::IsPath>(&flakeRef.data))
- return flakeRef.to_string();
- else
- return std::nullopt;
- }
};
// FIXME: extend