Our arcade cabinet and the lab gaming stations all run Batocera Linux, and for a long time every machine carried the same pile of manual tweaks: copied game folders, hand-edited configs, a theme dropped into the right directory. We finally did what we should have done from the start and turned the whole setup into a proper distribution: GameEdu Projects, a Batocera-based build with its own package repositories, utility packages, theme and branding.

Why we chose Batocera

The retro-gaming OS space is crowded, and we tried most of it before settling:

DistroBaseFocusWhy not for the lab
RetroPieRaspberry Pi OSRetro suite for the Pix86 machines are an afterthought, setup stays manual
RecalboxCustom LinuxRetro appliancemore closed than its sibling, slower to add systems
LakkaLibreELECPure RetroArch OSno couch-friendly frontend for kids
LutrisAny desktop LinuxGame manager and launcherexpects a full desktop underneath, not an appliance
EmuDeckSteamOSEmulation installer for the Deckan installer, not an OS we can flash
ChimeraOSArchConsole-style Steam machineretro systems are an add-on, not the core
BazziteFedora AtomicSteamOS-like for PCs and handheldsPC gaming first, retro bolted on via EmuDeck
SteamOS 3ArchValve's console OSSteam first, and it targets Valve-blessed hardware

The modern SteamOS wave, Bazzite and friends, is genuinely impressive, but it answers a different question: PC gaming on the couch. For a fleet of retro stations, Batocera ended up the only system that treats both x86 boxes and Raspberry Pis as first-class citizens, boots straight into EmulationStation, updates as a single image, and stays easy to rebrand and repackage. Exactly the foundation a custom distribution needs.

Why our own distro?

Stock Batocera is excellent, but it is built for one person's living room. A lab full of machines needs the same image everywhere: the same games, the same controller mappings, the same network setup, and no surprises after a reflash. Baking everything into a distro means a new machine is ready the moment the flash finishes, and an update is one command instead of an afternoon of copying files around.

Our own package repos

The heart of the build is a set of pacman-style package repositories: batocera-public-games for freeware and open-source titles, batocera-ported-games for native Linux ports, and batocera-private-games for licensed content that stays inside the lab. Every game ships as a package with its metadata and artwork in .PKGINFO, so installs, updates and removals work like any other package manager. The game library on this site is generated from the very same repositories, so the website and the machines can never drift apart.

RepositoryWhat ships in itVisibility
batocera-public-gamesfreeware, open-source classics and source portspublic
batocera-ported-gamesnative Linux ports of boxed titlespublic
batocera-private-gameslicensed content for the lab machineslab only

Utility packages

Next to the games live the utility packages: a WireGuard profile that connects each box to the lab network (see our VPN guide), a connector for our self-hosted RetroAchievements server so unlocks and leaderboards keep working without the public internet, kiosk-mode defaults that keep students out of system settings, and automatic save-state policies so a session can continue exactly where it stopped.

PackageWhat it does
gameedu-vpnWireGuard profile that joins the box to the lab network
gameedu-ra-connectpoints achievements and leaderboards at our self-hosted RetroAchievements server
gameedu-kiosklocks system settings for student sessions
gameedu-savestatesautomatic save-state policy so sessions continue where they stopped
gameedu-themethe EmulationStation theme
gameedu-splashboot splash and per-system load screens

Themes

The EmulationStation theme matches the look of this site: dark panels, neon cyan accents and the GameEdu logo, with per-platform views that surface the same cover art the website uses. It is one theme package, versioned and updated like everything else in the build.

Splash images

And then the small things that make a build feel finished: a custom boot splash, per-system splash screens shown while a game loads, and matching controller diagrams. They ship as one package too, so rebranding the whole fleet for an event takes minutes, not an evening with a USB stick.

GameEdu Projects now powers the arcade cabinet and the station fleet. If you want to build something similar, start with our Batocera flashing guide and the story of making the arcade cabinet.