Can't launch steam games

I installed steam, but I cant run any games. In GUI game just fails to launch (crashes while launching). I managed to install Terraria which has a native version and got it to run with steam-run ./Terraria. But not every game I own has an executable bash file to launch from. I have no clue what to do, I have tried so many things so far:

  1. Replacing steam libraries
  2. Running with steam-run + proton from terminal
  3. I tried steam-run %command% in launch options

Nothing seems to work. I thought that nix is gonna be easier as long as I controll the config and not harder.

PS
I tried reinstalling my games. Didn’t fix it
PPS
Flatpak version behaves the same

[2026-02-04 23:54:09] Game process removed: AppID 105600 “/home/jrawa/.local/share/Steam/ubuntu12_32/steam-launch-wrapper – /home/jrawa/.local/share/Steam/ubuntu12_32/reaper SteamLaunch AppId=105600 – ‘/mnt/toshiba/home/janraw/steamapps/steamapps/common/SteamLinuxRuntime_soldier’/_v2-entry-point --verb=waitforexitandrun – ‘/mnt/toshiba/home/janraw/steamapps/steamapps/common/SteamLinuxRuntime’/scout-on-soldier-entry-point-v2 – ‘/home/jrawa/.local/share/Steam/steamapps/common/Terraria/Terraria’”, ProcID 63501
[2026-02-04 23:54:27] GameAction [AppID 105600, ActionID 6] : LaunchApp changed task to CheckShaderDepotManifest with “”
[2026-02-04 23:54:27] GameAction [AppID 105600, ActionID 6] : LaunchApp changed task to RunningInstallScript with “”
[2026-02-04 23:54:27] GameAction [AppID 105600, ActionID 6] : LaunchApp changed task to SynchronizingCloud with “”
[2026-02-04 23:54:28] GameAction [AppID 105600, ActionID 6] : LaunchApp changed task to SynchronizingStats with “”
[2026-02-04 23:54:28] GameAction [AppID 105600, ActionID 6] : LaunchApp changed task to ShowInterstitials with “”
[2026-02-04 23:54:28] GameAction [AppID 105600, ActionID 6] : LaunchApp waiting for user response to ShowInterstitials “”
[2026-02-04 23:54:28] GameAction [AppID 105600, ActionID 6] : LaunchApp continues with user response “ShowInterstitials”
[2026-02-04 23:54:28] GameAction [AppID 105600, ActionID 6] : LaunchApp changed task to SiteLicenseSeatCheckout with “”
[2026-02-04 23:54:28] GameAction [AppID 105600, ActionID 6] : LaunchApp changed task to DelayLaunch with “”
[2026-02-04 23:54:28] GameAction [AppID 105600, ActionID 6] : LaunchApp changed task to CreatingProcess with “”
[2026-02-04 23:54:28] GameAction [AppID 105600, ActionID 6] : LaunchApp waiting for user response to CreatingProcess “”
[2026-02-04 23:54:28] GameAction [AppID 105600, ActionID 6] : LaunchApp continues with user response “CreatingProcess”
[2026-02-04 23:54:28] /bin/sh\0-c\0/home/jrawa/.local/share/Steam/ubuntu12_32/steam-launch-wrapper – /home/jrawa/.local/share/Steam/ubuntu12_32/reaper SteamLaunch AppId=105600 – ‘/mnt/toshiba/home/janraw/steamapps/steamapps/common/SteamLinuxRuntime_soldier’/_v2-entry-point --verb=waitforexitandrun – ‘/mnt/toshiba/home/janraw/steamapps/steamapps/common/SteamLinuxRuntime’/scout-on-soldier-entry-point-v2 – ‘/home/jrawa/.local/share/Steam/steamapps/common/Terraria/Terraria’\0
[2026-02-04 23:54:28] Game process added : AppID 105600 “/home/jrawa/.local/share/Steam/ubuntu12_32/steam-launch-wrapper – /home/jrawa/.local/share/Steam/ubuntu12_32/reaper SteamLaunch AppId=105600 – ‘/mnt/toshiba/home/janraw/steamapps/steamapps/common/SteamLinuxRuntime_soldier’/_v2-entry-point --verb=waitforexitandrun – ‘/mnt/toshiba/home/janraw/steamapps/steamapps/common/SteamLinuxRuntime’/scout-on-soldier-entry-point-v2 – ‘/home/jrawa/.local/share/Steam/steamapps/common/Terraria/Terraria’”, ProcID 63505, IP 0.0.0.0:0
[2026-02-04 23:54:28] GameAction [AppID 105600, ActionID 6] : LaunchApp changed task to WaitingGameWindow with “”
[2026-02-04 23:54:28] GameAction [AppID 105600, ActionID 6] : LaunchApp changed task to Completed with “”
[2026-02-04 23:54:28] Game process removed: AppID 105600 “/home/jrawa/.local/share/Steam/ubuntu12_32/steam-launch-wrapper – /home/jrawa/.local/share/Steam/ubuntu12_32/reaper SteamLaunch AppId=105600 – ‘/mnt/toshiba/home/janraw/steamapps/steamapps/common/SteamLinuxRuntime_soldier’/_v2-entry-point --verb=waitforexitandrun – ‘/mnt/toshiba/home/janraw/steamapps/steamapps/common/SteamLinuxRuntime’/scout-on-soldier-entry-point-v2 – ‘/home/jrawa/.local/share/Steam/steamapps/common/Terraria/Terraria’”, ProcID 63505

