Yet another way to run RetroArch. Install retroarch (and various libretro cores) to an immutable system non-destructivly.
If you're linux distribution ships with a modern version of systemd then chances are this is already installed.
- Run container
./run-nspawn.sh <path/to/oci-bundle>
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:
- Docker or Podman
- Build devel image and start container with interactive session
IMAGE_VARIANT=devel ./build.sh
IMAGE_VARIANT=devel ./build.sh run
- Run command(s) inside container. The source code is bind mounted into
/src/project
./main help
The project is packaged as an OCI runtime bundle therefore can be ran by most container runtimes with minimal effort.
- 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