diff options
author | David Arnold <david.arnold@iohk.io> | 2022-11-06 01:46:48 -0500 |
---|---|---|
committer | lassulus <lassulus@lassul.us> | 2022-11-09 12:30:06 +0100 |
commit | 0af2a7c206bd69ecdc01361e12c7cb0ec9820911 (patch) | |
tree | d4efbdf4713aa4428a4922c0389ca4c61c808b9e | |
parent | a023d391a08f8c8b1b7c26fcbb8d06edd5ceb203 (diff) |
feat: allow to declare disko-config relative to flake
-rw-r--r-- | cli.nix | 8 | ||||
-rwxr-xr-x | disko | 22 |
2 files changed, 26 insertions, 4 deletions
@@ -1,10 +1,14 @@ { pkgs ? import <nixpkgs> {} , mode ? "mount" +, fromFlake ? null , diskoFile , ... }@args: let - disko = import ./. { inherit (pkgs) lib; }; - diskFormat = import diskoFile; + disko = import ./. { }; + diskFormat = + if fromFlake != null + then (builtins.getFlake fromFlake) + "/${diskoFile}" + else import diskoFile; diskoEval = if (mode == "create") then disko.createScript diskFormat pkgs else if (mode == "mount") then @@ -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[@]}" ) |