Files
dotfiles/config/modules/power-management/intel-gpu-management.nix
2026-03-16 23:09:47 +00:00

47 lines
1.3 KiB
Nix

{ den, modules, ... }:
{
# Intel Mobile Gpu Management
modules.intel-mgm = {
nixos =
{ pkgs, ... }:
let
batt-gpu = pkgs.writeShellScript "batt-igpu" ''
${pkgs.intel-gpu-tools}/bin/intel_gpu_frequency -e
echo "800" > /sys/class/drm/card1/gt_boost_freq_mhz
'';
ac-gpu = pkgs.writeShellScript "ac-igpu" ''
${pkgs.intel-gpu-tools}/bin/intel_gpu_frequency -d
echo "2350" > /sys/class/drm/card1/gt_boost_freq_mhz
'';
in
{
systemd.services.gpu-limit-on-batt = {
enable = true;
description = "Gpu Limit";
before = [ "battery.target" ];
serviceConfig = {
Type = "oneshot";
ExecStart = "${batt-gpu}";
RemainAfterExit = true;
};
wantedBy = [ "battery.target" ];
partOf = [ "battery.target" ];
};
systemd.services.gpu-limit-on-ac = {
enable = true;
description = "Gpu Limit";
before = [ "ac.target" ];
serviceConfig = {
Type = "oneshot";
ExecStart = "${ac-gpu}";
RemainAfterExit = true;
};
wantedBy = [ "ac.target" ];
partOf = [ "ac.target" ];
};
};
};
}