5.0 KiB
5.0 KiB
date-created, date-modified
| date-created | date-modified |
|---|---|
| 2026-10-20 19:15 | 2026-10-20 19:20 |
RomM 5.4 deployment changes
Known facts
- The deployed Nixpkgs package is RomM 5.2.0.
- RomM 5.4.0 requires Python 3.14 or later.
- The pinned Nixpkgs contains Python 3.14.
- The pinned Python package set lacks some RomM 5.4.0 dependency versions.
- For example, it provides RQ 2.10 while RomM requires RQ 2.12 or later.
- In this design, upstream means the Nixpkgs repository.
- Nixpkgs upstream still packages RomM 5.2.0.
- Two open Nixpkgs pull requests update RomM to 5.4.0.
- Pull request 574089 adds a required compatibility patch for Nixpkgs Redis 8.0.1.
- Pull request 574089 has not run the NixOS module test.
- The existing
rommderivation already uses Python 3.14 from the pin. - The package can override the current derivation without copying it.
- The override evaluates successfully with the RomM 5.4.0 source and frontend hashes.
- RomM reads
config.ymlfrom/var/lib/romm/config/config.yml. - Systemd tmpfiles
L+replaces that path with a generated Nix-store symlink. - NixOS modules use
L+symlinks for declaratively managed files in persistent application directories. - The existing Nixpkgs RomM NixOS test starts the application with PostgreSQL, Redis, nginx, and the filesystem watcher in a local VM.
- The test does not deploy to Pikachu.
- The automated update changes only the version, source hash, and frontend dependency hash.
- The manual update also removes a Redis maintenance-notification import and argument.
- RomM does not require the
rom-convertoexecutable whileROM_CONVERTO_ENABLEDis false. - As checked on 2026-10-20, both pull requests remain open.
- Neither pull request has a review or a discussion comment.
- Both pull requests request review from the RomM package maintainers.
- Both pull requests pass evaluation and lint checks.
- Their package-test checks have a neutral result.
- The Darwin package-test jobs remain queued.
- RomM 5.3.0 added a required
filesystem.structuredeclaration. - RomM will not start without that declaration.
- The existing mounts match Structure A.
- Structure A maps ROMs to
roms/{platform}/{game}. - Structure A maps firmware to
bios/{platform}. - RomM 5.4.0 enables
emulatorjs.auto_save_syncby default. - RomM 5.4.0 adds optional in-place library conversion through
rom-converto. - Library conversion requires
ROM_CONVERTO_ENABLED=true. - Conversion deletes original files after conversion.
- The task requires declarative
config.ymlmanagement. - The task requires disabled browser save synchronization.
- The task requires disabled library conversion.
- The task retains the IGDB, ScreenScraper, and SteamGridDB configuration.
- The task reuses the Nixpkgs
services.rommmodule.
Sources
- RomM 5.3.0 release
- RomM 5.4.0 release
- RomM 5.4.0 configuration example
- RomM 5.4.0 Python requirement
- 0015-romm-5-4-package
Decision tree
- RomM 5.4 deployment
- Package runtime
- Settled: Build the local package with Python 3.14.
- Package source
- Settled: Maintain a local package.
- Constraint: Do not rely on either unreviewed Nixpkgs pull request.
- Package exposure
- Settled: Expose the package as
pkgs.alexion.romm.
- Settled: Expose the package as
- Library layout
- Settled: Manage
config.ymldeclaratively with Nix. - Configuration materialization
- Settled: Replace the configuration file with a Nix-store symlink on activation.
- Settled: Declare Structure A.
- Settled: Set
filesystem.structure.defaulttoroms/{platform}/{game}. - Settled: Set
filesystem.structure.firmwaretobios/{platform}.
- Settled: Manage
- File safety
- Settled: Keep library conversion disabled.
- Settled: Do not enable
ROM_CONVERTO_ENABLED.
- Browser emulation
- Settled: Set
emulatorjs.auto_save_synctofalse.
- Settled: Set
- Existing integration
- Settled: Reuse
services.romm. - Settled: Keep IGDB, ScreenScraper, and SteamGridDB configuration unchanged.
- Settled: Reuse
- Validation
- Settled: Build the local package and the Pikachu configuration.
- Settled: Do not run a local NixOS VM test.
- Settled: The operator validates the deployment on Pikachu.
- Package runtime
Settled decisions
- Build a local RomM 5.4.0 package.
- Do not rely on either unreviewed Nixpkgs pull request.
- Expose the package as
pkgs.alexion.romm. - Reuse
services.romm. - Generate
config.ymlwith Nix. - Replace
config.ymlwith a Nix-store symlink on activation. - Declare Structure A with
roms/{platform}/{game}andbios/{platform}. - Keep
ROM_CONVERTO_ENABLEDdisabled. - Set
emulatorjs.auto_save_synctofalse. - Keep IGDB, ScreenScraper, and SteamGridDB configuration unchanged.
- Build the local package and Pikachu configuration.
- Do not run a local NixOS VM test.
- Let the operator validate the deployment on Pikachu.
Frontier
No in-scope decisions remain.