Skip to main content

dao-modman

Terminal based mod manager for Dragon Age: Origins on Steam/Proton (Linux), heavily inspired by MO2.

Screenshot of the TUI

A tribute to a masterpiece

DA:O is, in the author's opinion, one of the greatest RPGs ever made. It was released in 2009, more than 15 years ago, and is still the best entry of its series. While the writing has aged perfectly, the graphics have not, and the mechanics only in part. Combat is still fun, especially at higher difficulty levels.

Motivation

The computer you are running this on is probably very different from the one you used when this game came out. If you have moved on from Windows to Linux since then like the author did, the goal of this project is to be the only tool you need.

Features

  • Nexus Integration: Download mods from nexusmods
  • Archive formats: .dazip, .override, .zip, .7z and .rar, also nested
  • Conflict Detection and Resolving
  • Mod Ordering: no more prefixes for mod directories - load order is defined in the manager
  • Mix and Match: pick which parts of a mod you want, in the UI. This selection persists if you disable a mod and reenable it later
  • Setup: to get the game running smoothly, dao-modman handles the technical stuff:
    • LAA Patch so the game can use 4GB of RAM instead of its intended 2GB
    • enabling the developer console
    • scaling down (modded) textures on heavily modded games to fit into the 4GB limit
  • dazip installation: No need to run daoupdater or other tools via wine
  • chargenmorphcfg.xml merging: runs automatically if you add/remove a mod containing character morphs
  • Mixed mods with both addins and override files: these often need manual steps with the Windows-based mod managers. Some very popular mods have a lot of posts about this problem, like the Winter Forge.
  • Configurable mods: supports the .override format introduced by DAO-Modmanager
  • Item Browser: list items added by a mod. Automatically writes the item DB for Add any item visual deluxe when installed, freeing you from yet another windows tool to run manually.

Supported platforms

Currently only the Steam release on Linux (Proton). Windows and the GOG/EA releases are not supported yet. Porting is not a big deal, but it needs testing on those setups: volunteers are welcome.

Setup

Install it from PyPI with uv, or with pipx:

uv tool install dao-modman             # or: pipx install dao-modman

Then store your personal API key from nexusmods.com where dao-modman finds it:

mkdir -p ~/.config/dao-modman
echo 'NEXUS_API_TOKEN=...' > ~/.config/dao-modman/.env
chmod 600 ~/.config/dao-modman/.env

The token is read from the environment, ./.env, or ~/.config/dao-modman/.env. Go to Account Settings/API Keys to create a token. The usual security recommendations apply. If this gets more than 10 users, the author will apply for an app-specific API key.

Run

To run the mod manager in UI mode, use:

dao-modman                             # run the TUI

Most functionality is also exposed via a command line interface:

dao-modman nxm 'nxm://...'             # hand a "Mod Manager Download" link to the TUI
dao-modman install-nxm-handler         # register as nxm:// handler
dao-modman laa status|restore|patch --exe PATH   # Large Address Aware patch
dao-modman console status|enable|disable   # developer console
dao-modman revisions init              # keep a git history of the library's metadata
dao-modman chargen                     # check the merged character creator list
dao-modman conflicts                   # which mods ship the same files, and who wins
dao-modman conflicts accept NAME ... | --all   # mark conflicts as intended

.rar archives need unrar, 7z or bsdtar on PATH; they are tried in that order, since bsdtar cannot read solid archives. Some mods on Nexus are only available as .rar.

UI Hotkeys

The bar at the bottom shows the everyday keys; ? lists all of them.

Key Action
space enable / disable mod
K / J move mod up / down in the load order
r rename mod (display name only)
g set group
p options of an override package
n add mod from Nexus (URL, id or nxm://)
i import a local archive
e edit path operations
o open the mod's Nexus page in the browser
c check Nexus for updates
u update the selected mod in place
v conflicts of the selected mod
L items the mod adds, by in-game name
a / x apply / unapply
l launch the game through Steam
h hide / show the game's official DLC
/ filter by name or group (esc clears)
t tools (LAA, textures, all conflicts ...)
delete remove mod from the library

Usage

See the user and behind-the-scenes documentation.

License

MIT: free to use, change and pass on, as long as the copyright notice naming the author stays with it.

Disclosure

Most of the code in this project was co-authored by claude. In-game testing was all done by a human, namely the author of this project.

Contributing

Testers on other platforms are very welcome: Windows, and the GOG and EA releases of the game. If you have such a setup and want to help, open an issue and say what you run.

Pull requests are welcome too. Please run the tests and the linter (see below) before sending one.

Development

To work from source, clone this repository and run uv sync; then start it with uv run dao-modman.

uv run pytest                                  # tests
uv run ruff check . && uv run ruff format .    # lint and format

Metadata

Release files for dao-modman 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dao-modman 0.1.0
File Size Uploaded
dao_modman-0.1.0.tar.gz 315.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dao-modman 0.1.0
File Interpreter ABI Platform
dao_modman-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 406.3 kB

Release files / dao_modman-0.1.0.tar.gz

Download URL dao_modman-0.1.0.tar.gz
Size 315.7 kB
Tags Source
SHA-256 checksum
How to use checksums
914a21cb917216f057c8903c0ec122511f0e6da6d965f0d52540826307df3c18
BLAKE2b-256 checksum
How to use checksums
06c1431831b04ac260aeb180eaca8df3c561b32c8ee9a1b2e79598ca11a53552
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.24 {"installer":{"name":"uv","version":"0.12.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"CachyOS Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / dao_modman-0.1.0-py3-none-any.whl

Download URL dao_modman-0.1.0-py3-none-any.whl
Size 90.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6ed8c69828f709c05c9a848b7f2fe1942dece83a2670e7ea7ca2b66d5e0808f6
BLAKE2b-256 checksum
How to use checksums
34cb13f199f908f80e481ddcdda9284cd9c4a26c007c6502d30be4242bf1d645
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.24 {"installer":{"name":"uv","version":"0.12.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"CachyOS Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page