{ config, lib, ... }: let inherit (lib) mkIf mkOption types mkMerge ; validOptions = [ "desktop" "laptop" ]; in { options.smayzy.power = mkOption { type = types.enum validOptions; default = "desktop"; description = "chose power mode between desktop and laptop"; }; config = mkMerge [ (mkIf (config.smayzy.power == "desktop") { services.power-profiles-daemon.enable = false; services.auto-cpufreq = { enable = true; settings = { charger = { governor = "performance"; turbo = "auto"; }; }; }; }) (mkIf (config.smayzy.power == "laptop") { services.logind.lidSwitch = "suspend"; services.power-profiles-daemon.enable = false; services.tlp = { enable = true; settings = { CPU_SCALING_GOVERNOR_ON_AC = "performance"; CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; CPU_ENERGY_PERF_POLICY_ON_BAT = "power"; CPU_ENERGY_PERF_POLICY_ON_AC = "performance"; CPU_MIN_PERF_ON_AC = 0; CPU_MAX_PERF_ON_AC = 100; CPU_MIN_PERF_ON_BAT = 0; CPU_MAX_PERF_ON_BAT = 100; STOP_CHARGE_THRESH_BAT0 = 95; }; }; }) ]; }