Skip to content

Instantly share code, notes, and snippets.

@de-wim
Last active August 22, 2026 07:12
Show Gist options
  • Select an option

  • Save de-wim/ba440a84f65d49955a1be15a328bd8b3 to your computer and use it in GitHub Desktop.

Select an option

Save de-wim/ba440a84f65d49955a1be15a328bd8b3 to your computer and use it in GitHub Desktop.
Script to install native aarch64 Steam on Asahi Linux
#!/bin/bash
set -eo pipefail
export STEAMROOT=~/.local/share/Steam
# Based almost entirely off of https://www.reddit.com/r/AsahiLinux/comments/1tk6zoe/steam_native_arm_aarch64_on_asahi_linux_fedora/
LATEST_ZIPFILE=$(curl -s https://client-update.steamstatic.com/steam_client_publicbeta_linuxarm64 | grep -E '"file"\s+"bins_linuxarm64_linuxarm64.zip' | cut -d '"' -f4)
echo Downloading latest Steam aarch64 version
curl -o bins_linuxarm64_linuxarm64.zip https://client-update.steamstatic.com/${LATEST_ZIPFILE}
echo Extracting
mkdir -p ${STEAMROOT}
unzip -o -qq bins_linuxarm64_linuxarm64.zip -d ${STEAMROOT}
# Enable public beta
mkdir -p ${STEAMROOT}/package && echo publicbeta > ${STEAMROOT}/package/beta
chmod -R u+rwx ${STEAMROOT}/steamrtarm64/
ln -sfn ${STEAMROOT}/steamrtarm64 ${STEAMROOT}/steamrt64
touch ${STEAMROOT}/.steam-enable-steamrt64-client
if ! [ -e /usr/lib64/libvpx.so.6 ]; then
sudo ln -s /usr/lib64/libvpx.so.9 /usr/lib64/libvpx.so.6
fi
mkdir -p ~/.steam
ln -sf ${STEAMROOT} ~/.steam/steam
ln -sf ${STEAMROOT} ~/.steam/root
ln -sf ${STEAMROOT}/linuxarm64 ~/.steam/sdkarm64
echo Searching for missing dependencies
MISSING_PACKAGES=""
for P in fex-emu gtk2 muvm ibus libvdpau GraphicsMagick; do
if ! (dnf list --installed $P &> /dev/null); then
MISSING_PACKAGES+="$P "
fi
done
if ! [[ "${MISSING_PACKAGES}" == "" ]]; then
echo Installing ${MISSING_PACKAGES}
sudo dnf install ${MISSING_PACKAGES}
fi
chmod +x "$STEAMROOT/steamrtarm64/steamwebhelper"
chmod +x "$STEAMROOT/steamrtarm64/steamwebhelper.sh"
chmod +x "$STEAMROOT/steamrtarm64/gldriverquery"
chmod +x "$STEAMROOT/steamrtarm64/vulkandriverquery"
chmod +x "$STEAMROOT/steamrtarm64/steamsysinfo"
chmod +x "$STEAMROOT/steamrtarm64/steam"
chmod +x ${STEAMROOT}/steam.sh
echo Installing menu entry
mkdir -p ~/.local/share/icons/hicolor/scalable/apps
curl https://upload.wikimedia.org/wikipedia/commons/8/83/Steam_icon_logo.svg -o ~/.local/share/icons/hicolor/scalable/apps/steam.svg
curl https://upload.wikimedia.org/wikipedia/commons/thumb/8/83/Steam_icon_logo.svg/960px-Steam_icon_logo.svg.png -o steam.png
for size in 32x32 48x48 64x64 96x96 128x128 512x512; do
mkdir -p ~/.local/share/icons/hicolor/${size}/apps
gm convert steam.png -resize ${size} ~/.local/share/icons/hicolor/${size}/apps/steam.png
done
rm steam.png
cat > ~/.local/share/applications/steam.desktop <<EOF
[Desktop Entry]
Type=Application
Name=Steam (arm64)
Exec=muvm --env=LD_LIBRARY_PATH="${STEAMROOT}/steamrtarm64/:${LD_LIBRARY_PATH}" ${STEAMROOT}/steamrtarm64/steam -noverifyfiles
Icon=steam
Terminal=false
Categories=Game;
EOF
cat <<EOF
Installation completed!
A Steam launcher entry has been added to the current users menu.
To launch it from the command line, use:
muvm --env=LD_LIBRARY_PATH="${STEAMROOT}/steamrtarm64/:${LD_LIBRARY_PATH}" ${STEAMROOT}/steamrtarm64/steam -noverifyfiles
EOF
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment