<commit_before>{ lib, buildFHSUserEnv, config }:

buildFHSUserEnv {
  name = "steam";

  targetPkgs = pkgs:
    [ pkgs.steam-original
      pkgs.corefonts
      pkgs.curl
      pkgs.dbus
      pkgs.dpkg
      pkgs.mono
      pkgs.python
      pkgs.gnome2.zenity
      pkgs.xdg_utils
      pkgs.xorg.xrandr
      pkgs.which
    ]
    ++ lib.optional (config.steam.java or false) pkgs.jdk
    ++ lib.optional (config.steam.primus or false) pkgs.primus
    ;

  multiPkgs = pkgs:
    [ pkgs.cairo
      pkgs.glib
      pkgs.gtk
      pkgs.gdk_pixbuf
      pkgs.pango

      pkgs.freetype
      pkgs.xorg.libICE
      pkgs.xorg.libSM
      pkgs.xorg.libX11
      pkgs.xorg.libXau
      pkgs.xorg.libxcb
      pkgs.xorg.libXcursor
      pkgs.xorg.libXdamage
      pkgs.xorg.libXdmcp
      pkgs.xorg.libXext
      pkgs.xorg.libXfixes
      pkgs.xorg.libXi
      pkgs.xorg.libXinerama
      pkgs.xorg.libXrandr
      pkgs.xorg.libXrender
      pkgs.xorg.libXScrnSaver
      pkgs.xorg.libXtst
      pkgs.xorg.libXxf86vm

      pkgs.ffmpeg
      pkgs.libpng12
      pkgs.mesa
      pkgs.SDL
      pkgs.SDL2
      pkgs.libdrm

      pkgs.libgcrypt
      pkgs.zlib

      pkgs.alsaLib
      pkgs.libvorbis
      pkgs.openal
      pkgs.libpulseaudio

      pkgs.gst_all_1.gst-plugins-ugly # "Audiosurf 2" needs this
    ];

  extraBuildCommandsMulti = ''
    cd usr/lib
    ln -sf ../lib64/steam steam
  '';

  profile = ''
    # Ugly workaround for https://github.com/ValveSoftware/steam-for-linux/issues/3504
    export LD_PRELOAD=/lib32/libpulse.so:/lib64/libpulse.so:/lib32/libasound.so:/lib64/libasound.so:$LD_PRELOAD
    # Another one for https://github.com/ValveSoftware/steam-for-linux/issues/3801
    export LD_PRELOAD=/lib32/libstdc++.so:/lib64/libstdc++.so:$LD_PRELOAD<commit_msg>steam: use native libraries, disable steam-runtime<commit_after>{ lib, buildFHSUserEnv, config }:

buildFHSUserEnv {
  name = "steam";

  targetPkgs = pkgs:
    [ pkgs.steam-original
      # Errors in output without those
      pkgs.pciutils
      pkgs.python2
      # Games' dependencies
      pkgs.xlibs.xrandr
      pkgs.which
    ]
    ++ lib.optional (config.steam.java or false) pkgs.jdk
    ++ lib.optional (config.steam.primus or false) pkgs.primus
    ;

  multiPkgs = pkgs:
    [ # These are required by steam with proper errors
      pkgs.xlibs.libXcomposite
      pkgs.xlibs.libXtst
      pkgs.xlibs.libXrandr
      pkgs.xlibs.libXext
      pkgs.xlibs.libX11
      pkgs.xlibs.libXfixes

      pkgs.glib
      pkgs.gtk2
      pkgs.bzip2
      pkgs.zlib
      pkgs.libpulseaudio
      pkgs.gdk_pixbuf

      # Without these it silently fails
      pkgs.xlibs.libXinerama
      pkgs.xlibs.libXdamage
      pkgs.xlibs.libXcursor
      pkgs.xlibs.libXrender
      pkgs.xlibs.libXScrnSaver
      pkgs.xlibs.libXi
      pkgs.xlibs.libSM
      pkgs.xlibs.libICE
      pkgs.gnome2.GConf
      pkgs.freetype
      pkgs.openalSoft
      pkgs.curl
      pkgs.nspr
      pkgs.nss
      pkgs.fontconfig
      pkgs.cairo
      pkgs.pango
      pkgs.alsaLib
      pkgs.expat
      pkgs.dbus
      pkgs.cups
      pkgs.libcap
      pkgs.SDL2
      pkgs.libusb1
      pkgs.dbus_glib
      pkgs.libav
      pkgs.atk
      # Only libraries are needed from those two
      pkgs.udev182
      pkgs.networkmanager098

      # Verified games requirements
      pkgs.xlibs.libXmu
      pkgs.xlibs.libxcb
      pkgs.xlibs.libpciaccess
      pkgs.mesa_glu
      pkgs.libuuid
      pkgs.libogg
      pkgs.libvorbis
      pkgs.SDL
      pkgs.SDL2_image
      pkgs.glew110
      pkgs.openssl
      pkgs.libidn

      # Other things from runtime
      pkgs.xlibs.libXinerama
      pkgs.flac
      pkgs.freeglut
      pkgs.libjpeg
      pkgs.libpng12
      pkgs.libsamplerate
      pkgs.libmikmod
      pkgs.libtheora
      pkgs.pixman
      pkgs.speex
      pkgs.SDL_image
      pkgs.SDL_ttf
      pkgs.SDL_mixer
      pkgs.SDL2_net
      pkgs.SDL2_ttf
      pkgs.SDL2_mixer
      pkgs.gstreamer
      pkgs.gst_plugins_base

      # Not formally in runtime but needed by some games
      pkgs.gst_all_1.gstreamer
      pkgs.gst_all_1.gst-plugins-ugly
    ];

  extraBuildCommandsMulti = ''
    cd usr/lib
    ln -sf ../lib64/steam steam

    # FIXME: maybe we should replace this with proper libcurl-gnutls
    ln -s libcurl.so.4 libcurl-gnutls.so.4
  '';

  profile = ''
    ${if config.steam.enableRuntime or false then "" else "export STEAM_RUNTIME=0"}
{'fraction_non_alphanumeric': 0.08357870894677237, 'fraction_numerical': 0.01404303510758777, 'mean_word_length': 1.9837837837837837, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5084397', 'n_tokens_mistral': 1949, 'n_tokens_neox': 1710, 'n_words': 267}