Not everything is work. Even I need to play.
And my idea of relaxing is, of course, turning my game collection into a software project. Steam games, emulators, PC ports, decompilations, fan games and mod packs, all installed, configured and documented by AI agents in one Ansible repository. It runs inside a container, so my Omarchy desktop never sees a single one of their dependencies. On top sits a launcher I wrote, so the whole thing feels like a console.

The host stays clean
Emulators and Windows games drag in 32-bit libraries, Wine builds, AUR packages and runtime versions that fight each other. None of that touches my desktop. It all lives in one Arch Linux distrobox called gaming, Steam included, and the host keeps only what the desktop needs.

- Steam runs inside the box, with my library and its Proton prefixes on their own disk
- The NVIDIA driver is passed through, and the one 32-bit library edge case is fixed in the launcher, never on the host
- The box renders desktop entries; a small host script validates and installs them, and removes the ones for apps that are gone
- Saves are mirrored to my NAS and restored on demand, so wiping the box loses nothing
Idempotent, so I can break it
Every emulator, config, patch and mod set is an Ansible role. Running the playbook a second time changes nothing, so I can experiment freely, reset a single emulator's settings, or rebuild the whole box from scratch and get the same machine back.
ansible-playbook site.yml # the whole box, from scratchansible-playbook site.yml # again: nothing changesansible-playbook reset-configs.yml --tags esde # reset one frontendansible-playbook backup.yml && ansible-playbook restore.ymlansible-playbook site.yml --tags verify # post-setup checks- 96
- notes in docs/, one per game, port or fix
- 497
- commits since April 11, 2026
AI does the research, and writes it down
For every port, recompilation or stubborn Windows game, an agent researched the sources, wrote the Ansible role and left a note with where to get it, how it is set up and what did not work. Steam games have their own compatibility database under Proton, with each local fix backed by a source.
How to use it
The easiest way is to let an agent do it. Clone the repository, open Claude Code inside it, and tell it which container and games you want. The playbooks and notes are written for exactly that.
git clone https://github.com/akitaonrails/distrobox-gamingcd distrobox-gamingclaudeSet up the gaming container with ES-DE, Dolphin and PCSX2. My ROMs and BIOS files are in /path/to/your/games.
The repository ships no games, ROMs, BIOS or other binaries. You bring your own and tell the agent where they are.
What is in the box
Emulators
ES-DE as the frontend, plus standalone shadPS4, Dolphin, PCSX2, DuckStation, Flycast, xemu, RPCS3, PPSSPP, Azahar, Eden, Cemu, Supermodel and RetroArch with its cores.
Ports, decomps and recomps
Native builds such as Ship of Harkinian, 2Ship2Harkinian, Starship, SpaghettiKart, Render96ex and Unleashed Recompiled.
Windows games
Wine-managed installs and fixes for games like Colin McRae Rally, OutRun 2006 and the Metal Gear Master Collection.
Mods, reproducibly
NexusMods mod sets per game, DLC and patch installers for PS3 and Switch, and per-game RPCS3 settings.
My own launcher, made for Omarchy
omarchy-games-menu is a Steam-like fullscreen launcher for Omarchy and Hyprland. It reads the desktop entries the gaming repository exports, so a new game shows up by itself, and it puts everything a keybinding away.

- A Rust CLI, ogm, does the scanning, catalog and persistence; a QuickShell overlay draws the grid
- Cover art and metadata from SteamGridDB, and new-release checks on GitHub for ports and recomps
- Sorted by most played, name, date added or release date; type anywhere to filter
- Scales with Hyprland's monitor setting, opens with one key such as Super+G, and games open fullscreen on a dedicated workspace
yay -S omarchy-games-menu-binogm scan && ogm refreshgames-menu # or bind it: bind = SUPER, G, exec, games-menuEverything here is open source
The tools, the skills and the benchmark are public repositories. Fork them and build the version that fits the way you work.