nixos/powertop: add hooks to fix incorrect configurations (#368163)
This commit is contained in:
@@ -13,7 +13,38 @@ in
|
||||
{
|
||||
###### interface
|
||||
|
||||
options.powerManagement.powertop.enable = mkEnableOption "powertop auto tuning on startup";
|
||||
options.powerManagement.powertop = {
|
||||
enable = mkEnableOption "powertop auto tuning on startup";
|
||||
|
||||
preStart = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = ''
|
||||
Shell commands executed before `powertop` is started.
|
||||
'';
|
||||
};
|
||||
|
||||
postStart = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
example = ''
|
||||
''${lib.getExe' config.systemd.package "udevadm"} trigger -c bind -s usb -a idVendor=046d -a idProduct=c08c
|
||||
'';
|
||||
description = ''
|
||||
Shell commands executed after `powertop` is started.
|
||||
|
||||
This can be used to workaround problematic configurations. For example,
|
||||
you can retrigger an `udev` rule to disable power saving on unsupported
|
||||
USB devices:
|
||||
```
|
||||
services.udev.extraRules = ''''
|
||||
# disable USB auto suspend for Logitech, Inc. G PRO Gaming Mouse
|
||||
ACTION=="bind", SUBSYSTEM=="usb", ATTR{idVendor}=="046d", ATTR{idProduct}=="c08c", TEST=="power/control", ATTR{power/control}="on"
|
||||
'''';
|
||||
```
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
###### implementation
|
||||
|
||||
@@ -24,6 +55,8 @@ in
|
||||
after = [ "multi-user.target" ];
|
||||
description = "Powertop tunings";
|
||||
path = [ pkgs.kmod ];
|
||||
preStart = cfg.preStart;
|
||||
postStart = cfg.postStart;
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = "yes";
|
||||
|
||||
Reference in New Issue
Block a user