aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/nix-channel/nix-channel.cc8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/nix-channel/nix-channel.cc b/src/nix-channel/nix-channel.cc
index 338a7d18e..a79354404 100755
--- a/src/nix-channel/nix-channel.cc
+++ b/src/nix-channel/nix-channel.cc
@@ -168,7 +168,13 @@ static int main_nix_channel(int argc, char ** argv)
nixDefExpr = settings.useXDGBaseDirectories ? createNixStateDir() + "/defexpr" : home + "/.nix-defexpr";
// Figure out the name of the channels profile.
- profile = profilesDir() + "/channels";
+ // For backwards-compatibility, install the root channels under
+ // a custom location, as these are also used as "global" channeles, and
+ // their location is hardcoded in a number of places.
+ profile = getuid() == 0
+ ? settings.nixStateDir + "/profiles/per-user/root/channels"
+ : profilesDir() + "/channels";
+ createDirs(dirOf(profile));
enum {
cNone,