Adding support for your game
4 minute read
One of the main ideas behind this project is that games are defined by easy to create config .yaml files.
This means that anyone can create a simple yaml for their game and submit it to the project with little to no coding knowledge and the tool will automate the rest.
This yaml file will need to be placed in [nomm root folder]/default_game_configs
For instance, if you would want to add support for Stadew Valley, you would create a [nomm root folder]/default_game_configs/stardew_valley.yaml file.
Basic Information
| Field | Description | YAML Example | Req |
|---|---|---|---|
name | The full name of the game, with any symbols, spaces, and formatting kept intact. | | |
steam_id | The Steam App ID. Can be found via SteamDB or in the game's store page URL. | | |
steam_folder_name | The exact folder name for the game inside your steamapps directory. Only required if it differs from the standard game name. | | |
nexus_id | The Nexus Mods game key used for downloads. Generally the game name with no symbols and all lowercase, but verify on the site first. | | |
gog_id | The GOG Store ID. This can be completely omitted if the game is not available on GOG. | | |
load_order_path | The path for games with a text-editable load order. Specifying this enables a shortcut button in the app to edit the file directly. | |
Deployment Paths
It is also required to define a mods_path to which mods should be deployed to. This can be defined in two ways:
Simple
This is the “legacy” configuration, a simple path where the mods need to be installed when they are enabled.
mods_path: "mods/"
Multiple
This is the more complex configuration, where you can add as many paths as you want. Each entry in the list is a dictionary that contains three fields:
- the
paththe mods will be deployed to - the
namethat will be displayed to the user - the
descriptionthat will help the user choose which path to select
mods_path:
- path: "{user_data_path}/drive_c/users/steamuser/AppData/Local/Larian Studios/Baldur's Gate 3/Mods"
name: Default
description: "Used for most mods, the in game mod manager included"
- path: "{game_path}/"
name: Native
description: "Used for native mods that require the Native mod loader, such as the 'Native Camera Tweaks' mod."
mods_path can contain as many paths as you want, but the goal here is not to add a path for a single mod. If there is only one mod using that path, chances are it is a library mod that should be installed with the utilities section below.
Essential utilities
Nomm lets you define some “essential utilities” that will be used to mod a game. Think libraries or modding tools that have their own needs in terms of installation complexity that don’t fit with other “standard” mods and generally require additional actions to get them set up.
essential-utilities: # this lets you define things such as mod loaders or essential utilities
darktide-mod-loader: # you can have multiple ones, each one needs its own unique key
name: Darktide Mod Loader # the name of the tool
creator: Talon-d # the creator of the tool
creator-link: https://github.com/talon-d # a link to the creator's page, portal, social, whatever
whitelist: d8input.dll # a list of files that should ONLY be included (optional)
blacklist: d7input.dll # a list of files that should NOT be included (optional)
source: "https://github.com/talon-d/darktideML-4linux/releases/download/1.5/darktideML-4linux1-5.zip" #the actual thing we'll need to download
utility_path: "" # where the utility needs to be extracted to
enable_command: "sh handle_darktide_mods.sh --enable" # any command that needs to be run (from the root of the game folder) to enable the mod loader
steam_launch_options: "babla" # any launch option that needs to be added to the game on Steam
Full example
Here is a functioning example for the game Warhammer 40,000: Darktide:
name: "Warhammer 40,000: Darktide"
steam_id: 1361210
mods_path: "mods/"
load_order_path: "mods/mod_load_order.txt"
nexus_id: "warhammer40kdarktide"
essential-utilities:
darktide-mod-loader:
name: "Darktide Mod Loader"
version: 1.5
creator: "Talon-d"
creator-link: https://github.com/talon-d
source: "https://github.com/talon-d/darktideML-4linux/releases/download/1.5/darktideML-4linux1-5.zip"
utility_path: ""
enable_command: "chmod +x tools/dtkit-patch; sh handle_darktide_mods.sh --enable"
You can find more examples directly in the repo here.