mirror of
https://github.com/TECHNOFAB11/disko.git
synced 2026-02-02 17:35:08 +01:00
cli: consume diskoConfigurations or nixosConfigurations disko configs
This commit is contained in:
parent
1c31612335
commit
28d4e71950
4 changed files with 56 additions and 28 deletions
68
cli.nix
68
cli.nix
|
|
@ -14,31 +14,51 @@ let
|
||||||
inherit lib;
|
inherit lib;
|
||||||
};
|
};
|
||||||
|
|
||||||
diskFormat =
|
diskoAttr =
|
||||||
if flake != null then
|
if noDeps then
|
||||||
(lib.attrByPath [ "diskoConfigurations" flakeAttr ] (builtins.abort "${flakeAttr} does not exist") (builtins.getFlake flake)) args
|
{
|
||||||
|
create = "createScriptNoDeps";
|
||||||
|
mount = "mountScriptNoDeps";
|
||||||
|
zap_create_mount = "diskoNoDeps";
|
||||||
|
disko = "diskoNoDeps";
|
||||||
|
}.${mode}
|
||||||
else
|
else
|
||||||
import diskoFile ({ inherit lib; } // args);
|
{
|
||||||
|
create = "createScript";
|
||||||
|
mount = "mountScript";
|
||||||
|
zap_create_mount = "diskoScript";
|
||||||
|
disko = "diskoScript";
|
||||||
|
}.${mode};
|
||||||
|
|
||||||
|
hasDiskoConfigFlake =
|
||||||
|
diskoFile != null || lib.hasAttrByPath [ "diskoConfigurations" flakeAttr ] (builtins.getFlake flake);
|
||||||
|
|
||||||
|
hasDiskoModuleFlake =
|
||||||
|
lib.hasAttrByPath [ "nixosConfigurations" flakeAttr "config" "disko" "devices" ] (builtins.getFlake flake);
|
||||||
|
|
||||||
|
diskFormat =
|
||||||
|
let
|
||||||
|
diskoConfig =
|
||||||
|
if diskoFile != null then
|
||||||
|
import diskoFile
|
||||||
|
else
|
||||||
|
(builtins.getFlake flake).diskoConfigurations.${flakeAttr};
|
||||||
|
in
|
||||||
|
if builtins.isFunction diskoConfig then
|
||||||
|
diskoConfig ({ inherit lib; } // args)
|
||||||
|
else
|
||||||
|
diskoConfig;
|
||||||
|
|
||||||
diskoEval =
|
diskoEval =
|
||||||
if noDeps then
|
disko.${diskoAttr} diskFormat pkgs;
|
||||||
if (mode == "create") then
|
|
||||||
disko.createScriptNoDeps diskFormat pkgs
|
diskoScript =
|
||||||
else if (mode == "mount") then
|
if hasDiskoConfigFlake then
|
||||||
disko.mountScriptNoDeps diskFormat pkgs
|
|
||||||
else if (mode == "zap_create_mount") then
|
|
||||||
disko.zapCreateMountScriptNoDeps diskFormat pkgs
|
|
||||||
else
|
|
||||||
builtins.abort "invalid mode"
|
|
||||||
else
|
|
||||||
if (mode == "create") then
|
|
||||||
disko.createScript diskFormat pkgs
|
|
||||||
else if (mode == "mount") then
|
|
||||||
disko.mountScript diskFormat pkgs
|
|
||||||
else if (mode == "zap_create_mount") then
|
|
||||||
disko.zapCreateMountScript diskFormat pkgs
|
|
||||||
else
|
|
||||||
builtins.abort "invalid mode"
|
|
||||||
;
|
|
||||||
in
|
|
||||||
diskoEval
|
diskoEval
|
||||||
|
else if (lib.traceValSeq hasDiskoModuleFlake) then
|
||||||
|
(builtins.getFlake flake).nixosConfigurations.${flakeAttr}.config.system.build.${diskoAttr}
|
||||||
|
else
|
||||||
|
(builtins.abort "neither diskoConfigurations.${flakeAttr} nor nixosConfigurations.${flakeAttr} found");
|
||||||
|
|
||||||
|
in
|
||||||
|
diskoScript
|
||||||
|
|
|
||||||
|
|
@ -34,12 +34,12 @@ in
|
||||||
mountScriptNoDeps = cfg: pkgs: (diskoLib.writeCheckedBash { inherit pkgs checked; noDeps = true; }) "disko-mount" ''
|
mountScriptNoDeps = cfg: pkgs: (diskoLib.writeCheckedBash { inherit pkgs checked; noDeps = true; }) "disko-mount" ''
|
||||||
${diskoLib.mount (eval cfg).config.disko.devices}
|
${diskoLib.mount (eval cfg).config.disko.devices}
|
||||||
'';
|
'';
|
||||||
zapCreateMount = cfg: diskoLib.zapCreateMount (eval cfg).config.disko.devices;
|
disko = cfg: diskoLib.zapCreateMount (eval cfg).config.disko.devices;
|
||||||
zapCreateMountScript = cfg: pkgs: (diskoLib.writeCheckedBash { inherit pkgs checked; }) "disko-zap-create-mount" ''
|
diskoScript = cfg: pkgs: (diskoLib.writeCheckedBash { inherit pkgs checked; }) "disko-zap-create-mount" ''
|
||||||
export PATH=${lib.makeBinPath (diskoLib.packages (eval cfg).config.disko.devices pkgs)}:$PATH
|
export PATH=${lib.makeBinPath (diskoLib.packages (eval cfg).config.disko.devices pkgs)}:$PATH
|
||||||
${diskoLib.zapCreateMount (eval cfg).config.disko.devices}
|
${diskoLib.zapCreateMount (eval cfg).config.disko.devices}
|
||||||
'';
|
'';
|
||||||
zapCreateMountScriptNoDeps = cfg: pkgs: (diskoLib.writeCheckedBash { inherit pkgs checked; noDeps = true; }) "disko-zap-create-mount" ''
|
diskoNoDeps = cfg: pkgs: (diskoLib.writeCheckedBash { inherit pkgs checked; noDeps = true; }) "disko-zap-create-mount" ''
|
||||||
${diskoLib.zapCreateMount (eval cfg).config.disko.devices}
|
${diskoLib.zapCreateMount (eval cfg).config.disko.devices}
|
||||||
'';
|
'';
|
||||||
config = cfg: { imports = diskoLib.config (eval cfg).config.disko.devices; };
|
config = cfg: { imports = diskoLib.config (eval cfg).config.disko.devices; };
|
||||||
|
|
|
||||||
10
module.nix
10
module.nix
|
|
@ -52,7 +52,15 @@ in
|
||||||
${diskoLib.zapCreateMount cfg.devices}
|
${diskoLib.zapCreateMount cfg.devices}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# This is useful to skip copying executables uploading a script to an in-memory installer
|
# These are useful to skip copying executables uploading a script to an in-memory installer
|
||||||
|
system.build.formatScriptNoDeps = (diskoLib.writeCheckedBash { inherit pkgs checked; noDeps = true; }) "disko-create" ''
|
||||||
|
${diskoLib.create cfg.devices}
|
||||||
|
'';
|
||||||
|
|
||||||
|
system.build.mountScriptNoDeps = (diskoLib.writeCheckedBash { inherit pkgs checked; noDeps = true; }) "disko-mount" ''
|
||||||
|
${diskoLib.mount cfg.devices}
|
||||||
|
'';
|
||||||
|
|
||||||
system.build.diskoNoDeps = (diskoLib.writeCheckedBash { inherit pkgs checked; noDeps = true; }) "disko" ''
|
system.build.diskoNoDeps = (diskoLib.writeCheckedBash { inherit pkgs checked; noDeps = true; }) "disko" ''
|
||||||
${diskoLib.zapCreateMount cfg.devices}
|
${diskoLib.zapCreateMount cfg.devices}
|
||||||
'';
|
'';
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@
|
||||||
tsp-generator = pkgs.callPackage ../. { checked = true; };
|
tsp-generator = pkgs.callPackage ../. { checked = true; };
|
||||||
tsp-create = (tsp-generator.createScript (import disko-config { disks = builtins.tail disks; inherit lib; })) pkgs;
|
tsp-create = (tsp-generator.createScript (import disko-config { disks = builtins.tail disks; inherit lib; })) pkgs;
|
||||||
tsp-mount = (tsp-generator.mountScript (import disko-config { disks = builtins.tail disks; inherit lib; })) pkgs;
|
tsp-mount = (tsp-generator.mountScript (import disko-config { disks = builtins.tail disks; inherit lib; })) pkgs;
|
||||||
tsp-disko = (tsp-generator.zapCreateMountScript (import disko-config { disks = builtins.tail disks; inherit lib; })) pkgs;
|
tsp-disko = (tsp-generator.diskoScript (import disko-config { disks = builtins.tail disks; inherit lib; })) pkgs;
|
||||||
tsp-config = tsp-generator.config (import disko-config { inherit disks; inherit lib; });
|
tsp-config = tsp-generator.config (import disko-config { inherit disks; inherit lib; });
|
||||||
num-disks = builtins.length (lib.attrNames (import disko-config { inherit lib; }).disko.devices.disk);
|
num-disks = builtins.length (lib.attrNames (import disko-config { inherit lib; }).disko.devices.disk);
|
||||||
installed-system = { modulesPath, ... }: {
|
installed-system = { modulesPath, ... }: {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue