doom-eternal 1.3.0

Rust CLI for the Xylex DOOM Eternal texture and install workflow
Documentation

Xylex Slayer Logo Skin

current version: 1.2.0 Rust-first workspace for turning the Slayer RTX pack into a jet-black Xylex-branded DOOM Eternal mod.

The main entrypoint is the doom-eternal Rust CLI:

cargo run -p doom-eternal -- status

If you want the UI, use the Tauri desktop studio in desktop/.

What This Repo Does

  • imports fresh SAMUEL texture exports into the repo editable tree
  • can pack those exports into chunked mirror zips for remote hosting
  • applies the Xylex logo placement map and jet-black finish pass
  • rebuilds an installable mod zip
  • installs the mod into DOOM Eternal through the native Rust injector flow
  • stages a publishable base/ folder for idStudio

Current Defaults

The repo currently resolves to:

  • source pack: ./rtx-slayer
  • source set: set52
  • working target set: set16
  • editable root: ./build/rtx-editable-source-set16
  • output pack root: ./dist/xylex-rtx-slayer-pack
  • output zip: ./dist/xylex-rtx-slayer-pack.zip
  • game root on this machine: C:\Program Files (x86)\Steam\steamapps\common\DOOMEternal
  • expected SAMUEL export roots on this machine: C:\Users\floris\Downloads\exports and C:\Users\floris\Downloads\modelExports

Use cargo run -p doom-eternal -- examples when you want the fully expanded local paths for this checkout.

How To

1. Check What The CLI Sees

cargo run -p doom-eternal -- status
cargo run -p doom-eternal -- examples

status shows the detected source pack, source set, target set, editable root, output zip, converter path, game root, installed mod versions, and idStudio root.

examples prints copy/paste PowerShell commands with all local paths already filled in.

2. Get Fresh Exports From SAMUEL

Download and launch SAMUEL through the Rust CLI:

cargo run -p doom-eternal -- tools download samuel
cargo run -p doom-eternal -- tools launch samuel

Export textures into:

  • C:\Users\floris\Downloads\exports
  • C:\Users\floris\Downloads\modelExports

Then import them:

cargo run -p doom-eternal -- import `
  --samuel-export-root "C:/Users/floris/Downloads/exports" `
  --model-export-root "C:/Users/floris/Downloads/modelExports"

You can omit both flags if you want the CLI to auto-detect those default Downloads folders.

2b. Pack A Hosted Mirror From The Current Exports

cargo run -p doom-eternal -- mirror pack `
  --samuel-export-root "C:/Users/floris/Downloads/exports" `
  --model-export-root "C:/Users/floris/Downloads/modelExports" `
  --output-root "./dist/samuel-export-mirror" `
  --chunk-size-mb 24

That writes:

  • ./dist/samuel-export-mirror/mirror-manifest.json
  • ./dist/samuel-export-mirror/mirror-part-0001.zip
  • additional mirror-part-*.zip chunks as needed

Host those files on any static mirror. Later runs can hydrate from that URL instead of local Downloads exports.

3. Build The Mod

Craft from the current repo defaults:

cargo run -p doom-eternal -- craft

The current craft path reuses cached target outputs when nothing relevant changed, so small placement tweaks do not force a full rebuild every time.

3b. Build A Blank Black Variant

Use the separate blank config when you want a clean black set with no Xylex decals and no leftover RTX badge or helmet sigil:

cargo run -p doom-eternal -- craft `
  --placement-config "./config/rtx-pack-blank-black-placements.json" `
  --output-mod-root "./dist/xylex-blank-black-pack" `
  --zip-output "./dist/xylex-blank-black-pack.zip"

That writes the blank variant to:

  • ./dist/xylex-blank-black-pack
  • ./dist/xylex-blank-black-pack.zip

4. Fast Path: Import, Build, And Install In One Run

cargo run -p doom-eternal -- run `
  --mirror-url "https://example.com/doom-mirror" `
  --game-root "C:/Program Files (x86)/Steam/steamapps/common/DOOMEternal" `
  --install `
  --install-tools

That does:

  1. import fresh exports
  2. or download the hosted mirror chunks into the local cache when --mirror-url is used
  3. craft the pack
  4. install the zip into the game
  5. download injector tooling if needed
  6. run the injector worker chain from Rust

5. Install A Built Zip Manually

cargo run -p doom-eternal -- install `
  --mod-zip "./dist/xylex-rtx-slayer-pack.zip" `
  --game-root "C:/Program Files (x86)/Steam/steamapps/common/DOOMEternal" `
  --install-tools

This writes repo-local backup manifests under ./build/game-mod-backups/.

If you want the CLI to show what is currently enabled in Mods/ and let you choose from the built zips under dist/, use the interactive picker:

cargo run -p doom-eternal -- install `
  --picker `
  --game-root "C:/Program Files (x86)/Steam/steamapps/common/DOOMEternal" `
  --install-tools

The picker:

  • prints the currently enabled mod zip entries from DOOMEternal/Mods
  • reads name and version from each candidate zip's EternalMod.json
  • records installed metadata in DOOMEternal/Mods/.xylex-mods.json

6. Publish Or Package Through idStudio

Stage the current crafted output into a normal idStudio base/ folder:

cargo run -p doom-eternal -- stage-idstudio

On this machine that stages into:

  • C:\Users\floris\Documents\id Software\idStudio\xylex-rtx-slayer-pack\base

Then:

  1. open idStudio
  2. package from that staged base/ folder
  3. publish through My Creations

7. Restore The Previous Install

cargo run -p doom-eternal -- restore

Or restore a specific backup manifest:

cargo run -p doom-eternal -- restore `
  --manifest "./build/game-mod-backups/<timestamp>/backup-manifest.json"

Desktop Studio

The desktop app wraps the same Rust workflow with a visual placement editor and preview:

cd desktop
pnpm tauri:dev

Use it when you want to:

  • move logos visually
  • reload the preview texture
  • run import, craft, install, and restore from one surface
  • inspect the resolved repo paths and tool state

If the preview is blank, the usual cause is that there is no editable PNG yet for the current target. Run import or craft once first so the preview has something real to load.

More detail lives in desktop/README.md.

Useful Commands

cargo run -p doom-eternal -- status
cargo run -p doom-eternal -- examples
cargo run -p doom-eternal -- tools download samuel
cargo run -p doom-eternal -- tools download injector
cargo run -p doom-eternal -- import
cargo run -p doom-eternal -- mirror pack
cargo run -p doom-eternal -- mirror fetch --mirror-url "https://example.com/doom-mirror"
cargo run -p doom-eternal -- craft
cargo run -p doom-eternal -- install --install-tools
cargo run -p doom-eternal -- install --picker --install-tools
cargo run -p doom-eternal -- stage-idstudio
cargo run -p doom-eternal -- restore
cargo run -p doom-eternal -- repair
cargo run -p doom-eternal -- clean

Repo Layout

  • crates/doom-eternal/ owns the Rust CLI and workflow logic
  • config/rtx-pack-logo-placements.json owns the placement map and target routing
  • config/rtx-pack-blank-black-placements.json owns the no-logo black variant
  • assets/source/logos/ stores the logo source PNGs
  • rtx-slayer/ is the current source pack
  • build/ holds editable textures, tool cache, staged runtime files, and backups
  • dist/ holds the rebuilt mod output and final zip
  • desktop/ is the Tauri placement editor and workflow UI

Related Docs