From f6649d69d9321af0909292829d85908a0e0ace57 Mon Sep 17 00:00:00 2001 From: lassulus Date: Thu, 13 Jul 2023 17:02:23 +0200 Subject: [PATCH] cli/default: refactor to use more code from lib --- README.md | 2 +- cli.nix | 14 ++++++++++---- default.nix | 53 ++++++++++++++++++++++------------------------------- disko | 6 +++--- 4 files changed, 36 insertions(+), 39 deletions(-) diff --git a/README.md b/README.md index 7747617..e422593 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,7 @@ A simple disko configuration may look like this: If you'd saved this configuration in /tmp/disko-config.nix, and wanted to create a disk named /dev/nvme0n1, you would run the following command to partition, format and mount the disk. ``` -$ sudo nix run github:nix-community/disko -- --mode zap_create_mount /tmp/disko-config.nix --arg disks '[ "/dev/nvme0n1" ]' +$ sudo nix run github:nix-community/disko -- --mode disko /tmp/disko-config.nix --arg disks '[ "/dev/nvme0n1" ]' ``` ## Related Tools diff --git a/cli.nix b/cli.nix index 8ce034a..9998219 100644 --- a/cli.nix +++ b/cli.nix @@ -17,17 +17,23 @@ let diskoAttr = if noDeps then { - create = "createScriptNoDeps"; + format = "formatScriptNoDeps"; mount = "mountScriptNoDeps"; - zap_create_mount = "diskoScriptNoDeps"; disko = "diskoScriptNoDeps"; + + # legacy aliases + create = "createScriptNoDeps"; + zap_create_mount = "diskoScriptNoDeps"; }.${mode} else { - create = "createScript"; + format = "formatScript"; mount = "mountScript"; - zap_create_mount = "diskoScript"; disko = "diskoScript"; + + # legacy aliases + create = "createScript"; + zap_create_mount = "diskoScript"; }.${mode}; hasDiskoConfigFlake = diff --git a/default.nix b/default.nix index 54c854e..5e9c277 100644 --- a/default.nix +++ b/default.nix @@ -18,36 +18,27 @@ let in { lib = diskoLib; - create = cfg: diskoLib.create (eval cfg).config.disko.devices; - createScript = cfg: pkgs: (diskoLib.writeCheckedBash { inherit pkgs checked; }) "disko-create" '' - export PATH=${lib.makeBinPath (diskoLib.packages (eval cfg).config.disko.devices pkgs)}:$PATH - ${diskoLib.create (eval cfg).config.disko.devices} - ''; - createScriptNoDeps = cfg: pkgs: (diskoLib.writeCheckedBash { inherit pkgs checked; noDeps = true; }) "disko-create" '' - ${diskoLib.create (eval cfg).config.disko.devices} - ''; - mount = cfg: diskoLib.mount (eval cfg).config.disko.devices; - mountScript = cfg: pkgs: (diskoLib.writeCheckedBash { inherit pkgs checked; }) "disko-mount" '' - export PATH=${lib.makeBinPath (diskoLib.packages (eval cfg).config.disko.devices pkgs)}:$PATH - ${diskoLib.mount (eval cfg).config.disko.devices} - ''; - mountScriptNoDeps = cfg: pkgs: (diskoLib.writeCheckedBash { inherit pkgs checked; noDeps = true; }) "disko-mount" '' - ${diskoLib.mount (eval cfg).config.disko.devices} - ''; - disko = cfg: diskoLib.zapCreateMount (eval cfg).config.disko.devices; - diskoScript = cfg: pkgs: (diskoLib.writeCheckedBash { inherit pkgs checked; }) "disko-zap-create-mount" '' - export PATH=${lib.makeBinPath ((diskoLib.packages (eval cfg).config.disko.devices pkgs) ++ [ pkgs.bash ])}:$PATH - ${diskoLib.zapCreateMount (eval cfg).config.disko.devices} - ''; + + # legacy alias + create = cfg: builtins.trace "the create output is deprecated, use format instead" (eval cfg).config.disko.devices._create; + createScript = cfg: pkgs: builtins.trace "the create output is deprecated, use format instead" ((eval cfg).config.disko.devices._scripts { inherit pkgs checked; }).formatScript; + createScriptNoDeps = cfg: pkgs: builtins.trace "the create output is deprecated, use format instead" ((eval cfg).config.disko.devices._scripts { inherit pkgs checked; }).formatScriptNoDeps; + + format = cfg: (eval cfg).config.disko.devices._create; + formatScript = cfg: pkgs: ((eval cfg).config.disko.devices._scripts { inherit pkgs checked; }).formatScript; + formatScriptNoDeps = cfg: pkgs: ((eval cfg).config.disko.devices._scripts { inherit pkgs checked; }).formatScriptNoDeps; + + mount = cfg: (eval cfg).config.disko.devices._mount; + mountScript = cfg: pkgs: ((eval cfg).config.disko.devices._scripts { inherit pkgs checked; }).mountScript; + mountScriptNoDeps = cfg: pkgs: ((eval cfg).config.disko.devices._scripts { inherit pkgs checked; }).mountScriptNoDeps; + + disko = cfg: (eval cfg).config.disko.devices._disko; + diskoScript = cfg: pkgs: ((eval cfg).config.disko.devices._scripts { inherit pkgs checked; }).diskoScript; + diskoScriptNoDeps = cfg: pkgs: ((eval cfg).config.disko.devices._scripts { inherit pkgs checked; }).diskoScriptNoDeps; + # we keep this old output for backwards compatibility - diskoNoDeps = cfg: pkgs: builtins.trace "the .diskoNoDeps output is deprecated, plase use .diskoScriptNoDeps instead" ( - (diskoLib.writeCheckedBash { inherit pkgs checked; noDeps = true; }) "disko-zap-create-mount" '' - ${diskoLib.zapCreateMount (eval cfg).config.disko.devices} - '' - ); - diskoScriptNoDeps = cfg: pkgs: (diskoLib.writeCheckedBash { inherit pkgs checked; noDeps = true; }) "disko-zap-create-mount" '' - ${diskoLib.zapCreateMount (eval cfg).config.disko.devices} - ''; - config = cfg: { imports = diskoLib.config (eval cfg).config.disko.devices; }; - packages = cfg: diskoLib.packages (eval cfg).config.disko.devices; + diskoNoDeps = cfg: pkgs: builtins.trace "the diskoNoDeps output is deprecated, please use disko instead" ((eval cfg).config.disko.devices._scripts { inherit pkgs checked; }).diskoScriptNoDeps; + + config = cfg: (eval cfg).config.disko.devices._config; + packages = cfg: (eval cfg).config.disko.devices._packages; } diff --git a/disko b/disko index a25f6ac..0e8a230 100755 --- a/disko +++ b/disko @@ -18,7 +18,7 @@ or $0 [options] --flake github:somebody/somewhere Options: * -m, --mode mode - set the mode, either create, mount, zap_create_mount or disko + set the mode, either format, mount or disko * -f, --flake uri fetch the disko config relative to this flake's root * --arg name value @@ -93,8 +93,8 @@ while [[ $# -gt 0 ]]; do shift done -if ! { [[ $mode = "create" ]] || [[ $mode = "mount" ]] || [[ $mode = "zap_create_mount" ]] || [[ $mode = "disko" ]]; }; then - abort "mode must be either create, mount, zap_create_mount or disko" +if ! { [[ $mode = "format" ]] || [[ $mode = "mount" ]] || [[ $mode = "disko" ]] || [[ $mode = "create" ]] || [[ $mode = "zap_create_mount" ]] ; }; then + abort "mode must be either format, mount or disko" fi if [[ -n "${flake+x}" ]]; then