{ lib, ... }:
let
  hashDisk = disk: "os-${builtins.substring 0 5 (builtins.hashString "sha256" disk)}";
  os = "/dev/disk/by-id/mmc-CUTB42_0x95d14f9e";
  vdev = [
    "/dev/disk/by-id/ata-ST20000NM002H-3KV133_ZYD5RYRG"
    "/dev/disk/by-id/ata-ST20000NM002H-3KV133_ZYD5S02X"
  ];
in
{

  boot.loader = {
    systemd-boot = {
      enable = true;
    };
    efi = {
      canTouchEfiVariables = true;
    };
  };

  boot.zfs.forceImportRoot = true;

  disko.devices = {
    disk = {
      "os-${hashDisk os}" = {
        type = "disk";
        device = os;
        content = {
          type = "gpt";
          partitions = {
            ESP = {
              size = "1G";
              type = "EF00";
              content = {
                type = "filesystem";
                format = "vfat";
                mountpoint = "/boot";
                mountOptions = [ "nofail" ];
              };
            };
            system = {
              size = "100%";
              content = {
                type = "zfs";
                pool = "zroot";
              };
            };
            swap = {
              size = "16G";
              content = {
                type = "swap";
              };
            };
          };
        };
      };
    }
    // (lib.listToAttrs (
      map (disk: {
        name = "data-${hashDisk disk}";
        value = {
          type = "disk";
          device = disk;
          content = {
            type = "zfs";
            pool = "zdata";
          };
        };
      }) vdev
    ));
    zpool = {
      zroot = {
        type = "zpool";
        rootFsOptions = {
          mountpoint = "none";
          compression = "lz4";
          acltype = "posixacl";
          xattr = "sa";
          "com.sun:auto-snapshot" = "true";
        };
        options.ashift = "12";
        datasets = {
          "root" = {
            type = "zfs_fs";
            options.mountpoint = "none";
          };
          "root/nixos" = {
            type = "zfs_fs";
            options.mountpoint = "/";
            mountpoint = "/";
          };
          "root/home" = {
            type = "zfs_fs";
            options.mountpoint = "/home";
            mountpoint = "/home";
          };
          "root/tmp" = {
            type = "zfs_fs";
            mountpoint = "/tmp";
            options = {
              mountpoint = "/tmp";
              sync = "disabled";
            };
          };
        };
      };
      zdata = {
        type = "zpool";
        options.ashift = "12";
        rootFsOptions = {
          mountpoint = "none";
          compression = "lz4";
          acltype = "posixacl";
          xattr = "sa";
          "com.sun:auto-snapshot" = "true";
        };
        mode = {
          topology = {
            type = "topology";
            vdev = [
              {
                mode = "mirror";
                members = vdev;
              }
            ];
          };
        };
        datasets = {
          "nas" = {
            type = "zfs_fs";
            mountpoint = "/mnt/hdd";
            mountOptions = [ "nofail" ];
          };
          "service-data" = {
            type = "zfs_fs";
            mountpoint = "/var/lib";
            mountOptions = [ "nofail" ];
          };
        };
      };
    };
  };
}
