mirror of
https://github.com/NixOS/nixos-hardware
synced 2024-11-01 00:29:40 +01:00
68 lines
2.3 KiB
Nix
68 lines
2.3 KiB
Nix
|
{ config, lib, pkgs, ... }:
|
||
|
with lib;
|
||
|
let
|
||
|
cfg = config.hardware.gpd.ppt;
|
||
|
in
|
||
|
{
|
||
|
imports = [
|
||
|
../../common/pc/laptop
|
||
|
../../common/pc/ssd
|
||
|
../../common/hidpi.nix
|
||
|
];
|
||
|
|
||
|
# Linux default PPT is 24-22-22, BIOS default PPT is 35-32-28. It can be controlled by ryzenadj.
|
||
|
|
||
|
# NOTICE: Whenever you can limit PPT to 15W by pressing Fn + Shift to enter quiet mode.
|
||
|
|
||
|
options.hardware.gpd.ppt = {
|
||
|
enable = mkEnableOption (mdDoc "Enable PPT control for device by ryzenadj.") // {
|
||
|
# Default increase PPT to the BIOS default when power adapter plugin to increase performance.
|
||
|
default = true;
|
||
|
};
|
||
|
|
||
|
adapter = {
|
||
|
fast-limit = mkOption {
|
||
|
description = "Fast PTT Limit(milliwatt) when power adapter plugin.";
|
||
|
default = 35000;
|
||
|
type = types.ints.unsigned;
|
||
|
};
|
||
|
slow-limit = mkOption {
|
||
|
description = "Slow PTT Limit(milliwatt) when power adapter plugin.";
|
||
|
default = 32000;
|
||
|
type = types.ints.unsigned;
|
||
|
};
|
||
|
stapm-limit = mkOption {
|
||
|
description = "Stapm PTT Limit(milliwatt) when power adapter plugin.";
|
||
|
default = 28000;
|
||
|
type = types.ints.unsigned;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
battery = {
|
||
|
fast-limit = mkOption {
|
||
|
description = "Fast PTT Limit(milliwatt) when using battery.";
|
||
|
default = 24000;
|
||
|
type = types.ints.unsigned;
|
||
|
};
|
||
|
slow-limit = mkOption {
|
||
|
description = "Slow PTT Limit(milliwatt) when using battery.";
|
||
|
default = 22000;
|
||
|
type = types.ints.unsigned;
|
||
|
};
|
||
|
stapm-limit = mkOption {
|
||
|
description = "Stapm PTT Limit(milliwatt) when using battery.";
|
||
|
default = 22000;
|
||
|
type = types.ints.unsigned;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
config = mkIf cfg.enable {
|
||
|
environment.systemPackages = [ pkgs.ryzenadj ];
|
||
|
services.udev.extraRules = ''
|
||
|
SUBSYSTEM=="power_supply", KERNEL=="ADP1", ATTR{online}=="1", RUN+="${pkgs.ryzenadj}/bin/ryzenadj --stapm-limit ${toString cfg.adapter.stapm-limit} --fast-limit ${toString cfg.adapter.fast-limit} --slow-limit ${toString cfg.adapter.slow-limit}"
|
||
|
SUBSYSTEM=="power_supply", KERNEL=="ADP1", ATTR{online}=="0", RUN+="${pkgs.ryzenadj}/bin/ryzenadj --stapm-limit ${toString cfg.battery.stapm-limit} --fast-limit ${toString cfg.battery.fast-limit} --slow-limit ${toString cfg.battery.slow-limit}"
|
||
|
'';
|
||
|
};
|
||
|
}
|