Fallout: New Vegas
Fallout: New Vegas (game_id fallout-new-vegas) is a built-in modde title backed by
the shared, data-driven Gamebryo game plugin. The same plugin code drives
Oblivion; the per-game differences (Steam app id, save folder
name, INI set, Nexus domain) are configuration on a single GamebryoGame
record.
Overall status:
Partial. Deployment, filesystem scanning, BSA-aware conflict classification, save tracking, andplugins.txtload-order read/write all ship. What keeps New Vegas fromDoneis the absence of a bespoke, end-to-end script-extender (NVSE) bootstrap workflow and the deeper plugin-management UX (automatic master/ESM ordering, in-app conflict resolution) that the Bethesda Creation-Engine titles get. Treat New Vegas as a solid deploy-and-scan target, not a full Mod-Organizer replacement. The canonical status baseline isdocs/capability-matrix.tomland the supported-games table.
Engine and overall status
| Property | Value |
|---|---|
| Engine family | Gamebryo (EngineFamily::Gamebryo) |
modde game_id | fallout-new-vegas |
| Display name | Fallout: New Vegas |
| Mod directory | <install>/Data |
| Archive format | .bsa (Bethesda archives) |
| Plugin system | Yes — .esp / .esm, ordered via plugins.txt |
| Script extender | NVSE (.nvse) — treated as save-breaking binary content |
| INI files | Fallout.ini, FalloutPrefs.ini, FalloutCustom.ini |
| Save format | .ess (save), .fos (co-save) |
| Nexus domain | newvegas |
| OptiScaler profiles | None shipped for this title |
| Overall status | Partial |
The plugin advertises has_plugin_system() == true and
supports_save_profiles() == true, so New Vegas participates in modde’s
load-order and save-profile machinery.
How modde detects the install
New Vegas is registered with a Steam launcher binding and no Heroic GOG/Epic ids:
| Launcher key | Value |
|---|---|
steam_app_id | 22380 |
steam_dir | Fallout New Vegas |
heroic_gog_app_id | (none) |
heroic_epic_app_id | (none) |
modde locates the install by walking your Steam libraries for app 22380,
landing on steamapps/common/Fallout New Vegas. Because there is no Heroic
binding shipped, GOG/Epic copies are not auto-detected for this title — point
modde at the directory explicitly (--game-dir on the CLI, or gameDir in the
home-manager module) if you run a non-Steam copy.
The numeric Nexus game id is intentionally None for New Vegas: the
newvegas domain is enough for URL-based installs and update tracking, but
the in-app “Browse Nexus” picker (which needs the numeric id) will not list
this title until the id is confirmed. URL installs from
nexusmods.com/newvegas/mods/<id> resolve correctly via the domain.
Mod directory and deploy strategy
The mod directory is <install>/Data — the same Data/ folder New Vegas
itself reads plugins, meshes, textures, sound, and BSAs from.
modde never copies mods on top of your game files. It uses the standard
symlink-farm virtual filesystem described in
Deployment & VFS: mods are staged, the winning file
for each relative path is resolved by load order, and the result is symlinked
into Data/. This keeps the base install clean and every deploy reversible.
When modde unpacks a downloaded archive, the Gamebryo plugin’s
analyze_mod_archive looks for a top-level Data/ directory inside the
extracted mod. If present, it applies StripContentRoot { root: "Data" }, so a
mod packaged as Data/MyMod.esp deploys its contents directly into the game’s
Data/ rather than nesting a redundant Data/Data/. For archives that are not
wrapped in Data/, the plugin’s bare-layout recogniser accepts the mod
when it sees the expected loose roots — data, meshes, textures, sound,
music, menus, scripts, shaders (matched case-insensitively) — or
top-level .esp / .esm / .bsa files. This is what lets older “drop into
Data” mods install without manual repackaging.
What scanning finds
modde scan --game fallout-new-vegas runs the Gamebryo scanner over the single
Data directory. The scanner:
- reads the top level of
<install>/Data(non-recursive); - treats every
.espand.esmfile as a discovered mod; - pairs each plugin with a same-stem
.bsaarchive when one exists (e.g.MyMod.esp+MyMod.bsaare reported together as one mod’s files); - assigns each mod the id
plugin/<filename>with a fixed match confidence of0.85; - records each file’s install-relative path and on-disk size.
Loose meshes/textures dropped straight into Data/ without an accompanying
plugin are not surfaced as distinct mods by this scanner — discovery is
plugin-anchored. For matching an existing install against a Wabbajack manifest
(including New Vegas lists, see below), combine the scan with --manifest; the
scanner’s per-mod footprint is the lowercased plugin filename, which is what
manifest matching keys on. See Mod Scanning for
threshold, dry-run, and import flags.
Conflict classification
Two layers cooperate when New Vegas mods overlap.
Per-file collision severity (used when two deployed mods write the same relative path) comes from the BSA-aware collision policy:
| Severity | Extensions |
|---|---|
Dangerous | .esp, .esm, .dll (also .lua, .ws from the shared default set) |
Config | .ini, .json, .xml |
Cosmetic | .dds, .png, .jpg, .tga, .nif |
.bsa is registered as the archive extension for the New Vegas collision
classifier, so archive overlaps are reasoned about as packed content rather than
loose files.
Per-mod safety classification (classify_mod, used to flag whether
installing/toggling a mod can invalidate saves) uses the Gamebryo content
policy:
- Save-breaking extensions:
.esp,.esm,.pex,.dll,.obse,.nvse, plus anything under ascripts/directory. Adding or removing these changes the form-id / script footprint a save depends on. - Cosmetic extensions:
.nif,.bsa,.dds,.png,.tga,.jpg,.kf,.wav,.mp3,.ogg,.ini,.xml.
The same policy also classifies content into categories used across the UI and
reports — Plugin (esp/esm), Texture, Mesh, Sound, Script
(including .obse/.nvse), Archive (bsa), Config, and Binary (dll).
See Conflicts for how severities surface in the
conflict report.
Save tracking
New Vegas save tracking is shipped (Done). On Linux and macOS the game runs
through Proton/Wine, so the Gamebryo save tracker points at the compatibility
prefix:
<Steam>/steamapps/compatdata/22380/pfx/drive_c/users/steamuser/Documents/My Games/FalloutNV/Saves
i.e. modde derives the save folder from the Steam compatdata directory for app
22380, then descends into the Wine prefix’s
Documents/My Games/FalloutNV/Saves. (Note the on-disk folder name is
FalloutNV, not the modde id fallout-new-vegas.) On Windows the game runs
natively, so the same saves live at their native Windows location with no prefix
involved.
What is fingerprinted in that directory:
- files with the
.ess(save) and.fos(co-save) extensions; *.bakbackups are excluded;- detection is non-recursive (the top level of
Savesonly); - every match is filed under the
manualcategory, with the relative filename as its label, sorted newest-first by modification time.
Capture summaries use the by-category form, e.g. capture: 3 saves (3 manual),
so save-profile snapshots tell you how many saves were rolled into each
profile. Save profiles are enabled for this title. See
Save Management for snapshot, restore, and per-profile
isolation.
Plugin and load-order handling
New Vegas orders plugins through a plugins.txt-style file. modde ships
read/write helpers for that format:
- Reading strips comment lines (
#or;), ignores blanks, and removes a leading*enabled-marker from each plugin name, yielding the ordered list of active plugins. - Writing emits one plugin per line, each prefixed with
*to mark it enabled (creating the parent directory if needed).
This gives modde a faithful round-trip of the active-plugin list. What is not
yet shipped for New Vegas is the higher-level plugin UX the Creation-Engine
titles have — automatic master/ESM sorting, LOOT-style ordering, or in-app
conflict resolution. Curate complex load orders with an external sorter and let
modde persist the result; this is part of why New Vegas is Partial.
Installer specifics
- FOMOD is the primary scripted-installer path. New Vegas mods that ship a
fomod/ModuleConfig.xmlare driven through modde’s FOMOD installer just like the Bethesda titles — see the FOMOD Installers guide for the option/flag selection flow. Data/-rooted and bare archives install without FOMOD via theStripContentRoot/ bare-layout recognition described above.- BSA archives (
.bsa) deploy as opaque packed content; modde does not unpack them, and same-stem BSAs are tracked alongside their plugin. - NVSE / OBSE / script plugins (
.nvse,.obse,.dll) deploy as files intoData/and are flagged save-breaking, but modde does not currently bootstrap the NVSE loader executable for you — install the script extender itself manually into the game root, then manage its plugins through modde. - REDmod,
.pak, and SMAPI installers are not applicable to this engine.
Gaming tools and Proton
New Vegas ships no OptiScaler profiles (optiscaler_profiles is empty for
this title), so the upscaler presets that exist for Unreal titles like
Stellar Blade do not apply here. The engine-agnostic
overlays and the Proton tool still work: MangoHud, vkBasalt, ReShade, GameMode,
and the per-game proton tool (Proton build selection, Wine prefix, environment
variables, and DLL overrides) are all available through
Tools & Overlays. DLL overrides matter for script
extenders and ENB-style injectors that ship a d3d9.dll/dxgi.dll — set those
through the proton tool’s override settings so the Wine prefix loads them.
Linux / Proton notes and gotchas
These notes cover the game’s runtime on Linux and macOS, where New Vegas runs through Proton/Wine. On Windows the game runs natively — there is no Wine prefix, and saves and INI files live at their native Windows locations. modde itself runs natively on all three platforms.
- Saves live in the Proton prefix, not your home directory. They are under
steamapps/compatdata/22380/pfx/..., which is why a fresh prefix (deleting compatdata, switching Proton builds) appears to “lose” saves. modde reads them from exactly that path, so launch the game once under Proton before expecting save detection to find anything. - No Heroic detection ships for New Vegas. GOG/Epic copies need an explicit game directory.
- Run the game once before deploying so Proton creates the prefix and the
My Games/FalloutNVtree exists; INI files (Fallout.ini,FalloutPrefs.ini,FalloutCustom.ini) are generated on first launch. - Script extenders are DLL injection. NVSE relies on Proton honouring the
loader; verify the override and that the extender’s own files sit in the game
root, not in
Data/. - The numeric Nexus id is unset, so use direct
nexusmods.com/newvegas/...URLs rather than the in-app browse picker.
Worked example
Home-Manager profile
programs.modde = {
enable = true;
nexus.apiKeyFile = "/run/secrets/nexus-api-key";
profiles.viva-new-vegas = {
game = "fallout-new-vegas";
installMode = "auto";
gameDir = "/home/me/.local/share/Steam/steamapps/common/Fallout New Vegas";
wabbajackList = {
url = "https://example.com/viva-new-vegas.wabbajack";
hash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";
};
tools = {
mangohud.enable = true;
gamemode.enable = true;
proton = {
enable = true;
# Honour a script-extender / injector DLL inside the prefix.
settings.dllOverrides = "d3d9=n,b";
};
};
};
};
If New Vegas is not installed yet, omit gameDir or set
installMode = "await-game"; activation prints the next step and continues
without failing, then deploys once you set gameDir and rebuild. See the
Home-Manager Module reference for every option.
CLI
# Discover what is already in Data/ and import it into a profile
modde scan --game fallout-new-vegas --import-to viva-new-vegas
# Match an existing install against a Wabbajack New Vegas list
modde scan --game fallout-new-vegas \
--manifest /path/to/viva-new-vegas.wabbajack \
--import-to viva-new-vegas \
--prune-duplicates
# Deploy the symlink farm into <install>/Data
modde deploy --profile viva-new-vegas --game fallout-new-vegas
# Snapshot saves from the Proton prefix into the profile
modde save snapshot --game fallout-new-vegas --profile viva-new-vegas
# Deploy then launch through Proton
modde play --game fallout-new-vegas
Wabbajack manifests that name the game FalloutNewVegas or FalloutNV
both map to the fallout-new-vegas id, so either spelling in a modlist resolves
to this title. See Wabbajack for the full modlist
workflow.
See also
- Supported Games — status table and Wabbajack mapping
- Oblivion — the other Gamebryo title sharing this plugin
- Deployment & VFS
- Mod Scanning
- Conflicts
- Save Management
- FOMOD Installers
- Tools & Overlays
- Wabbajack
- Home-Manager Module
- Parity & capability matrix