mirror of
https://github.com/nix-community/disko.git
synced 2024-10-05 18:47:10 +03:00
cli/default: refactor to use more code from lib
This commit is contained in:
parent
cdaff66b57
commit
f6649d69d9
@ -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
|
||||
|
14
cli.nix
14
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 =
|
||||
|
53
default.nix
53
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;
|
||||
}
|
||||
|
6
disko
6
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
|
||||
|
Loading…
Reference in New Issue
Block a user