Neon Mod Manager v0.1 — Cyberpunk 2077 mod manager for Linux
Features: - Enable/disable mods (.archive <-> .archive.disabled) - Load order via filename prefixes (000_, 010_, 020_) - Conflict detection - Profile save/load - Nexus Mods nxm:// protocol handler - PyQt6 GUI, Wayland compatible - No REDmod, no FUSE, no Wine prefix
This commit is contained in:
@@ -0,0 +1,150 @@
|
|||||||
|
# 🎮 Neon Mod Manager
|
||||||
|
|
||||||
|
A Cyberpunk 2077 mod manager for Linux. Built with PyQt6.
|
||||||
|
|
||||||
|
## Why?
|
||||||
|
|
||||||
|
Because existing mod managers (Mod Organizer 2 / Fluorine) have problems on Linux:
|
||||||
|
- **REDmod deployment fails** with permission errors on FUSE mounts
|
||||||
|
- **FUSE VFS** blocks file access and causes crashes
|
||||||
|
- **Wine prefix** management is fragile and complex
|
||||||
|
|
||||||
|
Neon Mod Manager takes a simpler approach: **directly manage files in `archive/pc/mod/`**. No VFS, no staging, no REDmod, no FUSE.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
| Feature | How it works |
|
||||||
|
|---|---|
|
||||||
|
| **Enable/Disable Mods** | Renames `.archive` ↔ `.archive.disabled` — no staging, no VFS |
|
||||||
|
| **Load Order** | Numeric filename prefixes (`000_`, `010_`, `020_`...) — higher number = loaded later = overrides earlier |
|
||||||
|
| **Add Mods** | Copy `.archive` files directly to mod directory |
|
||||||
|
| **Conflict Detection** | Scans for duplicate file patterns across enabled mods |
|
||||||
|
| **Profiles** | Save/load mod configurations (e.g. "NSFW", "Vanilla+", "Minimal") |
|
||||||
|
| **Nexus Mods Integration** | Paste `nxm://` URLs to download, or register as browser protocol handler |
|
||||||
|
| **Drag & Drop** | Drop `.archive` files onto the window to install |
|
||||||
|
| **No Wine needed** | Pure Python + Qt, runs natively on Linux |
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Arch Linux / EndeavourOS
|
||||||
|
sudo pacman -S python-pyqt6
|
||||||
|
|
||||||
|
# Ubuntu / Debian
|
||||||
|
sudo apt install python3-pyqt6
|
||||||
|
|
||||||
|
# Fedora
|
||||||
|
sudo dnf install python3-pyqt6
|
||||||
|
|
||||||
|
# Or via pip
|
||||||
|
pip install PyQt6
|
||||||
|
```
|
||||||
|
|
||||||
|
### Download
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://gitea.die-heimatlosen.eu/arch_agent/neon-mod-manager.git
|
||||||
|
cd neon-mod-manager
|
||||||
|
```
|
||||||
|
|
||||||
|
### Run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Wayland (most common on modern Linux)
|
||||||
|
QT_QPA_PLATFORM=wayland python3 mod_manager.py
|
||||||
|
|
||||||
|
# X11
|
||||||
|
python3 mod_manager.py
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
### Adding Mods
|
||||||
|
|
||||||
|
1. Click **➕ Add Mod** and select `.archive` files, **OR**
|
||||||
|
2. Drag & drop `.archive` files onto the window, **OR**
|
||||||
|
3. Download from Nexus Mods (see below)
|
||||||
|
|
||||||
|
### Load Order
|
||||||
|
|
||||||
|
- Mods are sorted by numeric prefix: `000_` loads first, `999_` loads last
|
||||||
|
- Later mods **override** earlier ones (same texture/file = last one wins)
|
||||||
|
- Click **🔢 Auto-Sort** to auto-assign prefixes based on current list order
|
||||||
|
- Right-click a mod → **Move Up/Down** to reorder
|
||||||
|
|
||||||
|
### Enabling / Disabling
|
||||||
|
|
||||||
|
- **Checkbox** in the mod list to toggle on/off
|
||||||
|
- **Enable All / Disable All** buttons for bulk actions
|
||||||
|
- Disabled mods get `.archive.disabled` extension (not deleted!)
|
||||||
|
|
||||||
|
### Profiles
|
||||||
|
|
||||||
|
1. Set up your mods the way you want them
|
||||||
|
2. Go to **💾 Profile** tab
|
||||||
|
3. Enter a name (e.g. "NSFW Full", "Vanilla+") and click **Save Profile**
|
||||||
|
4. Switch between profiles anytime from the dropdown at the top
|
||||||
|
|
||||||
|
### Nexus Mods Integration
|
||||||
|
|
||||||
|
1. Get your API key from [Nexus Mods](https://www.nexusmods.com/users/myaccount?tab=api%20keys)
|
||||||
|
2. Go to **🌐 Nexus Mods** tab and paste your key
|
||||||
|
3. **Option A:** Paste `nxm://` URLs manually and click Download
|
||||||
|
4. **Option B:** Click **🔗 Register nxm:// Protocol Handler** — then clicking "Download" on Nexus Mods will automatically send the mod to Neon Mod Manager
|
||||||
|
|
||||||
|
## How It Works (Technical)
|
||||||
|
|
||||||
|
### No VFS / No Staging
|
||||||
|
|
||||||
|
Unlike MO2/Fluorine which use a virtual filesystem (FUSE on Linux), Neon Mod Manager copies files directly to the game's `archive/pc/mod/` directory. This avoids:
|
||||||
|
- FUSE mount permission issues
|
||||||
|
- REDmod deployment failures
|
||||||
|
- Wine prefix corruption
|
||||||
|
|
||||||
|
### Load Order via Filename
|
||||||
|
|
||||||
|
Cyberpunk 2077 loads `.archive` files in alphabetical order. Neon Mod Manager uses numeric prefixes to control this:
|
||||||
|
```
|
||||||
|
000_MyBodyMod.archive → loads first
|
||||||
|
010_MyTextureMod.archive → loads second
|
||||||
|
020_MyAdMod.archive → loads third (overrides earlier)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Enable/Disable
|
||||||
|
|
||||||
|
Instead of moving files in/out of a staging directory, mods are renamed:
|
||||||
|
- **Enable:** `MyMod.archive.disabled` → `MyMod.archive`
|
||||||
|
- **Disable:** `MyMod.archive` → `MyMod.archive.disabled`
|
||||||
|
|
||||||
|
The game ignores `.disabled` files completely.
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
Config is stored at `~/.config/neon-mod-manager/config.json`:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"game_path": "/mnt/Spiele/Heroic/Cyberpunk 2077",
|
||||||
|
"mod_dir": "archive/pc/mod",
|
||||||
|
"last_profile": "Default",
|
||||||
|
"nexus_api_key": "",
|
||||||
|
"auto_prefix": true
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Profiles are stored at `~/.config/neon-mod-manager/profiles/*.json`.
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
MIT — do whatever you want.
|
||||||
|
|
||||||
|
## Roadmap
|
||||||
|
|
||||||
|
- [ ] Archive file parsing (read internal file list for real conflict detection)
|
||||||
|
- [ ] Nexus Mods search (browse mods without leaving the app)
|
||||||
|
- [ ] Mod update detection (compare versions)
|
||||||
|
- [ ] REDmod script mod support (r6/tweaks)
|
||||||
|
- [ ] Auto-extract `.7z` / `.zip` downloads
|
||||||
|
- [ ] Mod categories and tags
|
||||||
|
- [ ] Dark/light theme switcher
|
||||||
+1005
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user