{ config, pkgs, lib, ... }:
{
	programs.steam.enable = true;
  programs.steam.remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
  programs.steam.dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server

  # TODO: gamemode?

  nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
    "steam"
    "steam-original"
    "steam-runtime"
  ];

  /** /
  #programs.java.enable = true;
  nixpkgs.config.packageOverrides = pkgs: {
    steam = pkgs.steam.override {
      #withPrimus = config.hardware.nvidia.modesetting.enable;
      #withJava = config.programs.java.enable;

			#nativeOnly = true;
      #newStdcpp = true;
			#extraProfile = "export SDL_VIDEODRIVER=x11";
      extraPkgs = pkgs: with pkgs; [
				config.hardware.opengl.package
				nettools # some scripts expect 'hostname'
        glxinfo # for debugging

        pipewire

        libgdiplus
        libpng
        libpulseaudio
        libvorbis
        libbsd
        gnutls

        zlib
        mono
        cairo
        pango
        cabextract

        lsb-release
        fontconfig
        gdk-pixbuf
				gtk3
				gtk3-x11

        xorg.libXcursor
        xorg.libXi
        xorg.libXinerama
        xorg.libXScrnSaver
        xorg.libxcb

	      stdenv.cc.cc.lib
	      #libkrb5
	      #keyutils
	    ];
    };
  };
  /**/

	#services.joycond.enable = true;

	hardware.opengl.enable = true;
	hardware.opengl.driSupport = true;
	hardware.opengl.driSupport32Bit = true;
	hardware.opengl.extraPackages32 = with pkgs.pkgsi686Linux; [ libva ];

  environment.systemPackages = with pkgs; [
    steam-tui
    steamcmd
		protontricks
  ];

}