From 42e9cd15d3199e222f02c351d4e44243fd43f89a Mon Sep 17 00:00:00 2001
From: Manuel Thalmann <m@nuth.ch>
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 ""}