Skip to content

Installation

Bobby Comet edited this page Sep 7, 2026 · 1 revision

MO2 Installation & Setup

Kalium does not replace MO2; it prepares and maintains the environment that allows Windows MO2 to run reliably on Linux through Steam + Proton.

What Kalium Automatically Sets Up

When you install or set up an MO2 instance with Kalium, it can perform the following:

  1. Creates a Steam non-Steam game shortcut
    This allows MO2 to appear in Steam → Non-Steam Games and run through Proton.

  2. Configures Proton

    • Sets the correct Proton version for this MO2 instance
    • Writes the required CompatToolMapping entry to steam/config/config.vdf
  3. Creates Kalium Tools

    A folder called Kalium Tools is created next to MO2 containing helper scripts and configuration:

    • Fix Game Registry.sh — fixes registry entries for detected games
    • NXM Toggle.sh — toggles Nexus Mods NXM links on or off
    • Launch MO2.sh — launch helper that automatically sets STEAM_COMPAT_MOUNTS
    • Winetricks.sh — launches the Winetricks GUI for the MO2 environment
    • dxvk.conf — disables Graphics Pipeline Library for improved compatibility
  4. Installs or updates USVFS 0.5.7.2 (when enabled)

    Updates the USVFS binaries used by MO2. This addresses virtual-folder duplication and related performance issues encountered with newer Wine/Proton environments.

  5. Sets VFS memory

    Writes the following to ModOrganizer.ini:

    [vfs]
    max_memory=2147483648

    This sets the USVFS memory limit to 2 GB, which can help with larger modlists and tools such as Nemesis.

  6. Sets the MO2 theme

    Writes the bundled Dracula theme to ModOrganizer.ini:

    [Settings]
    style=dracula.qss
  7. Binds the Managed Game (optional)

    If you select a game during setup, Kalium writes the game's name and path to ModOrganizer.ini so MO2 knows which game the instance is associated with.

  8. Registers the instance with Kalium

    Kalium records the MO2 instance and its Proton prefix so future Kalium commands can locate and manage the environment.


What Kalium Does After Setup

After the environment has been configured, Kalium:

  1. Shows a success message containing the MO2 shortcut AppID and relevant instructions.
  2. Tells you to fully exit Steam using Steam → Exit, then restart Steam so the updated Steam configuration is reloaded.
  3. Launches MO2 for the first time, allowing it to create ModOrganizer.ini if it does not already exist.
  4. Automatically enables the NXM handler for the selected MO2 instance.

Where Kalium's Job Ends — and MO2's Begins

Kalium is an environment and compatibility layer. It does not become responsible for managing the mods themselves.

Kalium's Role What Kalium Does MO2's Role
Steam Integration Creates the non-Steam shortcut, configures Proton, and writes the required Steam configuration
Proton + Wine Setup Configures the Proton environment, installs required Windows dependencies, applies registry fixes, and configures compatibility settings Runs as a Windows application through Proton
Library & Environment Support Creates Kalium Tools and configures secondary-drive access through STEAM_COMPAT_MOUNTS Manages mod files and plugins
Nexus Mods (NXM) Registers the browser handler and controls NXM activation for the managed instance Receives and processes NXM downloads
USVFS / VFS Tuning Updates USVFS and configures its memory limit Provides the virtual file system used by MO2
Theme & UI Applies the bundled dracula.qss theme Stores and uses the theme through its own settings
Managed Game Binding Writes gameName and gamePath to ModOrganizer.ini Uses the selected game configuration at runtime
Backpatch Support Provides Steam depot commands for supported games Runs the resulting game installation
LOOT Integration Installs portable Windows LOOT and registers it as an MO2 executable Launches LOOT through its configured executable

Important: Kalium does not manage your mods, load order, plugins, or MO2 configuration beyond the specific settings it needs to establish the Linux/Proton environment.

Kalium prepares the environment. MO2 manages the mods.


Installation Flow

The AppImage GUI Is Recommended

For most users, the graphical interface is the easiest way to configure an MO2 instance.

The CLI equivalent is:

