steam: decimate
This commit is contained in:
parent
70cb669a2f
commit
a3ccb7f562
@ -31,7 +31,7 @@ in {
|
|||||||
default = pkgs.steam;
|
default = pkgs.steam;
|
||||||
defaultText = lib.literalExpression "pkgs.steam";
|
defaultText = lib.literalExpression "pkgs.steam";
|
||||||
example = lib.literalExpression ''
|
example = lib.literalExpression ''
|
||||||
pkgs.steam-small.override {
|
pkgs.steam.override {
|
||||||
extraEnv = {
|
extraEnv = {
|
||||||
MANGOHUD = true;
|
MANGOHUD = true;
|
||||||
OBS_VKCAPTURE = true;
|
OBS_VKCAPTURE = true;
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
, targetPkgs ? pkgs: []
|
, targetPkgs ? pkgs: []
|
||||||
, multiPkgs ? pkgs: []
|
, multiPkgs ? pkgs: []
|
||||||
, multiArch ? false # Whether to include 32bit packages
|
, multiArch ? false # Whether to include 32bit packages
|
||||||
|
, includeClosures ? false # Whether to include closures of all packages
|
||||||
, nativeBuildInputs ? []
|
, nativeBuildInputs ? []
|
||||||
, extraBuildCommands ? ""
|
, extraBuildCommands ? ""
|
||||||
, extraBuildCommandsMulti ? ""
|
, extraBuildCommandsMulti ? ""
|
||||||
@ -171,6 +172,7 @@ let
|
|||||||
${pkgs.glib.dev}/bin/glib-compile-schemas $out/share/glib-2.0/schemas
|
${pkgs.glib.dev}/bin/glib-compile-schemas $out/share/glib-2.0/schemas
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
|
inherit includeClosures;
|
||||||
};
|
};
|
||||||
|
|
||||||
staticUsrProfileMulti = buildEnv {
|
staticUsrProfileMulti = buildEnv {
|
||||||
@ -178,6 +180,7 @@ let
|
|||||||
paths = baseMultiPaths ++ multiPaths;
|
paths = baseMultiPaths ++ multiPaths;
|
||||||
extraOutputsToInstall = [ "out" "lib" ] ++ extraOutputsToInstall;
|
extraOutputsToInstall = [ "out" "lib" ] ++ extraOutputsToInstall;
|
||||||
ignoreCollisions = true;
|
ignoreCollisions = true;
|
||||||
|
inherit includeClosures;
|
||||||
};
|
};
|
||||||
|
|
||||||
# setup library paths only for the targeted architecture
|
# setup library paths only for the targeted architecture
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{ makeScopeWithSplicing', generateSplicesForMkScope
|
{ makeScopeWithSplicing', generateSplicesForMkScope
|
||||||
, stdenv, buildFHSEnv, pkgsi686Linux, mesa-demos
|
, stdenv
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
@ -10,21 +10,8 @@ let
|
|||||||
else if stdenv.hostPlatform.system == "i686-linux" then "i386"
|
else if stdenv.hostPlatform.system == "i686-linux" then "i386"
|
||||||
else throw "Unsupported platform: ${stdenv.hostPlatform.system}";
|
else throw "Unsupported platform: ${stdenv.hostPlatform.system}";
|
||||||
|
|
||||||
steam-runtime = callPackage ./runtime.nix { };
|
|
||||||
steam-runtime-wrapped = callPackage ./runtime-wrapped.nix { };
|
|
||||||
steam = callPackage ./steam.nix { };
|
steam = callPackage ./steam.nix { };
|
||||||
steam-fhsenv = callPackage ./fhsenv.nix {
|
steam-fhsenv = callPackage ./fhsenv.nix {};
|
||||||
mesa-demos-i686 =
|
|
||||||
if self.steamArch == "amd64"
|
|
||||||
then pkgsi686Linux.mesa-demos
|
|
||||||
else mesa-demos;
|
|
||||||
steam-runtime-wrapped-i686 =
|
|
||||||
if self.steamArch == "amd64"
|
|
||||||
then pkgsi686Linux.steamPackages.steam-runtime-wrapped
|
|
||||||
else null;
|
|
||||||
inherit buildFHSEnv;
|
|
||||||
};
|
|
||||||
steam-fhsenv-small = steam-fhsenv.override { withGameSpecificLibraries = false; };
|
|
||||||
|
|
||||||
# This has to exist so Hydra tries to build all of Steam's dependencies.
|
# This has to exist so Hydra tries to build all of Steam's dependencies.
|
||||||
# FIXME: Maybe we should expose it as something more generic?
|
# FIXME: Maybe we should expose it as something more generic?
|
||||||
|
@ -1,340 +1,127 @@
|
|||||||
{ lib, stdenv, writeShellScript, buildFHSEnv, steam, mesa-demos-i686
|
{
|
||||||
, steam-runtime-wrapped, steam-runtime-wrapped-i686 ? null
|
lib,
|
||||||
, extraPkgs ? pkgs: [ ] # extra packages to add to targetPkgs
|
steam,
|
||||||
, extraLibraries ? pkgs: [ ] # extra packages to add to multiPkgs
|
buildFHSEnv,
|
||||||
, extraProfile ? "" # string to append to profile
|
writeShellScript,
|
||||||
, extraPreBwrapCmds ? "" # extra commands to run before calling bubblewrap (real default is at usage site)
|
extraPkgs ? pkgs: [ ], # extra packages to add to targetPkgs
|
||||||
, extraBwrapArgs ? [ ] # extra arguments to pass to bubblewrap (real default is at usage site)
|
extraLibraries ? pkgs: [ ], # extra packages to add to multiPkgs
|
||||||
, extraArgs ? "" # arguments to always pass to steam
|
extraProfile ? "", # string to append to profile
|
||||||
, extraEnv ? { } # Environment variables to pass to Steam
|
extraPreBwrapCmds ? "", # extra commands to run before calling bubblewrap
|
||||||
|
extraBwrapArgs ? [ ], # extra arguments to pass to bubblewrap (real default is at usage site)
|
||||||
# steamwebhelper deletes unrelated electron programs' singleton cookies from /tmp on startup:
|
extraArgs ? "", # arguments to always pass to steam
|
||||||
# https://github.com/ValveSoftware/steam-for-linux/issues/9121
|
extraEnv ? { }, # Environment variables to pass to Steam
|
||||||
, privateTmp ? true # Whether to separate steam's /tmp from the host system
|
}:
|
||||||
|
|
||||||
, withGameSpecificLibraries ? true # include game specific libraries
|
|
||||||
}@args:
|
|
||||||
|
|
||||||
let
|
let
|
||||||
commonTargetPkgs = pkgs: with pkgs; [
|
steamEnv = { name, runScript, passthru ? {}, meta ? {} }:
|
||||||
# Needed for operating system detection until
|
buildFHSEnv {
|
||||||
# https://github.com/ValveSoftware/steam-for-linux/issues/5909 is resolved
|
inherit name runScript passthru meta;
|
||||||
lsb-release
|
|
||||||
# Errors in output without those
|
|
||||||
pciutils
|
|
||||||
# run.sh wants ldconfig
|
|
||||||
glibc_multi.bin
|
|
||||||
# Games' dependencies
|
|
||||||
xorg.xrandr
|
|
||||||
which
|
|
||||||
# Needed by gdialog, including in the steam-runtime
|
|
||||||
perl
|
|
||||||
# Open URLs
|
|
||||||
xdg-utils
|
|
||||||
iana-etc
|
|
||||||
# Steam Play / Proton
|
|
||||||
python3
|
|
||||||
# Steam VR
|
|
||||||
procps
|
|
||||||
usbutils
|
|
||||||
|
|
||||||
# It tries to execute xdg-user-dir and spams the log with command not founds
|
multiArch = true;
|
||||||
xdg-user-dirs
|
includeClosures = true;
|
||||||
|
|
||||||
# electron based launchers need newer versions of these libraries than what runtime provides
|
# https://gitlab.steamos.cloud/steamrt/steam-runtime-tools/-/blob/main/docs/distro-assumptions.md#command-line-tools
|
||||||
mesa
|
targetPkgs = pkgs: with pkgs; [
|
||||||
sqlite
|
steam
|
||||||
] ++ extraPkgs pkgs;
|
|
||||||
|
|
||||||
ldPath = lib.optionals stdenv.hostPlatform.is64bit [ "/lib64" ]
|
bash
|
||||||
++ [ "/lib32" ]
|
coreutils
|
||||||
++ map (x: "/steamrt/${steam-runtime-wrapped.arch}/" + x) steam-runtime-wrapped.libs
|
file
|
||||||
++ lib.optionals (steam-runtime-wrapped-i686 != null) (map (x: "/steamrt/${steam-runtime-wrapped-i686.arch}/" + x) steam-runtime-wrapped-i686.libs);
|
lsb-release # not documented, called from Big Picture
|
||||||
|
pciutils # not documented, complains about lspci on startup
|
||||||
|
glibc_multi.bin
|
||||||
|
xz
|
||||||
|
zenity
|
||||||
|
|
||||||
# Zachtronics and a few other studios expect STEAM_LD_LIBRARY_PATH to be present
|
# Steam expects it to be /sbin specifically
|
||||||
exportLDPath = ''
|
(pkgs.runCommand "sbin-ldconfig" {} ''
|
||||||
export LD_LIBRARY_PATH=${lib.concatStringsSep ":" ldPath}''${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH
|
mkdir -p $out/sbin
|
||||||
export STEAM_LD_LIBRARY_PATH="$STEAM_LD_LIBRARY_PATH''${STEAM_LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH"
|
ln -s /bin/ldconfig $out/sbin/ldconfig
|
||||||
'';
|
'')
|
||||||
|
|
||||||
# bootstrap.tar.xz has 444 permissions, which means that simple deletes fail
|
# crashes on startup if it can't find libX11 locale files
|
||||||
# and steam will not be able to start
|
(pkgs.runCommand "xorg-locale" {} ''
|
||||||
fixBootstrap = ''
|
mkdir -p $out
|
||||||
if [ -r $HOME/.steam/steam/bootstrap.tar.xz ]; then
|
ln -s ${xorg.libX11}/share $out/share
|
||||||
chmod +w $HOME/.steam/steam/bootstrap.tar.xz
|
'')
|
||||||
fi
|
] ++ extraPkgs pkgs;
|
||||||
'';
|
|
||||||
|
|
||||||
envScript = ''
|
# https://gitlab.steamos.cloud/steamrt/steam-runtime-tools/-/blob/main/docs/distro-assumptions.md#shared-libraries
|
||||||
# prevents various error messages
|
multiPkgs = pkgs: with pkgs; [
|
||||||
unset GIO_EXTRA_MODULES
|
glibc
|
||||||
|
libxcrypt
|
||||||
|
libGL
|
||||||
|
|
||||||
# This is needed for IME (e.g. iBus, fcitx5) to function correctly on non-CJK locales
|
libdrm
|
||||||
# https://github.com/ValveSoftware/steam-for-linux/issues/781#issuecomment-2004757379
|
mesa # for libgbm
|
||||||
GTK_IM_MODULE='xim'
|
udev
|
||||||
'' + lib.toShellVars extraEnv;
|
libudev0-shim
|
||||||
|
libva
|
||||||
|
vulkan-loader
|
||||||
|
|
||||||
in buildFHSEnv rec {
|
networkmanager # not documented, used for network status things in Big Picture
|
||||||
|
# FIXME: figure out how to only build libnm?
|
||||||
|
libcap # not documented, required by srt-bwrap
|
||||||
|
] ++ extraLibraries pkgs;
|
||||||
|
|
||||||
|
extraInstallCommands = lib.optionalString (steam != null) ''
|
||||||
|
ln -s ${steam}/share $out/share
|
||||||
|
'';
|
||||||
|
|
||||||
|
profile = ''
|
||||||
|
# prevents log spam from SteamRT GTK trying to load host GIO modules
|
||||||
|
unset GIO_EXTRA_MODULES
|
||||||
|
|
||||||
|
# udev event notifications don't work reliably inside containers.
|
||||||
|
# SDL2 already tries to automatically detect flatpak and pressure-vessel
|
||||||
|
# and falls back to inotify-based discovery [1]. We make SDL2 do the
|
||||||
|
# same by telling it explicitly.
|
||||||
|
#
|
||||||
|
# [1] <https://github.com/libsdl-org/SDL/commit/8e2746cfb6e1f1a1da5088241a1440fd2535e321>
|
||||||
|
export SDL_JOYSTICK_DISABLE_UDEV=1
|
||||||
|
|
||||||
|
# This is needed for IME (e.g. iBus, fcitx5) to function correctly on non-CJK locales
|
||||||
|
# https://github.com/ValveSoftware/steam-for-linux/issues/781#issuecomment-2004757379
|
||||||
|
export GTK_IM_MODULE='xim'
|
||||||
|
|
||||||
|
# See https://gitlab.steamos.cloud/steamrt/steam-runtime-tools/-/blob/main/docs/distro-assumptions.md#graphics-driver
|
||||||
|
export LIBGL_DRIVERS_PATH=/run/opengl-driver/lib/dri:/run/opengl-driver-32/lib/dri
|
||||||
|
export __EGL_VENDOR_LIBRARY_DIRS=/run/opengl-driver/share/glvnd/egl_vendor.d:/run/opengl-driver-32/share/glvnd/egl_vendor.d
|
||||||
|
export LIBVA_DRIVERS_PATH=/run/opengl-driver/lib/dri:/run/opengl-driver-32/lib/dri
|
||||||
|
export VDPAU_DRIVER_PATH=/run/opengl-driver/lib/vdpau:/run/opengl-driver-32/lib/vdpau
|
||||||
|
|
||||||
|
set -a
|
||||||
|
${lib.toShellVars extraEnv}
|
||||||
|
set +a
|
||||||
|
|
||||||
|
${extraProfile}
|
||||||
|
'';
|
||||||
|
|
||||||
|
privateTmp = true;
|
||||||
|
|
||||||
|
inherit extraPreBwrapCmds;
|
||||||
|
|
||||||
|
extraBwrapArgs = [
|
||||||
|
# Steam will dump crash reports here, make those more accessible
|
||||||
|
"--bind-try /tmp/dumps /tmp/dumps"
|
||||||
|
] ++ extraBwrapArgs;
|
||||||
|
};
|
||||||
|
in steamEnv {
|
||||||
name = "steam";
|
name = "steam";
|
||||||
|
|
||||||
# Steam still needs 32bit and various native games do too
|
runScript = writeShellScript "steam-wrapped" ''
|
||||||
multiArch = true;
|
|
||||||
|
|
||||||
targetPkgs = pkgs: with pkgs; [
|
|
||||||
steam
|
|
||||||
# License agreement
|
|
||||||
zenity
|
|
||||||
] ++ commonTargetPkgs pkgs;
|
|
||||||
|
|
||||||
multiPkgs = pkgs: with pkgs; [
|
|
||||||
# These are required by steam with proper errors
|
|
||||||
xorg.libXcomposite
|
|
||||||
xorg.libXtst
|
|
||||||
xorg.libXrandr
|
|
||||||
xorg.libXext
|
|
||||||
xorg.libX11
|
|
||||||
xorg.libXfixes
|
|
||||||
libGL
|
|
||||||
libva
|
|
||||||
pipewire
|
|
||||||
|
|
||||||
# steamwebhelper
|
|
||||||
harfbuzz
|
|
||||||
libthai
|
|
||||||
pango
|
|
||||||
|
|
||||||
lsof # friends options won't display "Launch Game" without it
|
|
||||||
file # called by steam's setup.sh
|
|
||||||
|
|
||||||
# dependencies for mesa drivers, needed inside pressure-vessel
|
|
||||||
mesa.llvmPackages.llvm.lib
|
|
||||||
vulkan-loader
|
|
||||||
expat
|
|
||||||
wayland
|
|
||||||
xorg.libxcb
|
|
||||||
xorg.libXdamage
|
|
||||||
xorg.libxshmfence
|
|
||||||
xorg.libXxf86vm
|
|
||||||
elfutils
|
|
||||||
|
|
||||||
# Without these it silently fails
|
|
||||||
xorg.libXinerama
|
|
||||||
xorg.libXcursor
|
|
||||||
xorg.libXrender
|
|
||||||
xorg.libXScrnSaver
|
|
||||||
xorg.libXi
|
|
||||||
xorg.libSM
|
|
||||||
xorg.libICE
|
|
||||||
curl
|
|
||||||
nspr
|
|
||||||
nss
|
|
||||||
cups
|
|
||||||
libcap
|
|
||||||
SDL2
|
|
||||||
libusb1
|
|
||||||
dbus-glib
|
|
||||||
gsettings-desktop-schemas
|
|
||||||
ffmpeg
|
|
||||||
libudev0-shim
|
|
||||||
|
|
||||||
# Verified games requirements
|
|
||||||
fontconfig
|
|
||||||
freetype
|
|
||||||
xorg.libXt
|
|
||||||
xorg.libXmu
|
|
||||||
libogg
|
|
||||||
libvorbis
|
|
||||||
SDL
|
|
||||||
SDL2_image
|
|
||||||
glew110
|
|
||||||
libdrm
|
|
||||||
libidn
|
|
||||||
tbb
|
|
||||||
zlib
|
|
||||||
|
|
||||||
# SteamVR
|
|
||||||
udev
|
|
||||||
dbus
|
|
||||||
|
|
||||||
# Other things from runtime
|
|
||||||
glib
|
|
||||||
gtk2
|
|
||||||
bzip2
|
|
||||||
flac
|
|
||||||
libglut
|
|
||||||
libjpeg
|
|
||||||
libpng
|
|
||||||
libpng12
|
|
||||||
libsamplerate
|
|
||||||
libmikmod
|
|
||||||
libtheora
|
|
||||||
libtiff
|
|
||||||
pixman
|
|
||||||
speex
|
|
||||||
SDL_image
|
|
||||||
SDL_ttf
|
|
||||||
SDL_mixer
|
|
||||||
SDL2_ttf
|
|
||||||
SDL2_mixer
|
|
||||||
libappindicator-gtk2
|
|
||||||
libdbusmenu-gtk2
|
|
||||||
libindicator-gtk2
|
|
||||||
libcaca
|
|
||||||
libcanberra
|
|
||||||
libgcrypt
|
|
||||||
libunwind
|
|
||||||
libvpx
|
|
||||||
librsvg
|
|
||||||
xorg.libXft
|
|
||||||
libvdpau
|
|
||||||
|
|
||||||
# required by coreutils stuff to run correctly
|
|
||||||
# Steam ends up with LD_LIBRARY_PATH=/usr/lib:<bunch of runtime stuff>:<etc>
|
|
||||||
# which overrides DT_RUNPATH in our binaries, so it tries to dynload the
|
|
||||||
# very old versions of stuff from the runtime.
|
|
||||||
# FIXME: how do we even fix this correctly
|
|
||||||
attr
|
|
||||||
# same thing, but for Xwayland (usually via gamescope), already in the closure
|
|
||||||
libkrb5
|
|
||||||
keyutils
|
|
||||||
] ++ lib.optionals withGameSpecificLibraries [
|
|
||||||
# Not formally in runtime but needed by some games
|
|
||||||
at-spi2-atk
|
|
||||||
at-spi2-core # CrossCode
|
|
||||||
gst_all_1.gstreamer
|
|
||||||
gst_all_1.gst-plugins-ugly
|
|
||||||
gst_all_1.gst-plugins-base
|
|
||||||
json-glib # paradox launcher (Stellaris)
|
|
||||||
libxkbcommon # paradox launcher
|
|
||||||
libvorbis # Dead Cells
|
|
||||||
libxcrypt # Alien Isolation, XCOM 2, Company of Heroes 2
|
|
||||||
mono
|
|
||||||
ncurses # Crusader Kings III
|
|
||||||
openssl
|
|
||||||
xorg.xkeyboardconfig
|
|
||||||
xorg.libpciaccess
|
|
||||||
xorg.libXScrnSaver # Dead Cells
|
|
||||||
icu # dotnet runtime, e.g. Stardew Valley
|
|
||||||
|
|
||||||
# screeps dependencies
|
|
||||||
gtk3
|
|
||||||
zlib
|
|
||||||
atk
|
|
||||||
cairo
|
|
||||||
gdk-pixbuf
|
|
||||||
|
|
||||||
# Prison Architect
|
|
||||||
libGLU
|
|
||||||
libuuid
|
|
||||||
libbsd
|
|
||||||
alsa-lib
|
|
||||||
|
|
||||||
# Loop Hero
|
|
||||||
# FIXME: Also requires openssl_1_1, which is EOL. Either find an alternative solution, or remove these dependencies (if not needed by other games)
|
|
||||||
libidn2
|
|
||||||
libpsl
|
|
||||||
nghttp2.lib
|
|
||||||
rtmpdump
|
|
||||||
]
|
|
||||||
# This needs to come from pkgs as the passed-in steam-runtime-wrapped may not be the same architecture
|
|
||||||
++ pkgs.steamPackages.steam-runtime-wrapped.overridePkgs
|
|
||||||
++ extraLibraries pkgs;
|
|
||||||
|
|
||||||
extraInstallCommands = lib.optionalString (steam != null) ''
|
|
||||||
mkdir -p $out/share/applications
|
|
||||||
ln -s ${steam}/share/icons $out/share
|
|
||||||
ln -s ${steam}/share/pixmaps $out/share
|
|
||||||
ln -s ${steam}/share/applications/steam.desktop $out/share/applications/steam.desktop
|
|
||||||
'';
|
|
||||||
|
|
||||||
profile = ''
|
|
||||||
# Workaround for issue #44254 (Steam cannot connect to friends network)
|
|
||||||
# https://github.com/NixOS/nixpkgs/issues/44254
|
|
||||||
if [ -z ''${TZ+x} ]; then
|
|
||||||
new_TZ="$(readlink -f /etc/localtime | grep -P -o '(?<=/zoneinfo/).*$')"
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
export TZ="$new_TZ"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# udev event notifications don't work reliably inside containers.
|
|
||||||
# SDL2 already tries to automatically detect flatpak and pressure-vessel
|
|
||||||
# and falls back to inotify-based discovery [1]. We make SDL2 do the
|
|
||||||
# same by telling it explicitly.
|
|
||||||
#
|
|
||||||
# [1] <https://github.com/libsdl-org/SDL/commit/8e2746cfb6e1f1a1da5088241a1440fd2535e321>
|
|
||||||
export SDL_JOYSTICK_DISABLE_UDEV=1
|
|
||||||
'' + extraProfile;
|
|
||||||
|
|
||||||
runScript = writeShellScript "steam-wrapper.sh" ''
|
|
||||||
if [ -f /etc/NIXOS ]; then # Check only useful on NixOS
|
|
||||||
${mesa-demos-i686}/bin/glxinfo 2>&1 | grep -q Error
|
|
||||||
# If there was an error running glxinfo, we know something is wrong with the configuration
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
cat <<EOF > /dev/stderr
|
|
||||||
**
|
|
||||||
WARNING: Steam is not set up. Add the following options to /etc/nixos/configuration.nix
|
|
||||||
and then run \`sudo nixos-rebuild switch\`:
|
|
||||||
{
|
|
||||||
hardware.graphics.enable32Bit = true;
|
|
||||||
hardware.pulseaudio.support32Bit = true;
|
|
||||||
}
|
|
||||||
**
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
${exportLDPath}
|
|
||||||
${fixBootstrap}
|
|
||||||
|
|
||||||
set -o allexport # Export the following env vars
|
|
||||||
${envScript}
|
|
||||||
exec steam ${extraArgs} "$@"
|
exec steam ${extraArgs} "$@"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
inherit privateTmp;
|
passthru.run = steamEnv {
|
||||||
|
|
||||||
extraPreBwrapCmds = ''
|
|
||||||
install -m 1777 -d /tmp/dumps
|
|
||||||
'' + args.extraPreBwrapCmds or "";
|
|
||||||
|
|
||||||
extraBwrapArgs = [
|
|
||||||
"--bind-try /etc/NIXOS /etc/NIXOS" # required 32bit driver check in runScript
|
|
||||||
"--bind-try /tmp/dumps /tmp/dumps"
|
|
||||||
] ++ args.extraBwrapArgs or [];
|
|
||||||
|
|
||||||
meta =
|
|
||||||
if steam != null
|
|
||||||
then
|
|
||||||
steam.meta // lib.optionalAttrs (!withGameSpecificLibraries) {
|
|
||||||
description = steam.meta.description + " (without game specific libraries)";
|
|
||||||
mainProgram = "steam";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
description = "Steam dependencies (dummy package, do not use)";
|
|
||||||
};
|
|
||||||
|
|
||||||
passthru.steamargs = args;
|
|
||||||
passthru.run = buildFHSEnv {
|
|
||||||
name = "steam-run";
|
name = "steam-run";
|
||||||
|
|
||||||
targetPkgs = commonTargetPkgs;
|
|
||||||
inherit multiArch multiPkgs profile extraInstallCommands extraBwrapArgs;
|
|
||||||
|
|
||||||
runScript = writeShellScript "steam-run" ''
|
runScript = writeShellScript "steam-run" ''
|
||||||
run="$1"
|
if [ $# -eq 0 ]; then
|
||||||
if [ "$run" = "" ]; then
|
|
||||||
echo "Usage: steam-run command-to-run args..." >&2
|
echo "Usage: steam-run command-to-run args..." >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
shift
|
|
||||||
|
|
||||||
${exportLDPath}
|
exec "$@"
|
||||||
${fixBootstrap}
|
|
||||||
|
|
||||||
set -o allexport # Export the following env vars
|
|
||||||
${envScript}
|
|
||||||
exec -- "$run" "$@"
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = (steam.meta or {}) // {
|
meta = (steam.meta or {}) // {
|
||||||
@ -347,4 +134,8 @@ in buildFHSEnv rec {
|
|||||||
license = lib.licenses.mit;
|
license = lib.licenses.mit;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
meta = (steam.meta or {}) // {
|
||||||
|
description = "Steam dependencies (dummy package, do not use)";
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,45 +0,0 @@
|
|||||||
{ stdenv, steamArch, lib, perl, pkgs, steam-runtime
|
|
||||||
, runtimeOnly ? false
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
overridePkgs = lib.optionals (!runtimeOnly) (with pkgs; [
|
|
||||||
libgpg-error
|
|
||||||
libpulseaudio
|
|
||||||
alsa-lib
|
|
||||||
openalSoft
|
|
||||||
libva1
|
|
||||||
libvdpau
|
|
||||||
vulkan-loader
|
|
||||||
gcc.cc.lib
|
|
||||||
nss
|
|
||||||
nspr
|
|
||||||
xorg.libxcb
|
|
||||||
]);
|
|
||||||
|
|
||||||
allPkgs = overridePkgs ++ [ steam-runtime ];
|
|
||||||
|
|
||||||
gnuArch = if steamArch == "amd64" then "x86_64-linux-gnu"
|
|
||||||
else if steamArch == "i386" then "i386-linux-gnu"
|
|
||||||
else throw "Unsupported architecture";
|
|
||||||
|
|
||||||
libs = [ "lib/${gnuArch}" "lib" "usr/lib/${gnuArch}" "usr/lib" ];
|
|
||||||
bins = [ "bin" "usr/bin" ];
|
|
||||||
|
|
||||||
in stdenv.mkDerivation {
|
|
||||||
name = "steam-runtime-wrapped";
|
|
||||||
|
|
||||||
nativeBuildInputs = [ perl ];
|
|
||||||
|
|
||||||
builder = ./build-wrapped.sh;
|
|
||||||
|
|
||||||
passthru = {
|
|
||||||
inherit gnuArch libs bins overridePkgs;
|
|
||||||
arch = steamArch;
|
|
||||||
};
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
buildDir "${toString libs}" "${toString (map lib.getLib allPkgs)}"
|
|
||||||
buildDir "${toString bins}" "${toString (map lib.getBin allPkgs)}"
|
|
||||||
'';
|
|
||||||
}
|
|
@ -1,37 +0,0 @@
|
|||||||
{ lib, stdenv, fetchurl
|
|
||||||
|
|
||||||
# for update script
|
|
||||||
, writeShellScript, curl, nix-update
|
|
||||||
}:
|
|
||||||
|
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
|
||||||
|
|
||||||
pname = "steam-runtime";
|
|
||||||
# from https://repo.steampowered.com/steamrt-images-scout/snapshots/latest-steam-client-general-availability/VERSION.txt
|
|
||||||
version = "0.20240415.84615";
|
|
||||||
|
|
||||||
src = fetchurl {
|
|
||||||
url = "https://repo.steampowered.com/steamrt-images-scout/snapshots/${finalAttrs.version}/steam-runtime.tar.xz";
|
|
||||||
hash = "sha256-C8foNnIVA+O4YwuCrIf9N6Lr/GlApPVgZsYgi+3OZUE=";
|
|
||||||
name = "scout-runtime-${finalAttrs.version}.tar.gz";
|
|
||||||
};
|
|
||||||
|
|
||||||
buildCommand = ''
|
|
||||||
mkdir -p $out
|
|
||||||
tar -C $out --strip=1 -x -f $src
|
|
||||||
'';
|
|
||||||
|
|
||||||
passthru = {
|
|
||||||
updateScript = writeShellScript "update.sh" ''
|
|
||||||
version=$(${curl}/bin/curl https://repo.steampowered.com/steamrt-images-scout/snapshots/latest-steam-client-general-availability/VERSION.txt)
|
|
||||||
${lib.getExe nix-update} --version "$version" steamPackages.steam-runtime
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
meta = {
|
|
||||||
description = "Official runtime used by Steam";
|
|
||||||
homepage = "https://github.com/ValveSoftware/steam-runtime";
|
|
||||||
license = lib.licenses.unfreeRedistributable; # Includes NVIDIA CG toolkit
|
|
||||||
maintainers = with lib.maintainers; [ hrdinka abbradar ];
|
|
||||||
};
|
|
||||||
})
|
|
@ -1520,6 +1520,7 @@ mapAliases {
|
|||||||
ssm-agent = amazon-ssm-agent; # Added 2023-10-17
|
ssm-agent = amazon-ssm-agent; # Added 2023-10-17
|
||||||
starboard-octant-plugin = throw "starboard-octant-plugin has been dropped due to needing octant which is archived"; # Added 2023-09-29
|
starboard-octant-plugin = throw "starboard-octant-plugin has been dropped due to needing octant which is archived"; # Added 2023-09-29
|
||||||
starspace = throw "starspace has been removed from nixpkgs, as it was broken"; # Added 2024-07-15
|
starspace = throw "starspace has been removed from nixpkgs, as it was broken"; # Added 2024-07-15
|
||||||
|
steam-small = steam; # Added 2024-09-12
|
||||||
steam-run-native = steam-run; # added 2022-02-21
|
steam-run-native = steam-run; # added 2022-02-21
|
||||||
StormLib = stormlib; # Added 2024-01-21
|
StormLib = stormlib; # Added 2024-01-21
|
||||||
sumneko-lua-language-server = lua-language-server; # Added 2023-02-07
|
sumneko-lua-language-server = lua-language-server; # Added 2023-02-07
|
||||||
|
@ -35332,7 +35332,6 @@ with pkgs;
|
|||||||
steamPackages = recurseIntoAttrs (callPackage ../games/steam { });
|
steamPackages = recurseIntoAttrs (callPackage ../games/steam { });
|
||||||
|
|
||||||
steam = steamPackages.steam-fhsenv;
|
steam = steamPackages.steam-fhsenv;
|
||||||
steam-small = steamPackages.steam-fhsenv-small;
|
|
||||||
|
|
||||||
steam-run = steam.run;
|
steam-run = steam.run;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user