Merge pull request #21227 from lheckemann/vgaswitcheroo

amd-hybrid-graphics: fix race condition

Changed files
+11 -4
nixos
modules
services
+11 -4
nixos/modules/services/hardware/amd-hybrid-graphics.nix
···
path = [ pkgs.bash ];
description = "Disable AMD Card";
after = [ "sys-kernel-debug.mount" ];
-
requires = [ "sys-kernel-debug.mount" ];
-
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
-
ExecStart = "${pkgs.bash}/bin/sh -c 'echo -e \"IGD\\nOFF\" > /sys/kernel/debug/vgaswitcheroo/switch; exit 0'";
-
ExecStop = "${pkgs.bash}/bin/sh -c 'echo ON >/sys/kernel/debug/vgaswitcheroo/switch; exit 0'";
};
};
};
···
path = [ pkgs.bash ];
description = "Disable AMD Card";
after = [ "sys-kernel-debug.mount" ];
+
before = [ "systemd-vconsole-setup.service" "display-manager.service" ];
+
requires = [ "sys-kernel-debug.mount" "vgaswitcheroo.path" ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
+
ExecStart = "${pkgs.bash}/bin/sh -c 'echo -e \"IGD\\nOFF\" > /sys/kernel/debug/vgaswitcheroo/switch'";
+
ExecStop = "${pkgs.bash}/bin/sh -c 'echo ON >/sys/kernel/debug/vgaswitcheroo/switch'";
+
};
+
};
+
systemd.paths."vgaswitcheroo" = {
+
pathConfig = {
+
PathExists = "/sys/kernel/debug/vgaswitcheroo/switch";
+
Unit = "amd-hybrid-graphics.service";
};
+
wantedBy = ["multi-user.target"];
};
};