diff --git a/system/hardware/opengl.nix b/system/hardware/opengl.nix
index b48a19b..49b5fa3 100644
--- a/system/hardware/opengl.nix
+++ b/system/hardware/opengl.nix
@@ -5,6 +5,20 @@ in
 {
   options.nixfiles.hardware.opengl.enable = lib.mkEnableOption "OpenGL configuration";
   config = lib.mkIf cfg.enable {
+    environment.systemPackages = let
+      offload-enabled = config.hardware.nvidia.prime.offload.enableOffloadCmd;
+      glxinfo = lib.getExe' pkgs.glxinfo "glxinfo";
+      auto-offload = pkgs.writeShellScriptBin "auto-offload" (
+      (if offload-enabled then ''
+        if nvidia-offload ${glxinfo} > /dev/null 2>&1 ; then
+          exec nvidia-offload "$@"
+        fi
+      '' else "")
+      +
+      ''
+        exec "$@"
+      '');
+    in [ auto-offload ];
     # Enable OpenGL
     hardware.opengl = {
       enable = true;