85 lines
2.3 KiB
Nix
85 lines
2.3 KiB
Nix
{ config, pkgs, lib, modulesPath, ... }: {
|
|
|
|
imports = [
|
|
"${modulesPath}/image/repart.nix"
|
|
];
|
|
|
|
image.repart =
|
|
let
|
|
efiArch = pkgs.stdenv.hostPlatform.efiArch;
|
|
in
|
|
{
|
|
name = config.boot.uki.name;
|
|
split = true;
|
|
|
|
partitions = {
|
|
"esp" = {
|
|
contents = {
|
|
"/EFI/BOOT/BOOT${lib.toUpper efiArch}.EFI".source =
|
|
"${pkgs.systemd}/lib/systemd/boot/efi/systemd-boot${efiArch}.efi";
|
|
|
|
"/EFI/Linux/${config.system.boot.loader.ukiFile}".source =
|
|
"${config.system.build.uki}/${config.system.boot.loader.ukiFile}";
|
|
|
|
# systemd-boot configuration
|
|
"/loader/loader.conf".source = (pkgs.writeText "$out" ''
|
|
timeout 3
|
|
'');
|
|
};
|
|
repartConfig = {
|
|
Type = "esp";
|
|
UUID = "c12a7328-f81f-11d2-ba4b-00a0c93ec93b"; # Well known
|
|
Format = "vfat";
|
|
SizeMinBytes = "256M";
|
|
SplitName = "-";
|
|
};
|
|
};
|
|
"store" = {
|
|
storePaths = [ config.system.build.toplevel ];
|
|
stripNixStorePrefix = true;
|
|
repartConfig = {
|
|
Type = "linux-generic";
|
|
Label = "store_${config.system.image.version}";
|
|
Format = "squashfs";
|
|
Minimize = "off";
|
|
ReadOnly = "yes";
|
|
|
|
SizeMinBytes = "1G";
|
|
SizeMaxBytes = "1G";
|
|
SplitName = "store";
|
|
};
|
|
};
|
|
|
|
# Placeholder for the second installed Nix store.
|
|
"store-empty" = {
|
|
repartConfig = {
|
|
Type = "linux-generic";
|
|
Label = "_empty";
|
|
Minimize = "off";
|
|
SizeMinBytes = "1G";
|
|
SizeMaxBytes = "1G";
|
|
SplitName = "-";
|
|
};
|
|
};
|
|
|
|
# Persistent storage
|
|
"var" = {
|
|
repartConfig = {
|
|
Type = "var";
|
|
UUID = "4d21b016-b534-45c2-a9fb-5c16e091fd2d"; # Well known
|
|
Format = "xfs";
|
|
Label = "nixos-persistent";
|
|
Minimize = "off";
|
|
|
|
# Has to be large enough to hold update files.
|
|
SizeMinBytes = "2G";
|
|
SizeMaxBytes = "2G";
|
|
SplitName = "-";
|
|
|
|
# Wiping this gives us a clean state.
|
|
FactoryReset = "yes";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|