2025-04-09 15:31:18 +02:00
|
|
|
{
|
|
|
|
config,
|
2025-07-19 21:51:37 +02:00
|
|
|
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 = [
|
2025-07-19 21:51:37 +02:00
|
|
|
# (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;
|
|
|
|
|
2025-07-19 21:51:37 +02:00
|
|
|
# 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";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|