An open API service indexing awesome lists of open source software.

https://github.com/matteo-pacini/exonix

eXoDOS Nix Flake
https://github.com/matteo-pacini/exonix

abandonware dos dos-games dosbox emulation exodos ms-dos nix retro-gaming

Last synced: 6 days ago
JSON representation

eXoDOS Nix Flake

Awesome Lists containing this project

README

          

# exonix

A Nix flake that turns the [eXo](https://www.retro-exo.com/) preservation
catalogs into one-command, ready-to-play retro games. Pick a game, run a single
command, and exonix fetches just that title from the catalog you already use,
checks it's intact, and launches it on a well-maintained emulator. No manual
setup, no fiddling with emulator config — it just runs.

exonix doesn't include any games itself; you supply those from the eXo catalog,
which you download on your own machine. What exonix gives you is the glue that
makes each title launch cleanly with one command.

## Catalogs

Each catalog lives under its own name. You run a game as
`nix run github:matteo-pacini/exonix#.`.

| Catalog | Games | What it is |
|---|---|---|
| `dos` | 7,666 | Classic MS-DOS games from [eXoDOS](https://www.retro-exo.com/exodos.html) v6.0.4 — adventure, action, strategy, RPGs and more from the DOS era, each set up to run as it originally did. |
| `scummvm` | 832 | Point-and-click and other adventure games from [eXoScummVM](https://www.retro-exo.com/) 2026.1.0, run through [ScummVM](https://www.scummvm.org/). exonix sets each game up so ScummVM just runs it. |

## Getting started

You'll need [Nix](https://nixos.org/) with flakes enabled. exonix works on Linux
and macOS (Intel and Apple Silicon), and the emulators come prebuilt from the
binary cache so there's nothing to compile.

Search the catalog for a game:

```console
$ nix search github:matteo-pacini/exonix prince of persia
* packages.x86_64-linux.dos.prince-of-persia-1990
eXoDOS: Prince of Persia (1990)
* packages.x86_64-linux.dos.prince-of-persia-2-the-shadow-and-the-flame-1993
eXoDOS: Prince of Persia 2 - The Shadow and The Flame (1993)
```

Then run one. A DOS game:

```console
$ nix run github:matteo-pacini/exonix#dos.prince-of-persia-1990
```

Or a ScummVM game:

```console
$ nix run github:matteo-pacini/exonix#scummvm.beneath-a-steel-sky-multi-platform
```

Some titles include several versions, and exonix will ask which one to play the
first time and on every launch after that.

The first launch fetches just that one game from the eXo catalog, checks it
against a known-good hash, unpacks it to your own writable folder, and starts the
game. Every run after that is instant.

## Changing a game's settings

### DOS games

DOS games run on stock DOSBox, so you can adjust their settings two ways.

**For a single session**, pass options after `--`. Here we swap the CRT shader for
a sharp one:

```console
$ nix run github:matteo-pacini/exonix#dos.prince-of-persia-1990 -- --set glshader=sharp
```

**Permanently**, edit the game's config file. The first launch puts a writable copy
in your state folder, so any change you make there sticks on every run:

```console
$ $EDITOR ~/.local/state/exonix/dos/prince-of-persia-1990/prince-of-persia-1990.conf
# e.g. under [render]:
# glshader = sharp
```

That path follows the pattern
`$XDG_STATE_HOME/exonix/dos//.conf`.

### ScummVM games

The easy way is from inside the game — no files to edit. While playing, press
**Ctrl+F5** (Ctrl+fn+F5 on Mac) to open ScummVM's main menu, then click **Options**
to change audio (volumes, subtitles) and graphics, and save your changes. A few
handy in-game shortcuts also work right away: **Alt+Enter** toggles fullscreen,
**Ctrl+Alt+a** toggles aspect-ratio correction, **Ctrl+Alt+f** toggles smoothing,
**Ctrl+Alt+s** cycles stretch modes, and **Ctrl+u** mutes the sound.

To make a change stick permanently, edit the game's own config file. Launch the
game once first (so the file is created), then open:

```console
$ $EDITOR ~/.local/state/exonix/scummvm///scummvm.ini
```

Add or change settings under the game's own section (the one named after the game,
not the global `[scummvm]` section). For example, to run Day of the Tentacle
windowed with the OpenGL renderer and quieter music, under its `[tentacle]`
section set:

```ini
fullscreen = false
gfx_mode = opengl
music_volume = 120
```

Other common keys: `scaler` and `scale_factor`, `filtering`, `aspect_ratio`,
`stretch_mode`, `subtitles`, and `sfx_volume` / `speech_volume` (volumes range
0–256). That path follows the pattern
`$XDG_STATE_HOME/exonix/scummvm///scummvm.ini`. Some titles
bundle several versions (such as EGA, VGA, or FM-TOWNS), and exonix asks which one
to play each time you launch them, while single-version titles just start; each
version keeps its own settings and saves.

## MT-32 audio (optional)

Many of these games support Roland MT-32 music, and a lot of the MIDI titles
sound their best with it. The MT-32 ROMs are copyrighted, so you supply your own
legally-obtained copies. The ROMs are shared across every game in a catalog —
you set them up once.

**DOS games.** Drop your Roland MT-32 (and optional CM-32L) ROMs into
`~/.config/dosbox/mt32-roms/` (honouring `$XDG_CONFIG_HOME`). exonix points DOSBox at
that folder on Linux and macOS alike, so you set the ROMs up once and the games that
use MT-32 pick them up automatically. The filenames don't matter; DOSBox identifies
the ROMs by checksum.

**ScummVM games.** Create the folder `~/.config/scummvm/mt32-roms/` (or
`$XDG_CONFIG_HOME/scummvm/mt32-roms/` if that variable is set) and drop your ROMs
in, named **exactly** as follows (uppercase, with the `.ROM` extension):

```
MT32_CONTROL.ROM
MT32_PCM.ROM
```

If you have CM-32L ROMs instead, add `CM32L_CONTROL.ROM` and `CM32L_PCM.ROM` —
ScummVM prefers those when present. These ROMs are shared across all your ScummVM
games; there's no per-game setup.

(General-MIDI/SoundFont playback isn't covered out of the box: the eXoDOS configs
reference a non-free Roland SoundCanvas SoundFont that isn't shipped, so for MIDI
music prefer the MT-32 ROMs above.)

## A note on game data

exonix includes no game files, ROMs, or other media — just the code that fetches
and launches the games. You download titles from the eXo catalog you already use,
on your own machine, and you're responsible for having the right to play any given
title where you live. exonix isn't affiliated with or endorsed by the eXo project.

## License

MIT — see [LICENSE](LICENSE).