From 689d8349aab7fb0d44ad459f27cd231b7b784ce1 Mon Sep 17 00:00:00 2001 From: Linus Heckemann Date: Sat, 17 Dec 2016 10:36:56 +0000 Subject: amd-hybrid-graphics: fix race condition --- nixos/modules/services/hardware/amd-hybrid-graphics.nix | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'nixos/modules/services/hardware') diff --git a/nixos/modules/services/hardware/amd-hybrid-graphics.nix b/nixos/modules/services/hardware/amd-hybrid-graphics.nix index 087bd0e04098..b0f9ff56d1b2 100644 --- a/nixos/modules/services/hardware/amd-hybrid-graphics.nix +++ b/nixos/modules/services/hardware/amd-hybrid-graphics.nix @@ -25,15 +25,22 @@ path = [ pkgs.bash ]; description = "Disable AMD Card"; after = [ "sys-kernel-debug.mount" ]; - requires = [ "sys-kernel-debug.mount" ]; - wantedBy = [ "multi-user.target" ]; + 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; exit 0'"; - ExecStop = "${pkgs.bash}/bin/sh -c 'echo ON >/sys/kernel/debug/vgaswitcheroo/switch; exit 0'"; + 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"]; + }; }; } -- cgit 1.4.1