{ config, lib, pkgs, username, ... }: let cfg = config.os.srv.gaming; in { options.os.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; capSysNice = true; }; programs.gamemode = { enable = true; enableRenice = true; }; environment.systemPackages = with pkgs; [ openmw protonup-rs heroic clinfo (prismlauncher.override { additionalLibs = with pkgs; [ ocl-icd ]; jdks = with pkgs; [ javaPackages.compiler.temurin-bin.jdk-25 ]; }) ]; 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-bin ]; }; }) (lib.mkIf cfg.vr.enable { programs.alvr = { enable = true; openFirewall = true; }; }) ]; }