/
nixos-shell
executable file
·73 lines (65 loc) · 1.6 KB
/
nixos-shell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/usr/bin/env bash
set -euo pipefail
script_dir="$(dirname "$(readlink -f "$0")")"
flake_uri=
flake_attr=
usage() {
echo "USAGE: $0 [--builders builders] [--flake uri] [--fallback] [-I path]
[--impure] [--keep-going | -k] [--keep-failed | -K]
[--no-net] [--option name value] [--repair]
[--refresh] [--show-trace] [--verbose | -v | -vv | -vvv | -vvvv | -vvvvv]
vm.nix" 1>&2
}
nixos_config=vm.nix
while [[ $# -gt 0 ]]; do
i="$1"; shift 1
case "$i" in
--)
shift
break
;;
--help|-h)
usage
exit
;;
--flake)
flake="$(echo "$1" | awk -F '#' '{ print $1; }')"
flake_uri="$(nix flake metadata --extra-experimental-features "nix-command flakes" --json -- "$flake" | jq -r .url)"
flake_attr="$(echo "$1" | awk -F'#' '{ print $2; }')"
shift
;;
-I|--builders)
j="$1"; shift 1
extraBuildFlags+=("$i" "$j")
;;
--show-trace|--keep-failed|-K|--keep-going|-k|--verbose|-v|-vv|-vvv|-vvvv|-vvvvv|--fallback|--repair|-L|--refresh|--no-net|--impure)
extraBuildFlags+=("$i")
;;
--option)
j="$1"; shift 1
k="$1"; shift 1
extraBuildFlags+=("$i" "$j" "$k")
;;
*)
nixos_config="$i"
;;
esac
done
unset NIXOS_CONFIG
if [[ -z "$flake_uri" ]]; then
extraBuildFlags+=(
-I "nixos-config=$nixos_config"
)
else
extraBuildFlags+=(
--extra-experimental-features "nix-command flakes"
--argstr flakeStr "$flake"
--argstr flakeUri "$flake_uri"
--argstr flakeAttr "${flake_attr:-"vm"}"
)
fi
nix run config.system.build.vm \
--file "${script_dir}/../share/nixos-shell.nix" \
--keep-going \
"${extraBuildFlags[@]}" \
"$@"