forked from lix-project/lix
nix upgrade-nix: make the source URL an option
This new option enables organizations to more easily manage their Nix fleet's deployment, and ensure a consistent and planned rollout of Nix upgrades.
This commit is contained in:
parent
458e511dc4
commit
fd5a4a8467
|
@ -1084,6 +1084,16 @@ public:
|
||||||
true, // document default
|
true, // document default
|
||||||
Xp::ConfigurableImpureEnv
|
Xp::ConfigurableImpureEnv
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Setting<std::string> upgradeNixStorePathUrl{
|
||||||
|
this,
|
||||||
|
"https://github.com/NixOS/nixpkgs/raw/master/nixos/modules/installer/tools/nix-fallback-paths.nix",
|
||||||
|
"upgrade-nix-store-path-url",
|
||||||
|
R"(
|
||||||
|
Used by `nix upgrade-nix`, the URL of the file that contains the
|
||||||
|
store paths of the latest Nix release.
|
||||||
|
)"
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,6 @@ using namespace nix;
|
||||||
struct CmdUpgradeNix : MixDryRun, StoreCommand
|
struct CmdUpgradeNix : MixDryRun, StoreCommand
|
||||||
{
|
{
|
||||||
Path profileDir;
|
Path profileDir;
|
||||||
std::string storePathsUrl = "https://github.com/NixOS/nixpkgs/raw/master/nixos/modules/installer/tools/nix-fallback-paths.nix";
|
|
||||||
|
|
||||||
CmdUpgradeNix()
|
CmdUpgradeNix()
|
||||||
{
|
{
|
||||||
|
@ -30,7 +29,7 @@ struct CmdUpgradeNix : MixDryRun, StoreCommand
|
||||||
.longName = "nix-store-paths-url",
|
.longName = "nix-store-paths-url",
|
||||||
.description = "The URL of the file that contains the store paths of the latest Nix release.",
|
.description = "The URL of the file that contains the store paths of the latest Nix release.",
|
||||||
.labels = {"url"},
|
.labels = {"url"},
|
||||||
.handler = {&storePathsUrl}
|
.handler = {&(std::string&) settings.upgradeNixStorePathUrl}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,7 +43,7 @@ struct CmdUpgradeNix : MixDryRun, StoreCommand
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "upgrade Nix to the stable version declared in Nixpkgs";
|
return "upgrade Nix to the latest stable version";
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string doc() override
|
std::string doc() override
|
||||||
|
@ -145,7 +144,7 @@ struct CmdUpgradeNix : MixDryRun, StoreCommand
|
||||||
Activity act(*logger, lvlInfo, actUnknown, "querying latest Nix version");
|
Activity act(*logger, lvlInfo, actUnknown, "querying latest Nix version");
|
||||||
|
|
||||||
// FIXME: use nixos.org?
|
// FIXME: use nixos.org?
|
||||||
auto req = FileTransferRequest(storePathsUrl);
|
auto req = FileTransferRequest((std::string&) settings.upgradeNixStorePathUrl);
|
||||||
auto res = getFileTransfer()->download(req);
|
auto res = getFileTransfer()->download(req);
|
||||||
|
|
||||||
auto state = std::make_unique<EvalState>(SearchPath{}, store);
|
auto state = std::make_unique<EvalState>(SearchPath{}, store);
|
||||||
|
|
|
@ -16,8 +16,10 @@ R""(
|
||||||
|
|
||||||
# Description
|
# Description
|
||||||
|
|
||||||
This command upgrades Nix to the stable version declared in Nixpkgs.
|
This command upgrades Nix to the stable version.
|
||||||
This stable version is defined in [nix-fallback-paths.nix](https://github.com/NixOS/nixpkgs/raw/master/nixos/modules/installer/tools/nix-fallback-paths.nix)
|
|
||||||
|
By default, the latest stable version is defined by Nixpkgs, in
|
||||||
|
[nix-fallback-paths.nix](https://github.com/NixOS/nixpkgs/raw/master/nixos/modules/installer/tools/nix-fallback-paths.nix)
|
||||||
and updated manually. It may not always be the latest tagged release.
|
and updated manually. It may not always be the latest tagged release.
|
||||||
|
|
||||||
By default, it locates the directory containing the `nix` binary in the `$PATH`
|
By default, it locates the directory containing the `nix` binary in the `$PATH`
|
||||||
|
|
Loading…
Reference in a new issue