Files
nixos/modules/gaming.nix
Melvin Ragusa a10802547b final version
2026-02-02 14:44:31 +01:00

77 lines
2.2 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" ];
}