{ pkgs, lib, config, inputs, ... }:
with lib;
{
  imports = [
    ../acpid.nix
    ../acpi_call.nix
    ../tlp.nix
    inputs.nixos-hardware.nixosModules.lenovo-thinkpad-t14-amd-gen1
  ];

  nixpkgs.hostPlatform = {
    system = "x86_64-linux";
    config = "x86_64-unknown-linux-gnu";
  };

  boot.kernelModules = [
    "kvm_amd"
  ];
  boot.extraModulePackages = [
  ];
  boot.kernelParams = [
    # Embedded controller wake-ups drain battery in s2idle on this device
    # See https://lore.kernel.org/all/ZnFYpWHJ5Ml724Nv@ohnotp/
    #"acpi.ec_no_wakeup=1"
  ];
  boot.initrd.kernelModules = [
    "aesni_intel" # even for AMD
    "r8152" # USB Ethernet dongle
    "crypto_simd"
    "nvme" # NVME M.2 disk
    "uas" # USB storage
    "xhci_hcd"
  ];
  boot.initrd.availableKernelModules = [
  ];

  environment.systemPackages = [
    pkgs.fwupd
  ];
  environment.variables = {
  };

  hardware.amdgpu.initrd.enable = lib.mkDefault true;
  hardware.cpu.amd.updateMicrocode = mkDefault config.hardware.enableRedistributableFirmware;
  hardware.graphics = {
    enable = mkDefault true;
    enable32Bit = mkDefault true;
    extraPackages = [
    ];
  };
  hardware.trackpoint.enable = mkDefault true;
  hardware.trackpoint.emulateWheel = mkDefault config.hardware.trackpoint.enable;

  services.fwupd.enable = true;
  services.upower.enable = true;
  services.libinput.enable = mkDefault true;

  services.xserver.videoDrivers = lib.mkDefault [ "modesetting" ];

}