Fediversity/infra/common/nixos/repart.nix
Kiara Grouwstra 8a3cd4a903
some cleanup
Signed-off-by: Kiara Grouwstra <kiara@procolix.eu>
2025-09-24 17:00:52 +02:00

192 lines
5.5 KiB
Nix

{
config,
pkgs,
lib,
modulesPath,
...
}:
{
imports = [
"${modulesPath}/image/repart.nix"
];
fileSystems = {
# "/" = {
# fsType = "tmpfs";
# options = [
# "size=20%"
# ];
# };
"/" =
let
partConf = config.image.repart.partitions."root".repartConfig;
in
{
device = "/dev/disk/by-partuuid/${partConf.UUID}";
fsType = partConf.Format;
};
# "/var" =
# let
# partConf = config.image.repart.partitions."var".repartConfig;
# in
# {
# device = "/dev/disk/by-partuuid/${partConf.UUID}";
# fsType = partConf.Format;
# };
"/boot" =
let
partConf = config.image.repart.partitions."esp".repartConfig;
in
{
device = "/dev/disk/by-partuuid/${partConf.UUID}";
fsType = partConf.Format;
};
# "/nix/store" =
# let
# partConf = config.image.repart.partitions."store".repartConfig;
# in
# {
# device = "/dev/disk/by-partlabel/${partConf.Label}";
# fsType = partConf.Format;
# };
};
boot.uki.name = "monkey";
# fileSystems."/".device = "/dev/disk/by-label/nixos";
# https://nixos.org/manual/nixos/stable/#sec-image-repart
# https://x86.lol/generic/2024/08/28/systemd-sysupdate.html
image.repart =
let
efiArch = pkgs.stdenv.hostPlatform.efiArch;
in
{
name = config.boot.uki.name;
# name = "image";
# split = true;
partitions = {
"esp" = {
# The contents to end up in the filesystem image.
contents = {
# "/EFI/BOOT/BOOTX64.EFI".source = "${pkgs.systemd}/lib/systemd/boot/efi/systemd-bootx64.efi";
"/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}";
# https://man.archlinux.org/man/loader.conf.5
"/loader/entries/loader.conf".source = pkgs.writeText "loader.conf" ''
timeout 0
editor yes
default *
logLevel=debug
'';
# "/loader/loader.conf".source = pkgs.writeText "loader.conf" ''
# timeout 0
# editor yes
# default *
# logLevel=debug
# '';
# nixos-*.conf
# "/loader/entries/nixos.conf".source = pkgs.writeText "nixos.conf" ''
# title NixOS
# linux /EFI/nixos/kernel.efi
# initrd /EFI/nixos/initrd.efi
# options init=/nix/store/.../init root=LABEL=nixos
# '';
# systemd-boot configuration
"/loader/loader.conf".source = (
pkgs.writeText "$out" ''
timeout 3
''
);
};
# https://www.man7.org/linux//man-pages/man5/repart.d.5.html
repartConfig = {
Priority = 1;
Type = "esp";
MountPoint = "/boot";
Format = "vfat";
UUID = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa";
SizeMinBytes = "500M";
SizeMaxBytes = "500M";
};
# repartConfig = {
# Type = "esp";
# UUID = "c12a7328-f81f-11d2-ba4b-00a0c93ec93b"; # Well known
# Format = "vfat";
# SizeMinBytes = "256M";
# SplitName = "-";
# };
};
"root" = {
storePaths = [ config.system.build.toplevel ];
repartConfig = {
Priority = 2;
Type = "root";
Label = "nixos";
MountPoint = "/";
Format = "ext4";
UUID = "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb";
# populates the fs twice
Minimize = "guess";
# Minimize = "off";
# SizeMinBytes = "1G";
# SizeMaxBytes = "20G";
};
# "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";
# };
# };
};
};
};
}