nix-shell: Use $XDG_RUNTIME_DIR

This prevents collisions with other users.

Fixes #262.
This commit is contained in:
Eelco Dolstra 2014-08-13 23:16:08 +02:00
parent 3bea429ae8
commit 3e5dbb2433

View file

@ -204,6 +204,7 @@ foreach my $expr (@exprs) {
or die "$0: failed to build all dependencies\n"; or die "$0: failed to build all dependencies\n";
# Set the environment. # Set the environment.
my $tmp = $ENV{"TMPDIR"} // $ENV{"XDG_RUNTIME_DIR"} // "/tmp";
if ($pure) { if ($pure) {
foreach my $name (keys %ENV) { foreach my $name (keys %ENV) {
next if grep { $_ eq $name } ("HOME", "USER", "LOGNAME", "DISPLAY", "PATH", "TERM", "IN_NIX_SHELL", "TZ", "PAGER"); next if grep { $_ eq $name } ("HOME", "USER", "LOGNAME", "DISPLAY", "PATH", "TERM", "IN_NIX_SHELL", "TZ", "PAGER");
@ -212,7 +213,7 @@ foreach my $expr (@exprs) {
# NixOS hack: prevent /etc/bashrc from sourcing /etc/profile. # NixOS hack: prevent /etc/bashrc from sourcing /etc/profile.
$ENV{'__ETC_PROFILE_SOURCED'} = 1; $ENV{'__ETC_PROFILE_SOURCED'} = 1;
} }
$ENV{'NIX_BUILD_TOP'} = $ENV{'TMPDIR'} = $ENV{'TEMPDIR'} = $ENV{'TMP'} = $ENV{'TEMP'} = $ENV{'TMPDIR'} // "/tmp"; $ENV{'NIX_BUILD_TOP'} = $ENV{'TMPDIR'} = $ENV{'TEMPDIR'} = $ENV{'TMP'} = $ENV{'TEMP'} = $tmp;
$ENV{'NIX_STORE'} = $Nix::Config::storeDir; $ENV{'NIX_STORE'} = $Nix::Config::storeDir;
$ENV{$_} = $drv->{env}->{$_} foreach keys %{$drv->{env}}; $ENV{$_} = $drv->{env}->{$_} foreach keys %{$drv->{env}};