diff --git a/types/lvm_pv.nix b/types/lvm_pv.nix index 03a95c7..1bf1c10 100644 --- a/types/lvm_pv.nix +++ b/types/lvm_pv.nix @@ -23,7 +23,7 @@ inherit config options; default = { dev }: '' pvcreate ${dev} - echo "${dev}" >> $disko_devices_dir/lvm_${config.vg} + echo "${dev}" >> "$disko_devices_dir"/lvm_${config.vg} ''; }; _mount = diskoLib.mkMountOption { diff --git a/types/lvm_vg.nix b/types/lvm_vg.nix index ba313e1..ac7c2fa 100644 --- a/types/lvm_vg.nix +++ b/types/lvm_vg.nix @@ -27,7 +27,9 @@ _create = diskoLib.mkCreateOption { inherit config options; default = _: '' - vgcreate ${config.name} $(tr '\n' ' ' < $disko_devices_dir/lvm_${config.name}) + readarray -t lvm_devices < <(cat "$disko_devices_dir"/lvm_${config.name}) + vgcreate ${config.name} \ + "''${lvm_devices[@]}" ${lib.concatMapStrings (lv: lv._create {vg = config.name; }) (lib.attrValues config.lvs)} ''; }; diff --git a/types/mdadm.nix b/types/mdadm.nix index d2b3937..5d1f043 100644 --- a/types/mdadm.nix +++ b/types/mdadm.nix @@ -34,13 +34,14 @@ _create = diskoLib.mkCreateOption { inherit config options; default = _: '' + readarray -t disk_devices < <(cat "$disko_devices_dir"/raid_${config.name}) echo 'y' | mdadm --create /dev/md/${config.name} \ --level=${toString config.level} \ - --raid-devices=$(wc -l $disko_devices_dir/raid_${config.name} | cut -f 1 -d " ") \ + --raid-devices="$(wc -l "$disko_devices_dir"/raid_${config.name} | cut -f 1 -d " ")" \ --metadata=${config.metadata} \ --force \ --homehost=any \ - $(tr '\n' ' ' < $disko_devices_dir/raid_${config.name}) + "''${disk_devices[@]}" udevadm trigger --subsystem-match=block; udevadm settle ${lib.optionalString (config.content != null) (config.content._create {dev = "/dev/md/${config.name}";})} ''; diff --git a/types/mdraid.nix b/types/mdraid.nix index 6eb24bc..52b7b03 100644 --- a/types/mdraid.nix +++ b/types/mdraid.nix @@ -23,7 +23,7 @@ _create = diskoLib.mkCreateOption { inherit config options; default = { dev }: '' - echo "${dev}" >> $disko_devices_dir/raid_${config.name} + echo "${dev}" >> "$disko_devices_dir"/raid_${config.name} ''; }; _mount = diskoLib.mkMountOption { diff --git a/types/zfs.nix b/types/zfs.nix index b30ad44..26e53ab 100644 --- a/types/zfs.nix +++ b/types/zfs.nix @@ -22,7 +22,7 @@ _create = diskoLib.mkCreateOption { inherit config options; default = { dev }: '' - echo "${dev}" >> $disko_devices_dir/zfs_${config.pool} + echo "${dev}" >> "$disko_devices_dir"/zfs_${config.pool} ''; }; _mount = diskoLib.mkMountOption { diff --git a/types/zpool.nix b/types/zpool.nix index de2b70d..0a7e66a 100644 --- a/types/zpool.nix +++ b/types/zpool.nix @@ -52,11 +52,12 @@ _create = diskoLib.mkCreateOption { inherit config options; default = _: '' + readarray -t zfs_devices < <(cat "$disko_devices_dir"/zfs_${config.name}) zpool create ${config.name} \ ${config.mode} \ ${lib.concatStringsSep " " (lib.mapAttrsToList (n: v: "-o ${n}=${v}") config.options)} \ ${lib.concatStringsSep " " (lib.mapAttrsToList (n: v: "-O ${n}=${v}") config.rootFsOptions)} \ - $(tr '\n' ' ' < $disko_devices_dir/zfs_${config.name}) + "''${zfs_devices[@]}" ${lib.concatMapStrings (dataset: dataset._create {zpool = config.name;}) (lib.attrValues config.datasets)} ''; };