{ disko.devices = { main = { type = "disk"; # TODO fill id device = "/dev/disk/by-id/CHANGEME"; content = { type = "gpt"; partitions = { ESP = { size = "2G"; type = "EF00"; content = { type = "filesystem"; format = "vfat"; mountpoint = "/boot"; }; }; zfs = { size = "100%"; content = { type = "zfs"; pool = "zroot"; }; }; }; }; }; hdd1 = { type = "disk"; # TODO fill id device = "/dev/disk/by-id/CHANGEME"; content = { type = "gpt"; partitions = { zfs = { size = "100%"; content = { type = "zfs"; pool = "tank"; }; }; }; }; }; hdd2 = { type = "disk"; # TODO fill id device = "/dev/disk/by-id/CHANGEME"; content = { type = "gpt"; partitions = { zfs = { size = "100%"; content = { type = "zfs"; pool = "tank"; }; }; }; }; }; hdd3 = { type = "disk"; # TODO fill id device = "/dev/disk/by-id/CHANGEME"; content = { type = "gpt"; partitions = { zfs = { size = "100%"; content = { type = "zfs"; pool = "tank"; }; }; }; }; }; zpool = { zroot = { type = "zpool"; rootTmpfs = true; datasets = { "rpool" = { type = "zfs_fs"; options = { mountpoint = "none"; compression = "zstd"; atime = "off"; }; }; "rpool/root" = { type = "zfs_fs"; mountpoint = "/"; options.mountpoint = "legacy"; }; "rpool/nix" = { type = "zfs_fs"; mountpoint = "/nix"; options.mountpoint = "legacy"; }; "rpool/home" = { type = "zfs_fs"; mountpoint = "/home"; }; "rpool/persist" = { type = "zfs_fs"; mountpoint = "/persist"; options.mountpoint = "legacy"; }; "rpool/log" = { type = "zfs_fs"; mountpoint = "/var/log"; options.mountpoint = "legacy"; }; "rpool/var" = { type = "zfs_fs"; options.mountpoint = "none"; }; "rpool/var/acme" = { type = "zfs_fs"; mountpoint = "/var/lib/acme"; }; "rpool/containers" = { type = "zfs_fs"; mountpoint = "/var/lib/containers"; }; "rpool/appdata" = { type = "zfs_fs"; options.mountpoint = "none"; }; "rpool/appdata/cfg" = { type = "zfs_fs"; mountpoint = "/var/lib/appdata/cfg"; }; "rpool/appdata/db" = { type = "zfs_fs"; mountpoint = "/var/lib/appdata/db"; options.canmount = "off"; }; "rpool/appdata/db/postgres" = { type = "zfs_fs"; mountpoint = "/var/lib/appdata/db/postgres"; options = { recordsize = "8K"; logbias = "latency"; }; }; "rpool/appdata/db/couchdb" = { type = "zfs_fs"; mountpoint = "/var/lib/appdata/db/couchdb"; options.recordsize = "64K"; }; "rpool/appdata/db/redis" = { type = "zfs_fs"; mountpoint = "/var/lib/appdata/db/redis"; options = { recordsize = "128K"; compression = "lz4"; }; }; "rpool/appdata/monero" = { type = "zfs_fs"; mountpoint = "/var/lib/monero"; options = { compression = "off"; recordsize = "8K"; }; }; "rpool/appdata/mail" = { type = "zfs_fs"; mountpoint = "/var/vmail"; options = { atime = "on"; recordsize = "64K"; }; }; "rpool/appdata/games" = { type = "zfs_fs"; mountpoint = "/var/lib/games"; options.recordsize = "64K"; }; }; }; tank = { type = "zpool"; mode = "raidz1"; datasets = { "ztank" = { type = "zfs_fs"; mountpoint = "none"; options = { compression = "zstd"; atime = "off"; }; }; "ztank/media" = { type = "zfs_fs"; mountpoint = "/data/media"; options = { compression = "none"; recordsize = "1M"; }; }; "ztank/vault" = { type = "zfs_fs"; mountpoint = "/data/vault"; options.xattr = "sa"; }; "ztank/seafile" = { type = "zfs_fs"; mountpoint = "none"; options.recordsize = "128K"; }; "ztank/seafile/personal" = { type = "zfs_fs"; mountpoint = "/data/seafile/personal"; }; "ztank/seafile/shared" = { type = "zfs_fs"; mountpoint = "/data/seafile/shared"; refquota = "1T"; }; "ztank/dl" = { type = "zfs_fs"; options.mountpoint = "none"; }; "ztank/dl/active" = { type = "zfs_fs"; mountpoint = "/data/dl/active"; options.recordsize = "16K"; }; "ztank/dl/complete" = { type = "zfs_fs"; mountpoint = "/data/dl/complete"; options.recordsize = "1M"; }; "ztank/backup" = { type = "zfs_fs"; mountpoint = "/data/backup"; options.recordsize = "1M"; }; }; }; }; }; }