diff options
-rw-r--r-- | release.nix | 12 | ||||
-rw-r--r-- | src/nix/upgrade-nix.cc | 9 |
2 files changed, 20 insertions, 1 deletions
diff --git a/release.nix b/release.nix index f9ee07e34781..fdf3fa946aa8 100644 --- a/release.nix +++ b/release.nix @@ -249,6 +249,18 @@ let su - alice -c '_NIX_INSTALLER_TEST=1 ./nix-*/install' su - alice -c 'nix-store --verify' su - alice -c 'PAGER= nix-store -qR ${build.x86_64-linux}' + + # Check whether 'nix upgrade-nix' works. + (! [ -L /nix/var/nix/profiles/per-user/alice/profile-2-link ]) + cat > /tmp/paths.nix <<EOF + { + x86_64-linux = "${build.x86_64-linux}"; + } + EOF + su - alice -c 'nix upgrade-nix -vvv --nix-store-paths-url file:///tmp/paths.nix' + [ -L /nix/var/nix/profiles/per-user/alice/profile-2-link ] + su - alice -c 'PAGER= nix-store -qR ${build.x86_64-linux}' + mkdir -p $out/nix-support touch $out/nix-support/hydra-build-products umount /nix diff --git a/src/nix/upgrade-nix.cc b/src/nix/upgrade-nix.cc index e23ae792369c..4f4d0ebc08a4 100644 --- a/src/nix/upgrade-nix.cc +++ b/src/nix/upgrade-nix.cc @@ -9,6 +9,7 @@ using namespace nix; struct CmdUpgradeNix : StoreCommand { Path profileDir; + std::string storePathsUrl = "https://github.com/NixOS/nixpkgs/raw/master/nixos/modules/installer/tools/nix-fallback-paths.nix"; CmdUpgradeNix() { @@ -18,6 +19,12 @@ struct CmdUpgradeNix : StoreCommand .labels({"profile-dir"}) .description("the Nix profile to upgrade") .dest(&profileDir); + + mkFlag() + .longName("nix-store-paths-url") + .labels({"url"}) + .description("URL of the file that contains the store paths of the latest Nix release") + .dest(&storePathsUrl); } std::string name() override @@ -115,7 +122,7 @@ struct CmdUpgradeNix : StoreCommand Path getLatestNix(ref<Store> store) { // FIXME: use nixos.org? - auto req = DownloadRequest("https://github.com/NixOS/nixpkgs/raw/master/nixos/modules/installer/tools/nix-fallback-paths.nix"); + auto req = DownloadRequest(storePathsUrl); auto res = getDownloader()->download(req); auto state = std::make_unique<EvalState>(Strings(), store); |