lifetracker/modules/apps/steam/default.nix
2025-01-27 01:12:32 -08:00

115 lines
2.9 KiB
Nix

{
lib,
config,
username,
pkgs,
inputs,
...
}:
let
cfg = config.steam;
in
{
options.steam = {
enable = lib.mkEnableOption "Enable Steam in NixOS";
enableNative = lib.mkOption {
type = lib.types.bool;
default = true;
};
enableSteamBeta = lib.mkOption {
type = lib.types.bool;
default = true;
};
# https://reddit.com/r/linux_gaming/comments/16e1l4h/slow_steam_downloads_try_this/
fixDownloadSpeed = lib.mkOption {
type = lib.types.bool;
default = true;
};
};
config = lib.mkIf cfg.enable {
hardware.steam-hardware.enable = true;
programs.java.enable = true;
programs.steam = {
enable = cfg.enableNative;
dedicatedServer.openFirewall = true;
# extraCompatPackages = with pkgs; [
# # luxtorpeda
# # inputs.nix-proton-cachyos.packages.${system}.proton-cachyos
# ];
gamescopeSession.enable = true;
localNetworkGameTransfers.openFirewall = true;
package = pkgs.steam.override {
extraBwrapArgs = [ "--unsetenv TZ" ]; # https://github.com/NixOS/nixpkgs/issues/338266#issuecomment-2419568331
extraPkgs = (
pkgs: with pkgs; [
gamemode
]
);
extraLibraries =
pkgs: with pkgs; [
alsa-lib
libGL
SDL
SDL_image
SDL_mixer
SDL_ttf
SDL2
SDL2_image
SDL2_mixer
SDL2_ttf
xorg.libX11
xorg.libxcb
xorg.libXcursor
xorg.libXi
xorg.libXinerama
xorg.libXext
xorg.libXrandr
xorg.libXrender
xorg.libXScrnSaver
libpng
libpulseaudio
libvorbis
stdenv.cc.cc.lib
libkrb5
keyutils
];
};
protontricks.enable = true;
remotePlay.openFirewall = true;
};
home-manager.users.${username} =
{ pkgs, config, ... }:
{
home = {
file = {
steam-beta = {
enable = cfg.enableSteamBeta;
text = "publicbeta";
target = "${config.xdg.dataHome}/Steam/package/beta";
};
steam-slow-fix = {
enable = cfg.fixDownloadSpeed;
text = ''
@nClientDownloadEnableHTTP2PlatformLinux 0
@fDownloadRateImprovementToAddAnotherConnection 1.0
'';
target = "${config.xdg.dataHome}/Steam/steam_dev.cfg";
};
};
packages = with pkgs; [
# SteamTinkerLaunch tools
steamtinkerlaunch
gawk
procps
unixtools.xxd
xdotool
xorg.xprop
xorg.xrandr
xorg.xwininfo
yad
];
};
};
};
}