mirror of
https://github.com/nix-community/disko.git
synced 2024-09-17 09:37:17 +03:00
disko-install: simplify let statements
This commit is contained in:
parent
bb5ba68ebb
commit
93bf2c3d26
@ -1,41 +1,58 @@
|
||||
{ flake
|
||||
, flakeAttr
|
||||
, diskMappings
|
||||
, writeEfiBootEntries ? false
|
||||
, rootMountPoint ? "/mnt"
|
||||
{
|
||||
flake,
|
||||
flakeAttr,
|
||||
diskMappings,
|
||||
writeEfiBootEntries ? false,
|
||||
rootMountPoint ? "/mnt",
|
||||
}:
|
||||
let
|
||||
originalSystem = (builtins.getFlake "${flake}").nixosConfigurations."${flakeAttr}";
|
||||
diskoSystem =
|
||||
lib = originalSystem.pkgs.lib;
|
||||
|
||||
deviceName =
|
||||
name:
|
||||
if diskMappings ? ${name} then
|
||||
diskMappings.${name}
|
||||
else
|
||||
throw "No device passed for disk '${name}'. Pass `--disk ${name} /dev/name` via commandline";
|
||||
|
||||
modifiedDisks = builtins.mapAttrs (
|
||||
name: value:
|
||||
let
|
||||
lib = originalSystem.pkgs.lib;
|
||||
|
||||
modifiedDisks = builtins.mapAttrs
|
||||
(name: value: let
|
||||
dev = if diskMappings ? ${name} then
|
||||
diskMappings.${name}
|
||||
else
|
||||
throw "No device passed for disk '${name}'. Pass `--disk ${name} /dev/name` via commandline";
|
||||
in value // {
|
||||
device = dev;
|
||||
content = value.content // { device = dev; };
|
||||
})
|
||||
originalSystem.config.disko.devices.disk;
|
||||
|
||||
cleanedDisks = lib.filterAttrsRecursive (n: _: !lib.hasPrefix "_" n) modifiedDisks;
|
||||
dev = deviceName name;
|
||||
in
|
||||
originalSystem.extendModules {
|
||||
modules = [{
|
||||
value
|
||||
// {
|
||||
device = dev;
|
||||
content = value.content // {
|
||||
device = dev;
|
||||
};
|
||||
}
|
||||
) originalSystem.config.disko.devices.disk;
|
||||
|
||||
# filter all nixos module internal attributes
|
||||
cleanedDisks = lib.filterAttrsRecursive (n: _: !lib.hasPrefix "_" n) modifiedDisks;
|
||||
|
||||
diskoSystem = originalSystem.extendModules {
|
||||
modules = [
|
||||
{
|
||||
disko.rootMountPoint = rootMountPoint;
|
||||
disko.devices.disk = lib.mkVMOverride cleanedDisks;
|
||||
}];
|
||||
};
|
||||
installSystem = originalSystem.extendModules {
|
||||
modules = [({ lib, ... }: {
|
||||
boot.loader.efi.canTouchEfiVariables = lib.mkVMOverride writeEfiBootEntries;
|
||||
boot.loader.grub.devices = lib.mkVMOverride diskoSystem.config.boot.loader.grub.devices;
|
||||
})];
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
installSystem = originalSystem.extendModules {
|
||||
modules = [
|
||||
(
|
||||
{ lib, ... }:
|
||||
{
|
||||
boot.loader.efi.canTouchEfiVariables = lib.mkVMOverride writeEfiBootEntries;
|
||||
boot.loader.grub.devices = lib.mkVMOverride diskoSystem.config.boot.loader.grub.devices;
|
||||
}
|
||||
)
|
||||
];
|
||||
};
|
||||
in
|
||||
{
|
||||
installToplevel = installSystem.config.system.build.toplevel;
|
||||
|
Loading…
Reference in New Issue
Block a user