{
  config,
  pkgs,
  lib,
  ...
}: {
  # For suspending to RAM to work, set Config -> Power -> Sleep State to "Linux" in EFI.
  # See https://wiki.archlinux.org/index.php/Lenovo_ThinkPad_X1_Carbon_(Gen_6)#Suspend_issues
  # Fingerprint sensor requires a firmware-update to work.

  boot = {
    extraModulePackages = with config.boot.kernelPackages; [acpi_call];
    extraModprobeConfig = "options iwlwifi 11n_disable=1 wd_disable=1";

    # acpi_call makes tlp work for newer thinkpads
    kernelModules = ["acpi_call"];

    # Force use of the thinkpad_acpi driver for backlight control.
    # This allows the backlight save/load systemd service to work.
    kernelParams = ["acpi_backlight=native"];
  };

  hardware.firmware = [pkgs.sof-firmware];

  services = {
    fprintd.enable = lib.mkDefault true;
    thinkfan.enable = lib.mkDefault true;
    tp-auto-kbbl.enable = lib.mkDefault true;
  };
}
