{ config, lib, pkgs, username, ... }: let cfg = config.sys.srv.gaming; in { options.sys.srv.gaming = { enable = lib.mkEnableOption "enables gaming utilities"; steam.enable = lib.mkEnableOption "enables steam utilities"; vr.enable = lib.mkEnableOption "enables vr support"; }; config = lib.mkMerge [ (lib.mkIf cfg.enable { programs.gamescope.enable = true; programs.gamemode = { enable = true; enableRenice = true; }; environment.systemPackages = with pkgs; [ heroic prismlauncher ]; home-manager.users.${username}.hm.soft.mangohud.enable = true; }) (lib.mkIf cfg.steam.enable { programs.steam = { enable = true; localNetworkGameTransfers.openFirewall = true; dedicatedServer.openFirewall = true; remotePlay.openFirewall = false; extest.enable = true; protontricks.enable = true; extraCompatPackages = with pkgs; [ proton-ge-custom ]; }; }) (lib.mkIf cfg.vr.enable { programs.alvr = { enable = true; openFirewall = true; }; }) ]; }