Skip to content

Commit

Permalink
Merge pull request #8735 from obsidiansystems/defexpr
Browse files Browse the repository at this point in the history
Factor out `nix-defexpr` path computation
  • Loading branch information
roberth authored Aug 11, 2023
2 parents 010dc79 + 9b908fa commit 584ff40
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 3 deletions.
9 changes: 8 additions & 1 deletion src/libexpr/eval-settings.cc
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ Strings EvalSettings::getDefaultNixPath()
};

if (!evalSettings.restrictEval && !evalSettings.pureEval) {
add(settings.useXDGBaseDirectories ? getStateDir() + "/nix/defexpr/channels" : getHome() + "/.nix-defexpr/channels");
add(getNixDefExpr() + "/channels");
add(rootChannelsDir() + "/nixpkgs", "nixpkgs");
add(rootChannelsDir());
}
Expand Down Expand Up @@ -92,4 +92,11 @@ EvalSettings evalSettings;

static GlobalConfig::Register rEvalSettings(&evalSettings);

Path getNixDefExpr()
{
return settings.useXDGBaseDirectories
? getStateDir() + "/nix/defexpr"
: getHome() + "/.nix-defexpr";
}

}
5 changes: 5 additions & 0 deletions src/libexpr/eval-settings.hh
Original file line number Diff line number Diff line change
Expand Up @@ -95,4 +95,9 @@ struct EvalSettings : Config

extern EvalSettings evalSettings;

/**
* Conventionally part of the default nix path in impure mode.
*/
Path getNixDefExpr();

}
3 changes: 2 additions & 1 deletion src/nix-channel/nix-channel.cc
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#include "store-api.hh"
#include "legacy.hh"
#include "fetchers.hh"
#include "eval-settings.hh" // for defexpr
#include "util.hh"

#include <fcntl.h>
Expand Down Expand Up @@ -165,7 +166,7 @@ static int main_nix_channel(int argc, char ** argv)
// Figure out the name of the `.nix-channels' file to use
auto home = getHome();
channelsList = settings.useXDGBaseDirectories ? createNixStateDir() + "/channels" : home + "/.nix-channels";
nixDefExpr = settings.useXDGBaseDirectories ? createNixStateDir() + "/defexpr" : home + "/.nix-defexpr";
nixDefExpr = getNixDefExpr();

// Figure out the name of the channels profile.
profile = profilesDir() + "/channels";
Expand Down
3 changes: 2 additions & 1 deletion src/nix-env/nix-env.cc
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
#include "value-to-json.hh"
#include "xml-writer.hh"
#include "legacy.hh"
#include "eval-settings.hh" // for defexpr

#include <cerrno>
#include <ctime>
Expand Down Expand Up @@ -1399,7 +1400,7 @@ static int main_nix_env(int argc, char * * argv)
globals.instSource.type = srcUnknown;
globals.instSource.systemFilter = "*";

Path nixExprPath = settings.useXDGBaseDirectories ? createNixStateDir() + "/defexpr" : getHome() + "/.nix-defexpr";
Path nixExprPath = getNixDefExpr();

if (!pathExists(nixExprPath)) {
try {
Expand Down

0 comments on commit 584ff40

Please sign in to comment.