{
  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.graphics = {
      enable = true;
      enable32Bit = true;
    };
  };
}