From aa4570ca05597ef77605a8c3a5963a632e9023d6 Mon Sep 17 00:00:00 2001 From: r-vdp Date: Thu, 30 Nov 2023 16:19:34 +0100 Subject: [PATCH] nixos/nixos-containers: fix shellcheck errors in systemd scripts --- .../virtualisation/nixos-containers.nix | 38 +++++++++++-------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/nixos/modules/virtualisation/nixos-containers.nix b/nixos/modules/virtualisation/nixos-containers.nix index ba5112aa6cec..ecab24099391 100644 --- a/nixos/modules/virtualisation/nixos-containers.nix +++ b/nixos/modules/virtualisation/nixos-containers.nix @@ -85,8 +85,13 @@ let startScript = cfg: '' - mkdir -p -m 0755 "$root/etc" "$root/var/lib" - mkdir -p -m 0700 "$root/var/lib/private" "$root/root" /run/nixos-containers + # Declare root explicitly to avoid shellcheck warnings, it comes from the env + declare root + + mkdir -p "$root/etc" "$root/var/lib" + chmod 0755 "$root/etc" "$root/var/lib" + mkdir -p "$root/var/lib/private" "$root/root" /run/nixos-containers + chmod 0700 "$root/var/lib/private" "$root/root" /run/nixos-containers if ! [ -e "$root/etc/os-release" ]; then touch "$root/etc/os-release" fi @@ -95,7 +100,10 @@ let touch "$root/etc/machine-id" fi - mkdir -p -m 0755 \ + mkdir -p \ + "/nix/var/nix/profiles/per-container/$INSTANCE" \ + "/nix/var/nix/gcroots/per-container/$INSTANCE" + chmod 0755 \ "/nix/var/nix/profiles/per-container/$INSTANCE" \ "/nix/var/nix/gcroots/per-container/$INSTANCE" @@ -137,7 +145,7 @@ let # If the host is 64-bit and the container is 32-bit, add a # --personality flag. ${optionalString (pkgs.stdenv.hostPlatform.system == "x86_64-linux") '' - if [ "$(< ''${SYSTEM_PATH:-/nix/var/nix/profiles/per-container/$INSTANCE/system}/system)" = i686-linux ]; then + if [ "$(< "''${SYSTEM_PATH:-/nix/var/nix/profiles/per-container/$INSTANCE/system}/system")" = i686-linux ]; then extraFlags+=" --personality=x86" fi ''} @@ -151,8 +159,8 @@ let # containerInit and stage2 have to handle this as well. exec ${config.systemd.package}/bin/systemd-nspawn \ --keep-unit \ - -M "$INSTANCE" -D "$root" $extraFlags \ - $EXTRA_NSPAWN_FLAGS \ + -M "$INSTANCE" -D "$root" "$extraFlags" \ + "$EXTRA_NSPAWN_FLAGS" \ --notify-ready=yes \ --kill-signal=SIGRTMIN+3 \ --bind-ro=/nix/store \ @@ -203,33 +211,33 @@ let if cfg.${attribute} == null then '' if [ -n "${variable}" ]; then - ${ipcmd} add ${variable} dev $ifaceHost + ${ipcmd} add "${variable}" dev "$ifaceHost" fi '' else - "${ipcmd} add ${cfg.${attribute}} dev $ifaceHost"; + ''${ipcmd} add ${cfg.${attribute}} dev "$ifaceHost"''; renderExtraVeth = name: cfg: if cfg.hostBridge != null then '' # Add ${name} to bridge ${cfg.hostBridge} - ip link set dev ${name} master ${cfg.hostBridge} up + ip link set dev "${name}" master "${cfg.hostBridge}" up '' else '' echo "Bring ${name} up" - ip link set dev ${name} up + ip link set dev "${name}" up # Set IPs and routes for ${name} ${optionalString (cfg.hostAddress != null) '' - ip addr add ${cfg.hostAddress} dev ${name} + ip addr add ${cfg.hostAddress} dev "${name}" ''} ${optionalString (cfg.hostAddress6 != null) '' - ip -6 addr add ${cfg.hostAddress6} dev ${name} + ip -6 addr add ${cfg.hostAddress6} dev "${name}" ''} ${optionalString (cfg.localAddress != null) '' - ip route add ${cfg.localAddress} dev ${name} + ip route add ${cfg.localAddress} dev "${name}" ''} ${optionalString (cfg.localAddress6 != null) '' - ip -6 route add ${cfg.localAddress6} dev ${name} + ip -6 route add ${cfg.localAddress6} dev "${name}" ''} ''; in @@ -238,7 +246,7 @@ let [ -n "$HOST_ADDRESS6" ] || [ -n "$LOCAL_ADDRESS6" ]; then if [ -z "$HOST_BRIDGE" ]; then ifaceHost=ve-$INSTANCE - ip link set dev $ifaceHost up + ip link set dev "$ifaceHost" up ${ipcall cfg "ip addr" "$HOST_ADDRESS" "hostAddress"} ${ipcall cfg "ip -6 addr" "$HOST_ADDRESS6" "hostAddress6"}