aboutsummaryrefslogtreecommitdiff
path: root/src/nix/upgrade-nix.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/nix/upgrade-nix.cc')
-rw-r--r--src/nix/upgrade-nix.cc17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/nix/upgrade-nix.cc b/src/nix/upgrade-nix.cc
index 4940d93f8..31a051246 100644
--- a/src/nix/upgrade-nix.cc
+++ b/src/nix/upgrade-nix.cc
@@ -21,6 +21,8 @@ struct CmdUpgradeNix : MixDryRun, EvalCommand
Path profileDir;
std::string storePathsUrl = "https://github.com/NixOS/nixpkgs/raw/master/nixos/modules/installer/tools/nix-fallback-paths.nix";
+ std::optional<Path> overrideStorePath;
+
CmdUpgradeNix()
{
addFlag({
@@ -32,6 +34,13 @@ struct CmdUpgradeNix : MixDryRun, EvalCommand
});
addFlag({
+ .longName = "store-path",
+ .description = "A specific store path to upgrade Nix to",
+ .labels = {"store-path"},
+ .handler = {&overrideStorePath},
+ });
+
+ addFlag({
.longName = "nix-store-paths-url",
.description = "The URL of the file that contains the store paths of the latest Nix release.",
.labels = {"url"},
@@ -246,6 +255,14 @@ struct CmdUpgradeNix : MixDryRun, EvalCommand
/* Return the store path of the latest stable Nix. */
StorePath getLatestNix(ref<Store> store)
{
+ if (this->overrideStorePath) {
+ printTalkative(
+ "skipping Nix version query and using '%s' as latest Nix",
+ *this->overrideStorePath
+ );
+ return store->parseStorePath(*this->overrideStorePath);
+ }
+
Activity act(*logger, lvlInfo, actUnknown, "querying latest Nix version");
// FIXME: use nixos.org?