This guide details how to run Steam on nixos-apple-silicon using Distrobox.
Tested on:
- MacBook Pro M2 Max
- NixOS channel 25.11 (
unstablechannel, at the time of writing) - OpenGL core profile version string: 4.6 (Core Profile) Mesa 25.2.4
- Wayland / Sway / SDDM
- Kernel: 6.16.8-asahi
- NixOS Apple Silicon:
github:tpwrules/nixos-apple-silicon/24ab28e47b586f741910b3a2f0428f3523a0fff3
Create a directory for your Distrobox container:
mkdir -p ~/Distrobox/steam
cd ~/Distrobox/steam
vim Dockerfile
Insert the following in the Dockerfile:
# Start with the minimal Fedora 42 image
FROM quay.io/fedora/fedora-minimal:42
WORKDIR /
# Install COPR plugin and enable Asahi repositories
RUN dnf install -y 'dnf5-command(copr)' && \
dnf copr enable -y @asahi/mesa && \
dnf copr enable -y @asahi/fedora-remix-scripts
# Add architecture-specific repositories for FEX mesa overlays
# i386 Repository
RUN echo '[copr:copr.fedorainfracloud.org:group_asahi:mesa-i386]' > /etc/yum.repos.d/group_asahi-mesa-i386.repo && \
echo 'name=Copr repo for mesa owned by @asahi (i386)' >> /etc/yum.repos.d/group_asahi-mesa-i386.repo && \
echo 'baseurl=https://download.copr.fedorainfracloud.org/results/@asahi/mesa/fedora-$releasever-i386/' >> /etc/yum.repos.d/group_asahi-mesa-i386.repo && \
echo 'type=rpm-md' >> /etc/yum.repos.d/group_asahi-mesa-i386.repo && \
echo 'skip_if_unavailable=True' >> /etc/yum.repos.d/group_asahi-mesa-i386.repo && \
echo 'gpgcheck=1' >> /etc/yum.repos.d/group_asahi-mesa-i386.repo && \
echo 'gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-group_asahi-mesa' >> /etc/yum.repos.d/group_asahi-mesa-i386.repo && \
echo 'repo_gpgcheck=0' >> /etc/yum.repos.d/group_asahi-mesa-i386.repo && \
echo 'enabled=1' >> /etc/yum.repos.d/group_asahi-mesa-i386.repo && \
echo 'enabled_metadata=1' >> /etc/yum.repos.d/group_asahi-mesa-i386.repo && \
echo 'priority=5' >> /etc/yum.repos.d/group_asahi-mesa-i386.repo && \
echo 'includepkgs=mesa-fex-emu-overlay-i386*' >> /etc/yum.repos.d/group_asahi-mesa-i386.repo
# x86_64 Repository
RUN echo '[copr:copr.fedorainfracloud.org:group_asahi:mesa-x86_64]' > /etc/yum.repos.d/group_asahi-mesa-x86_64.repo && \
echo 'name=Copr repo for mesa owned by @asahi (x86_64)' >> /etc/yum.repos.d/group_asahi-mesa-x86_64.repo && \
echo 'baseurl=https://download.copr.fedorainfracloud.org/results/@asahi/mesa/fedora-$releasever-x86_64/' >> /etc/yum.repos.d/group_asahi-mesa-x86_64.repo && \
echo 'type=rpm-md' >> /etc/yum.repos.d/group_asahi-mesa-x86_64.repo && \
echo 'skip_if_unavailable=True' >> /etc/yum.repos.d/group_asahi-mesa-x86_64.repo && \
echo 'gpgcheck=1' >> /etc/yum.repos.d/group_asahi-mesa-x86_64.repo && \
echo 'gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-group_asahi-mesa' >> /etc/yum.repos.d/group_asahi-mesa-x86_64.repo && \
echo 'repo_gpgcheck=0' >> /etc/yum.repos.d/group_asahi-mesa-x86_64.repo && \
echo 'enabled=1' >> /etc/yum.repos.d/group_asahi-mesa-x86_64.repo && \
echo 'enabled_metadata=1' >> /etc/yum.repos.d/group_asahi-mesa-x86_64.repo && \
echo 'priority=5' >> /etc/yum.repos.d/group_asahi-mesa-x86_64.repo && \
echo 'includepkgs=mesa-fex-emu-overlay-x86_64*' >> /etc/yum.repos.d/group_asahi-mesa-x86_64.repo
# Clean DNF cache before installing packages
RUN dnf clean all
RUN dnf upgrade --refresh -y
# Install the Asahi platform metapackage
RUN dnf install -y asahi-platform-metapackage-fex
# Install the rest of the required packages
RUN dnf install -y \
fontconfig \
dejavu-sans-fonts \
dejavu-serif-fonts \
dejavu-sans-mono-fonts \
sudo \
xz \
ps \
vim \
xterm \
ar \
tar \
bash \
coreutils \
util-linux \
procps-ng \
findutils \
grep \
sed \
gawk \
gzip \
which \
less \
nano \
passwd \
shadow-utils \
systemd \
iproute \
iputils \
curl \
wget \
mesa-libGLU \
ca-certificates \
alsa-utils
# Enable the Asahi Steam COPR and install Steam
RUN dnf copr enable -y @asahi/steam && \
dnf install -y steam
# Final cleanup to reduce image size
RUN dnf clean all && \
rm -rf /var/cache/dnf/* /tmp/* /var/tmp/*
CMD ["/bin/bash"]
Build the Docker image locally:
docker build . --tag steam:latest
Create the Distrobox container:
distrobox-create --name steam --image steam:latest --home ~/Distrobox/steam
Enter the Distrobox container and start Steam:
distrobox enter steam
steam
That's it! Steam should start up and you should be able to install and run games right from Steam as you would on standard Asahi Linux.
@GarrettGR maybe try the solution here under KDE Plasma 6: nix-community/nixos-apple-silicon#237 (comment)
I would only be able to help out those who are using the exact configuration provided in the guide, since stability seems to vary on Asahi depending on the environment.