diff --git a/modules/system/hardware/power.nix b/modules/system/hardware/power.nix index 3b5ab91..7e55a66 100644 --- a/modules/system/hardware/power.nix +++ b/modules/system/hardware/power.nix @@ -29,7 +29,54 @@ in { hardware.acpilight.enable = false; - programs.superfreq.enable = true; + services.superfreq = { + enable = true; + # sample config from https://github.com/NotAShelf/superfreq#sample-configuration + settings = { + charger = { + # CPU governor to use + governor = "performance"; + # Turbo boost setting: "always", "auto", or "never" + turbo = "auto"; + # Energy Performance Preference + epp = "performance"; + # Energy Performance Bias (0-15 scale or named value) + epb = "balance_performance"; + # Platform profile (if supported) + platform_profile = "performance"; + # Min/max frequency in MHz (optional) + min_freq_mhz = 800; + max_freq_mhz = 3500; + # Optional: Profile-specific battery charge thresholds (overrides global setting) + # battery_charge_thresholds = [40, 80] # Start at 40%, stop at 80% + }; + + battery = { + governor = "powersave"; + turbo = "auto"; + epp = "power"; + epb = "balance_power"; + platform_profile = "low-power"; + min_freq_mhz = 800; + max_freq_mhz = 2500; + }; + + daemon = { + # Base polling interval in seconds + poll_interval_sec = 5; + # Enable adaptive polling that changes with system state + adaptive_interval = true; + # Minimum polling interval for adaptive polling (seconds) + min_poll_interval_sec = 1; + # Maximum polling interval for adaptive polling (seconds) + max_poll_interval_sec = 30; + # Double the polling interval when on battery to save power + throttle_on_battery = true; + # Logging level: Error, Warning, Info, Debug + log_level = "Info"; + }; + }; + }; services = { upower = { enable = true;