summary refs log tree commit diff
path: root/nixos/modules/services/hardware
diff options
context:
space:
mode:
authorLinus Heckemann <git@sphalerite.org>2016-12-17 10:36:56 +0000
committerLinus Heckemann <git@sphalerite.org>2016-12-17 10:38:12 +0000
commit689d8349aab7fb0d44ad459f27cd231b7b784ce1 (patch)
tree228708563eb479c7e36e6c29a3da4220f4418206 /nixos/modules/services/hardware
parent67c92e92062a0b86ff0b7a9c9f35176d9afec054 (diff)
downloadnixlib-689d8349aab7fb0d44ad459f27cd231b7b784ce1.tar
nixlib-689d8349aab7fb0d44ad459f27cd231b7b784ce1.tar.gz
nixlib-689d8349aab7fb0d44ad459f27cd231b7b784ce1.tar.bz2
nixlib-689d8349aab7fb0d44ad459f27cd231b7b784ce1.tar.lz
nixlib-689d8349aab7fb0d44ad459f27cd231b7b784ce1.tar.xz
nixlib-689d8349aab7fb0d44ad459f27cd231b7b784ce1.tar.zst
nixlib-689d8349aab7fb0d44ad459f27cd231b7b784ce1.zip
amd-hybrid-graphics: fix race condition
Diffstat (limited to 'nixos/modules/services/hardware')
-rw-r--r--nixos/modules/services/hardware/amd-hybrid-graphics.nix15
1 files changed, 11 insertions, 4 deletions
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"];
+    };
   };
 
 }