90 lines
1.9 KiB
Nix
90 lines
1.9 KiB
Nix
{
|
|
__findFile,
|
|
pkgs,
|
|
...
|
|
}: let
|
|
tbase = 45;
|
|
wm2fc = pkgs.callPackage <package/wm2fc> {};
|
|
in {
|
|
# hardware.cpu.amd.ryzen-smu.enable = true;
|
|
|
|
environment.systemPackages = with pkgs; [
|
|
# SRC: https://github.com/FlyGoat/RyzenAdj
|
|
# ./ryzenadj --stapm-limit=45000 --fast-limit=45000 --slow-limit=45000 --tctl-temp=90
|
|
# ryzenAdj --info
|
|
# radg [TEMP]
|
|
ryzenadj
|
|
|
|
# SRC: https://github.com/nbfc-linux/nbfc-linux
|
|
nbfc-linux
|
|
|
|
wm2fc
|
|
];
|
|
|
|
systemd.services.radj = {
|
|
enable = true;
|
|
description = "Ryzen Adj temperature limiter.";
|
|
serviceConfig.Type = "simple";
|
|
wantedBy = [ "multi-user.target" ];
|
|
path = with pkgs; [
|
|
coreutils
|
|
ryzenadj
|
|
];
|
|
script = ''
|
|
while true; do
|
|
ryzenadj --tctl-temp=${toString tbase}
|
|
sleep 60
|
|
done
|
|
'';
|
|
};
|
|
|
|
systemd.services.fan = {
|
|
enable = true;
|
|
description = "The fan control";
|
|
wantedBy = [ "multi-user.target" ];
|
|
serviceConfig = {
|
|
ExecStop = "${wm2fc}/bin/wm2fc a";
|
|
Type = "simple";
|
|
};
|
|
path = with pkgs; [
|
|
coreutils
|
|
wm2fc
|
|
];
|
|
script = ''
|
|
while true; do
|
|
temp=$(cat /sys/devices/pci0000\:00/0000\:00\:18.3/hwmon/*/temp1_input)
|
|
value=0
|
|
|
|
if [ $temp -gt ${toString (tbase+35)}000 ]
|
|
then value=184
|
|
elif [ $temp -gt ${toString (tbase+30)}000 ]
|
|
then value=161
|
|
elif [ $temp -gt ${toString (tbase+25)}000 ]
|
|
then value=138
|
|
elif [ $temp -gt ${toString (tbase+20)}000 ]
|
|
then value=115
|
|
elif [ $temp -gt ${toString (tbase+15)}000 ]
|
|
then value=92
|
|
elif [ $temp -gt ${toString (tbase+10)}000 ]
|
|
then value=69
|
|
elif [ $temp -gt ${toString (tbase+5)}000 ]
|
|
then value=46
|
|
elif [ $temp -gt ${toString tbase}000 ]
|
|
then value=23
|
|
fi
|
|
|
|
wm2fc $value
|
|
sleep 2
|
|
done
|
|
'';
|
|
};
|
|
|
|
# security.wrappers.wm2fc = {
|
|
# source = "${wm2fc}/bin/wm2fc";
|
|
# owner = "root";
|
|
# group = "root";
|
|
# setuid = true;
|
|
# permissions = "u+rx,g+x,o+x";
|
|
# };
|
|
}
|