{ pkgs, config, lib, ... }: let cfg = config.grimmShared; in { config = with cfg; lib.mkIf (enable && gaming) { programs.steam = { enable = true; gamescopeSession.enable = true; gamescopeSession.env = { DRI_PRIME = "1"; }; }; programs.gamemode = { enable = true; settings = { general = { inhibit_screensaver = 0; renice = 10; }; custom = { start = "${lib.getExe pkgs.libnotify} 'GameMode started'"; end = "${lib.getExe pkgs.libnotify} 'GameMode ended'"; }; }; }; services.udev.packages = [ pkgs.wooting-udev-rules ]; environment.sessionVariables = { GAMEMODERUNEXEC = "env DRI_PRIME=1"; }; environment.systemPackages = with pkgs; [ heroic prismlauncher wootility (pkgs.symlinkJoin { name = "osu"; paths = [ (pkgs.writeShellScriptBin "osu!" ''exec gamemoderun ${lib.getExe pkgs.osu-lazer-bin} '') pkgs.osu-lazer-bin ]; }) ]; }; options.grimmShared.gaming = with lib; mkOption { type = types.bool; default = false; description = "enables steam, heroic, prism and gamemoded"; }; }