{ config, lib, ... }: with lib; let cfg = config.custom.services.auto-cpufreq; in { options.custom.services.auto-cpufreq = { enable = mkOption {default = false;}; max = { battery = mkOption {default = null;}; # GHz charger = mkOption {default = null;}; # GHz }; }; config = mkIf cfg.enable { # https://github.com/AdnanHodzic/auto-cpufreq #?? auto-cpufreq --stats #?? cpu-power freqency-info #?? grep '' /sys/devices/system/cpu/cpu0/cpufreq/* services = { auto-cpufreq = { enable = true; # https://github.com/AdnanHodzic/auto-cpufreq/blob/master/auto-cpufreq.conf-example settings = { battery = { energy_performance_preference = "balance_power"; governor = "powersave"; platform_profile = "low-power"; scaling_max_freq = mkIf (isFloat cfg.max.battery || isInt cfg.max.battery) (builtins.floor (cfg.max.battery * 1000 * 1000)); # KHz #// turbo = "never"; # Only works with acpi-cpufreq }; charger = { energy_performance_preference = "balance_performance"; governor = "powersave"; platform_profile = "balanced"; scaling_max_freq = mkIf (isFloat cfg.max.charger || isInt cfg.max.charger) (builtins.floor (cfg.max.charger * 1000 * 1000)); # KHz }; }; }; #!! Conflicts with auto-cpufreq power-profiles-daemon.enable = false; tlp.enable = false; }; }; }