View on GitHub

retrokit

RetroPie and ROM automation platform

retrokit

retrokit provides powerful automation and UX improvements for retro-gaming systems built with RetroPie / Raspberry Pi 4.

In addition to being a configuration management tool, retrokit consists of several sub-projects, including:

"Buy Me A Coffee"

Overview

With support of its sub-projects, retrokit is capable of automating the installation, configuration, and management of:

▶️ Inputs

▶️ Media

▶️ Manuals

▶️ Game Configurations

▶️ Frontend

▶️ Emulators

▶️ System Management

▶️ Hardware

▶️ And more!

Through romkit, retrokit is able to provide ROM management capabilities, include:

Through manualkit, retrokit is able to provide game manual management capabilities, including:

This is all supported for the following systems:

There are also system-specific features, including:

For all of these integrations, retrokit provides a large library of profiles which allow you to add more functionality onto the default configuration, including:

All of this means you can set up your system from scratch to feature-complete with less than a few hours worth of work. Systems built with retrokit are:

retrokit is built primarily for RetroPie / Raspberry Pi 4. You must customize it to your own needs.

NOTE This repository does not contain ROMs or URLs to websites that provide ROMs. To utilize any download functionality in retrokit, you must provide the configurations yourself. Please familiarize yourself with the law in your country before attempting to download ROMs.

Why does this exist?

In 2021, I set out to build a retro gaming system for my brother’s 40th birthday. I wanted to build the best experience I could to transport us back to our childhood. As I started to create the system, I quickly realized how complicated it could get. To help iterate on the setup more quickly, I wanted to build the system in such a way that I could re-create the exact same setup steps each time.

retrokit represents the work I did to build a configuration management system for all of my personal builds.

Demo

For a demo of what the end result looks like, see here.

How to use

You can use retrokit just for its sub-projects (e.g. manualkit / romkit) or you can use it for software automation / configuration management as well.

You will need to provide a .env file with the appropriate details filled out. You can use .env.template as a starting point. In order to not encourage improper use of the ROM downloader (via romkit), you must provide the source rom set URLs yourself.

Go through the settings and setup modules and become familiar with what this does. If you have a proper .env file, you can get a fully working system with very little effort. However, understand that this is opinionated software and you may very well want to add your own customizations.

You can have complete control over what parts of retrokit get used via profiles. I strongly recommend using profiles to customize your configuration. That being said, feel free to fork this repo and use your fork to update and track all of your personal preferences.

Quickstart

Creating a base image

  1. Override settings in profiles/mykit/ to match your personal preferences and hardware requirements
  2. Create a .env file based on env.template to provide the required configuration settings
  3. Flash new image (Note this will also expand the main partition and copy retrokit onto the sd card):
    bin/sd.sh create /path/to/device # e.g. /dev/mmcblk0
    
  4. Insert sd card into Pi

Install via base image

  1. Start up Pi
  2. Quit EmulationStation (F4)
  3. Update Raspbian
    retrokit/bin/update.sh system
    
  4. Reboot
    sudo reboot
    
  5. Update RetroPie-Setup and its packages
    retrokit/bin/update.sh retropie
    
  6. Run retrokit
    retrokit/bin/setup.sh install
    
  7. Reboot
    sudo reboot
    
  8. Have fun!

To access via VNC:

Alternatively, you can run the retrokit setup script via the RetroPie EmulationStation menu.

Install via git

  1. Clone repo
    cd $HOME
    git clone https://github.com/obrie/retrokit
    
  2. Follow steps from base image install

Install via scriptmodule

  1. Download scriptmodule
    curl https://github.com/obrie/retrokit/raw/main/bin/scriptmodules/supplementary/retrokit.sh --create-dirs -o $HOME/RetroPie-Setup/ext/retrokit/supplementary/retrokit.sh
    curl https://github.com/obrie/retrokit/raw/main/bin/scriptmodules/supplementary/retrokit/icon.png --create-dirs -o $HOME/RetroPie-Setup/ext/retrokit/supplementary/retrokit/icon.png
    
  2. Install script module via UI or:
    sudo /home/pi/RetroPie-Setup/retropie_packages.sh retrokit _source_
    
  3. Follow steps from base image install

My favorites

I’d be hard-pressed to list every single feature that is built into retrokit as this project represents the culmination of years of work. That being said, I at least want to call out my favorite features in retrokit:

Honestly, there’s a ton more functionality in retrokit that I love, but the above are my favorites. Honorable mentions:

Final words

retrokit has the potential to be incredibly powerful for managing your system. Be patient, read the documentation, learn the system, but most importantly: have fun :)

This has been a passion project of mine for years. It’s my hope that, even if you don’t use this project, perhaps there is something valuable you can take from it.