From 42e9cd15d3199e222f02c351d4e44243fd43f89a Mon Sep 17 00:00:00 2001 From: Manuel Thalmann Date: Sat, 6 Jul 2024 21:52:45 +0200 Subject: [PATCH] Create a script for prompting the device path --- lib/modules/partition.nix | 53 ++++++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/lib/modules/partition.nix b/lib/modules/partition.nix index 12df0a56..6ca586ac 100644 --- a/lib/modules/partition.nix +++ b/lib/modules/partition.nix @@ -44,6 +44,12 @@ else "/dev/${config.deviceName}"; }; + deviceScript = mkOption { + type = types.str; + description = "A command for loading the device path into the device variable"; + internal = true; + }; + partitions = mkOption { type = types.attrsOf (types.nullOr partitionType); description = "The partitions of the disk."; @@ -155,31 +161,32 @@ ''sudo sfdisk --part-type ${diskVar} ${toString partition.index} ${mkType partition.type}'') partitions); in { + deviceScript = if osDisk && config.devicePath == null then '' + ${diskSelector} + '' + else '' + local ${diskVarName}=${config.devicePath} + ${if osDisk then '' + . ${./../../scripts/Common/Scripts/is-truthy.sh} + if [ ! -b ${diskVar} ]; then + function fallback() { + echo "Couldn't find the specified disk \"${diskVar}\"." + local answer + read -p "Do you want to install the OS on another disk? [y/n] " answer + if isTruthy "$answer"; then + ${diskSelector} + else + exit 1 + fi + } + fallback; + fi + '' else ""} + ''; + script = '' function partition() { - ${ - if osDisk && config.devicePath == null then '' - ${diskSelector} - '' - else '' - local ${diskVarName}=${config.devicePath} - ${if osDisk then '' - . ${./../../scripts/Common/Scripts/is-truthy.sh} - if [ ! -b ${diskVar} ]; then - function fallback() { - echo "Couldn't find the specified disk \"${diskVar}\"." - local answer - read -p "Do you want to install the OS on another disk? [y/n] " answer - if isTruthy "$answer"; then - ${diskSelector} - else - exit 1 - fi - } - fallback; - fi - '' else ""} - ''} + ${config.deviceScript} ${if (!config.wipe) then cleanup else ""}