diff --git a/nixos/doc/manual/release-notes/rl-2009.xml b/nixos/doc/manual/release-notes/rl-2009.xml
index f13be77f2c7f..83bc2f82bbfc 100644
--- a/nixos/doc/manual/release-notes/rl-2009.xml
+++ b/nixos/doc/manual/release-notes/rl-2009.xml
@@ -964,6 +964,13 @@ services.transmission.settings.rpc-bind-address = "0.0.0.0";
The packages perl, rsync and strace were removed from . If you need them, install them again with = with pkgs; [ perl rsync strace ]; in your configuration.nix.
+
+
+ The undervolt option no longer needs to apply its
+ settings every 30s. If they still become undone, open an issue and restore
+ the previous behaviour using undervolt.useTimer.
+
+
diff --git a/nixos/modules/services/hardware/undervolt.nix b/nixos/modules/services/hardware/undervolt.nix
index 828032dc573a..054ffa35050a 100644
--- a/nixos/modules/services/hardware/undervolt.nix
+++ b/nixos/modules/services/hardware/undervolt.nix
@@ -103,6 +103,17 @@ in
The temperature target on battery power in Celsius degrees.
'';
};
+
+ useTimer = mkOption {
+ type = types.bool;
+ default = false;
+ description = ''
+ Whether to set a timer that applies the undervolt settings every 30s.
+ This will cause spam in the journal but might be required for some
+ hardware under specific conditions.
+ Enable this if your undervolt settings don't hold.
+ '';
+ };
};
config = mkIf cfg.enable {
@@ -114,6 +125,11 @@ in
path = [ pkgs.undervolt ];
description = "Intel Undervolting Service";
+
+ # Apply undervolt on boot, nixos generation switch and resume
+ wantedBy = [ "multi-user.target" "post-resume.target" ];
+ after = [ "post-resume.target" ]; # Not sure why but it won't work without this
+
serviceConfig = {
Type = "oneshot";
Restart = "no";
@@ -121,7 +137,7 @@ in
};
};
- systemd.timers.undervolt = {
+ systemd.timers.undervolt = mkIf cfg.useTimer {
description = "Undervolt timer to ensure voltage settings are always applied";
partOf = [ "undervolt.service" ];
wantedBy = [ "multi-user.target" ];