Restructure & rework power management config

This commit is contained in:
ItsDrike 2024-06-23 21:58:12 +02:00
parent 6545dda7f8
commit 08864662bb
Signed by: ItsDrike
GPG key ID: FA2745890B7048C0
6 changed files with 47 additions and 74 deletions

View file

@ -0,0 +1,23 @@
{ pkgs, lib, config, ...}: let
inherit (lib) mkIf;
deviceType = config.myOptions.device.roles.type;
acceptedTypes = ["laptop"];
in {
config = mkIf (builtins.elem deviceType acceptedTypes) {
hardware.acpilight.enable = true;
environment.systemPackages = with pkgs; [ acpi ];
# handle ACPI events
services.acpid.enable = true;
boot = {
kernelModules = ["acpi_call"];
extraModulePackages = with config.boot.kernelPackages; [
acpi_call
cpupower
];
};
};
}

View file

@ -1,47 +0,0 @@
# This sets up power management using auto-cpufreq,
# alongside with upower and power-profiles-daemon.
# Together, this provides a complete alternative to TLP
{ pkgs, lib, config, ...}: let
inherit (lib) mkIf mkDefault;
deviceType = config.myOptions.device.roles.type;
acceptedTypes = ["laptop"];
in {
imports = [
./power-profiles-daemon
];
config = mkIf (builtins.elem deviceType acceptedTypes) {
services = {
# superior power management
auto-cpufreq = {
enable = true;
settings = let
MHz = x: x * 1000;
in {
battery = {
governor = "powersave";
scaling_min_freq = mkDefault (MHz 1200);
scaling_max_freq = mkDefault (MHz 1800);
turbo = "never";
};
charger = {
governor = "performance";
scaling_min_freq = mkDefault (MHz 1800);
scaling_max_freq = mkDefault (MHz 3800);
turbo = "auto";
};
};
};
# DBus service that provides power management support to applications
upower = {
enable = true;
percentageLow = 15;
percentageCritical = 5;
percentageAction = 3;
criticalPowerAction = "Hibernate";
};
};
};
}

View file

@ -1,37 +1,15 @@
{ pkgs, lib, config, ...}: let { pkgs, lib, config, ...}: let
inherit (lib) mkIf mkDefault; inherit (lib) mkIf;
deviceType = config.myOptions.device.roles.type; deviceType = config.myOptions.device.roles.type;
acceptedTypes = ["laptop"]; acceptedTypes = ["laptop"];
in { in {
imports = [ imports = [
./auto-cpufreq ./power-profiles-daemon
./upower.nix
./acpi.nix
]; ];
config = mkIf (builtins.elem deviceType acceptedTypes) { config = mkIf (builtins.elem deviceType acceptedTypes) {
hardware.acpilight.enable = true; environment.systemPackages = with pkgs; [ powertop ];
environment.systemPackages = with pkgs; [
acpi
powertop
];
services = {
# handle ACPI events
acpid.enable = true;
# temperature target on battery
undervolt = {
tempBat = 65; # deg C
package = pkgs.undervolt;
};
};
boot = {
kernelModules = ["acpi_call"];
extraModulePackages = with config.boot.kernelPackages; [
acpi_call
cpupower
];
};
}; };
} }

View file

@ -0,0 +1,19 @@
{ pkgs, lib, config, ...}: let
inherit (lib) mkIf;
deviceType = config.myOptions.device.roles.type;
acceptedTypes = ["laptop"];
in {
config = mkIf (builtins.elem deviceType acceptedTypes) {
services = {
# DBus service that provides power management support to applications
upower = {
enable = true;
percentageLow = 15;
percentageCritical = 5;
percentageAction = 3;
criticalPowerAction = "Hibernate";
};
};
};
}