# Xylex Slayer Logo Skin
current version: `1.4.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:
```powershell
cargo run -p doom-eternal -- status
```
If you want the UI, use the Tauri desktop studio in [`desktop/`](./desktop/README.md).
## 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
- repairs the base game or cleans modded state back to vanilla when you need to reset the install
- 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
```powershell
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:
```powershell
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:
```powershell
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
```powershell
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:
```powershell
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:
```powershell
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
```powershell
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
```powershell
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:
```powershell
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:
```powershell
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
```powershell
cargo run -p doom-eternal -- restore
```
Or restore a specific backup manifest:
```powershell
cargo run -p doom-eternal -- restore `
--manifest "./build/game-mod-backups/<timestamp>/backup-manifest.json"
```
## Desktop Studio
The desktop app is now a read-only companion shell. The CLI is the native source of truth:
- view the native CLI entry points
- copy the command structure mentally into your terminal workflow
- keep the desktop shell out of the real workflow path
If you want the pure command-line path, stay in `cargo run -p doom-eternal -- ...` and skip the desktop shell entirely.
```powershell
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`](./desktop/README.md).
## Useful Commands
```powershell
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
- [`docs/prefilled-command-examples.md`](./docs/prefilled-command-examples.md)
- [`docs/rtx-pack-automation.md`](./docs/rtx-pack-automation.md)
- [`docs/doom-eternal-texture-workflow.md`](./docs/doom-eternal-texture-workflow.md)
- [`desktop/README.md`](./desktop/README.md)