BeamMP Run On Linux Guide 2025

addendum to installing all the compilers and launching beamMP & beamNG on nixOS - an FHS non-compliant declarative distro… though SOME OF THIS can be applied to other distros as well.

  1. download vcpkg. do not try to install it as systemPackages (a package)!

cd Downloads
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg

  1. inside of the freshly cloned vcpkg folder there will be a shell.nix FHS shell environment. get inside. (NOT required for NON-NIXOS distros)

nix-shell shell.nix

  1. bootstrap and disable vcpkg telemetry (garbage)

./bootstrap-vcpkg.sh --disableMetrics

  1. your vcpkg is ready. now, download BeamMP-Launcher.

cd ..
git clone https://github.com/BeamMP/BeamMP-Launcher.git
cd BeamMP-Launcher

  1. proceed with compilation (may take a while).
    NOTE1: use the recently cloned toolchain path!
    NOTE2: you must STILL be inside an FHS! (NOT required for NON-NIXOS distros)
    NOTE3: this is assuming you have x86-64 architecture. change accordingly…

CHOOSE ONE:

cmake . -B bin -DCMAKE_TOOLCHAIN_FILE="~/Downloads/vcpkg/scripts/buildsystems/vcpkg.cmake" -DVCPKG_TARGET_TRIPLET=x64-linux

^ debug version (developer)

cmake -DCMAKE_BUILD_TYPE=Release . -B bin -DCMAKE_TOOLCHAIN_FILE="~/Downloads/vcpkg/scripts/buildsystems/vcpkg.cmake" -DVCPKG_TARGET_TRIPLET=x64-linux

^ normal version (performance)

AND!

cmake --build bin --parallel

  1. finally, strip the binary of debug symbols for better performance:

cd bin
strip BeamMP-Launcher

…you may leave the FHS now!

  1. (OPTIONAL) install ‘gamemode’ to MAXIMISE performance and launch beamMP via gamemoderun ./BeamMP-Launcher (beamNG will also receive optimisations as it is a part of the context that beamMP launches)

and you’re ready to play! you may place BeamMP-Launcher binary on your ~/Desktop for convenience.

next is technical information…

now, you may have noticed that nixOS does not allow to execute dynamically linked binaries because it is an FHS non-compliant distro. and even if you DO manage to somehow launch it, you will face this message (not exclusive to nixOS):

SSL certificate problem: certificate rejected
curl: (60) SSL certificate problem: certificate rejected

(also code 77!)

this is because $CURL_CA_BUNDLE, $SSL_CERT_FILE and NIX_SSL_CERT_FILE are not set to "/etc/pki/tls/certs/ca-bundle.crt", "/etc/ssl/certs/ca-bundle.crt" and "/etc/ssl/certs/ca-bundle.crt" respectively, which your system (and every other) comes with preinstalled. EDIT1: wrong and outdated. beamMP certs have been updated. if you are still having certificate issues, update (as in repeat all of the compilation steps again) the client and/or the system. EDIT2: as of 2025-06-05, they are no longer being rejected, but are of invalid_purpose

anyway, i have tried the next steps to launch beamMP natively on nixOS: nix-shell (as with any attempt at introducing FHS into nixOS, certificates do not work. see HERE and HERE), nix-ld (only managed to launch beamNG), nix-alien (same as nix-ld, but was useful to find, download & link missing packages & libraries), buildFHSUserEnv (beamMP screams at curl & openssl certificates being rejected with code 60 and 77)…

EDIT: perhaps these methods could work, but think about what you are doing: you are essentially creating a system within a system, with its own package list, which is not really an abstraction anymore, i think…

tl;dr

IN SHORT, only podman with distrobox worked reliably (and natively). ■■■■, honestly, why havent i tried this before?

once again, containers ARE NOT virtualisation. you DO NOT emulate a single ■■■■ with it. it is properly native (and isolated, therefore secure)! this is why you use linux (probably)… oh and by the way, there is no GUI, so you’re not downloading the whole ■■■■.

  1. configuration.nix:
  # ...

  virtualisation = {
    podman = {
      enable = true;
      dockerCompat = true;
    };
  };

  environment.systemPackages = [
    pkgs.distrobox
    # pkgs.podman-tui # optional
    # pkgs.distrobox-tui # optional 
  ];

  # ...
  1. download and install any distro of your choice (archlinux, fedora, debian, ubuntu, etc.):
distrobox create --name archlinux --init --image archlinux:latest

(also try :stable version!)

FEDORA because (as of right now, MAY 2025) arch has a ■■■■■■ up .crt bundle, which is good and bad simultaneously. literally just visit the main page of this forum, everyone is whining about beammp not working on arch linux lmao. but seriously, if you did not notice yet, BeamMP-Launcher is a dynamically linked binary, and it is using system-wide certificates, which may or may not be TOO FRESH, TOO NEW for beamMP to “handle”, so a bunch of ■■■■■■■ idiots here (jk) proposed to DOWNGRADE CA BUNDLES a little while ago, compromising your privacy and your security (they could connect to your smart TV!). what one should propose instead is to have beamMP being PACKAGED AND/OR COMPILED STATICALLY, preferrably with a maintainer, because, lets be real, this is pretty annoying, right?

REDACTED as outdated. TLS & SSL root certificates were UPDATED as of 2025-06-04… EDIT: invalid_purpose moment

  1. enter container:

distrobox enter archlinux

  1. cd to beamNG binary to download ANY and ALL missing libraries:

cd ~/.local/share/Steam/steamapps/common/BeamNG.drive/BinLinux

./BeamNG.drive.x64

(arch):

sudo pacman -S fontconfig nss at-spi2-atk cups libxcomposite libxdamage libxrandr libxkbcommon pango alsa-lib

(fedora):

sudo yum install libatomic fontconfig nss at-spi2-atk cups libXcomposite libXdamage libXrandr alsa-lib


(package names may vary). NOTE: this is a bare minimum for beamNG. you MAY NOTICE font issues, such as this.

  1. ONCE beamNG launches and performs well, try starting up beamMP:

./path/to/BeamMP-Launcher

when it launches, it will probably open beamNG in a black screen. that is how podman do on wayland. it cant see the context between these two applications. the solution is to log into an X11 session (i used leftwm btw). EDIT1: do not enable window swallowing for your terminal (i.e. on hyprland). IF POSSIBLE, play beamNG/beamMP in a wayland environment. it handles memory allocation better than X11, which has constant memory leaks and loss of frames! EDIT2: nevermind, i was correct. it is an X11 moment indeed

and there you go. beamNG and beamMP on nixOS. it’s very dirty. but you wanted to! i dont think you trust… in… my… self-righteous nixOS guide… i… cry… when root certificates havent been updated since 2007!!!

P.S. if you are having the…

sudo: /etc/sudo.conf is owned by uid 1000, should be 0

…error, then you will have to completely nuke everything (including deleting all of the containers) with:

podman system reset