nichts/modules/system/hardware/power.mod.nix

243 lines
6.4 KiB
Nix
Raw Normal View History

2025-04-09 15:31:18 +02:00
{
config,
sources,
2025-04-09 15:31:18 +02:00
lib,
pkgs,
...
}: let
inherit (lib.modules) mkDefault;
in {
2025-05-14 11:22:39 +02:00
imports = [
# (sources.watt + "/nix/module.nix")
2025-05-14 11:22:39 +02:00
];
2025-04-09 15:31:18 +02:00
config = {
environment.systemPackages = builtins.attrValues {
inherit
(pkgs)
acpi
powertop
;
};
boot = {
kernelModules = ["acpi_call"];
extraModulePackages = with config.boot.kernelPackages; [
acpi_call
cpupower
];
};
hardware.acpilight.enable = false;
# services.watt = {
# enable = true;
# # sample config from https://github.com/NotAShelf/watt#sample-configuration
# settings = {
# rule = [
# {
# cpu = {
# energy-performance-preference = "power";
# frequency-mhz-maximum = 2000;
# governor = "powersave";
# turbo = false;
# };
# "if" = {
# is-more-than = 85;
# value = "$cpu-temperature";
# };
# priority = 100;
# }
# {
# cpu = {
# energy-performance-preference = "power";
# frequency-mhz-maximum = 800;
# governor = "powersave";
# turbo = false;
# };
# "if" = {
# all = [
# "?discharging"
# {
# is-less-than = 0.3;
# value = "%power-supply-charge";
# }
# ];
# };
# power = {platform-profile = "low-power";};
# priority = 90;
# }
# {
# cpu = {
# energy-performance-preference = "performance";
# governor = "performance";
# turbo = true;
# };
# "if" = {
# all = [
# {
# is-more-than = 0.8;
# value = "%cpu-usage";
# }
# {
# is-less-than = 30;
# value = "$cpu-idle-seconds";
# }
# {
# is-less-than = 75;
# value = "$cpu-temperature";
# }
# ];
# };
# priority = 80;
# }
# {
# cpu = {
# energy-performance-bias = "balance_performance";
# energy-performance-preference = "performance";
# governor = "performance";
# turbo = true;
# };
# "if" = {
# all = [
# {not = "?discharging";}
# {
# is-more-than = 0.1;
# value = "%cpu-usage";
# }
# {
# is-less-than = 80;
# value = "$cpu-temperature";
# }
# ];
# };
# priority = 70;
# }
# {
# cpu = {
# energy-performance-preference = "balance_performance";
# governor = "schedutil";
# };
# "if" = {
# all = [
# {
# is-more-than = 0.4;
# value = "%cpu-usage";
# }
# {
# is-less-than = 0.8;
# value = "%cpu-usage";
# }
# ];
# };
# priority = 60;
# }
# {
# cpu = {
# energy-performance-preference = "power";
# governor = "powersave";
# turbo = false;
# };
# "if" = {
# all = [
# {
# is-less-than = 0.2;
# value = "%cpu-usage";
# }
# {
# is-more-than = 60;
# value = "$cpu-idle-seconds";
# }
# ];
# };
# priority = 50;
# }
# {
# cpu = {
# energy-performance-preference = "power";
# frequency-mhz-maximum = 1600;
# governor = "powersave";
# turbo = false;
# };
# "if" = {
# is-more-than = 300;
# value = "$cpu-idle-seconds";
# };
# priority = 40;
# }
# {
# cpu = {
# energy-performance-preference = "power";
# frequency-mhz-maximum = 2000;
# governor = "powersave";
# turbo = false;
# };
# "if" = {
# all = [
# "?discharging"
# {
# is-less-than = 0.5;
# value = "%power-supply-charge";
# }
# ];
# };
# power = {platform-profile = "low-power";};
# priority = 30;
# }
# {
# cpu = {
# energy-performance-bias = "balance_power";
# energy-performance-preference = "power";
# frequency-mhz-maximum = 1800;
# frequency-mhz-minimum = 200;
# governor = "powersave";
# turbo = false;
# };
# "if" = "?discharging";
# priority = 20;
# }
# {
# cpu = {
# energy-performance-preference = "balance_performance";
# governor = "schedutil";
# };
# priority = 0;
# }
# ];
# };
# };
2025-04-09 15:31:18 +02:00
services = {
upower = {
enable = true;
percentageLow = 15;
percentageCritical = 5;
};
acpid = {
enable = true;
logEvents = true;
};
auto-cpufreq = {
2025-05-15 11:23:22 +02:00
enable = false;
2025-04-09 15:31:18 +02:00
settings = {
charger = {
governor = "performance";
energy_performance_preference = "performance";
scaling_min_freq = mkDefault 1800000;
scaling_max_freq = mkDefault 3800000;
turbo = "auto";
};
battery = {
governor = "powersave";
energy_performance_preference = "power";
scaling_min_freq = mkDefault 1200000;
scaling_max_freq = mkDefault 1800000;
turbo = "never";
};
};
};
};
};
}