{ config, pkgs, lib, inputs, system, ... }:

let cfg = config.sydnix.steam;
in {
  options.sydnix.steam = {
    enable = lib.mkEnableOption "Steam";
  };

  config = lib.mkIf cfg.enable {
    programs.steam = {
      enable = true;
      remotePlay.openFirewall = true;
      dedicatedServer.openFirewall = true;
      gamescopeSession.enable = true;
      extraPackages = with pkgs; [
        mono gtk3 gtk3-x11 libgdiplus zlib
      ];
    };

    programs.gamemode = {
      enable = true;
      enableRenice = true;
    };

    # This fixes the "glXChooseVisual failed" bug, see:
    # https://github.com/NixOS/nixpkgs/issues/47932.
    hardware.graphics = {
      enable = true;
      enable32Bit = true;
    };
  };
}
