1
1
#! /usr/bin/env nix-shell
2
2
#! nix-shell -i bash ./shell.nix
3
+ # shellcheck shell=bash
3
4
4
5
set -eux
5
6
set -o pipefail
@@ -48,15 +49,16 @@ sshwrap() (
48
49
)
49
50
50
51
cfg_for_provisioner () (
51
- provisioner=$1
52
- ip=$2
52
+ local provisioner=$1
53
+ local name=$2
54
+ local ip=$3
53
55
54
56
case " $provisioner " in
55
57
" metal" )
56
- cfg_for_metal " $ip "
58
+ cfg_for_metal " $name " " $ ip"
57
59
;;
58
60
" nixos-install" )
59
- cfg_for_nixos_install " $ip "
61
+ cfg_for_nixos_install " $name " " $ ip"
60
62
;;
61
63
* )
62
64
echo " Failed: no such provisioner: $provisioner "
@@ -66,16 +68,37 @@ cfg_for_provisioner() (
66
68
)
67
69
68
70
cfg_for_metal () (
71
+ local name=$1
72
+ local ip=$2
69
73
sshwrap " root@$ip " -- cat /etc/nixos/packet/system.nix > " $scratch /machines/${name} .system.nix"
70
74
)
71
75
72
76
cfg_for_nixos_install () (
77
+ local name=$1
78
+ local ip=$2
79
+
73
80
mkdir -p " $scratch /machines/${name} "
74
81
sshwrap " root@$ip " -- cat /etc/nixos/configuration.nix > " $scratch /machines/${name} /configuration.nix"
75
82
sshwrap " root@$ip " -- cat /etc/nixos/hardware-configuration.nix > " $scratch /machines/${name} /hardware-configuration.nix"
76
83
printf ' { imports = [ %s ]; }' " ./${name} /configuration.nix" > " $scratch /machines/${name} .system.nix"
77
84
)
78
85
86
+ import_machine () (
87
+ local machine=$1
88
+
89
+ local name
90
+ name=" $( jq -r .key <<< " $machine" ) "
91
+ local ip
92
+ ip=" $( jq -r .value.ip <<< " $machine" ) "
93
+ local provisioner
94
+ provisioner=$( jq -r .value.provisioner <<< " $machine" )
95
+ jq -r .value.expression <<< " $machine"
96
+ jq -r .value.expression <<< " $machine" > " $scratch /machines/${name} .expr.nix"
97
+ if cfg_for_provisioner " $provisioner " " $name " " $ip " ; then
98
+ networkentry " $name " " $ip " >> " $scratch /default.nix"
99
+ fi
100
+ )
101
+
79
102
cat << EOF > "$scratch /default.nix"
80
103
{
81
104
network = {
@@ -96,17 +119,8 @@ cat <<EOF > "$scratch/default.nix"
96
119
97
120
EOF
98
121
99
- machines | while read machine; do
100
- (
101
- name=" $( jq -r .key <<< " $machine" ) "
102
- ip=$( jq -r .value.ip <<< " $machine" )
103
- provisioner=$( jq -r .value.provisioner <<< " $machine" )
104
- jq -r .value.expression <<< " $machine"
105
- jq -r .value.expression <<< " $machine" > " $scratch /machines/${name} .expr.nix"
106
- if cfg_for_provisioner " $provisioner " " $ip " ; then
107
- networkentry " $name " " $ip " >> " $scratch /default.nix"
108
- fi
109
- ) < /dev/null
122
+ machines | while read -r machine; do
123
+ import_machine " $machine " < /dev/null
110
124
done
111
125
112
126
echo " }" >> " $scratch /default.nix"
0 commit comments