{ config, lib, modulesPath, ... }:

{
  imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
  hardware.cpu.amd.updateMicrocode =
    lib.mkDefault config.hardware.enableRedistributableFirmware;

  environment.etc."crypttab".text = ''
    backedNvme /dev/disk/by-uuid/92cfaa4a-82a1-4336-b552-b7f4f3c68613 /newdrive.key
  '';

  boot = {
    kernelModules = [ "kvm-amd" "dm-snapshot" ];
    initrd = {
      luks.devices = {
        # backedNvme = {
        #   device = "/dev/disk/by-uuid/92cfaa4a-82a1-4336-b552-b7f4f3c68613";
        #   keyFile = "/newdrive.key";
        #   allowDiscards = true;

        # };
        root = {
          device = "/dev/disk/by-uuid/bdd5f111-ecec-48d8-861f-94083098c724";
          preLVM = true;
          allowDiscards = true;
          fallbackToPassword = true;
        };
      };
      availableKernelModules =
        [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
    };
  };

  fileSystems = {
    "/" = {
      device = "/dev/disk/by-uuid/28ce6650-de21-4c1d-ae42-95d1e3507740";
      fsType = "ext4";
    };

    "/boot" = {
      device = "/dev/disk/by-uuid/B790-869D";
      fsType = "vfat";
    };

    "/backednvme" = {
      device = "/dev/mapper/backedNvme";
    };

    "/services" = {
      device = "/backednvme/services";
      options = [ "bind" ];
    };

    "/secrets" = {
      device = "/backednvme/secrets";
      options = [ "bind" ];
    };

    "/media" = {
      device = "nvmedata/media";
      fsType = "zfs";
    };
  };
  
  swapDevices = [{
    device = "/swapfile";
    size = 1024 * 64;
  }];
}