Files
nixos/modules/gaming.nix
Melvin Ragusa 2505298449 Normalize Nix module formatting and update flake.lock
Consistently format module argument blocks and convert aligned
package comments to inline comments. Trim trailing whitespace and
minor layout tweaks across modules. Bump opencode rev, narHash and
lastModified in flake.lock and remove the original dev ref.
2026-02-02 18:08:01 +01:00

82 lines
2.1 KiB
Nix

# modules/gaming.nix
# Full gaming setup: Steam, Gamemode, Lutris, Heroic, Wine, Proton
{
config,
pkgs,
lib,
...
}:
{
# Steam
programs.steam = {
enable = true;
remotePlay.openFirewall = true; # Steam Remote Play
dedicatedServer.openFirewall = true; # Dedicated servers
localNetworkGameTransfers.openFirewall = true; # LAN game transfers
# Extra compatibility packages for Proton
extraCompatPackages = with pkgs; [
proton-ge-bin # GloriousEggroll's Proton fork - better compatibility
];
};
# Gamemode - Optimize system for gaming
programs.gamemode = {
enable = true;
enableRenice = true; # Allow renice for priority boost
settings = {
general = {
renice = 10;
softrealtime = "auto";
inhibit_screensaver = 1;
};
gpu = {
apply_gpu_optimisations = "accept-responsibility";
gpu_device = 0;
amd_performance_level = "high";
};
};
};
# Steam hardware support (controllers, VR, etc.)
hardware.steam-hardware.enable = true;
# Gaming packages
environment.systemPackages = with pkgs; [
# Game launchers
lutris # Multi-platform game launcher
heroic # Epic Games & GOG launcher
# Proton management
protonup-qt # GUI to manage Proton-GE versions
# Wine for non-Steam games
wineWowPackages.stagingFull # Latest Wine with all features
winetricks # Wine helper scripts
protontricks # Proton helper scripts (like winetricks for Proton)
# Misc gaming utilities
gamemode # CLI tool to trigger gamemode
gamescope # Micro-compositor for games (fixes some issues)
];
# Gaming-related kernel tweaks
boot.kernel.sysctl = {
# Increase file watchers for large games
"fs.inotify.max_user_watches" = 524288;
# Better memory management for gaming
"vm.swappiness" = 10;
"vm.vfs_cache_pressure" = 50;
};
# Udev rules for game controllers
services.udev.packages = with pkgs; [
game-devices-udev-rules # Support for various game controllers
];
# Add user to gamemode group
users.users.pinj.extraGroups = [ "gamemode" ];
}