{ config, inputs, lib, pkgs, ... }: { options.nix-config = { power = { batteryThresholds = lib.mkOption { type = lib.types.listOf lib.types.int; default = [ 60 80 ]; description = "Battery charge thresholds for power management."; }; }; }; imports = [ inputs.watt.nixosModules.default ]; config = { services.tlp = { enable = true; settings = { # processor chooses frequencies itself but respects the limits set by the user CPU_DRIVER_OPMODE_ON_AC = "guided"; CPU_DRIVER_OPMODE_ON_BAT = "guided"; # governor dictates global behavior of the CPU CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; CPU_SCALING_GOVERNOR_ON_AC = "performance"; # energy performance policy (EPP) sets the energy/performance balance CPU_ENERGY_PERF_POLICY_ON_BAT = "balance_power"; CPU_ENERGY_PERF_POLICY_ON_AC = "performance"; # clock speeds reported by `sudo tlp-stat` # 623377 [kHz] and 5090910 [kHz] CPU_SCALING_MIN_FREQ_ON_AC = 623377; CPU_SCALING_MAX_FREQ_ON_AC = 5090910; CPU_SCALING_MIN_FREQ_ON_BAT = 0; # reduce max frequency on battery to save power CPU_SCALING_MAX_FREQ_ON_BAT = 3000000; # Allow the CPU to boost CPU_BOOST_ON_AC = 1; CPU_BOOST_ON_BAT = 1; RADEON_DPM_PERF_LEVEL_ON_AC = "high"; # WIFI_PWR_ON_BAT = "off"; # enable battery charge thresholds on the default battery STOP_CHARGE_THRESH_BAT0 = 1; }; }; systemd.sleep.extraConfig = '' AllowSuspend=yes AllowHibernation=yes AllowHybridSleep=yes AllowSuspendThenHibernate=yes ''; # services.watt = { # enable = true; # settings = { # battery_charge_thresholds = [ # 40 # 80 # ]; # }; # }; services.upower.enable = true; services.irqbalance = { enable = true; }; services.thermald = { enable = true; }; }; }