{ lib, name ? "chaos", disk ? "/dev/sda1", ... }: { disk = { ${disk} = { device = disk; type = "disk"; content = { type = "table"; format = "gpt"; partitions = [ { type = "partition"; name = "ESP"; start = "1MiB"; end = "512MiB"; bootable = true; content = { type = "filesystem"; format = "vfat"; mountpoint = "/boot"; }; } { type = "partition"; name = "root"; start = "512MiB"; end = "100%"; part-type = "primary"; content = { type = "luks"; name = "crypt-${name}"; content = { type = "lvm_pv"; vg = "lvm-${name}"; }; }; } ]; }; }; }; lvm_vg."lvm-${name}" = { type = "lvm_vg"; lvs = { raw = { type = "lvm_lv"; # size = "100%-200GiB"; }; zfs = { type = "lvm_lv"; size = "200GiB"; content = { type = "zfs"; pool = name; }; }; }; }; zpool."${name}-${lib.replaceStrings ["/dev/"] [""] disk}" = { type = "zpool"; rootFsOptions = { acltype = "posixacl"; ashift = "12"; autotrim = "on"; canmount = "off"; compression = "zstd"; normalization = "formD"; mountpoint = "none"; xattr = "sa"; }; datasets = let dataset = mountpoint: { options = { canmount = "on"; inherit mountpoint; }; zfs_type = "filesystem"; }; in { "data" = dataset "/"; "data/etc" = dataset "/etc"; "data/home" = dataset "/home"; "data/var" = dataset "/var"; "data/var/backup" = dataset "/var/backup"; "data/var/lib" = dataset "/var/lib"; "data/var/log" = dataset "/var/log"; "nixos" = { options.canmount = "off"; zfs_type = "filesystem"; }; "nixos/nix" = dataset "/nix"; "nixos/nix/store" = { options = { atime = "off"; canmount = "on"; mountpoint = "/nix/store"; }; zfs_type = "filesystem"; }; "nixos/nix/var" = dataset "/nix/var"; "resered" = { options = { canmount = "off"; reservation = "5GiB"; }; zfs_type = "filesystem"; }; }; }; }