egladman / retroarch-for-immutables

Retroarch packaged as an OCI runtime bundle

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

retroarch-for-immutables

Yet another way to run RetroArch. Install retroarch (and various libretro cores) to an immutable system non-destructivly.

Quickstart

systemd-nspawn

If you're linux distribution ships with a modern version of systemd then chances are this is already installed.

  1. Run container
./run-nspawn.sh <path/to/oci-bundle>

Commonly Asked Questions

Should I use this?

Nope. Use the official flatpak.

I was curious how one would go about running a GUI using systemd-nspawn. So against my better judgement, I wrote it. While nspawn isn't the best tool for job it's often already present on the user's machine. There's huge implications to shipping software without requiring additonal dependencies to be installed.

Still not convinced? Projects like Flatpak was explicity written to address the inherit packaging challenges faced on the desktop.

  • Dedupped: Flatpak dependencies are shared across packages. So they take up less storage when compared to OCI images/bundles.
  • Rootless: Flatpak is able to run unprivileged by utilizing user namespaces (via bubblewrap) rather than setting the effective user by calling setuid.

Additonal reading:

Development

Dependencies

  • Docker or Podman

Build

  1. Build devel image and start container with interactive session
IMAGE_VARIANT=devel ./build.sh
IMAGE_VARIANT=devel ./build.sh run
  1. Run command(s) inside container. The source code is bind mounted into /src/project
./main help

Release/Packaging

The project is packaged as an OCI runtime bundle therefore can be ran by most container runtimes with minimal effort.

  1. Build oci runtime bundle
./build.sh oci-bundle
tar -czf build/retroarch-for-immutables.tar build/oci-bundle

A .tar file will be written to directory build/oci-bundle-package

About

Retroarch packaged as an OCI runtime bundle

License:GNU General Public License v2.0


Languages

Language:Shell 68.2%Language:Dockerfile 31.8%