diff --git a/modules/system/hardware/module.nix b/modules/system/hardware/module.nix index 6efca34..0e50590 100644 --- a/modules/system/hardware/module.nix +++ b/modules/system/hardware/module.nix @@ -1,5 +1,10 @@ _: { - imports = [./bluetooth.nix ./keyboard ./graphics.nix]; + imports = [ + ./bluetooth.nix + ./keyboard + ./graphics.nix + ./power.nix + ]; services.irqbalance.enable = true; } diff --git a/modules/system/hardware/power.nix b/modules/system/hardware/power.nix new file mode 100644 index 0000000..64f6c7d --- /dev/null +++ b/modules/system/hardware/power.nix @@ -0,0 +1,70 @@ +{ + config, + lib, + pkgs, + ... +}: let + inherit (lib.modules) mkDefault; +in { + 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 = { + upower = { + enable = true; + percentageLow = 15; + percentageCritical = 5; + }; + + acpid = { + enable = true; + logEvents = true; + }; + + # INFO: Only works on Intel + undervolt = { + enable = true; + + tempBat = 65; + package = pkgs.undervolt; + }; + + auto-cpufreq = { + enable = true; + 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"; + }; + }; + }; + }; + }; +}