{
  config,
  lib,
  pkgs,
  ...
}:

{
  imports = [ ];

  options.me = {
    vm_disk.enable = lib.mkOption {
      type = lib.types.bool;
      default = false;
      example = true;
      description = "Whether we want to mount the local disk for persistent storage.";
    };
  };

  config = lib.mkIf config.me.vm_disk.enable (
    lib.mkMerge [
      {
        # Mount the local disk
        fileSystems = {
          "/.disk" = lib.mkForce {
            device = "/dev/nvme0n1p1";
            fsType = "ext4";
            options = [
              "noatime"
              "discard"
            ];
            neededForBoot = true;
          };

          "/persist" = {
            fsType = "none";
            device = "/.disk/persist";
            options = [
              "bind"
              "rw"
            ];
            depends = [
              "/.disk/persist"
            ];
          };

          "/state" = {
            fsType = "none";
            device = "/.disk/state";
            options = [
              "bind"
              "rw"
            ];
            depends = [
              "/.disk/state"
            ];
          };

          "/nix/store" = lib.mkForce {
            fsType = "overlay";
            device = "overlay";
            options = [
              "lowerdir=/nix/.ro-store"
              "upperdir=/.disk/persist/store"
              "workdir=/.disk/state/work"
            ];
            depends = [
              "/nix/.ro-store"
              "/.disk/persist/store"
              "/.disk/state/work"
            ];
          };
        };
      }
    ]
  );
}