Could you share your configuration.nix? The main benefit of NixOS is that you can show us exactly what you did, unlike other distros where we’d be playing a guessing game once things go wrong (and well, things do also go wrong on other distros).

Use a code block (with 3 backticks) so your code is readable. Would be nice if you could update your logs to use a code block as well, they’re completely impossible to read as-is.

Thanks for help. Here you go. I also use home-manager (with nothing steam related) and my system is installed on btrfs partition with subvolumes (which should matter, but im all out of ideas)

{ config, pkgs, ... }:
let
  unstable = import <nixos-unstable> {
    config = { allowUnfree = true; };
  };
in
{
  imports =
    [
      ./hardware-configuration.nix
      <home-manager/nixos>
    ];

  ######################
  # Boot
  ######################
  boot.loader.systemd-boot.enable = true;
  boot.loader.efi.canTouchEfiVariables = true;

  ######################
  # Filesystem
  ######################
  services.btrfs.autoScrub = {
    enable = true;
    interval = "monthly";
    fileSystems = [ "/" ];
  };

  ######################
  # Networking
  ######################
  networking.hostName = "nixos";
  networking.networkmanager.enable = true;

  
  ######################
  # Time & Locale
  ######################
  time.timeZone = "Europe/Warsaw";

  i18n = {
    defaultLocale = "en_US.UTF-8";

    supportedLocales = [
      "en_US.UTF-8/UTF-8"
      "pl_PL.UTF-8/UTF-8"
    ];

    extraLocaleSettings = {
      LC_MESSAGES = "en_US.UTF-8";

      LC_ADDRESS = "pl_PL.UTF-8";
      LC_IDENTIFICATION = "pl_PL.UTF-8";
      LC_MEASUREMENT = "pl_PL.UTF-8";
      LC_MONETARY = "pl_PL.UTF-8";
      LC_NAME = "pl_PL.UTF-8";
      LC_NUMERIC = "pl_PL.UTF-8";
      LC_PAPER = "pl_PL.UTF-8";
      LC_TELEPHONE = "pl_PL.UTF-8";
      LC_TIME = "pl_PL.UTF-8";
    };
  };

  ######################
  # Display / Desktop
  ######################
  services.displayManager.sddm = {
    enable = true;
    autoNumlock = true;
    theme = "catppuccin-mocha-mauve";
  };

  services.desktopManager.plasma6.enable = true;

#   services.xserver = {
#     enable = true;
#     xkb.layout = "us";
#   };

  ######################
  # Audio
  ######################
  security.rtkit.enable = true;

  services.pipewire = {
    enable = true;
    alsa.enable = true;
    alsa.support32Bit = true;
    pulse.enable = true;
  };

  ######################
  # Printing
  ######################
  services.printing.enable = true;

  ######################
  # Users
  ######################
  users.users.jrawa = {
    isNormalUser = true;
    description = "jrawa";
    extraGroups = [ "networkmanager" "wheel" "gamemode" ];
    shell = pkgs.fish;
    packages = with pkgs; [
      # Browsers
      brave
      mullvad-browser
      librewolf
      kdePackages.plasma-browser-integration

      # Games
      unstable.vintagestory
      protonup-ng

      # Other
      kdePackages.kleopatra
      kdePackages.kate
      kdePackages.ktorrent
      vlc
    ];
  };

  ######################
  # Programs
  ######################
  programs = {

    ######################
    # Gaming
    ######################
    gamemode.enable = true;
    steam = {
      enable = true;
      package = pkgs.steam.override {
        extraPkgs = pkgs': with pkgs'; [
          mesa                # OpenGL/Vulkan support
          vulkan-tools        # includes vkcube, vulkaninfo
          xorg.libXcursor
          xorg.libXi
          xorg.libXinerama
          xorg.libXScrnSaver
          libpng
          libpulseaudio
          libvorbis
          stdenv.cc.cc.lib # Provides libstdc++.so.6
          libkrb5
          keyutils
          # Add other libraries as needed
        ];
      };
    };

    ######################
    # KDE integration
    ######################
    kdeconnect.enable = true;

    ######################
    # Fish
    ######################
    fish.enable = true;

    ######################
    # Neovim
    ######################
    neovim.enable = true;
  };

  ######################
  # Gaming
  ######################
  hardware = {
    amdgpu.opencl.enable = true;

    graphics = {
      enable = true;
      enable32Bit = true;
    };
  };



  ######################
  # Home Manager (integrated)
  ######################
  home-manager.useGlobalPkgs = true;
  home-manager.useUserPackages = true;

  home-manager.users.jrawa =
    import /home/jrawa/.config/home-manager/home.nix;

  ######################
  # System packages
  ######################
  environment.systemPackages = with pkgs; [
    ######################
    # Utils
    ######################
    git
    wget
    curl

    ######################
    # Vulkan
    ######################
    vulkan-tools
    mesa

    steam-run

    ######################
    # Fish
    ######################
    fishPlugins.done
    fishPlugins.fzf-fish
    fishPlugins.forgit
    fishPlugins.hydro
    fzf
    fishPlugins.grc
    grc

    ######################
    # Themes
    ######################
    catppuccin-kde
    catppuccin-sddm
  ];

  ######################
  # Nixpkgs config
  ######################
  nixpkgs.config = {
    allowUnfree = true;
    firefox = {
      enableBrowserpass = true;
      enableGnomeExtensions = true;
    };
  };

  system.stateVersion = "25.11";
}