/path/to/Kalium-1.1.0-x86_64.AppImage setup-mo2 -p /path/to/mo2 -n "My MO2"

The setup process will:

  1. Select or detect the MO2 installation.
  2. Select a game, or skip game selection for now.
  3. Choose the Proton version.
  4. Configure the Steam non-Steam shortcut.
  5. Configure the Proton environment.
  6. Create the Kalium Tools directory.
  7. Apply the selected MO2 configuration.
  8. Register the MO2 instance with Kalium.

Key ModOrganizer.ini Changes

Kalium modifies specific MO2 settings when required. Some settings are conditional and are only written when the corresponding feature is enabled.

1. USVFS Settings

Kalium can configure the VFS memory limit:

[vfs]
max_memory=2147483648

2147483648 bytes = 2 GB.

This is particularly useful for larger modlists and tools that place significant demands on USVFS.

2. Theme

Kalium can apply its bundled Dracula theme:

[Settings]
style=dracula.qss

3. Managed Game Binding

If you select a game during setup, Kalium writes the game's identity and path:

[General]
gameName=Skyrim Special Edition
gamePath=@ByteArray(Z:/full/path/to/Skyrim Special Edition)
first_start=false

The exact path depends on your installation.

4. LOOT Installation & Registration

When LOOT is installed through Kalium, it performs the following steps.

A. Creates a Portable LOOT Folder

A LOOT directory is created next to the MO2 installation:

MO2/
├── ModOrganizer.exe
├── ModOrganizer.ini
└── LOOT/
    ├── LOOT.exe
    └── run_loot.bat

LOOT.exe is the portable Windows version of LOOT.

B. Creates the LOOT Recovery Launcher

Kalium creates run_loot.bat with the appropriate --game= argument for the selected game.

Example:

@echo off
cd /d "%~dp0"
LOOT.exe --game="Skyrim Special Edition"

This provides a reliable launcher for LOOT and can also be used to recover the LOOT executable registration if necessary.

C. Registers LOOT with MO2

Kalium registers LOOT as a custom executable in ModOrganizer.ini.

The effective registration looks like:

[customExecutables]
size=1

1\title=LOOT
1\hide=false
1\ownicon=true
1\toolbar=true
1\binary=Z:/full/path/to/MO2/LOOT/LOOT.exe
1\workingDirectory=Z:/full/path/to/MO2/LOOT
1\arguments=--game="Skyrim Special Edition"

The exact executable index may differ depending on how many custom executables already exist in the MO2 instance.


Summary of Kalium's Modifications

File / Section What Kalium Adds or Changes
ModOrganizer.ini [vfs] max_memory, [Settings] style=dracula.qss, optional game binding, and LOOT executable registration
LOOT/ Portable LOOT.exe and run_loot.bat recovery launcher
Kalium Tools/ Fix Game Registry.sh, NXM Toggle.sh, Launch MO2.sh, Winetricks.sh, and dxvk.conf
steam/config/config.vdf CompatToolMapping entry associating the MO2 shortcut with its Proton version
steamapps/compatdata/<AppID>/ Proton prefix for the MO2 non-Steam shortcut, including Kalium's shortcut metadata

The Kalium/MO2 Boundary

Kalium is intentionally not a Linux rewrite of MO2.

Its responsibility is to prepare and maintain the environment required for Windows MO2 to operate correctly through Steam + Proton.

That includes:

  • Proton configuration
  • Wine dependencies
  • Steam integration
  • Steam library detection
  • Secondary-drive mounting
  • NXM handling
  • USVFS updates
  • VFS configuration
  • MO2 environment configuration
  • LOOT integration
  • Game backpatching
  • Diagnostics and repair tools

MO2 remains responsible for:

  • Mod installation
  • Mod organization
  • Load order
  • Plugins
  • Profiles
  • Virtual file system operation
  • Running modding tools
  • Managing the actual modded game environment

Kalium prepares the environment. MO2 manages the mods.

This separation is intentional: Kalium can improve the Linux/Proton environment without becoming responsible for the internal behavior of MO2 itself.

Clone this wiki locally