diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2013-07-19T09·23+0200 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2013-07-19T09·23+0200 |
commit | dc5f2e7da607bdf50bf710cbe0b5f6ff32980e19 (patch) | |
tree | b5a805fbcde4741ba1b0bb2c15205034344ac00b /scripts/nix-build.in | |
parent | a4921b8ceb5bde3fbd1ae25ea4b367199796eded (diff) |
nix-build --run-env: Add a ‘--pure’ flag
This causes the environment to be (almost) cleared, thus giving a shell that more closely resembled the actual Nix derivation.
Diffstat (limited to 'scripts/nix-build.in')
-rwxr-xr-x | scripts/nix-build.in | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/scripts/nix-build.in b/scripts/nix-build.in index fb70331bfa13..899882952b12 100755 --- a/scripts/nix-build.in +++ b/scripts/nix-build.in @@ -10,6 +10,7 @@ use File::Temp qw(tempdir); my $dryRun = 0; my $verbose = 0; my $runEnv = 0; +my $pure = 0; my @instArgs = (); my @buildArgs = (); @@ -134,6 +135,10 @@ for (my $n = 0; $n < scalar @ARGV; $n++) { push @envExclude, $ARGV[$n]; } + elsif ($arg eq "--pure") { + $pure = 1; + } + elsif (substr($arg, 0, 1) eq "-") { push @buildArgs, $arg; } @@ -169,6 +174,14 @@ foreach my $expr (@exprs) { or die "$0: failed to build all dependencies\n"; # Set the environment. + if ($pure) { + foreach my $name (keys %ENV) { + next if $name eq "HOME" || $name eq "USER" || $name eq "LOGNAME" || $name eq "DISPLAY" || $name eq "PATH"; + delete $ENV{$name}; + } + # NixOS hack: prevent /etc/bashrc from sourcing /etc/profile. + $ENV{'__ETC_PROFILE_SOURCED'} = 1; + } $ENV{'NIX_BUILD_TOP'} = $ENV{'TMPDIR'} || "/tmp"; $ENV{$_} = $drv->{env}->{$_} foreach keys %{$drv->{env}}; @@ -180,9 +193,9 @@ foreach my $expr (@exprs) { writeFile( $rcfile, '[ -e ~/.bashrc ] && source ~/.bashrc; ' . - 'p=$PATH; ' . + ($pure ? '' : 'p=$PATH; ' ). '[ -e $stdenv/setup ] && source $stdenv/setup; ' . - 'PATH=$PATH:$p; ' . + ($pure ? '' : 'PATH=$PATH:$p; ') . 'set +e; ' . 'PS1="\n\[\033[1;32m\][nix-build:\w]$\[\033[0m\] "; ' . $envCommand); |