@@ -109,44 +109,46 @@ let
109
109
110
110
cp --remove-destination /etc/resolv.conf "$root/etc/resolv.conf"
111
111
112
+ declare -a extraFlags
113
+
112
114
if [ "$PRIVATE_NETWORK" = 1 ]; then
113
- extraFlags+=" --private-network"
115
+ extraFlags+=(" --private-network")
114
116
fi
115
117
116
118
if [ -n "$HOST_ADDRESS" ] || [ -n "$LOCAL_ADDRESS" ] ||
117
119
[ -n "$HOST_ADDRESS6" ] || [ -n "$LOCAL_ADDRESS6" ]; then
118
- extraFlags+=" --network-veth"
120
+ extraFlags+=(" --network-veth")
119
121
fi
120
122
121
123
if [ -n "$HOST_PORT" ]; then
122
124
OIFS=$IFS
123
125
IFS=","
124
126
for i in $HOST_PORT
125
127
do
126
- extraFlags+=" --port=$i"
128
+ extraFlags+=(" --port=$i")
127
129
done
128
130
IFS=$OIFS
129
131
fi
130
132
131
133
if [ -n "$HOST_BRIDGE" ]; then
132
- extraFlags+=" --network-bridge=$HOST_BRIDGE"
134
+ extraFlags+=(" --network-bridge=$HOST_BRIDGE")
133
135
fi
134
136
135
- extraFlags+=" ${ concatStringsSep " " ( mapAttrsToList nspawnExtraVethArgs cfg . extraVeths ) } "
137
+ extraFlags+=( ${ lib . escapeShellArgs ( mapAttrsToList nspawnExtraVethArgs cfg . extraVeths ) } )
136
138
137
139
for iface in $INTERFACES; do
138
- extraFlags+=" --network-interface=$iface"
140
+ extraFlags+=(" --network-interface=$iface")
139
141
done
140
142
141
143
for iface in $MACVLANS; do
142
- extraFlags+=" --network-macvlan=$iface"
144
+ extraFlags+=(" --network-macvlan=$iface")
143
145
done
144
146
145
147
# If the host is 64-bit and the container is 32-bit, add a
146
148
# --personality flag.
147
149
${ optionalString ( pkgs . stdenv . hostPlatform . system == "x86_64-linux" ) ''
148
150
if [ "$(< "'' ${SYSTEM_PATH:-/nix/var/nix/profiles/per-container/$INSTANCE/system}/system")" = i686-linux ]; then
149
- extraFlags+=" --personality=x86"
151
+ extraFlags+=(" --personality=x86")
150
152
fi
151
153
'' }
152
154
157
159
# Kill signal handling means systemd-nspawn will pass a system-halt signal
158
160
# to the container systemd when it receives SIGTERM for container shutdown;
159
161
# containerInit and stage2 have to handle this as well.
162
+ # TODO: fix shellcheck issue properly
163
+ # shellcheck disable=SC2086
160
164
exec ${ config . systemd . package } /bin/systemd-nspawn \
161
165
--keep-unit \
162
- -M "$INSTANCE" -D "$root" $ extraFlags \
166
+ -M "$INSTANCE" -D "$root" " '' ${ extraFlags[@]}" \
163
167
$EXTRA_NSPAWN_FLAGS \
164
168
--notify-ready=yes \
165
169
--kill-signal=SIGRTMIN+3 \
0 commit comments