aboutsummaryrefslogtreecommitdiff
path: root/src/nix/develop.cc
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2023-02-05 23:28:18 -0500
committerJohn Ericson <John.Ericson@Obsidian.Systems>2023-03-24 12:22:40 -0400
commit256f3e306369131cb13756ed94606d47c343103e (patch)
treec48512735d694c815e1e728baa81078ebb3ae3e3 /src/nix/develop.cc
parente00abd3f566b16bb107d513925cf33b40cca35f4 (diff)
Stratify `ExtraPathInfo` along `Installable` hierarchy
Instead of having a bunch of optional fields, have a few subclasses which can have mandatory fields. Additionally, the new `getExtraPathInfo`, and `nixpkgsFlakeRef`, are moved to `InstallableValue`. I did these things because https://github.com/NixOS/rfcs/pull/134 ; with these things moved to `InstallableValue`, the base `Installable` no longer depends on libexpr! This is a major step towards that. Also, add a bunch of doc comments for sake of the internal API docs.
Diffstat (limited to 'src/nix/develop.cc')
-rw-r--r--src/nix/develop.cc12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/nix/develop.cc b/src/nix/develop.cc
index f06ade008..d8de20586 100644
--- a/src/nix/develop.cc
+++ b/src/nix/develop.cc
@@ -1,6 +1,6 @@
#include "eval.hh"
-#include "command.hh"
#include "installable-flake.hh"
+#include "command-installable-value.hh"
#include "common-args.hh"
#include "shared.hh"
#include "store-api.hh"
@@ -252,7 +252,7 @@ static StorePath getDerivationEnvironment(ref<Store> store, ref<Store> evalStore
throw Error("get-env.sh failed to produce an environment");
}
-struct Common : InstallableCommand, MixProfile
+struct Common : InstallableValueCommand, MixProfile
{
std::set<std::string> ignoreVars{
"BASHOPTS",
@@ -374,7 +374,7 @@ struct Common : InstallableCommand, MixProfile
return res;
}
- StorePath getShellOutPath(ref<Store> store, ref<Installable> installable)
+ StorePath getShellOutPath(ref<Store> store, ref<InstallableValue> installable)
{
auto path = installable->getStorePath();
if (path && hasSuffix(path->to_string(), "-env"))
@@ -393,7 +393,7 @@ struct Common : InstallableCommand, MixProfile
}
std::pair<BuildEnvironment, std::string>
- getBuildEnvironment(ref<Store> store, ref<Installable> installable)
+ getBuildEnvironment(ref<Store> store, ref<InstallableValue> installable)
{
auto shellOutPath = getShellOutPath(store, installable);
@@ -481,7 +481,7 @@ struct CmdDevelop : Common, MixEnvironment
;
}
- void run(ref<Store> store, ref<Installable> installable) override
+ void run(ref<Store> store, ref<InstallableValue> installable) override
{
auto [buildEnvironment, gcroot] = getBuildEnvironment(store, installable);
@@ -605,7 +605,7 @@ struct CmdPrintDevEnv : Common, MixJSON
Category category() override { return catUtility; }
- void run(ref<Store> store, ref<Installable> installable) override
+ void run(ref<Store> store, ref<InstallableValue> installable) override
{
auto buildEnvironment = getBuildEnvironment(store, installable).first;