diff options
author | Timo Kaufmann <timokau@zoho.com> | 2020-10-30 09:32:50 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-30 09:32:50 +0100 |
commit | 83f48e83481841e5bd48ba029b1e4ed42592073f (patch) | |
tree | ec0a693d481434cd06af6c39ee9f3f88f11b0b61 /nixos/modules/services | |
parent | 1102a46ffee6cc82ba86e3ffcc3c71078d7cb71e (diff) | |
parent | eb4e67505fdf9c521106b3ba9c6f300c77adee6c (diff) | |
download | nixpkgs-83f48e83481841e5bd48ba029b1e4ed42592073f.tar nixpkgs-83f48e83481841e5bd48ba029b1e4ed42592073f.tar.gz nixpkgs-83f48e83481841e5bd48ba029b1e4ed42592073f.tar.bz2 nixpkgs-83f48e83481841e5bd48ba029b1e4ed42592073f.tar.lz nixpkgs-83f48e83481841e5bd48ba029b1e4ed42592073f.tar.xz nixpkgs-83f48e83481841e5bd48ba029b1e4ed42592073f.tar.zst nixpkgs-83f48e83481841e5bd48ba029b1e4ed42592073f.zip |
Merge pull request #95011 from Atemu/undervolt-pl
undervolt: expose power limits as Nixopts
Diffstat (limited to 'nixos/modules/services')
-rw-r--r-- | nixos/modules/services/hardware/undervolt.nix | 46 |
1 files changed, 44 insertions, 2 deletions
diff --git a/nixos/modules/services/hardware/undervolt.nix b/nixos/modules/services/hardware/undervolt.nix index 054ffa35050..9c2f78a755d 100644 --- a/nixos/modules/services/hardware/undervolt.nix +++ b/nixos/modules/services/hardware/undervolt.nix @@ -3,7 +3,12 @@ with lib; let cfg = config.services.undervolt; - cliArgs = lib.cli.toGNUCommandLineShell {} { + + mkPLimit = limit: window: + if (isNull limit && isNull window) then null + else assert asserts.assertMsg (!isNull limit && !isNull window) "Both power limit and window must be set"; + "${toString limit} ${toString window}"; + cliArgs = lib.cli.toGNUCommandLine {} { inherit (cfg) verbose temp @@ -21,6 +26,9 @@ let temp-bat = cfg.tempBat; temp-ac = cfg.tempAc; + + power-limit-long = mkPLimit cfg.p1.limit cfg.p1.window; + power-limit-short = mkPLimit cfg.p2.limit cfg.p2.window; }; in { @@ -104,6 +112,40 @@ in ''; }; + p1.limit = mkOption { + type = with types; nullOr int; + default = null; + description = '' + The P1 Power Limit in Watts. + Both limit and window must be set. + ''; + }; + p1.window = mkOption { + type = with types; nullOr (oneOf [ float int ]); + default = null; + description = '' + The P1 Time Window in seconds. + Both limit and window must be set. + ''; + }; + + p2.limit = mkOption { + type = with types; nullOr int; + default = null; + description = '' + The P2 Power Limit in Watts. + Both limit and window must be set. + ''; + }; + p2.window = mkOption { + type = with types; nullOr (oneOf [ float int ]); + default = null; + description = '' + The P2 Time Window in seconds. + Both limit and window must be set. + ''; + }; + useTimer = mkOption { type = types.bool; default = false; @@ -133,7 +175,7 @@ in serviceConfig = { Type = "oneshot"; Restart = "no"; - ExecStart = "${pkgs.undervolt}/bin/undervolt ${cliArgs}"; + ExecStart = "${pkgs.undervolt}/bin/undervolt ${toString cliArgs}"; }; }; |