{ config, lib, pkgs, ...}: let cfg = config.nixfiles.hardware.opengl; 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; driSupport = lib.mkDefault true; driSupport32Bit = lib.mkDefault config.hardware.opengl.driSupport; }; }; }