2024-04-13 19:15:25 +00:00
|
|
|
{ pkgs, lib, config, ...}: let
|
|
|
|
inherit (lib) mkIf mkDefault;
|
|
|
|
deviceType = config.myOptions.device.roles.type;
|
|
|
|
acceptedTypes = ["laptop"];
|
|
|
|
in {
|
|
|
|
config = mkIf (builtins.elem deviceType acceptedTypes) {
|
|
|
|
hardware.acpilight.enable = true;
|
2024-04-13 18:56:51 +00:00
|
|
|
|
2024-04-13 19:15:25 +00:00
|
|
|
environment.systemPackages = with pkgs; [
|
|
|
|
acpi
|
|
|
|
powertop
|
|
|
|
];
|
2024-04-13 18:56:51 +00:00
|
|
|
|
2024-04-13 19:15:25 +00:00
|
|
|
services = {
|
|
|
|
# handle ACPI events
|
|
|
|
acpid.enable = true;
|
2024-04-13 18:56:51 +00:00
|
|
|
|
2024-04-13 19:15:25 +00:00
|
|
|
# allows changing system behavior based upon user-selected power profiles
|
|
|
|
power-profiles-daemon.enable = true;
|
2024-04-13 18:56:51 +00:00
|
|
|
|
2024-04-13 19:15:25 +00:00
|
|
|
# temperature target on battery
|
|
|
|
undervolt = {
|
|
|
|
tempBat = 65; # deg C
|
|
|
|
package = pkgs.undervolt;
|
|
|
|
};
|
2024-04-13 18:56:51 +00:00
|
|
|
|
2024-04-13 19:15:25 +00:00
|
|
|
# superior power management
|
|
|
|
auto-cpufreq = {
|
|
|
|
enable = true;
|
2024-04-13 18:56:51 +00:00
|
|
|
|
2024-04-13 19:15:25 +00:00
|
|
|
# define the profiles
|
|
|
|
# (you can manually switch between profiles using `powerprofilesctl` cmd)
|
|
|
|
settings = let
|
|
|
|
MHz = x: x * 1000;
|
|
|
|
in {
|
|
|
|
battery = {
|
|
|
|
governor = "powersave";
|
|
|
|
scaling_min_freq = mkDefault (MHz 1200);
|
|
|
|
scaling_max_freq = mkDefault (MHz 1800);
|
|
|
|
turbo = "never";
|
|
|
|
};
|
2024-04-13 18:56:51 +00:00
|
|
|
|
2024-04-13 19:15:25 +00:00
|
|
|
charger = {
|
|
|
|
governor = "performance";
|
|
|
|
scaling_min_freq = mkDefault (MHz 1800);
|
|
|
|
scaling_max_freq = mkDefault (MHz 3800);
|
|
|
|
turbo = "auto";
|
|
|
|
};
|
2024-04-13 18:56:51 +00:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2024-04-13 19:15:25 +00:00
|
|
|
# DBus service that provides power management support to applications
|
|
|
|
upower = {
|
|
|
|
enable = true;
|
|
|
|
percentageLow = 15;
|
|
|
|
percentageCritical = 5;
|
|
|
|
percentageAction = 3;
|
|
|
|
criticalPowerAction = "Hibernate";
|
|
|
|
};
|
2024-04-13 18:56:51 +00:00
|
|
|
};
|
|
|
|
|
2024-04-13 19:15:25 +00:00
|
|
|
boot = {
|
|
|
|
kernelModules = ["acpi_call"];
|
|
|
|
extraModulePackages = with config.boot.kernelPackages; [
|
|
|
|
acpi_call
|
|
|
|
cpupower
|
|
|
|
];
|
|
|
|
};
|
2024-04-13 18:56:51 +00:00
|
|
|
};
|
|
|
|
}
|