Adding support for your game

A quick tutorial on how to create a yaml configuration for a game

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

FieldDescriptionYAML ExampleReq
nameThe full name of the game, with any symbols, spaces, and formatting kept intact.
name: "Metal Gear Solid Δ: Snake Eater"
steam_idThe Steam App ID. Can be found via SteamDB or in the game's store page URL.
steam_id: 2417610
steam_folder_nameThe exact folder name for the game inside your steamapps directory. Only required if it differs from the standard game name.
steam_folder_name: "MGSDelta"
nexus_idThe Nexus Mods game key used for downloads. Generally the game name with no symbols and all lowercase, but verify on the site first.
nexus_id: "metalgearsoliddeltasnakeeater"
gog_idThe GOG Store ID. This can be completely omitted if the game is not available on GOG.
gog_id: 1207666893
load_order_pathThe path for games with a text-editable load order. Specifying this enables a shortcut button in the app to edit the file directly.
load_order_path: mods/mod_load_order.txt

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 path the mods will be deployed to
  • the name that will be displayed to the user
  • the description that 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."

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.