# # Power Saving configuration for utol. # FIXME: module this # { pkgs, deprekages, ... }: let ppdConfig = pkgs.writeText "ryzen-ppd.conf" '' [ryzenadj] limits = ["stapm_limit", "fast_limit", "slow_limit", "apu_slow_limit", "tctl_temp", "apu_skin_temp_limit"] monitor = stapm_limit # Profiles contain power and thermal limits in the same order as the limit names defined in the # [ryzenadj] section. The following table shows settings recorded in Windows while moving the power # slider and running 'ryzenadj -i'. On Linux the balanced profile was the default. Additionally a # custom profile with slightly increased limits is included. # Format: JSON array of integers. Defaults: None [profiles] battery = [ 11000, 8800, 8800, 12000, 70, 45 ] low-power = [ 11000, 9900, 9900, 13500, 70, 45 ] balanced = [ 20000, 20000, 15000, 15000, 86, 45 ] performance = [ 30000, 30000, 28000, 17000, 96, 64 ] [ac] profile = performance update_rate_s = 4 [battery] profile = low-power update_rate_s = 32 ''; in { # Set up upower to notify ryzen-ppd... services.upower.enable = true; # ... and ryzen-ppd itself to run our configruation. systemd.services.ryzen-ppd = { description = "ryzen power management configuration"; wantedBy = [ "default.target" ]; # Run rclone mount. serviceConfig = { Type = "simple"; ExecStart = "${deprekages.ryzen-ppd}/bin/ryzen-ppd -c ${ppdConfig}"; Restart = "on-failure"; }; }; }