Documentation
Hi and welcome to the NOMM documentation hub!
Development status
Please keep in mind that NOMM is very much still in development. Things WILL break. Things will be wonky. Things might not work as expected. We’re doing our best to limit those instances as much as we can, but we are a very small team (basically two developers right now) and these things take time.
If you have an issue, please report it and we will get to it as soon as we can. If you want to help us, be as detailed as you possibly can in your ticket.
Here you will find pages describing NOMM’s features, helping users who want to contribute to the project, and guiding users on how 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 website 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 - Our values
An overview of the NOMM team’s values
Transparency & AI
We pride ourselves on our transparency.
NOMM is fully open and licensed under the GNU General Public License v3.0.
All of its code, and the code of this website, are hosted on Github.
There is no other hidden code hosted elsewhere.
The instructions on how to build the app are available on the readme of the repo (spoiler: it’s super easy to build the flatpak yourself).
During the development of NOMM, we have used AI to varying degrees.
In terms of development, AI was mainly used to help with the UI elements of the app, as the lead (only) developer did not have sufficient knowledge with UI development at the time.
All of the “backend” code (read: core systems, mod management, extraction) was done by hand.
The lead developer having a masters degree in computer science should serve to quell any fears that the code produced by the AI was not properly understood and vetted.
Now that we have two developers contributing, all code submissions go through Pull Requests, and need to be reviewed by one other contributor before being merged.
I just want to emphasise that there is 0 risk to the user with regards to code produced by AI.
AI was also used to generate the logo of the app. Said logo was generated as a .png and then transformed to an .svg by a non-AI tool and then heavily manually edited to obtain the logo visible on the website today.
This logo is temporary and will be replaced if a community member proposes their services to produce a new one (I have neither the skills to make a logo myself, nor the money to hire someone to do it - please remember this is a hobby project, I do not make any money from this)
Privacy
NOMM does not have any telemetry, nor does it “phone home” or communicate with any other third party service (other than obtaining information from your platform configuration files, duh).
In fact, even if NOMM wanted to access information it shouldn’t, it would not be able to.
Ads & Pricing
NOMM is free and always will be.
There will never be ads nor will there ever be any obligation to connect any third-party accounts.
Currently there is no way of donating to the NOMM team, as we are not yet satisfied with the current state of the app and would not feel comfortable accepting money for our work.
Even in a hypothetical case where we would start accepting donations, there will never be any locked/premium features, or paywalls.
If you want to help us, please don’t hesitate to participate to the project by testing the app and maybe even contributing by adding support for your games.
1.2 - 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.3 - Game Platform Support
A list of features supported for each game platform
Feature Descriptions
| Feature | Description |
|---|
| Mod Games | NOMM can deploy mods to the game folders |
| Library auto-detection | NOMM can automatically detect libraries and games for that platform |
| Launch games from NOMM | NOMM will display a “play” button that lets users launch the games from NOMM directly |
| Support for out-of-game paths | NOMM can install mods in paths outside of the game’s standard install folder (e.g. 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* | Ryubing (Switch Emulator) |
|---|
| Mod Games |
|
|
|
|
| Library auto-detection |
|
|
|
|
| Launch games from NOMM |
|
|
|
|
| Support for out-of-game paths |
|
|
| N/A |
| Change launch options |
|
|
| N/A |
1.4 - 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 - NOMM Guides
A user guide on how to use NOMM
This section contains a collection of user guides on how to use NOMM.
We hope you find this information useful and remember that we always welcome feedback and PRs either on both the documentation website and the main project
2.1 - The NOMM onboarding process
A quick explainer of the NOMM onboarding process with a few more details
NOMM comes with a really simple & intuitive onboarding experience.
It will ask you for basic information like where you want to store downlaods, and where you want to store your mods in staging.
Staging & Downloads folder selection
What is staging?
In modding spheres you will often hear about staging.
To explain what that means we need to go through the steps of how mods get installed.
- First, you download the mod archive. This is generally a single file in an archive format like
.zip, .7z or .rar. - Then you extract the contents of that archive into an intermediary folder managed by the mod manager called the staging folder.
- Finally, you deploy the contents of what’s in the staging folder to the game files. This can be done via a simple copy, but generally to save space and avoid redundant files, most mod managers opt for some type of linking such as using symbolic links (this is what NOMM uses!)
Keep in mind that:
- Since NOMM uses symlinks, there is no obligation to keep the staging folder on the same drive as your games.
- NOMM will create its own game-specific folders in both the downloads and staging folders.
- NOMM will not create a parent folder in the folder you have selected. That folder will act as a parent folder
To clarify, this will be the file structure for downloads:
[download-folder-you-selected]
|-- Skyrim
| |-- mod_1.zip
| `-- mod_2.7z
|-- Warhammer 40K Darktide
| |-- mod_1.zip
| |-- mod_2.rar
| `-- mod_3.zip
`-- Final Fantasy XII
`-- mod_1.7z
And this will be the file structure for staging:
[staging-folder-you-selected]
|-- Skyrim
| |-- mod_1
| | |-- mod_1_files
| | `-- more_mod_1_files
| `-- mod_2
| `-- mod_2_files
|-- Warhammer 40K Darktide
| |-- mod_1
| `-- mod_1_files
| |-- mod_2
| `-- mod_2_files
| `-- mod_3
| `-- mod_3_files
`-- Final Fantasy XII
`-- mod_1
`-- mod_1_files
Nexus API key
You have the option to add your Nexus API key to NOMM to enable mod and metadata downloads.
This API key can be obtained from the Nexus website via this link and scrolling all the way down.
You may also obtain it yourself by following these steps:
- Click on your avatar top right,
- Select
Site Preferences - Select the
API keys tab on the left
And then in the same way, you will have to scroll all the way down to obtain your API key.
Once you have copied it, you can simply paste it directly in NOMM.
If you want you can simply press “continue” on this step, but obviously that will disable half the features of NOMM.
You can always add this key later from the options menu.
Giving NOMM access
NOMM will need access to a few paths to work properly.
The first thing NOMM will do once initial setup is over is scan your libraries that are configured on supported platforms.
Once it has done that, it will request that the user give it access to those libraries AND the previously selected paths for downloads and staging.
As much as NOMM will be able to continue functionning without the access to all libraries, NOMM will not be able to launch without write access to the downloads and the staging folder as that would directly impact its ability to mod literally any game.
Once you have used the command generated by NOMM, you will have to restart it for those new access rights to be provided to the app.
And that’s it, you’re done!
Next steps
Even though NOMM’s UI was designed to be simple and intuitive, we still made a wiki page on navigating the UI if you’re lost.
You can also check out the troubleshooting guide if your games/mods aren’t working or your NOMM is facing problems.
2.2 - Launcher Presentation
A quick presentation of the launcher’s features
Initial scan & access check
Your first step when you launch the app is the “launcher”. It is where all the library-based logic happens.
Access check
First, the launcher checks if it has access to all your libraries.
If it doesn’t it will display a special screen to ask you to provide access or to ignore and continue anyway.
Access to special directories
If NOMM is lacking access to either the downloads or the staging directories it will not let you ignore the warning and launch the application. This is intentional and was designed to stop the user from potentially launching NOMM in a broken state.
Game detection
The launcher will then check all of your config files and try and match them with games in your libraries.
Once that process is done (generally takes <1 second), it will display all your games in a neat library-style format.
Main screen
Congratulations, you’ve reached NOMM’s main library window!

Duplicate game detection
NOMM is not capable of detecting two copies of the same game (e.g. one on Steam and one on GOG). It will pick one of the two. If you have two copies of the same game, please make sure you only install it once, or that you fully uninstall the second copy before scanning for games.
Each detected game will be represented by a tile. Each tile has:
- the logo of the platform it was detected on bottom right
- the number of downloaded mods displayed bottom left
- the detected path of that game when you mouse over
From here you can do one of three things:
You can:
- Select a game and move on to the dashboard
- Modify the options
- Force a full rescan of libraries & config files
Options
NOMM comes with some options to customise your modding experience.

First you have the options to modify the downloads and staging paths. Doing this will cause NOMM to check that it has access to these new folders right away.
You also have the option to modify the Nexus API key (with a little button that checks if the API key is valid)
“General” settings
Per-game accent colour
In the configuration yamls for each game, it is possible to define a colour that corresponds to that game.
If that value is set and this option is turned on, when the user launches a game from the launcher, the primary colour will be replaced by that configured colour.
Skip Launcher
If this option is turned on, the app will entirely skip the launcher and instantly launch the dashboard for the last selected game.
Disable download window
By default, NOMM spawns download windows when downloading files from supported platforms. It is possible to hide those windows entirely and only show the notifications that signal a download started and was finished (or an error occurred).
Fullscreen NOMM
This will launch the dashboard windows in full screen (this will not impact the launcher windows).
Forcing a rescan
You can always force NOMM to rescan libraries.
This will:
- Force NOMM to scan for all libraries
- Force NOMM to un-ignore previously ignored libraries
- Force NOMM to syncronise the configuration files with the versions included in the release
Custom YAML modifications
If you have done any modifications to your yaml configuration files on files that were already included in the release, these changes will get overwritten when forcing a rescan.
2.3 - Dashboard Presentation
A quick presentation of the dashboard’s features
The NOMM dashboard is split into three tabs.
The Mods tab
Let’s start by explaining the handful of buttons top right.
| Icon | Description |
|---|
| Opens the staging folder in your file explorer |
| Refreshes metadata with latest information from the mod platform. This will replace all current metadata, including the mod’s name with newer versions if available. This will also check for updates to said mods. |
| Launches the game via the game’s platform |
The mods tab lists all the mods currently available in the staging folder.
As previously mentioned, checking for updates is done via the metadata refresh button ().
Once the button is clicked, all mods that have mod IDs will get their data refreshed from the connected modding platform.
Adding a mod ID to a mod
It is possible to retroactively add a mod ID to a mod so that its metadata can be refreshed. Please see the section on the preview panel for more information.
If a mod is detected, a new button will appear on the mod’s row in the list.
Clicking this button will take you to
False positives
Unfortunately, many mod authors do not properly update the latest version ID on mod hosting websites. This means that NOMM will often detect false positives. If you notice that the mod version you currently have is the latest one there is, but NOMM is still indicating that there is a mismatch in version numbers, please feel free to contact the mod’s author to ask them to update the mod version information on the mod hosting website. There is nothing the NOMM team can do about this. (Though we are looking into ways to let the user manually ignore updates)
The mod list
The main part of this screen is the list of currently installed mods.
Here is where we need to differentiate between manually downloaded mods and mods downloaded through NOMM.
- For manually downloaded mods, all NOMM knows is
- the file’s name
- the file’s download date
- the file’s contents
- For mods downloaded through NOMM, we have also access to:
- The mod’s real name (often quite different from the file name)
- The author(s)
- The uploader
- The version
- The description
- The link to upvote/endorse a mod
- The thumbnail
Row contents
Each row contains (if the mod was downloaded from a supported platform)
On the left side:
- A toggle to enable/disable the mod
- The mod’s name as a title of the row (or the file’s name if the mod was manually downloaded)
- The mod’s author(s) as a subtitle
On the right side:
- The update available indicator () (only appears if an update is available)
- The mod installation () date & time (you can mouse over this to get a full date format)
- The mod enabled () date & time (you can mouse over this to get a full date format)
- A bin () button to remove a mod from the staging folder. This does not remove the downloaded files, only the installed files. It will still be possible to reinstall the mod from the downloads tab later.
The mod preview pane
With NOMM 0.10.0 we have introduced a mod preview pane, accessed by clicking directly on any row in the mod list.
| Line | Button title | Action | Description of actions |
|---|
| More Info | Mod Description | Click | Opens up the full description of the mod in NOMM |
| Nexus | Click | Opens web browser on Nexus page of that mod |
| Mod Contents | X File(s) | Click | Opens file explorer where mod is stored in staging folder. Mouse over lists contents. |
| | Mouseover | List contents of mod |
| Versioning | Version badge | Click | Opens up mod platform page on files tab. |
| | Mouseover | If a changelog was provided ( will be displayed) Displays the changelog |
| Deploy to path | Path | Click | Opens file explorer where mod is deployed in game files |
| | Mouseover | Displays the full deployment path |
| Edit () | Click | If mod is disabled Allows the user to change the deployment path
|
| Uploader | Uploader badge | Click | Opens up mod platform on uploader’s profile |
| Endorsements | Endorsement count | Click | Endorse/Unendorse the mod |
| Mod ID | Mod ID | Click | Modify a mod’s ID |
Changing the deployment path
The preview pane allows the user to change the deployment path of a specific mod.
This is useful for mods that don’t fit the mold and need to be deployed somewhere different than most other mods for a game.
For obvious reasons, this can only be done when the mod is not deployed.
This change is permanent until the mod is removed or reinstalled. In those cases, you will need to re-do the change.
Changing a mod ID
The preview pane also allows the user to change a mod’s ID.
This is generally used when you manually downloaded a mod and you want to link that mod to an entry on a supported modding platform.
After having modified the mod IDs of the mods you want to link, you have to refresh the metadata of the mods.
The downloads tab
The downloads tab is designed to handle the downloaded mods (i.e. the archives).
The downloads tab is a lot more straightforward than the mods tab.
There is no preview pane, and very limited information on the mods displayed.
Let’s look at a row again:
On the left we have:
- As a title, the name of the mod (if the mod was downloaded via NOMM)
- As a subtitle, the name of the file
On the right we have:
- The version of the downloaded mod
- The downloaded date ()
- The installed date ()
- The “Install” button (replaced by the “Reinstall” button when the mod is already installed)
- A bin () button to remove a mod archive from the downloads folder. This does not disable the mod or remove it from the staging folder, it only deletes the downloaded archive file. It will still be possible to enable/disable the mod from the mods tab.
Installing/reinstalling a mod
When you click the “install” button on a row of the downloads tab, the respective mod’s contents will be extracted from its archive to the game’s folder in the staging folder.
If the game is configured to have multiple mod paths, you will have to choose where to deploy the mod to.
Reinstalling a mod does the same exact thing, simply overwriting the previous version that was installed.
The utilities tab
The utilities tab is still going to see some extensive development, but basically currently it is a place where specific tools to help mod that game can be found, downloaded, and installed. Think special tools that are necesary to mod a game, like a mod framework such as SKSE for Skyrim.
It will very likely see a major touch up (or maybe even be replaced by something completely different) in the next major release.
3 - 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.
List of currently supported games
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 out the intructions here
3.1 - Baldur's Gate 3
Frameworks / utilities supported
| Name | Description |
|---|
| Norbyte’s Script Extender | “For people that just want to press one button and have everything correctly asigned.” |
Manual actions required
NOMM can only handle mods that do not require installation via BG3MM.
If a mod needs to be installed in the bin directory, it should work.
If the mod requires injection into the game and modification of a load order file, it won’t.
I recommend that users use NOMM to handle the native loader mods and the in game mod manager for all standard mods.
Current configuration file
name: "Baldur's Gate 3"
steam_id: 1086940
mods_path:
- path: "{game_path}/"
name: Native
description: "Used for native mods that require the Native mod loader, such as the 'Native Camera Tweaks' mod."
nexus_id: "baldursgate3"
essential-utilities:
norbyte-script-extender:
name: "Norbyte's Baldur's Gate 3 Script Extender"
version: 1.5
creator: Norbyte
creator-link: https://github.com/Norbyte
source: "https://github.com/Norbyte/bg3se/releases/download/updater-20240430/BG3SE-Updater-20240430.zip"
utility_path: "bin/"
enable_command: ""
3.2 - Ready or Not
Frameworks / utilities supported
Manual actions required
No manual action required
Current configuration file
name: 'Ready or Not'
steam_id: 1144200
mods_path: "Content/Paks"
nexus_id: "readyornot"
3.3 - The Witcher 3
Frameworks / utilities supported
Manual actions required
No manual action required
Current configuration file
name: 'The Witcher 3'
steam_folder_name: 'The Witcher 3'
steam_id: 292030
nexus_id: "witcher3"
gog_id: 1207664643
mods_path: mods/
3.4 - Warhammer 40,000: Darktide
Frameworks / utilities supported
Manual actions required
Summary
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.
Details
To install mods on Warhammer 40K Darktide, you need to install a utility called “Darktide Mod Loader”.
On NOMM, this can be done directly via the utilities tab, simply click the download and install buttons.
After this, you will be able to download all of your mods through a supported modding platform.
Once you are done downloading, installing, and enabling all the mods, you will have to edit the load order text file.
To do so, simply go on the utilities tab and click the “Edit Load Order” button.
The instructions should be displayed in the file itself, but basically you need to write the name of the mods on each line.
If you do not do this, your mods will not be enabled.
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"
4 - 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
| |
accent_colour | The accent colour that will replace the primary colour when modding this game, if the per-game-accent-colours option is enabled. Please provide a value in hex format. | | |
wiki_link | The id of the wiki page on this repo | | |
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.