From 0af2a7c206bd69ecdc01361e12c7cb0ec9820911 Mon Sep 17 00:00:00 2001 From: David Arnold Date: Sun, 6 Nov 2022 01:46:48 -0500 Subject: feat: allow to declare disko-config relative to flake --- disko | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'disko') diff --git a/disko b/disko index f51339e..deb3cbd 100755 --- a/disko +++ b/disko @@ -6,6 +6,9 @@ readonly libexec_dir="${0%/*}" # a file with the disko config declare disko_config +# a flake uri, if present disko config is relative to the flake root +declare from_flake + # mount was chosen as the default mode because it's less destructive mode=mount nix_args=() @@ -18,6 +21,8 @@ Options: * -m, --mode mode set the mode, either create or mount +* -f, --flake uri + fetch the disko config relative to this flake's root * --arg name value pass value to nix-build. can be used to set disk-names for example * --argstr name value @@ -43,6 +48,11 @@ while [[ $# -gt 0 ]]; do mode=$2 shift ;; + -f | --flake) + from_flake="$2" + nix_args+=("--argstr" "fromFlake" "$2") + shift + ;; --argstr | --arg) nix_args+=("$1" "$2" "$3") shift @@ -53,7 +63,7 @@ while [[ $# -gt 0 ]]; do exit 0 ;; *) - if [ -z ${disko_config+x} ] && [ -e "$1" ]; then + if [ -z ${disko_config+x} ]; then disko_config=$1 else showUsage @@ -68,8 +78,16 @@ if ! ([[ $mode = "create" ]] || [[ $mode = "mount" ]]); then abort "mode must be either create or mount" fi +if [[ -e "${disko_config}" ]]; then + nix_args+=("--arg" "diskoFile" "$disko_config") +elif [[ -n "${from_flake+x}" ]]; then + nix_args+=("--argstr" "diskoFile" "$disko_config") +else + abort "disko config must be an exising file of flake must be set" +fi + script=$(nix-build "${libexec_dir}"/cli.nix \ - --arg diskoFile "$disko_config" \ + --argstr diskoFile "$disko_config" \ --argstr mode "$mode" \ "${nix_args[@]}" ) -- cgit v1.2.3