47 lines
1.3 KiB
Nix
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" ];
|
|
};
|
|
};
|
|
};
|
|
}
|