Files
nixos-config/modules/nixos/steam/default.nix

82 lines
2.4 KiB
Nix

{
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
# as well as the libraries available from your flake's inputs.
lib,
# An instance of `pkgs` with your overlays and packages applied is also available.
pkgs,
# You also have access to your flake's inputs.
inputs,
# Additional metadata is provided by Snowfall Lib.
# The namespace used for your flake, defaulting to "internal" if not set.
namespace,
# The system architecture for this host (eg. `x86_64-linux`).
system,
# The Snowfall Lib target for this system (eg. `x86_64-iso`).
target,
# A normalized name for the system target (eg. `iso`).
format,
# A boolean to determine whether this system is a virtual target using nixos-generators.
virtual,
# An attribute map of your defined hosts.
systems,
# All other arguments come from the system system.
config
, ...
}:{
config = {
# programs.gamescope = {
# enable = true;
# capSysNice = true;
# };
environment.systemPackages = with pkgs; [
protonup-ng # Tool to install and manage Proton-GE
lutris
vkd3d
dxvk
corefonts
protontricks
mangohud
vkbasalt
gamescope
];
hardware.uinput.enable = true;
users.users.andreas.extraGroups = [ "input" ];
programs.gamescope.enable = true;
programs.steam.gamescopeSession = {
enable = true;
args = [
"-w" "1920"
"-h" "1080"
"-r" "172"
"-e" # Enable steam integration
"--steam"
"--prefer-vk-device 8086:e20b" # lspci -nn | grep VGA
];
env = {
WLR_RENDERER = "vulkan";
DXVK_HDR = "0 ";
ENABLE_GAMESCOPE_WSI = "0";
WINE_FULLSCREEN_FSR = "1";
SDL_VIDEODRIVER = "wayland,x11"; # Games allegedly prefer X11
};
};
programs.steam = {
enable = true;
package = pkgs.steam.override {
extraPkgs = pkgs: with pkgs; [
gamemode
];
extraEnv = {
# SDL_VIDEODRIVER = "wayland,x11";
SDL_VIDEODRIVER = "x11";
};
};
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers
};
};
}