{ config, lib, pkgs, ... }: with lib; let cfg = config.local.hardware.thinkpad; in { options.local.hardware.thinkpad = { enable = mkEnableOption "Thinkpad hardware support"; }; config = mkIf cfg.enable { # 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 ]; local.hardware.laptop.enable = true; services = { fprintd.enable = true; thinkfan.enable = true; tlp.enable = true; tp-auto-kbbl.enable = true; }; }; }