{ pool, disks, ... }: { disk = lib.genAttrs disks (disk: { "${disk}" = { type = "disk"; device = "/dev/${disk}"; content = { type = "table"; format = "gpt"; partitions = [{ type = "partition"; name = "zfs"; start = "128MiB"; end = "100%"; content = { type = "zfs"; pool = pool; }; }]; }; }; }); zpool = { "${pool}" = { type = "zpool"; mode = "raidz1"; rootFsOptions = { compression = "on"; # lz4 by default "com.sun:auto-snapshot" = "false"; ashift = "12"; }; # mountpoint = "/"; datasets = { root = { zfs_type = "filesystem"; mountpoint = null; options."com.sun:auto-snapshot" = "false"; }; # "media/movies" = { # zfs_type = "filesystem"; # mountpoint = "/media/movies"; # options.recordsize = "1M"; # }; # "media/tv" = { # zfs_type = "filesystem"; # mountpoint = "/media/tv"; # options.recordsize = "1M"; # }; # "media/books" = { # zfs_type = "filesystem"; # mountpoint = "/media/books"; # }; # archive = { # zfs_type = "filesystem"; # mountpoint = "/archive"; # options.compression = "zstd"; # options."com.sun:auto-snapshot" = "true"; # }; # zfs_unmounted_fs = { # zfs_type = "filesystem"; # options.mountpoint = "none"; # }; # zfs_legacy_fs = { # zfs_type = "filesystem"; # options.mountpoint = "legacy"; # mountpoint = "/zfs_legacy_fs"; # }; # zfs_testvolume = { # zfs_type = "volume"; # size = "10M"; # content = { # type = "filesystem"; # format = "ext4"; # mountpoint = "/ext4onzfs"; # }; # }; # encrypted = { # zfs_type = "filesystem"; # size = "20M"; # options = { # mountpoint = "none"; # encryption = "aes-256-gcm"; # keyformat = "passphrase"; # keylocation = "file:///tmp/secret.key"; # }; # }; # "encrypted/test" = { # zfs_type = "filesystem"; # size = "2M"; # mountpoint = "/zfs_crypted"; # }; }; }; }; }