Steam Deck¶
Bootible uses Ansible to configure your Steam Deck, installing applications via Flatpak and setting up gaming enhancements like Decky Loader.
Quick Start¶
1. Switch to Desktop Mode¶
Hold the Power button and select Switch to Desktop.
2. Set Your Sudo Password¶
If you haven't already, open Konsole and run:
3. Run Bootible¶
This runs a dry run first, showing what would change. Then run bootible to apply.
What Gets Installed¶
Gaming Enhancements¶
| Feature | Description |
|---|---|
| Decky Loader | Plugin system for Gaming Mode |
| Proton-GE | Custom Proton with extra fixes |
| ProtonUp-Qt | Manage Proton versions |
| Protontricks | Install Windows components |
| EmuDeck | All-in-one emulation setup |
Applications (Flatpak)¶
| Category | Apps |
|---|---|
| Communication | Discord, Signal, Telegram |
| Media | Spotify, VLC, Plex |
| Browsers | Firefox, Chromium |
| Streaming | Moonlight, Chiaki-ng |
| Productivity | VS Code, OBS |
| Gaming | Heroic Launcher, Lutris |
System Configuration¶
- Hostname setting
- Static IP configuration
- SSH server with key management
- Tailscale VPN
- Shader cache relocation to SD card
Decky Loader Plugins¶
Decky adds features to Gaming Mode. Access it by pressing ... (Quick Access Menu) and selecting the plug icon.
Available Plugins¶
| Plugin | Description |
|---|---|
| PowerTools | CPU/GPU control, per-game profiles |
| ProtonDB Badges | Compatibility ratings in library |
| SteamGridDB | Custom artwork for games |
| CSS Loader | Visual themes |
| Animation Changer | Boot/suspend animations |
| HLTB | How Long to Beat times |
| Battery Tracker | Battery health monitoring |
| AutoSuspend | Auto-suspend on idle |
| Tailscale Control | VPN toggle in Gaming Mode |
Enable Plugins¶
Configure in your config.yml:
install_decky: true
decky_plugins:
powertools:
enabled: true
protondb_badges:
enabled: true
steamgriddb:
enabled: true
css_loader:
enabled: true
Storage Management¶
Internal vs SD Card¶
Steam Deck has limited internal storage. Bootible can help manage this:
# Move shader cache to SD card (can be 10-50GB+)
move_shader_cache: true
# Store emulation on SD card
emulation_storage: "sdcard" # or "internal", "auto"
SD Card Detection¶
Bootible automatically detects SD cards at:
/run/media/mmcblk0p1(unlabeled)/run/media/deck/<label>(labeled)
Proton & Windows Games¶
What is Proton?¶
Proton lets you play Windows games on Linux. It's built into Steam but Bootible enhances it:
- Proton-GE: Custom build with extra fixes and codecs
- Protontricks: Install Windows components (vcrun, .NET, etc.)
Checking Compatibility¶
Use ProtonDB.com or the ProtonDB Badges plugin:
| Rating | Meaning |
|---|---|
| Platinum | Works perfectly |
| Gold | Minor issues |
| Silver | Playable with problems |
| Bronze | May have issues |
| Borked | Doesn't work |
Common Launch Options¶
Add to game Properties > Launch Options:
# Fix some crashes
PROTON_NO_ESYNC=1 %command%
PROTON_NO_FSYNC=1 %command%
# Reduce shader stutter
DXVK_ASYNC=1 %command%
# Force resolution
gamescope -w 1280 -h 800 -- %command%
Remote Access¶
SSH¶
Enable SSH to manage your Deck from another computer:
install_ssh: true
ssh_generate_key: true
ssh_add_to_github: true # Adds key to your GitHub account
ssh_import_authorized_keys: true
ssh_authorized_keys:
- "desktop.pub" # From private/ssh-keys/
Tailscale¶
Access your Deck from anywhere with Tailscale VPN:
After install, authenticate: tailscale up
Sunshine (Game Streaming Host)¶
Stream from your Deck to other devices:
Emulation¶
EmuDeck Setup¶
EmuDeck is an interactive installer that configures:
- RetroArch (multi-system)
- Dolphin (GameCube/Wii)
- PCSX2 (PlayStation 2)
- RPCS3 (PlayStation 3)
- Yuzu/Ryujinx (Switch)
- And many more...
Bootible downloads EmuDeck; you complete setup interactively.
After EmuDeck Setup¶
- Copy ROMs to
~/Emulation/roms/<system>/ - Add BIOS files to
~/Emulation/bios/ - Run Steam ROM Manager to add games to Steam
ROM Formats¶
| System | Recommended Format |
|---|---|
| GameCube/Wii | .rvz (compressed) |
| PS1/PS2 | .chd (compressed) |
| PSP | .cso (compressed) |
| Everything else | .zip when supported |
Backup & Recovery¶
Btrfs Snapshots¶
Before making changes, Bootible creates a snapshot:
To restore if something goes wrong:
# List snapshots
sudo ls /home/.snapshots/
# Restore (requires root)
sudo btrfs subvolume delete /home
sudo btrfs subvolume snapshot /home/.snapshots/bootible-pre-setup-* /home
Disable Snapshots¶
Troubleshooting¶
Decky Not Showing¶
- Restart Steam: Power > Restart Steam
- Still missing? Re-run Bootible
SSH Connection Refused¶
- Check service:
systemctl status sshd - Check firewall:
sudo firewall-cmd --list-all - Verify port:
ss -tlnp | grep 22
Flatpak Install Failed¶
- Update Flatpak:
flatpak update - Check Flathub:
flatpak remote-list - Add if missing:
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
SteamOS Update Broke Things¶
SteamOS updates can reset system changes. Re-run Bootible:
Next Steps¶
-
Role Reference
Detailed documentation of each Ansible role.
-
Configuration
Full list of Steam Deck configuration options.