{ config, lib, ... }: with lib; let cfg = config.system.disks; defaultMountOptions = ["compress-force=zstd:15"]; in { options.system.disks = { disk = mkOption { type = lib.types.path; example = literalExpression "/dev/disk/by-id/ata-WDC_WD10SDRW-11A0XS0_WD-WXP2A901KJN5"; description = lib.mdDoc "Path to the disk"; }; }; config = { disko.devices = { disk.main = { device = cfg.disk; type = "disk"; content = { type = "table"; format = "gpt"; partitions = [ { name = "boot"; start = "0"; end = "1M"; part-type = "primary"; flags = ["bios_grub"]; } { name = "root"; # leave space for the grub aka BIOS boot start = "1M"; end = "100%"; part-type = "primary"; bootable = true; content = { type = "btrfs"; extraArgs = ["-f" "--label nixos"]; # f: Override existing partitions subvolumes = { "nix" = { mountpoint = "/nix"; mountOptions = defaultMountOptions; }; "persistent-storage" = { mountpoint = "/srv"; mountOptions = defaultMountOptions; }; "persistent-storage@snapshots" = { mountpoint = "/srv/.snapshots"; mountOptions = defaultMountOptions; }; "boot" = { mountpoint = "/boot"; mountOptions = defaultMountOptions; }; }; }; } ]; }; }; nodev = { "/" = { fsType = "tmpfs"; mountOptions = ["defaults" "size=2G" "mode=755"]; }; }; }; fileSystems = { "/srv" = { neededForBoot = true; }; "/boot" = { neededForBoot = true; }; }; }; }