Steam on Asahi Linux runs x86_64 binaries via FEX-Emu inside a muvm MicroVM. This causes two problems that prevent adding an external drive as a Steam library through the normal UI.
- Settings → Storage shows nothing / "Add Drive" does nothing
- Manually selecting a path gives no feedback or silently fails
Steam uses the UDisks2 D-Bus service to discover storage devices. Since Steam runs inside a MicroVM, it can't reach UDisks2 on the host:
Error: Initialize: failed to connect to UDisks2: Could not connect: No such file or directory
Error: OnLibraryFoldersInitialized: Failed to initialize storage device manager
Error: operator(): failed to retrieve file open dialog results
This is why the Storage settings page shows nothing and the file picker doesn't work.
An ext4 drive formatted outside of Fedora won't have SELinux xattrs set. Files show unlabeled_t context, which can interfere with Steam's library validation:
drwxr-xr-x benpotter unconfined_u:object_r:unlabeled_t:s0 /mnt/SteamGames
DEVICE=/dev/sda1 # adjust to your device
MOUNTPOINT=/mnt/SteamGames
UUID=$(sudo blkid -s UUID -o value "$DEVICE")
sudo mkdir -p "$MOUNTPOINT"
sudo bash -c "echo 'UUID=$UUID $MOUNTPOINT ext4 defaults,nofail,x-systemd.device-timeout=10 0 2' >> /etc/fstab"
sudo systemctl daemon-reload
sudo mount "$MOUNTPOINT"
sudo chown -R "$USER:$USER" "$MOUNTPOINT"context= mount option doesn't work for ext4 (incompatible with seclabel). Use semanage instead to add a persistent file context policy:
sudo semanage fcontext -a -t home_root_t "/mnt/SteamGames(/.*)?"
sudo restorecon -Rv /mnt/SteamGames/This persists across reboots — new files created on the drive will also get the correct label.
mkdir -p /mnt/SteamGames/steamapps
restorecon -Rv /mnt/SteamGames/Since the Steam UI can't add drives (UDisks2 missing), edit the VDF directly. Quit Steam first, then:
nano ~/.local/share/Steam/steamapps/libraryfolders.vdfAdd a second entry so the file looks like this:
"libraryfolders"
{
"0"
{
"path" "/home/USERNAME/.local/share/Steam"
"label" ""
"contentid" "YOUR_EXISTING_ID"
"totalsize" "0"
"update_clean_bytes_tally" "0"
"time_last_update_verified" "0"
"apps"
{
}
}
"1"
{
"path" "/mnt/SteamGames"
"label" ""
"contentid" ""
"totalsize" "0"
"update_clean_bytes_tally" "0"
"time_last_update_verified" "0"
"apps"
{
}
}
}
Steam will read the VDF on startup, mount the library, and populate contentid and totalsize automatically. The drive will then appear in Settings → Storage.
- Asahi Linux (Fedora Asahi Remix) on Apple Silicon (M2)
- Steam via
fex-steam(FEX-Emu + muvm MicroVM for x86_64 translation) - External SSD formatted as ext4
- SELinux in enforcing mode (targeted policy)