aboutsummaryrefslogtreecommitdiff
path: root/src/nix
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2023-01-16 23:01:18 -0500
committerJohn Ericson <John.Ericson@Obsidian.Systems>2023-04-03 11:48:21 -0400
commit4a0b893d5e5d5cbf2f39e52d1651bcff8b4943a9 (patch)
tree2b2d23d51f1477be4d35472ce342349426b747ae /src/nix
parentf3a6de6ba983141cabed200cefbf46c791c1d48a (diff)
Stuctured command stability
Prior to this, there was an ad-hoc whitelist in `main.cc`. Now, every command states its stability. In a future PR, we will adjust the manual to take advantage of this new information in the JSON. (It will be easier to do that once we have some experimental feature docs to link too; see #5930 and #7798.)
Diffstat (limited to 'src/nix')
-rw-r--r--src/nix/doctor.cc8
-rw-r--r--src/nix/main.cc6
-rw-r--r--src/nix/repl.cc8
-rw-r--r--src/nix/upgrade-nix.cc8
4 files changed, 26 insertions, 4 deletions
diff --git a/src/nix/doctor.cc b/src/nix/doctor.cc
index 7da4549a1..354b03cf6 100644
--- a/src/nix/doctor.cc
+++ b/src/nix/doctor.cc
@@ -39,6 +39,14 @@ struct CmdDoctor : StoreCommand
{
bool success = true;
+ /**
+ * This command is stable before the others
+ */
+ std::optional<ExperimentalFeature> experimentalFeature() override
+ {
+ return std::nullopt;
+ }
+
std::string description() override
{
return "check your system for potential problems and print a PASS or FAIL for each check";
diff --git a/src/nix/main.cc b/src/nix/main.cc
index c2e1dda74..4d4164333 100644
--- a/src/nix/main.cc
+++ b/src/nix/main.cc
@@ -423,10 +423,8 @@ void mainWrapped(int argc, char * * argv)
if (!args.command)
throw UsageError("no subcommand specified");
- if (args.command->first != "repl"
- && args.command->first != "doctor"
- && args.command->first != "upgrade-nix")
- experimentalFeatureSettings.require(Xp::NixCommand);
+ experimentalFeatureSettings.require(
+ args.command->second->experimentalFeature());
if (args.useNet && !haveInternet()) {
warn("you don't have Internet access; disabling some network-dependent features");
diff --git a/src/nix/repl.cc b/src/nix/repl.cc
index 7aa8774e9..bb14f3f99 100644
--- a/src/nix/repl.cc
+++ b/src/nix/repl.cc
@@ -12,6 +12,14 @@ struct CmdRepl : RawInstallablesCommand
evalSettings.pureEval = false;
}
+ /**
+ * This command is stable before the others
+ */
+ std::optional<ExperimentalFeature> experimentalFeature() override
+ {
+ return std::nullopt;
+ }
+
std::vector<std::string> files;
Strings getDefaultFlakeAttrPaths() override
diff --git a/src/nix/upgrade-nix.cc b/src/nix/upgrade-nix.cc
index 17796d6b8..2295d86d0 100644
--- a/src/nix/upgrade-nix.cc
+++ b/src/nix/upgrade-nix.cc
@@ -32,6 +32,14 @@ struct CmdUpgradeNix : MixDryRun, StoreCommand
});
}
+ /**
+ * This command is stable before the others
+ */
+ std::optional<ExperimentalFeature> experimentalFeature() override
+ {
+ return std::nullopt;
+ }
+
std::string description() override
{
return "upgrade Nix to the stable version declared in Nixpkgs";