I would suggest removing all of that first of all.

For now, don’t use the flatpak. I’d suggest deleting all your steam folders and fully reinstalling everything before continuing (i.e. rm -rf ~/.local/share/Steam ~/.steam ~/.steampath ~/.steampid, after shutting down steam, and then just starting steam again).

To be very clear about your test case, could you tell me also specifically which game you’re running, which compatibility tool (if any) you’re configuring, and what launch options you’re setting?

Ideally I’d recommend leaving everything on the defaults at first; i.e., no launch settings, and the default proton compatibility layer that steam auto-downloads. Steam should also be providing a runtime, so using steam-run muddies the waters; don’t use steam-run within steam, it’s redundant.

Once you’ve confirmed that doesn’t work, we can try the nixpkgs proton-ge version, and see from there.

1 Like

Why don’t you leave `programs.steam.package` at it’s default value?

Dropped steam ovverides and deleted the local file you specified. Unfortunately still doesn’t work, but I run steam in dev mode with console and apparently the game cant load libraries:

exec ./steamwebhelper -nocrashdialog -lang=en_US -cachedir=/home/jrawa/.local/share/Steam/config/htmlcache -steampid=23734 -buildid=1769025840 -steamid=0 -logdir=/home/jrawa/.local/share/Steam/logs -uimode=7 -startcount=0 -steamuniverse=Public -realm=Global -clientui=/home/jrawa/.local/share/Steam/clientui -steampath=/home/jrawa/.local/share/Steam/ubuntu12_32/steam -launcher=0 -dev --valve-enable-site-isolation --enable-smooth-scrolling --password-store=basic --log-file=/home/jrawa/.local/share/Steam/logs/cef_log.txt --disable-quick-menu --disable-component-update --gaia-url=http://disabled.invalid --enable-features=PlatformHEVCDecoderSupport --disable-features=WinRetrieveSuggestionsOnlyOnDemand,SpareRendererForSitePerProcess,DcheckIsFatal,BlockPromptsIfIgnoredOften,ValveFFmpegAllowLowDelayHEVC
Desktop state changed: desktop: { pos:    0,   0 size: 2560,1440 } primary: { pos:    0,   0 size: 2560,1440 }
Caching cursor image for , size 40x40, serial 3, cache size = 0
chdir "/home/jrawa/.local/share/Steam/steamapps/common/Loop Hero"
ERROR: ld.so: object '/home/jrawa/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/jrawa/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/jrawa/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
ERROR: ld.so: object '/home/jrawa/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/jrawa/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
Game Recording - would start recording game 1282730, but recording for this game is disabled
Adding process 24395 for gameID 1282730
Adding process 24396 for gameID 1282730
Adding process 24397 for gameID 1282730
pressure-vessel-wrap[24396]: W: Unable to determine architecture of provider / ldconfig: Error reading "(null)" ELF header: invalid `Elf' handle
pressure-vessel-wrap[24396]: W: "run/opengl-driver/share/drirc.d" is unlikely to appear in "/run/host"
pressure-vessel-wrap[24396]: W: "run/opengl-driver-32/share/drirc.d" is unlikely to appear in "/run/host"
pid 24555 != 24551, skipping destruction (fork without exec?)
pid 24560 != 24551, skipping destruction (fork without exec?)
Adding process 24551 for gameID 1282730
./Loop_Hero: error while loading shared libraries: librtmp.so.1: cannot open shared object file: No such file or directory
reaping pid: 23735 -- steam
Game Recording - game stopped [gameid=1282730]
Removing process 24551 for gameID 1282730
Removing process 24397 for gameID 1282730
Removing process 24396 for gameID 1282730
Removing process 24395 for gameID 1282730

That’s technically a game bug; they’re using libraries not present in the steam runtime. If they want to do this they should statically link them. You can nonetheless add that specific library to the steam environment:

programs.steam = {
  enable = true;
  extraPackages = [
    pkgs.rtmpdump
  ];
};

Note that this doesn’t change the .package.

It’s also not a generic fix; I can’t give you instructions for all bugs in random games with poorly thought-out native Linux binaries. Do you have issues with any other games?

1 Like

Yeah, maybe not the best example I could have choosen for testing. The most important thing is that it stopped silen crashing and now I can actually troubleshoot.
PS
I tried running Terraria and it launched fine :smiley:
I will mark your previous answer as solution. Thank u so much!!!

This is still odd. I play Terraria from Steam all the time and have never faced this issue.

Do you still have some leftover launch option for the game? And I’m assuming you haven’t accidentally used Proton to launch the game.

Nah, Terraria is clearly working fine, the broken test case was:

2 Likes