diff options
Diffstat (limited to 'lenovo/thinkpad/x1/6th-gen/default.nix')
-rw-r--r-- | lenovo/thinkpad/x1/6th-gen/default.nix | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/lenovo/thinkpad/x1/6th-gen/default.nix b/lenovo/thinkpad/x1/6th-gen/default.nix new file mode 100644 index 000000000000..b28fb5baca44 --- /dev/null +++ b/lenovo/thinkpad/x1/6th-gen/default.nix @@ -0,0 +1,75 @@ +# A good source of information about how to fix the issues still +# standing with kernel 4.6.11 is the following wiki page: +# https://wiki.archlinux.org/index.php/Lenovo_ThinkPad_X1_Carbon_(Gen_6). The +# TrackPoint and TouchPad issues there seem to have been fixed already. + +{ config, pkgs, ... }: +{ + imports = [ + ../. + ]; + # Give TLP service more control over battery + boot = { + extraModulePackages = with config.boot.kernelPackages; [ + acpi_call + ]; + kernelModules = [ + "acpi_call" + ]; + }; + + # See https://linrunner.de/en/tlp/docs/tlp-faq.html#battery + services.tlp.extraConfig = '' + START_CHARGE_THRESH_BAT0=75 + STOP_CHARGE_THRESH_BAT0=80 + CPU_SCALING_GOVERNOR_ON_BAT=powersave + ENERGY_PERF_POLICY_ON_BAT=powersave + ''; + + # Temporary fix for cpu throttling issues visible in the kernel log + # (journalctl -k) by setting the same temperature limits used by + # Window$ + # See https://wiki.archlinux.org/index.php/Lenovo_ThinkPad_X1_Carbon_(Gen_6)#Power_management.2FThrottling_issues + systemd.services.cpu-throttling = { + enable = true; + description = "Sets the offset to 3 °C, so the new trip point is 97 °C"; + documentation = [ + "https://wiki.archlinux.org/index.php/Lenovo_ThinkPad_X1_Carbon_(Gen_6)#Power_management.2FThrottling_issues" + ]; + path = [ pkgs.msr-tools ]; + script = "wrmsr -a 0x1a2 0x3000000"; + serviceConfig = { + Type = "oneshot"; + }; + wantedBy = [ + "timers.target" + ]; + }; + + systemd.timers.cpu-throttling = { + enable = true; + description = "Set cpu heating limit to 97 °C"; + documentation = [ + "https://wiki.archlinux.org/index.php/Lenovo_ThinkPad_X1_Carbon_(Gen_6)#Power_management.2FThrottling_issues" + ]; + timerConfig = { + OnActiveSec = 60; + OnUnitActiveSec = 60; + Unit = "cpu-throttling.service"; + }; + wantedBy = [ + "timers.target" + ]; + }; + + # Enable S3 suspend state: you have to manually follow the + # instructions shown here: https://delta-xi.net/#056 in order to + # produce the ACPI patched table. Put the CPIO archive in /boot and + # then enable the following lines + # boot.kernelParams = [ + # "mem_sleep_default=deep" + # ]; + # boot.initrd.prepend = [ + # "/boot/acpi_override" + # ]; +} |