summaryrefslogtreecommitdiff
path: root/sys/hardware/thinkpad.nix
diff options
context:
space:
mode:
Diffstat (limited to 'sys/hardware/thinkpad.nix')
-rw-r--r--sys/hardware/thinkpad.nix38
1 files changed, 38 insertions, 0 deletions
diff --git a/sys/hardware/thinkpad.nix b/sys/hardware/thinkpad.nix
new file mode 100644
index 0000000..a65ffb2
--- /dev/null
+++ b/sys/hardware/thinkpad.nix
@@ -0,0 +1,38 @@
+{ 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 digimend ];
+ extraModprobeConfig = "options iwlwifi 11n_disable=1 wd_disable=1";
+
+ # acpi_call makes tlp work for newer thinkpads
+ kernelModules = [ "acpi_call" "digimend" ];
+
+ # 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;
+ };
+ };
+}