Change:
This weekend I tried these games, all deadlocked in the menu or character selection. Nyheim Oh...Sir! The Insult Simulator Reigns Unturned (free to play) You don't have to be worried to waste money in case you want to test a game. I have had no problem when requesting refunds, just go to I have played these games and found no issues with them: Dota 2 Counter-Strike TIS-100 World of goo Faster Than Light You Must Build a Boat Risk of Rain System: (NixOS: , Ubuntu/Fedora: , ...) 03pre99759. (Gorilla) Nix version: (run ) nix-env (Nix) 1.11.6 Nixpkgs version: (run ) "17.03pre99759." Integrated graphics card, 00:02.0 VGA compatible controller: Intel Corporation HD Graphics 530 (rev 06)
This is normal with steam on nixos unfortunately. There are many steam games that don't work for various reasons, unfortunately many linux steam game developers only make sure their games run on ubuntu and don't really care about relying only on dependencies from the steam runtime. Some games don't play nice with certain graphics cards or drivers as well. If you want to get a particular game working (I can list 150 games that work under nixos with nvidia card and drivers at least) then you'll need to do some work, or at least post any relevant logs from the game/steam so people can actually help you solve the problem. That is assuming that they own the game. :)
There's a slowly-growing list of extra dependencies in the Steam package. If you can figure out what's missing, you can add it there; e.g. as in
I don't have enough motivation to actually buy games for the sole purpose of fixing them and then refunding, sorry. Nevertheless, I'm happy to help if you can post logs and/or s -- those two are the most helpful for determining FHS-related problems.

Discussion:
{ runCommand, lib, writeText, writeScriptBin, stdenv, ruby } : <del> { env, runScript ? "bash", extraBindMounts ? [], extraInstallCommands ? "", importMeta ? {} } : </del> <ins> { env, runScript ? "bash", extraBindMounts ? [], extraInstallCommands ? "", meta ? {}, passthru ? {} } : </ins> let name = env.pname;

''; in runCommand name { <del> meta = importMeta; passthru.env = runCommand "${name}-shell-env" { </del> <ins> inherit meta; passthru = passthru // { env = runCommand "${name}-shell-env" { </ins> shellHook = '' export CHROOTENV_EXTRA_BINDS="${lib.concatStringsSep ":" extraBindMounts}:$CHROOTENV_EXTRA_BINDS" exec ${chroot-user}/bin/chroot-user ${env} bash -l ${init "bash"} "$(pwd)"

echo >&2 "" exit 1 ''; <ins> }; </ins> } '' mkdir -p $out/bin cat <<EOF >$out/bin/${name}

