mirror of
https://github.com/nix-community/disko.git
synced 2024-11-04 05:44:29 +03:00
44 lines
1.3 KiB
Nix
44 lines
1.3 KiB
Nix
|
{ flake
|
||
|
, flakeAttr
|
||
|
, diskMappings
|
||
|
, canTouchEfiVariables ? false
|
||
|
, rootMountPoint ? "/mnt"
|
||
|
}:
|
||
|
let
|
||
|
originalSystem = (builtins.getFlake "${flake}").nixosConfigurations."${flakeAttr}";
|
||
|
diskoSystem =
|
||
|
let
|
||
|
lib = originalSystem.lib;
|
||
|
|
||
|
modifiedDisks = builtins.mapAttrs
|
||
|
(name: value: let
|
||
|
dev = if diskMappings ? ${name} then
|
||
|
diskMappings.${name}
|
||
|
else
|
||
|
throw "No device passed for disk '${name}'";
|
||
|
in value // {
|
||
|
device = dev;
|
||
|
content = value.content // { device = dev; };
|
||
|
})
|
||
|
originalSystem.config.disko.devices.disk;
|
||
|
|
||
|
cleanedDisks = lib.filterAttrsRecursive (n: _: !lib.hasPrefix "_" n) modifiedDisks;
|
||
|
in
|
||
|
originalSystem.extendModules {
|
||
|
modules = [{
|
||
|
disko.rootMountPoint = rootMountPoint;
|
||
|
disko.devices.disk = lib.mkVMOverride cleanedDisks;
|
||
|
}];
|
||
|
};
|
||
|
installSystem = originalSystem.extendModules {
|
||
|
modules = [({ lib, ... }: {
|
||
|
boot.loader.efi.canTouchEfiVariables = lib.mkVMOverride canTouchEfiVariables;
|
||
|
boot.loader.grub.devices = lib.mkVMOverride diskoSystem.config.boot.loader.grub.devices;
|
||
|
})];
|
||
|
};
|
||
|
in
|
||
|
{
|
||
|
installToplevel = installSystem.config.system.build.toplevel;
|
||
|
inherit (diskoSystem.config.system.build) formatScript mountScript diskoScript;
|
||
|
}
|