{ lib, ... }:
let
  bootDisk = devicePath: {
    type = "disk";
    device = devicePath;
    content = {
      type = "gpt";
  
      partitions = {
        boot = {
          size = "1M";
          type = "EF02"; # for grub MBR
        };
        ESP = {
          size = "1G";
          type = "EF00";
          content = {
            type = "filesystem";
            format = "vfat";
            mountpoint = "/boot";
          };
        };
        root = {
          size = "100%";
          content = {
            type = "filesystem";
            format = "ext4";
            mountpoint = "/";
          };
        };
      };
    };
  };
  zfsDisk = devicePath: {
    type = "disk";
    device = devicePath;
    content = {
      type = "gpt";
      partitions = {
        zfs = {
          size = "100%";
          content = {
            type = "zfs";
            pool = "zpool";
          };
        };
      };
    };
  };
in {
  disko.devices = {
    disk = {
      boot = bootDisk "/dev/sda"; # "/dev/disk/by-path/pci-0000:23:00.3-usb-0:1:1.0-scsi-0:0:0:0";

      # hd_13_tb_a = zfsDisk "/dev/disk/by-id/ata-ST18000NE000-3G6101_ZVTCXVEB";
      # hd_13_tb_b = zfsDisk "/dev/disk/by-id/ata-ST18000NE000-3G6101_ZVTCXWSC";
      # hd_13_tb_c = zfsDisk "/dev/disk/by-id/ata-ST18000NE000-3G6101_ZVTD10EH";

      # ssd_2_tb_a = zfsDisk "/dev/disk/by-id/XXX";
    };
    # zpool = {
    #   zpool = {
    #     type = "zpool";
    #     mode = {
    #       topology = {
    #         type = "topology";
    #         vdev = [
    #           {
    #             # should this only mirror for this inital config with 3 drives we will used raidz2 for future configs???
    #             mode = "mirror";
    #             members = [
    #               "hd_13_tb_a" "hd_13_tb_b" "hd_13_tb_c"
    #             ];
    #           }
    #         ];
    #         cache = [ ];
    #         # cache = [ "ssd_2_tb_a" ];
    #       };
    #     };

    #     options = {
    #       ashift = "12";
    #     };

    #     rootFsOptions = {
    #       encryption = "on";
    #       keyformat = "hex";
    #       keylocation = "prompt";
    #       compression = "lz4";
    #       xattr = "sa";
    #       acltype = "posixacl";
    #       "com.sun:auto-snapshot" = "false";
    #     };
        
    #     datasets = {
    #       "root" = {
    #         type = "zfs_fs";
    #         mountpoint = "/";
    #       };
    #       "nix" = {
    #         type = "zfs_fs";
    #         mountpoint = "/nix";
    #       };
    #       "home" = {
    #         type = "zfs_fs";
    #         mountpoint = "/home";
    #         options = {
    #           "com.sun:auto-snapshot" = "true";
    #         };
    #       };
    #       "var" = {
    #         type = "zfs_fs";
    #         mountpoint = "/var";
    #       };
    #     };
    #   };
    # };
  };
}