{
  config,
  lib,
  system,
  ...
}:
let
  isArm = builtins.match "aarch64*" system != null;
  rootDisk = "/dev/nvme0n1";
in
{
  config = lib.mkIf isArm {
    disko.devices = {
      nodev."/" = {
        fsType = "tmpfs";
        mountOptions = [
          "mode=755"
          "defaults"
          "size=2G"
        ];
      };
      # root disk setup
      disk.main = {
        type = "disk";
        device = rootDisk;
        imageSize = "15G";
        content = {
          type = "gpt";
          # specify partitions
          partitions = {
            # /boot/firmware
            FIRMWARE = {
              priority = 1;
              name = "FIRMWARE";
              start = "1M";
              end = "1G";
              type = "0700";
              content = {
                type = "filesystem";
                format = "vfat";
                mountpoint = "/boot/firmware";
                mountOptions = [ "umask=0077" ];
              };
            };
            # /boot
            ESP = {
              priority = 2;
              name = "ESP";
              # start = "1G";
              # end = "2G";
              size = "1G";
              type = "EF00";
              content = {
                type = "filesystem";
                format = "vfat";
                mountpoint = "/boot";
                mountOptions = [ "umask=0077" ];
              };
            };

            root = {
              name = "btrfs-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 = {
                  "home" = {
                    mountOptions = [ "compress=zstd" ];
                    mountpoint = "/home";
                  };
                  "root" = {
                    mountOptions = [
                      "compress=zstd"
                      "noatime"
                    ];
                    mountpoint = "/root";
                  };
                  "nix" = {
                    mountOptions = [
                      "compress=zstd"
                      "noatime"
                    ];
                    mountpoint = "/nix";
                  };
                  "etc" = {
                    mountOptions = [
                      "compress=zstd"
                      "noatime"
                    ];
                    mountpoint = "/etc";
                  };
                  "tmp" = {
                    mountOptions = [
                      "compress=zstd"
                      "noatime"
                    ];
                    mountpoint = "/tmp";
                  };
                  "log" = {
                    mountOptions = [
                      "compress=zstd"
                      "noatime"
                    ];
                    mountpoint = "/var/log";
                  };
                };
              };
            };
          };
        };
      };
    };
  };
}
