aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2021-07-13 23:27:55 +0200
committerGitHub <noreply@github.com>2021-07-13 23:27:55 +0200
commitbee71d692a10c9fcdc78f589945b9710f676cefb (patch)
tree24a2085774f28d9bbfe49f5e182cbf92ef8941c6 /src
parenteb4788954de4546787cce2e4ecd660fc55fe2e85 (diff)
parent797e260e3a322937bd31f94d166beafc283f6ed7 (diff)
Merge pull request #5008 from NixOS/flake-devShells-attribute
Add a `devShells` attribute to the flake schema
Diffstat (limited to 'src')
-rw-r--r--src/nix/develop.cc6
-rw-r--r--src/nix/develop.md11
-rw-r--r--src/nix/flake-check.md1
-rw-r--r--src/nix/flake.cc6
4 files changed, 21 insertions, 3 deletions
diff --git a/src/nix/develop.cc b/src/nix/develop.cc
index 26f53db09..9ac2791f8 100644
--- a/src/nix/develop.cc
+++ b/src/nix/develop.cc
@@ -326,6 +326,12 @@ struct Common : InstallableCommand, MixProfile
{
return {"devShell." + settings.thisSystem.get(), "defaultPackage." + settings.thisSystem.get()};
}
+ Strings getDefaultFlakeAttrPathPrefixes() override
+ {
+ auto res = SourceExprCommand::getDefaultFlakeAttrPathPrefixes();
+ res.emplace_front("devShells." + settings.thisSystem.get());
+ return res;
+ }
StorePath getShellOutPath(ref<Store> store)
{
diff --git a/src/nix/develop.md b/src/nix/develop.md
index e71d9f8aa..c86c4872b 100644
--- a/src/nix/develop.md
+++ b/src/nix/develop.md
@@ -84,11 +84,20 @@ the flake's `nixConfig` attribute.
# Flake output attributes
-If no flake output attribute is given, `nix run` tries the following
+If no flake output attribute is given, `nix develop` tries the following
flake output attributes:
* `devShell.<system>`
* `defaultPackage.<system>`
+If a flake output *name* is given, `nix develop` tries the following flake
+output attributes:
+
+* `devShells.<system>.<name>`
+
+* `packages.<system>.<name>`
+
+* `legacyPackages.<system>.<name>`
+
)""
diff --git a/src/nix/flake-check.md b/src/nix/flake-check.md
index 8ef932954..d995d6274 100644
--- a/src/nix/flake-check.md
+++ b/src/nix/flake-check.md
@@ -33,6 +33,7 @@ The following flake output attributes must be derivations:
* `checks.`*system*`.`*name*
* `defaultPackage.`*system*`
* `devShell.`*system*`
+* `devShells.`*system*`.`*name*`
* `nixosConfigurations.`*name*`.config.system.build.toplevel
* `packages.`*system*`.`*name*
diff --git a/src/nix/flake.cc b/src/nix/flake.cc
index 9055b07eb..23feed24b 100644
--- a/src/nix/flake.cc
+++ b/src/nix/flake.cc
@@ -486,7 +486,7 @@ struct CmdFlakeCheck : FlakeCommand
}
}
- else if (name == "packages") {
+ else if (name == "packages" || name == "devShells") {
state->forceAttrs(vOutput, pos);
for (auto & attr : *vOutput.attrs) {
checkSystemName(attr.name, *attr.pos);
@@ -914,6 +914,7 @@ struct CmdFlakeShow : FlakeCommand
logger->cout("%s: %s '%s'",
headerPrefix,
attrPath.size() == 2 && attrPath[0] == "devShell" ? "development environment" :
+ attrPath.size() >= 2 && attrPath[0] == "devShells" ? "development environment" :
attrPath.size() == 3 && attrPath[0] == "checks" ? "derivation" :
attrPath.size() >= 1 && attrPath[0] == "hydraJobs" ? "derivation" :
"package",
@@ -932,6 +933,7 @@ struct CmdFlakeShow : FlakeCommand
|| ((attrPath.size() == 1 || attrPath.size() == 2)
&& (attrPath[0] == "checks"
|| attrPath[0] == "packages"
+ || attrPath[0] == "devShells"
|| attrPath[0] == "apps"))
)
{
@@ -940,7 +942,7 @@ struct CmdFlakeShow : FlakeCommand
else if (
(attrPath.size() == 2 && (attrPath[0] == "defaultPackage" || attrPath[0] == "devShell"))
- || (attrPath.size() == 3 && (attrPath[0] == "checks" || attrPath[0] == "packages"))
+ || (attrPath.size() == 3 && (attrPath[0] == "checks" || attrPath[0] == "packages" || attrPath[0] == "devShells"))
)
{
if (visitor.isDerivation())