Documentation
Hi and welcome to the NOMM documentation hub!
Here you will find pages describing NOMM’s features, helping users who want to contribute to the project, and guiding users to mod specific games.
We hope you find this information useful and remember that we always welcome feedback and PRs either on both the documentation project and the main project
1 - About NOMM
A description of NOMM’s features
Information in this section is meant to help users better understand the different features that NOMM provides
1.1 - Flatpak Security
An explanation of what makes NOMM secure and privacy-first
A short explainer on Flatpaks
From the official Flatpak website:
Flatpak is a framework for distributing desktop applications across various Linux distributions. It was created by developers with a long history of working on the Linux desktop and is run as an independent open source project.
We also have a specific paragraph on the following:
…one of Flatpak’s main goals is to increase the security of desktop systems. This is achieved by isolating applications from one another and limiting their access to the host environment.
Basically Flatpaks are designed to be isolated. The user is the one who controls what the flatpak has access to, in detail.
You can control whether the Flatpak can connect to the internet, whether it can see different types of hardware connected to your computer, and which files specifically on your computer it can read or write to.
How NOMM handles isolation
NOMM was thought to request the absolute minimum rights it needs to function.
You can see the current access it requires in the latest manifest file in the repo.
But it boils down to the following:
- Internet access
- A few very specific paths to get the locations of your libraries (basically paths to Steam / Heroic configuration files)
…And that’s it!
Once it has found your libraries, NOMM will simply and transparently ask you to execute a command that will give it access to them!
You, the user, will decide whether or not you want NOMM to have this access.
We understand if you don’t want to share all your libraries with NOMM, so we give you the opportunity to ignore this request at startup.
1.2 - Game Platform Support
A list of features supported for each game platform
Feature Descriptions
| Feature | Description |
|---|
| Library auto-detection | NOMM can automatically detect libraries and games for that platform |
| Support for out-of-game paths | NOMM can install mods in paths outside of the game’s standard install folder (i.e. in user data) |
| Change launch options | NOMM can change the game’s launch options if a mod framework requires it |
Support
| Feature | Steam | GOG* | Epic Games* |
|---|
| Library auto-detection |
|
|
|
| Support for out-of-game paths |
|
|
|
| Change launch options |
|
|
|
1.3 - Modding Platform Support
A list of features supported for each modding platform
Feature Descriptions
| Feature | Description |
|---|
| Mod Downloads | NOMM can intercept mod downloads from that website and store them in the user’s downloads folder for that game |
| Collection Downloads | NOMM can download “collections” of mods from websites that support this feature |
| Check for updates | NOMM can check for mod updates from the website |
| Metadata refresh | NOMM can update mod information (metadata) when refreshing from the website |
Support
| Feature | Nexus Mods |
|---|
| Mod Downloads |
|
| Collection Downloads |
|
| Check for updates |
|
| Metadata refresh |
|
2 - Game Guides
Guides created by the community to help users mod games.
Information in this section is meant to help users mod games and inform them as to what NOMM can or cannot do for each one.
Support Ratings
Each game is given a “Support Rating” similar to protonDB’s, that represents how easy it is to mod with NOMM:
| Icon | Name | Description |
|---|
| gold | NOMM can handle most mods (>80%) but there may still be some that are not supported, or there are some minimal actions to do outside of NOMM to support mods. |
| silver | NOMM can handle a majority of mods (>50%), but there are a significant amount that are not supported, or there are some non-insignificant actions to do outside of NOMM to support mods. |
| bronze | NOMM can handle some mods (<50%) but is mainly considered as a tool for niche mod flows, or simply handling nexus downloads. |
Contributors
This section is maintained by NOMM community volunteers, who have spent time working to help bring you easy to understand guides.
Can’t find your game?
If you see your game is missing from the list, please don’t hesitate to add support for it by checking otu the intructions here
List of currently supported games
2.1 - Warhammer 40,000: Darktide
A guide on how to mod Warhammer 40,000: Darktide with NOMM
Frameworks / utilities supported
Manual actions required
The only manual action required is editing the load order added by DML.
A button is available to open it in the user’s favourite text editor in the utilities tab.
Current configuration file
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"
3 - 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.
| Field | Description | YAML Example | Req |
|---|
name | The full name of the game, with any symbols, spaces, and formatting kept intact. | name: "Metal Gear Solid Δ: Snake Eater"
| |
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. | steam_folder_name: "MGSDelta"
| |
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. | nexus_id: "metalgearsoliddeltasnakeeater"
| |
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. | 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.
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."
Note
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.