44 lines
1.1 KiB
Nix
44 lines
1.1 KiB
Nix
{
|
|
lib,
|
|
config,
|
|
pkgs,
|
|
...
|
|
}: let
|
|
inherit (lib) mkIf;
|
|
inherit (builtins) elem attrValues;
|
|
inherit (config.ooknet.hardware) features;
|
|
in {
|
|
config = mkIf (elem "battery" features) {
|
|
services = {
|
|
# cpu power usage optimizer
|
|
auto-cpufreq = {enable = true;};
|
|
|
|
# application interface for power management
|
|
upower = {
|
|
enable = true;
|
|
percentageLow = 25;
|
|
percentageCritical = 5;
|
|
percentageAction = 3;
|
|
criticalPowerAction = "Hibernate";
|
|
};
|
|
|
|
# daemon for monitoring and controlling temperature
|
|
thermald = {enable = true;};
|
|
|
|
# put this here because if we are enabling the battery modules
|
|
# we are most likely using a laptop
|
|
# lidSwitch defines the action to perform when the laptop lid is
|
|
# closed
|
|
logind = {lidSwitch = "suspend";};
|
|
};
|
|
boot = {
|
|
kernelModules = ["acpi_call"];
|
|
extraModulePackages = attrValues {
|
|
inherit (config.boot.kernelPackages) acpi_call cpupower;
|
|
};
|
|
};
|
|
environment.systemPackages = attrValues {
|
|
inherit (pkgs) acpi powertop;
|
|
};
|
|
};
|
|
}
|