modularize thinkpad hw config

This commit is contained in:
Satria 2026-02-01 19:27:30 +07:00
commit 79368eafd5
5 changed files with 92 additions and 66 deletions

View file

@ -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";
};
};
}

View file

@ -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"; }
# ];
};
};
}

13
modules/hardware/igpu.nix Normal file
View file

@ -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
];
};
}

View file

@ -0,0 +1,7 @@
{ ... }:
{
services.logind.settings.Login = {
HandleLidSwitch = "suspend";
HandlePowerKey = "ignore";
};
}

View file

@ -1,9 +1,14 @@
{ pkgs, ... }: { { pkgs, ... }:
import = [ {
imports = [
./tzupdate.nix ./tzupdate.nix
./hibernation.nix ./hibernation.nix
./igpu.nix
./cpu-thermal.nix
./battery-power.nix
./power-button.nix
]; ];
powerManagement.powertop.enable = true;
security = { security = {
tpm2 = { tpm2 = {
enable = true; enable = true;
@ -11,82 +16,23 @@
tctiEnvironment.enable = true; tctiEnvironment.enable = true;
}; };
}; };
hardware = { hardware = {
enableRedistributableFirmware = true; # T480 WiFi firmware fix enableRedistributableFirmware = true; # T480 WiFi firmware fix
bluetooth = { bluetooth = {
enable = true; enable = true;
powerOnBoot = true; powerOnBoot = true;
}; };
graphics = {
enable = true;
enable32Bit = true;
extraPackages = with pkgs; [
intel-media-driver
intel-compute-runtime
libva-vdpau-driver
libvdpau-va-gl
];
};
}; };
boot = { boot = {
kernelPackages = pkgs.linuxPackages; kernelPackages = pkgs.linuxPackages;
kernel.sysctl."vm.laptop_mode" = 5; kernel.sysctl."vm.laptop_mode" = 5;
initrd.availableKernelModules = [ "thinkpad_acpi" ]; initrd.availableKernelModules = [ "thinkpad_acpi" ];
}; };
services = { services = {
logind.settings.Login = {
HandleLidSwitch = "suspend";
HandlePowerKey = "ignore";
};
fstrim.enable = true; fstrim.enable = true;
thermald.enable = true;
throttled.enable = true;
fwupd.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"; }
# ];
};
}; };
} }