<del> { lib, buildFHSUserEnv, steam </del> <ins> { stdenv, lib, writeScript, buildFHSUserEnv, steam , steam-runtime, steam-runtime-i686 ? null </ins> , withJava ? false , withPrimus ? false , nativeOnly ? false

, newStdcpp ? false }: <del> buildFHSUserEnv { name = "steam"; </del> <ins> let self = { name = "steam"; </ins> <del> targetPkgs = pkgs: with pkgs; [ </del> <ins> targetPkgs = pkgs: with pkgs; [ </ins> steamPackages.steam steamPackages.steam-fonts # License agreement

which # Needed by gdialog, including in the steam-runtime perl <del> ] ++ lib.optional withJava jdk ++ lib.optional withPrimus (primus.override { stdenv = overrideInStdenv stdenv [ useOldCXXAbi ]; stdenv_i686 = overrideInStdenv pkgsi686Linux.stdenv [ useOldCXXAbi ]; }) ; </del> <ins> ] ++ lib.optional withJava jdk ++ lib.optional withPrimus (primus.override { stdenv = overrideInStdenv stdenv [ useOldCXXAbi ]; stdenv_i686 = overrideInStdenv pkgsi686Linux.stdenv [ useOldCXXAbi ]; }); </ins> <del> multiPkgs = pkgs: with pkgs; [ </del> <ins> multiPkgs = pkgs: with pkgs; [ </ins> # These are required by steam with proper errors xlibs.libXcomposite xlibs.libXtst

}) ]; <del> extraBuildCommands = '' mkdir -p steamrt </del> <ins> extraBuildCommands = '' mkdir -p steamrt ln -s ../lib/steam-runtime steamrt/${steam-runtime.arch} ${lib.optionalString (steam-runtime-i686 != null) '' ln -s ../lib32/steam-runtime steamrt/${steam-runtime-i686.arch} ''} ''; </ins> <del> ln -s ../lib64/steam-runtime steamrt/amd64 ln -s ../lib32/steam-runtime steamrt/i386 ''; </del> <ins> extraInstallCommands = '' mkdir -p $out/share/applications ln -s ${steam}/share/icons $out/share ln -s ${steam}/share/pixmaps $out/share sed "s,/usr/bin/steam,$out/bin/steam,g" ${steam}/share/applications/steam.desktop > $out/share/applications/steam.desktop ''; </ins> <del> extraInstallCommands = '' mkdir -p $out/share/applications ln -s ${steam}/share/icons $out/share ln -s ${steam}/share/pixmaps $out/share sed "s,/usr/bin/steam,$out/bin/steam,g" ${steam}/share/applications/steam.desktop > $out/share/applications/steam.desktop ''; </del> <ins> profile = '' export STEAM_RUNTIME=/steamrt ''; </ins> <del> profile = '' export STEAM_RUNTIME=/steamrt ''; </del> <ins> runScript = "steam"; </ins> <del> runScript = "steam"; } </del> <ins> passthru.run = buildFHSUserEnv (self // { name = "steam-run"; runScript = let ldPath = map (x: "/steamrt/${steam-runtime.arch}/" + x) steam-runtime.libs ++ lib.optionals (steam-runtime-i686 != null) (map (x: "/steamrt/${steam-runtime-i686.arch}/" + x) steam-runtime-i686.libs); in writeScript "steam-run" '' #!${stdenv.shell} run="$1" if [ "$run" = "" ]; then echo "Usage: steam-run command-to-run args..." >&2 exit 1 fi shift export LD_LIBRARY_PATH=${lib.concatStringsSep ":" ldPath}:$LD_LIBRARY_PATH exec "$run" "$@" ''; passthru = {}; }); }; in buildFHSUserEnv self </ins>

steam-runtime = callPackage ./runtime.nix { }; steam-runtime-wrapped = callPackage ./runtime-wrapped.nix { }; steam = callPackage ./steam.nix { }; <del> steam-chrootenv = callPackage ./chrootenv.nix { }; </del> steam-fonts = callPackage ./fonts.nix { }; <ins> steam-chrootenv = callPackage ./chrootenv.nix { steam-runtime-i686 = if pkgs.system == "x86_64-linux" then pkgs.pkgsi686Linux.steamPackages.steam-runtime else null; }; </ins> }; in self

}; buildFHSUserEnv = args: userFHSEnv { <del> env = buildFHSEnv (removeAttrs args [ "runScript" "extraBindMounts" "extraInstallCommands" "meta" ]); </del> <ins> env = buildFHSEnv (removeAttrs args [ "runScript" "extraBindMounts" "extraInstallCommands" "meta" "passthru" ]); </ins> runScript = args.runScript or "bash"; extraBindMounts = args.extraBindMounts or []; extraInstallCommands = args.extraInstallCommands or ""; <del> importMeta = args.meta or {}; </del> <ins> meta = args.meta or {}; passthru = args.passthru or {}; </ins> }; buildMaven = callPackage ../build-support/build-maven.nix {};

stockfish = callPackage ../games/stockfish { }; steamPackages = callPackage ../games/steam { }; steam = steamPackages.steam-chrootenv.override { # DEPRECATED withJava = config.steam.java or false; withPrimus = config.steam.primus or false; }; <ins> steam-run = steam.run; </ins> stepmania = callPackage ../games/stepmania { }; stuntrally = callPackage ../games/stuntrally { };