01Install the Flatpak from Desktop Mode
Switch the Deck into Desktop Mode and open Konsole, because the Flatpak commands and the permissions they create are far easier to inspect there than in Game Mode. The app ID is io.github.ebkr.r2modman, and it is not on Flathub — the r2builds remote is the publisher’s own. The --user blocks below need no password and keep the install inside the deck user’s home, which is the simpler choice on a Deck; the system-wide blocks need one password prompt. Add the flag to both commands or to neither, because remotes are registered per installation. The standalone r2modman.flatpak asset is 142,481,440 bytes, about 136 MB, if you prefer an offline install. Before switching back to Game Mode, finish one full pass in Desktop Mode: select the game, create a profile, and reach a working Start modded launch.
# system-wide, one password prompt
sudo flatpak remote-add --if-not-exists r2builds https://r2builds.ebkr.dev/flatpak/r2modman.flatpakrepo
sudo flatpak install r2builds io.github.ebkr.r2modman
# per-user, no password
flatpak remote-add --user --if-not-exists r2builds https://r2builds.ebkr.dev/flatpak/r2modman.flatpakrepo
flatpak install --user io.github.ebkr.r2modman
02Understand what changes in Game Mode
Flatpak builds are the recommended Steam Deck route and they do run in Game Mode, but SteamOS’s Gamescope compositor introduces one known quirk: dropdown menus render underneath the window, so a selection looks broken. The arrow keys still move through the list, and the problem does not occur in Desktop Mode. Keep configuration work in Desktop Mode, where dropdowns behave normally and a terminal is one keystroke away. Treat Game Mode as a convenience entry point for launching a modded game, not as the place where profiles, paths, or permissions are set up.
03Grant access to the actual Steam library
The Flatpak build requests --filesystem=host in its manifest, so it already reads every Steam library, microSD card and game directory on the machine; you do not need to grant it anything. A manager that opens correctly and still reports no game installed is almost always looking at the wrong path, not blocked by the sandbox, so compare Settings → Directories against the folder Steam opens from right-click → Manage → Browse local files first. On a stock Deck the internal library is /home/deck/.local/share/Steam/steamapps/common/<Game> and a microSD card is /run/media/mmcblk0p1/steamapps/common/<Game>. Only if the path is right and the folder still reads as empty does a permission override come into it: flatpak override --user --filesystem=/path/to/library io.github.ebkr.r2modman, with --show to read the current set back.
04Handle Proton detection on SteamOS
Nearly every Deck title runs through Proton, and a known bug makes the manager treat those games as native Linux builds, which breaks the modded launch. Drop an empty file named .forceproton at the root of the game install directory — the folder that contains the game executable — and restart the manager. The alternative is editing appmanifest_<App ID>.acf in the steamapps folder and adding platform_override_dest “linux” and platform_override_source “windows” to its UserConfig block, then restarting so the check runs again. Once the marker is in place, launch the game from r2modman with Start modded, because Steam always starts the unmodded build.
05Keep the Deck controller working
On a handheld the controller is the whole input path, so a modded launch that kills input is immediately obvious. The loader’s console window takes focus and swallows controller input; in BepInEx this is disabled in the BepInEx core config file, and those config files are generated on the first modded launch. Pair every modded profile with a vanilla profile so a performance, suspend, or input regression can be attributed either to the loader and a specific mod or to SteamOS itself, rather than being guessed at during a play session.
06Manage storage, cache, and profile exports
Internal Deck storage fills quickly. Downloaded packages are cached locally and shared across profiles, so a second profile installs near-instantly, and that cache sits under r2modmanPlus-local/mods/cache, reachable from Settings → Directories → Data and profile folders → Browse. On the 64 GB model a single large modpack plus its cache can dominate free space, so check that folder before a big import. Export a working profile before large updates: Settings → Profile → Export profile gives you As a code for a short string, or As a file for a .r2z archive. Manually installed and locally imported mods are not installed on import, so keep those files outside the profile if the setup must survive a reimage.
07Use the manual plugin-copy fallback
When the manager cannot launch the game itself, the documented fallback is a manual copy. In the game’s Steam properties, enable Force the use of a specific Steam Play compatibility tool, choose a Proton version, and let Steam download the Windows build. Copy the contents of the profile folder you reach from Settings → Directories → Data and profile folders → Profile folder → Browse into the game directory, then set the launch option WINEDLLOVERRIDES=“winhttp.dll=n,b” %command%. Protontricks can apply the same override without a launch option: run protontricks --gui, pick the game, choose Run winecfg, open the Libraries tab, add winhttp under New override for library, then select it and set it to Native, then Builtin. r2modman does not run in Game Mode on this route, so each mod update means another trip to Desktop Mode.
08Respect multiplayer and anti-cheat rules
SteamOS changes nothing about the social side of modding: clients need matching packages and versions, and server or anti-cheat policies still apply to whatever you run. Package authors document their own server rules, and a loadable mod is not automatically a permitted one. The manager hides other mod managers from its listings and applies a short exclusion list, and DekuDesu-BetterHud is a documented incompatible mod. Before a shared session, export the profile and give every player the same code, then have each Deck compare its Installed list against the host rather than assuming the host’s setup covers the lobby.
✦ Frequently asked questions
Common questions, answered directly.
Does r2modman work in Steam Deck Game Mode?
Yes. The Flatpak builds were added for exactly that and do run in Game Mode. One Gamescope quirk remains: dropdown menus draw underneath the window, so a selection looks broken until you move through it with the arrow keys. The problem does not appear in Desktop Mode.
Where do I put the .forceproton file?
At the root of the game install directory, next to the game executable — for example the folder Steam opens under steamapps/common. It is an empty file, and the manager must be restarted before it re-checks the game’s launch type, because that check runs only at startup.
Why can r2modman not find my game on the Deck?
Flatpak filesystem isolation is the usual cause. Grant the Flatpak access to the exact Steam library path, including the microSD mount under /run/media if the game is stored there. Then confirm Settings → Directories matches the folder Steam opens from right-click → Manage → Browse local files.
Do I need the AppImage as well as the Flatpak?
No. The Flatpak updates through the r2builds remote and is the cleaner route on SteamOS, because updates are smaller and handled for you. The AppImage stays useful for Desktop Mode testing, but running both means maintaining two separate installations and two sets of profile paths.
Will every Thunderstore mod work on the Steam Deck?
No. Proton prefixes, native versus Windows builds, game updates, and anti-cheat rules all affect the outcome. A supported Thunderstore community is not a promise that each package loads under SteamOS, so test a small profile on the Deck before committing a group session to it.
Every release keeps the assets, byte sizes and SHA-512 digests it was published with, so an older build can still be matched against its original metadata.
Next: download or update the current build, keep one profile with only the loader enabled, confirm a modded launch from Start modded, then add the rest of your mods in small batches.