{ 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 = { boot.impermanence.directories = [ { directory = "/var/lib/fprint"; user = "root"; group = "root"; mode = "u=rwx,g=,o="; } ]; hardware.laptop.enable = true; }; services = { fprintd.enable = true; thinkfan.enable = true; tlp.enable = true; tp-auto-kbbl.enable = true; }; }; }