Commit c3f5635d0422027748290dbc3838b94ab69ad5a7
nix-environment: gone Full Execline
Claes Wallin (韋嘉誠) committed on 10/15/2016, 4:05:56 PMParent: 03e288c9b9e4d60e7d19ac8bd0cdaa7b052221ec
Files changed
bin/nix-environment | changed |
bin/nix-environment | ||
---|---|---|
@@ -1,26 +1,48 @@ | ||
1 | -#!/usr/bin/env bash | |
1 … | +#!/nix/var/nix/profiles/execline/bin/execlineb -W | |
2 | 2 … | |
3 | 3 … | # Execute things in an ephemeral nix environment context, with similar |
4 | 4 … | # syntax as `guix environment --ad-hoc`: |
5 | 5 … | # nix-environment <package_1> [ ... <package_n> ] -- \ |
6 | 6 … | # command [ <arg_1> [ ... <arg_n>]] |
7 | 7 … | |
8 | -EL_BIN=/nix/var/nix/profiles/execline/bin | |
8 … | +/nix/var/nix/profiles/execline/bin/define EL_BIN /nix/var/nix/profiles/execline/bin | |
9 … | +${EL_BIN}/import PATH | |
10 … | +${EL_BIN}/export PATH ${EL_BIN}:$PATH | |
9 | 11 … | |
10 | -while (( $# >= 1 )); do | |
11 | - if [[ $1 == "--" ]]; then | |
12 | - shift | |
13 | - break | |
14 | - fi | |
15 | - packages+=( "$1" ) | |
12 … | +${EL_BIN}/importas -i PACKAGE 1 | |
13 … | + | |
14 … | +ifelse { | |
15 … | + redirfd -w 1 /dev/null | |
16 … | + expr -- $PACKAGE != -- | |
17 … | +} | |
18 … | +{ | |
19 … | + ifelse { | |
20 … | + redirfd -w 1 /dev/null | |
21 … | + import \# | |
22 … | + expr $\# = 0 | |
23 … | + } | |
24 … | + { | |
25 … | + fdmove 1 2 | |
26 … | + echo "The '--' argument is required" | |
27 … | + exit 1 | |
28 … | + } | |
29 … | + backtick PACKAGE_NETSTRING { | |
30 … | + execlineb -c "dollarat -d \"\"" $PACKAGE | |
31 … | + } | |
32 … | + multisubstitute { | |
33 … | + import PACKAGE_NETSTRING | |
34 … | + import -D "" NIX_ENVIRONMENT_PACKAGES | |
35 … | + } | |
36 … | + export NIX_ENVIRONMENT_PACKAGES ${NIX_ENVIRONMENT_PACKAGES}${PACKAGE_NETSTRING} | |
37 … | + importas -i SELF 0 | |
16 | 38 … | shift |
17 | -done | |
18 | - | |
19 | -export PACKAGES=$(PATH=${EL_BIN}:$PATH execlineb -c 'dollarat -d ""' "${packages[@]}") | |
20 | - | |
21 | -exec ${EL_BIN}/execlineb -c " | |
22 | - ${EL_BIN}/import -u EL_BIN"' | |
23 | - ${EL_BIN}/import -u -s -d "" PACKAGES | |
24 | - nix-shell -p $PACKAGES --run | |
25 | - "exec '"'"'${EL_BIN}/elgetpositionals'"'"' \\$@" | |
26 | -' "$@" | |
39 … | + elgetpositionals | |
40 … | + emptyenv -P | |
41 … | + export PATH $PATH | |
42 … | + ${EL_BIN}/execlineb $SELF $@ | |
43 … | +} | |
44 … | +shift | |
45 … | +import -u -s -d "" NIX_ENVIRONMENT_PACKAGES | |
46 … | +export PATH $PATH | |
47 … | +nix-shell -p $NIX_ENVIRONMENT_PACKAGES --run | |
48 … | + "exec '${EL_BIN}/elgetpositionals' \\$@" |
Built with git-ssb-web