Mod Manifest
Each mod's folder contains a mod.toml file: the mod's manifest, which Lustral reads to identify the mod, its requirements and how to load it. The SDK generates it from the project file on every build; set SDK properties rather than editing the manifest. This page describes the format for reference and for tools that produce mods without the SDK.
# Generated by Lustral.Sdk from BetterHud.csproj. Do not edit; changes are overwritten on build.
id = "you.betterhud"
name = "Better HUD"
version = "1.2.0"
assembly = "BetterHud.dll"
description = "A cleaner HUD with an FPS counter."
authors = ["you"]
license = "MIT"
[links]
website = "https://example.com/betterhud"
source = "https://github.com/you/betterhud"
[requires]
lustral = "^0.1"
backends = ["mono"]
games = [
{ name = "Lethal Company", developer = "Zeekerss", versions = ["v72*", "v73*"] },
]
[dependencies]
"someone.uikit" = "^1.2"
[optional-dependencies]
"someone.extras" = "*"
[incompatibilities]
"someone.otherhud" = "*"
[update]
source = "github:you/betterhud"Keys
| Key | Type | SDK property | Description |
|---|---|---|---|
id | String, required | ModId | Lowercase letters and digits, separated by single ., - or _. |
name | String | ModName | Defaults to the ID. |
version | String, required | Version | A semantic version. |
kind | "mod" or "library" | ModKind | Defaults to "mod". |
assembly | String | (the project's assembly) | The assembly containing the mod's Mod class, relative to the mod's folder. Optional for libraries without one. |
exports | Array of strings | ModExport items | The assemblies a library exposes to its dependents, by name. |
description | String | Description | |
authors | String or array | Authors | |
credits | String | ModCredits | |
license | String | PackageLicenseExpression | An SPDX license expression. |
load-order | Integer | ModLoadOrder | Defaults to 0; among mods that do not depend on each other, lower values load first. |
color | String | ModColor | A Unity color name or #rrggbb. |
[links]
Named HTTP(S) links shown with the mod's details: website (PackageProjectUrl), source (RepositoryUrl), and any links defined with ModLink items.
[requires]
| Key | Type | SDK property |
|---|---|---|
lustral | Version range | ModLustralVersion |
unity | Version range | ModUnityVersion |
backends | Array of "mono", "il2cpp" | ModBackends |
platforms | Array of "windows", "linux", "macos", optionally with -x64, -x86, -arm64 | ModPlatforms |
processes | Array of executable names | ModProcesses |
games | Array of { name, developer, versions } | ModGame items |
An omitted key imposes no requirement. See Compatibility Requirements for how requirements are evaluated.
[dependencies], [optional-dependencies], [incompatibilities]
Tables mapping mod IDs to version ranges. A mod cannot appear in both dependencies and optional-dependencies, or be both a dependency and an incompatibility. See Mod Dependencies.
[update]
| Key | Description |
|---|---|
source | github:owner/repository, or the HTTPS address of a JSON feed. |
asset | For GitHub sources: the release file to download, with * wildcards. |
Unknown Keys
Lustral ignores unknown keys, so manifests written by newer SDK versions can still be read; their lustral range determines whether the installed Lustral version is supported. A manifest that is not valid TOML, or that violates the rules above, prevents the mod from loading, and the reason is logged.