{ ... }:
{
  disko.devices = {
    disk = {
      nvme0n1 = {
        type = "disk";
        device = "/dev/nvme0n1";
        content = {
          type = "gpt";
          partitions = {
            ESP = {
              priority = 1;
              start = "1M";
              end = "512M";
              type = "EF00";
              content = {
                type = "filesystem";
                format = "vfat";
                mountpoint = "/boot";
              };
            };
            root = {
              size = "100%";
              content = {
                type = "btrfs";
                extraArgs = [ "-f" ]; # Override existing partition
                # Subvolumes must set a mountpoint in order to be mounted,
                # unless their parent is mounted
                subvolumes = {
                  # Subvolume name is different from mountpoint
                  "/root" = {
                    mountpoint = "/";
                    mountOptions = [ "subvol=root" "compress=zstd" "noatime" ];
                  };
                  # Subvolume name is the same as the mountpoint
                  "/home" = {
                    mountpoint = "/home";
                    mountOptions = [ "subvol=home"  "compress=zstd" "noatime" ];
                  };
                  # Parent is not mounted so the mountpoint must be set
                  "/nix" = {
                    mountpoint = "/nix";
                    mountOptions = [ "subvol=nix" "compress=zstd" "noatime" ];
                  };
                  # Subvolume for the swapfile
                  "/swap" = {
                    mountpoint = "/swap";
                    swap = {
                      swapfile.size = "64G";
                    };
                  };
                };
              };
            };

            # luks = {
            #   size = "100%";
            #   content = {
            #     type = "luks";
            #     name = "crypted";
            #     # disable settings.keyFile if you want to use interactive password entry
            #     #passwordFile = "/tmp/secret.key"; # Interactive
            #     settings = {
            #       allowDiscards = true;
            #       keyFile = "/tmp/secret.key";
            #     };
            #     additionalKeyFiles = [ "/tmp/additionalSecret.key" ];
            #     content = {
            #       ...
            #     };
            #   };
            # };
          };
        };
      };
    };
  };
}