{ pkgs, ... }: { programs.gamemode.enable = true; users.users.djai.extraGroups = [ "gamemode" ]; # capSysNice would make glibc strip LD_PRELOAD from gamescope, breaking steam's overlay. # '--rt' works through the rtprio limit below instead (see the gamescope patch on tuxcomp). programs.gamescope = { enable = true; capSysNice = false; }; security.pam.loginLimits = [ { domain = "@users"; type = "-"; item = "rtprio"; value = "99"; } { domain = "@users"; type = "-"; item = "nice"; value = "-19"; } ]; # Wine 10+ uses the kernel's ntsync when /dev/ntsync exists; far cheaper # than esync/fsync under thread contention. boot.kernelModules = [ "ntsync" ]; users.users.djai.packages = with pkgs; [ desmume eden libretro.citra prismlauncher steam winetricks ]; services.flatpak.packages = [ "org.vinegarhq.Sober" ]; # TODO: switch to home manager # home-manager.users.djai = # { config, ... }: # { # home.packages = with pkgs; [ ]; # # xdg.desktopEntries.sims4 = { # name = "The Sims 4"; # exec = ''xdg-open "PATHTOEXECHERE"''; # icon = "${config.home.homeDirectory}/.icons/"; # categories = [ "Game" ]; # terminal = false; # }; # # # gamescope does fullscreen and scaling; setting content=game sets direct scnaout # # requires this in hyprland config: render.direct_scanout = 2; # wayland.windowManager.hyprland.settings.window_rule = [ # { # match.class = "gamescope"; # fullscreen = true; # content = "game"; # opaque = true; # immediate = true; # } # ]; # }; }