From b649c7add7c8114c8c2d123002823f0c04156c0d Mon Sep 17 00:00:00 2001 From: Qyriad Date: Sat, 27 Apr 2024 23:09:02 -0600 Subject: [PATCH] nix3-upgrade-nix: allow manually specifying new nix This allows manually specifying a store path for the new Nix that gets linked into Nix's profile. Change-Id: Ib71711ffb466febf4a6892e3fdbda644e053770d --- src/nix/upgrade-nix.cc | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/nix/upgrade-nix.cc b/src/nix/upgrade-nix.cc index 6bc8060b6..f0d02cd22 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 overrideStorePath; + CmdUpgradeNix() { addFlag({ @@ -31,6 +33,13 @@ struct CmdUpgradeNix : MixDryRun, EvalCommand .handler = {&profileDir} }); + 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.", @@ -246,6 +255,14 @@ struct CmdUpgradeNix : MixDryRun, EvalCommand /* Return the store path of the latest stable Nix. */ StorePath getLatestNix(ref 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?