{"id":50744378,"url":"https://github.com/matteo-pacini/exonix","last_synced_at":"2026-06-10T19:30:38.110Z","repository":{"id":362625585,"uuid":"1259790007","full_name":"matteo-pacini/exonix","owner":"matteo-pacini","description":"eXoDOS Nix Flake","archived":false,"fork":false,"pushed_at":"2026-06-05T05:18:24.000Z","size":3140,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-06-05T07:29:29.899Z","etag":null,"topics":["abandonware","dos","dos-games","dosbox","emulation","exodos","ms-dos","nix","retro-gaming"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/matteo-pacini.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-04T21:30:13.000Z","updated_at":"2026-06-05T05:18:26.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/matteo-pacini/exonix","commit_stats":null,"previous_names":["matteo-pacini/exonix"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/matteo-pacini/exonix","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matteo-pacini%2Fexonix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matteo-pacini%2Fexonix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matteo-pacini%2Fexonix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matteo-pacini%2Fexonix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/matteo-pacini","download_url":"https://codeload.github.com/matteo-pacini/exonix/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matteo-pacini%2Fexonix/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34168086,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-10T02:00:07.152Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["abandonware","dos","dos-games","dosbox","emulation","exodos","ms-dos","nix","retro-gaming"],"created_at":"2026-06-10T19:30:37.103Z","updated_at":"2026-06-10T19:30:38.105Z","avatar_url":"https://github.com/matteo-pacini.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# exonix\n\nA Nix flake that turns the [eXo](https://www.retro-exo.com/) preservation\ncatalogs into one-command, ready-to-play retro games. Pick a game, run a single\ncommand, and exonix fetches just that title from the catalog you already use,\nchecks it's intact, and launches it on a well-maintained emulator. No manual\nsetup, no fiddling with emulator config — it just runs.\n\nexonix doesn't include any games itself; you supply those from the eXo catalog,\nwhich you download on your own machine. What exonix gives you is the glue that\nmakes each title launch cleanly with one command.\n\n## Catalogs\n\nEach catalog lives under its own name. You run a game as\n`nix run github:matteo-pacini/exonix#\u003ccatalog\u003e.\u003cgame\u003e`.\n\n| Catalog | Games | What it is |\n|---|---|---|\n| `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. |\n| `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. |\n\n## Getting started\n\nYou'll need [Nix](https://nixos.org/) with flakes enabled. exonix works on Linux\nand macOS (Intel and Apple Silicon), and the emulators come prebuilt from the\nbinary cache so there's nothing to compile.\n\nSearch the catalog for a game:\n\n```console\n$ nix search github:matteo-pacini/exonix prince of persia\n* packages.x86_64-linux.dos.prince-of-persia-1990\n  eXoDOS: Prince of Persia (1990)\n* packages.x86_64-linux.dos.prince-of-persia-2-the-shadow-and-the-flame-1993\n  eXoDOS: Prince of Persia 2 - The Shadow and The Flame (1993)\n```\n\nThen run one. A DOS game:\n\n```console\n$ nix run github:matteo-pacini/exonix#dos.prince-of-persia-1990\n```\n\nOr a ScummVM game:\n\n```console\n$ nix run github:matteo-pacini/exonix#scummvm.beneath-a-steel-sky-multi-platform\n```\n\nSome titles include several versions, and exonix will ask which one to play the\nfirst time and on every launch after that.\n\nThe first launch fetches just that one game from the eXo catalog, checks it\nagainst a known-good hash, unpacks it to your own writable folder, and starts the\ngame. Every run after that is instant.\n\n## Changing a game's settings\n\n### DOS games\n\nDOS games run on stock DOSBox, so you can adjust their settings two ways.\n\n**For a single session**, pass options after `--`. Here we swap the CRT shader for\na sharp one:\n\n```console\n$ nix run github:matteo-pacini/exonix#dos.prince-of-persia-1990 -- --set glshader=sharp\n```\n\n**Permanently**, edit the game's config file. The first launch puts a writable copy\nin your state folder, so any change you make there sticks on every run:\n\n```console\n$ $EDITOR ~/.local/state/exonix/dos/prince-of-persia-1990/prince-of-persia-1990.conf\n# e.g. under [render]:\n#   glshader = sharp\n```\n\nThat path follows the pattern\n`$XDG_STATE_HOME/exonix/dos/\u003cgame-id\u003e/\u003cgame-id\u003e.conf`.\n\n### ScummVM games\n\nThe easy way is from inside the game — no files to edit. While playing, press\n**Ctrl+F5** (Ctrl+fn+F5 on Mac) to open ScummVM's main menu, then click **Options**\nto change audio (volumes, subtitles) and graphics, and save your changes. A few\nhandy in-game shortcuts also work right away: **Alt+Enter** toggles fullscreen,\n**Ctrl+Alt+a** toggles aspect-ratio correction, **Ctrl+Alt+f** toggles smoothing,\n**Ctrl+Alt+s** cycles stretch modes, and **Ctrl+u** mutes the sound.\n\nTo make a change stick permanently, edit the game's own config file. Launch the\ngame once first (so the file is created), then open:\n\n```console\n$ $EDITOR ~/.local/state/exonix/scummvm/\u003cgame-id\u003e/\u003cversion\u003e/scummvm.ini\n```\n\nAdd or change settings under the game's own section (the one named after the game,\nnot the global `[scummvm]` section). For example, to run Day of the Tentacle\nwindowed with the OpenGL renderer and quieter music, under its `[tentacle]`\nsection set:\n\n```ini\nfullscreen = false\ngfx_mode = opengl\nmusic_volume = 120\n```\n\nOther common keys: `scaler` and `scale_factor`, `filtering`, `aspect_ratio`,\n`stretch_mode`, `subtitles`, and `sfx_volume` / `speech_volume` (volumes range\n0–256). That path follows the pattern\n`$XDG_STATE_HOME/exonix/scummvm/\u003cgame-id\u003e/\u003cversion\u003e/scummvm.ini`. Some titles\nbundle several versions (such as EGA, VGA, or FM-TOWNS), and exonix asks which one\nto play each time you launch them, while single-version titles just start; each\nversion keeps its own settings and saves.\n\n## MT-32 audio (optional)\n\nMany of these games support Roland MT-32 music, and a lot of the MIDI titles\nsound their best with it. The MT-32 ROMs are copyrighted, so you supply your own\nlegally-obtained copies. The ROMs are shared across every game in a catalog —\nyou set them up once.\n\n**DOS games.** Drop your Roland MT-32 (and optional CM-32L) ROMs into\n`~/.config/dosbox/mt32-roms/` (honouring `$XDG_CONFIG_HOME`). exonix points DOSBox at\nthat folder on Linux and macOS alike, so you set the ROMs up once and the games that\nuse MT-32 pick them up automatically. The filenames don't matter; DOSBox identifies\nthe ROMs by checksum.\n\n**ScummVM games.** Create the folder `~/.config/scummvm/mt32-roms/` (or\n`$XDG_CONFIG_HOME/scummvm/mt32-roms/` if that variable is set) and drop your ROMs\nin, named **exactly** as follows (uppercase, with the `.ROM` extension):\n\n```\nMT32_CONTROL.ROM\nMT32_PCM.ROM\n```\n\nIf you have CM-32L ROMs instead, add `CM32L_CONTROL.ROM` and `CM32L_PCM.ROM` —\nScummVM prefers those when present. These ROMs are shared across all your ScummVM\ngames; there's no per-game setup.\n\n(General-MIDI/SoundFont playback isn't covered out of the box: the eXoDOS configs\nreference a non-free Roland SoundCanvas SoundFont that isn't shipped, so for MIDI\nmusic prefer the MT-32 ROMs above.)\n\n## A note on game data\n\nexonix includes no game files, ROMs, or other media — just the code that fetches\nand launches the games. You download titles from the eXo catalog you already use,\non your own machine, and you're responsible for having the right to play any given\ntitle where you live. exonix isn't affiliated with or endorsed by the eXo project.\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatteo-pacini%2Fexonix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatteo-pacini%2Fexonix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatteo-pacini%2Fexonix/lists"}