From 79368eafd5918f41c628fc9eebdd3422841cc51b Mon Sep 17 00:00:00 2001 From: Satria Date: Sun, 1 Feb 2026 19:27:30 +0700 Subject: [PATCH 1/2] modularize thinkpad hw config --- modules/hardware/battery-power.nix | 23 +++++++++ modules/hardware/cpu-thermal.nix | 37 ++++++++++++++ modules/hardware/igpu.nix | 13 +++++ modules/hardware/power-button.nix | 7 +++ modules/hardware/thinkpad.nix | 78 +++++------------------------- 5 files changed, 92 insertions(+), 66 deletions(-) create mode 100644 modules/hardware/battery-power.nix create mode 100644 modules/hardware/cpu-thermal.nix create mode 100644 modules/hardware/igpu.nix create mode 100644 modules/hardware/power-button.nix diff --git a/modules/hardware/battery-power.nix b/modules/hardware/battery-power.nix new file mode 100644 index 0000000..e4a000b --- /dev/null +++ b/modules/hardware/battery-power.nix @@ -0,0 +1,23 @@ +{ pkgs, ... }: +{ + powerManagement.powertop.enable = true; + + services = { + udev.extraRules = '' + #ACTION=="add", SUBSYSTEM=="usb", TEST=="power/control", ATTR{power/control}="auto" + ACTION=="add", SUBSYSTEM=="pci", TEST=="power/control", ATTR{power/control}="auto" + SUBSYSTEM=="power_supply", ACTION=="change", RUN+="${pkgs.writeShellScript "battery-thresholds" '' + echo 80 > /sys/class/power_supply/BAT1/charge_control_start_threshold || true + echo 85 > /sys/class/power_supply/BAT1/charge_control_end_threshold || true + ''}" + ''; + upower = { + enable = true; + percentageCritical = 15; + percentageAction = 10; + usePercentageForPolicy = true; + allowRiskyCriticalPowerAction = true; + criticalPowerAction = "HybridSleep"; + }; + }; +} diff --git a/modules/hardware/cpu-thermal.nix b/modules/hardware/cpu-thermal.nix new file mode 100644 index 0000000..312d404 --- /dev/null +++ b/modules/hardware/cpu-thermal.nix @@ -0,0 +1,37 @@ +{ pkgs, ... }: +{ + services = { + thermald.enable = true; + throttled.enable = true; + auto-cpufreq = { + enable = true; + settings = { + charger = { + governor = "performance"; + energy_performance_preference = "balance_performance"; + turbo = "auto"; + }; + battery = { + governor = "powersave"; + energy_performance_preference = "balance_power"; + turbo = "never"; + enable_thresholds = "true"; + start_threshold = "80"; + stop_threshold = "85"; + }; + }; + }; + thinkfan = { + enable = true; + levels = [ + [ "level auto" 0 55 ] + [ 3 55 65 ] + [ 7 65 75 ] + [ "level full-speed" 75 100 ] + ]; + # sensors = [ + # { type = "hwmon"; query = "/sys/devices/platform/coretemp.0/hwmon"; } + # ]; + }; + }; +} diff --git a/modules/hardware/igpu.nix b/modules/hardware/igpu.nix new file mode 100644 index 0000000..94b9c3c --- /dev/null +++ b/modules/hardware/igpu.nix @@ -0,0 +1,13 @@ +{ pkgs, ... }: +{ + hardware.graphics = { + enable = true; + enable32Bit = true; + extraPackages = with pkgs; [ + intel-media-driver + intel-compute-runtime + libva-vdpau-driver + libvdpau-va-gl + ]; + }; +} diff --git a/modules/hardware/power-button.nix b/modules/hardware/power-button.nix new file mode 100644 index 0000000..8b563bb --- /dev/null +++ b/modules/hardware/power-button.nix @@ -0,0 +1,7 @@ +{ ... }: +{ + services.logind.settings.Login = { + HandleLidSwitch = "suspend"; + HandlePowerKey = "ignore"; + }; +} diff --git a/modules/hardware/thinkpad.nix b/modules/hardware/thinkpad.nix index a57fd9f..f429cca 100644 --- a/modules/hardware/thinkpad.nix +++ b/modules/hardware/thinkpad.nix @@ -1,9 +1,14 @@ -{ pkgs, ... }: { - import = [ +{ pkgs, ... }: +{ + imports = [ ./tzupdate.nix ./hibernation.nix + ./igpu.nix + ./cpu-thermal.nix + ./battery-power.nix + ./power-button.nix ]; - powerManagement.powertop.enable = true; + security = { tpm2 = { enable = true; @@ -11,82 +16,23 @@ tctiEnvironment.enable = true; }; }; + hardware = { enableRedistributableFirmware = true; # T480 WiFi firmware fix bluetooth = { enable = true; powerOnBoot = true; }; - graphics = { - enable = true; - enable32Bit = true; - extraPackages = with pkgs; [ - intel-media-driver - intel-compute-runtime - libva-vdpau-driver - libvdpau-va-gl - ]; - }; }; + boot = { kernelPackages = pkgs.linuxPackages; kernel.sysctl."vm.laptop_mode" = 5; initrd.availableKernelModules = [ "thinkpad_acpi" ]; }; + services = { - logind.settings.Login = { - HandleLidSwitch = "suspend"; - HandlePowerKey = "ignore"; - }; fstrim.enable = true; - thermald.enable = true; - throttled.enable = true; fwupd.enable = true; - udev.extraRules = '' - #ACTION=="add", SUBSYSTEM=="usb", TEST=="power/control", ATTR{power/control}="auto" - ACTION=="add", SUBSYSTEM=="pci", TEST=="power/control", ATTR{power/control}="auto" - SUBSYSTEM=="power_supply", ACTION=="change", RUN+="${pkgs.writeShellScript "battery-thresholds" '' - echo 80 > /sys/class/power_supply/BAT1/charge_control_start_threshold || true - echo 85 > /sys/class/power_supply/BAT1/charge_control_end_threshold || true - ''}" - ''; - upower = { - enable = true; - percentageCritical = 15; - percentageAction = 10; - usePercentageForPolicy = true; - allowRiskyCriticalPowerAction = true; - criticalPowerAction = "HybridSleep"; - }; - auto-cpufreq = { - enable = true; - settings = { - charger = { - governor = "performance"; - energy_performance_preference = "balance_performance"; - turbo = "auto"; - }; - battery = { - governor = "powersave"; - energy_performance_preference = "balance_power"; - turbo = "never"; - enable_thresholds = "true"; - start_threshold = "80"; - stop_threshold = "85"; - }; - }; - }; - thinkfan = { - enable = true; - levels = [ - [ "level auto" 0 55 ] - [ 3 55 65 ] - [ 7 65 75 ] - [ "level full-speed" 75 100 ] - ]; - # sensors = [ - # { type = "hwmon"; query = "/sys/devices/platform/coretemp.0/hwmon"; } - # ]; - }; }; -} \ No newline at end of file +} From f2330d38b2faac4811d79a8f07fe26fd2f8117b5 Mon Sep 17 00:00:00 2001 From: Satria Date: Sun, 1 Feb 2026 19:51:18 +0700 Subject: [PATCH 2/2] fix list --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 4eac18e..5c94ece 100644 --- a/README.md +++ b/README.md @@ -7,13 +7,13 @@ rewrite of my nixos flake with hopefully better structuring and modularity - (quater-progress) reintegrate file paths and arguments to work together # todo: migrate files below -[X] flake stuff (flake.nix & flake.lock) +- [X] flake stuff (flake.nix & flake.lock) -[X] hardware configs (hardware/scans) -[X] nixos system -[X] base nix configs -[X] apps list -[X] user config (not hm) +- [X] hardware configs (hardware/scans) +- [X] nixos system +- [X] base nix configs +- [X] apps list +- [X] user config (not hm) -[ ] home manager config -[ ] rice config (everything in /rice) +- [ ] home manager config +- [ ] rice config (everything in /rice) \ No newline at end of file