I’ve built my own folder based mod-manager: https://github.com/Lucki/mod-manager
It’s using OverlayFs to lay mods on top of the game files which allows for easy switch-arounds of mod sets while keeping each mod separated in their own folder. It’s based upon config files and allows to freely collect mods in sets, even nested.
It’s probably full of unnoticed bugs because I’m the only one using it, but it works 🤷 I do have a bunch of convenience stuff queued up locally though. They need a bit of polishing but soon it’s ready for another push.
I tested in these games -
ls -1 "$XDG_CONFIG_HOME/mod-manager"
:cat "$XDG_CONFIG_HOME/mod-manager/Gotham Knights.toml"
tree "/mnt/games/mod-manager/Gotham Knights/"
/mnt/games/mod-manager/Gotham Knights/ ├── BatGirl Cape Off │ └── Mercury │ └── Content │ └── Paks │ └── ~mods │ ├── BatGirl_Cape_OFF_Demon_26_P.pak │ ├── BatGirl_Cape_OFF_Demon_26_P.ucas │ ├── BatGirl_Cape_OFF_Demon_26_P.utoc │ ├── BatGirl_Cape_OFF_Eternal_13_P.pak │ ├── BatGirl_Cape_OFF_Eternal_13_P.ucas │ ├── BatGirl_Cape_OFF_Eternal_13_P.utoc │ ├── BatGirl_Cape_OFF_KnightOps_41_P.pak │ ├── BatGirl_Cape_OFF_KnightOps_41_P.ucas │ ├── BatGirl_Cape_OFF_KnightOps_41_P.utoc │ ├── BatGirl_Cape_OFF_Metal_36_P.pak │ ├── BatGirl_Cape_OFF_Metal_36_P.ucas │ ├── BatGirl_Cape_OFF_Metal_36_P.utoc │ ├── BatGirl_Cape_OFF_NeonNoir_22_P.pak │ ├── BatGirl_Cape_OFF_NeonNoir_22_P.ucas │ ├── BatGirl_Cape_OFF_NeonNoir_22_P.utoc │ ├── BatGirl_Cape_OFF_NewGuard_5_P.pak │ ├── BatGirl_Cape_OFF_NewGuard_5_P.ucas │ ├── BatGirl_Cape_OFF_NewGuard_5_P.utoc │ ├── BatGirl_Cape_OFF_Privateer_31_P.pak │ ├── BatGirl_Cape_OFF_Privateer_31_P.ucas │ ├── BatGirl_Cape_OFF_Privateer_31_P.utoc │ ├── BatGirl_Cape_OFF_Shinobi_46_P.pak │ ├── BatGirl_Cape_OFF_Shinobi_46_P.ucas │ ├── BatGirl_Cape_OFF_Shinobi_46_P.utoc │ ├── BatGirl_Cape_OFF_Titan_9_P.pak │ ├── BatGirl_Cape_OFF_Titan_9_P.ucas │ ├── BatGirl_Cape_OFF_Titan_9_P.utoc │ ├── BatGirl_Cape_OFF_YearOne_18_P.pak │ ├── BatGirl_Cape_OFF_YearOne_18_P.ucas │ └── BatGirl_Cape_OFF_YearOne_18_P.utoc └── OptiScaler └── Mercury └── Binaries └── Win64 ├── amd_fidelityfx_dx12.dll ├── amd_fidelityfx_vk.dll ├── D3D12_Optiscaler │ └── D3D12Core.dll ├── libxess.dll ├── libxess_dx11.dll ├── nvngx.dll ├── OptiScaler.ini └── version.dll
No idea why that tree is broken in monospace - it works in the preview, sorry!