Vortex is the mod manager from Nexus Mods, used for Skyrim, Fallout, Starfield, Baldur's Gate 3 and a few hundred other games. It's an Electron app, so it technically starts on Linux. But the usual workaround is running Vortex itself inside a Wine prefix, which is slow, fragile and annoying to set up.
This repo does the other thing: it patches Vortex to actually understand Linux, and builds it as a native app.
- Finds native and Flatpak Steam libraries and selects the active game’s Proton prefix
- Maps
Documents/AppDatainto the right prefix, so mods and saves land where the game actually looks - Discovers Epic, GOG and Amazon games in native and Flatpak Heroic installations
- Launches games through Steam or Heroic
- Experimental: recognises Windows games installed through Lutris or Bottles, deploys into their prefix and launches them through the launcher
- Runs Windows modding tools in the game’s Wine/Proton prefix, including calls made by extensions
- Reads and writes Windows INI files while preserving encoding, comments and hardlinks
- Builds Bethesda plugin management with native Linux LOOT
- Deploys and purges hardlinked mods without leaving stale files behind
- Resolves Windows path casing consistently and keeps staging files safe when external changes are detected
These are general Linux fixes, not per-game hacks. Game-specific Vortex extensions can still carry their own Windows-only assumptions, so some games may still need fixes.
| Part | Runs as |
|---|---|
| Vortex itself: UI, downloads, installers, deployment | native Linux process |
| Game discovery and launch through Steam, Heroic, Lutris, Bottles | native, through each launcher |
| Mod deployment, INI edits, LOOT sorting, FOMOD installers | native |
| Windows-only modding tools such as xEdit or BodySlide | the game's own Wine or Proton prefix |
| Windows .NET runtimes those tools need | bundled, loaded through Wine |
| Vortex's few Windows-only helpers, and tools run with no game selected | a separate Wine prefix under ~/.local/share/vortex-linux |
Vortex itself is slowly becoming more Linux-friendly. Since 2.7.1, the extension API's util.epicGamesLauncher is a shim over GameStoreHelper instead of undefined everywhere except Windows, so our Epic API fallback patch is gone 🎊.
2.9.0 goes further: Vortex now builds LOOT on Linux itself, with a libloot made for Linux, so we no longer compile libloot from source and our LOOT patch shrank to fixing file name casing and the Proton folder. Reading game versions from .exe files is plain TypeScript now too, so it works the same on every platform.
2.10.0 brings three Linux fixes of its own: Vortex finds the drive a folder sits on, so moving the staging folder and the folder it suggests work across mounted drives (#24375), it accepts installer instructions that separate folders with backslashes (#24378), and the "Handle Mod Manager Download buttons" setting (nxm:// links) is no longer greyed out on Linux (#24387). The first one made two of our patches smaller.
Every fix that lands upstream is one less patch to carry here, and the goal is for this repo to shrink.
Grab the latest release. What changed in each release is in CHANGELOG.md.
sha256sum --check vortex-linux-*.pkg.tar.zst.sha256
sudo pacman -U ./vortex-linux-*.pkg.tar.zstFor Ubuntu 24.04 or newer and Debian 13 or newer:
sha256sum --check vortex-linux_*_amd64.deb.sha256
sudo apt install ./vortex-linux_*_amd64.debapt pulls in Wine and the libraries Vortex needs, and Vortex shows up in your app menu. Like the AppImage, the package brings its own Linux .NET runtime and the Windows .NET runtimes modding tools need. To update, install the newer .deb the same way.
Debian 12 and Ubuntu 22.04 are too old: the FOMOD installer Vortex ships needs glibc 2.38, so apt refuses the package there. The AppImage needs the same.
For Fedora 43 or newer, openSUSE Leap 16 and Tumbleweed:
sha256sum --check vortex-linux-*-x86_64.rpm.sha256
sudo dnf install ./vortex-linux-*-x86_64.rpm # Fedora
sudo zypper install --allow-unsigned-rpm ./vortex-linux-*-x86_64.rpm # openSUSEThe package works like the Debian one: the package manager pulls in Wine and the libraries, and the .NET runtimes come with it. It isn't signed, which is why zypper needs --allow-unsigned-rpm; the checksum is how you verify the download.
Install Wine from your package manager first, then:
sha256sum --check Vortex-*.AppImage.sha256
chmod +x Vortex-*.AppImage
./Vortex-*.AppImageThe AppImage bundles the Linux .NET 9 runtime Vortex probes for at startup, plus the Windows .NET runtimes modding tools need, so you don't need .NET installed system-wide. Wine you do need.
No FUSE 2 on your system? Run it as:
./Vortex-*.AppImage --appimage-extract-and-runAppImages don't add themselves to your app menu; Gear Lever or AppImageLauncher handle that. For Nexus Mods download links, turn on "Handle Nexus Links" in Vortex: the AppImage then registers itself as the nxm:// handler and keeps pointing at wherever the AppImage file is. This uses xdg-settings from xdg-utils, which desktop distributions ship with their browsers.
The AppImage embeds AppImageUpdate information pointing at this repository's latest release, so Gear Lever, AppImageLauncher and appimageupdatetool can check for and apply updates in place. Vortex also shows a notification when a newer Linux release is published; the older builds from recipes/ stay pinned and never update.
Launch the game once through Steam or Heroic. Proton and the game create their real config and save directories on that first run; if you point Vortex at a prefix that doesn't exist yet, nothing will line up.
Keep staging and the game on the same filesystem. Hardlinks can't cross filesystems. Vortex suggests a good folder under Settings → Mods. If you already have mods in an old staging folder, use Vortex's transfer flow. Don't move or delete it by hand.
The selected game determines which prefix Vortex uses. Steam’s per-game Proton selection takes precedence over its default selection. Heroic’s game settings select Wine, Proton or UMU; Flatpak tools run inside the Heroic Flatpak.
A game added by hand runs in Wine's default prefix, $WINEPREFIX or ~/.wine.
For another prefix, edit the game on the Dashboard and set WINEPREFIX under
Environment Variables.
VORTEX_COMPAT_PREFIXES can list additional prefixes, separated by colons, for
lookups without a selected game. If several prefixes match, Vortex reports the
ambiguity instead of choosing by modification time.
If Heroic is an AppImage outside PATH, set HEROIC_BINARY to its executable.
Launch it once before scanning for games. Linux-native Heroic games keep their
native configuration paths.
Lutris and Bottles. Games that use Lutris' Wine runner work
too. If Vortex doesn't find the game by itself, set its folder manually, as it
appears inside the Lutris prefix (also when that folder is a symlink to another
disk). Vortex recognises that it belongs to Lutris, uses the game's Lutris
prefix, starts it through Lutris and runs tools with the Wine version selected
for it in Lutris. Tools need a Wine build for now; games set to Proton in Lutris
can be deployed to and launched, but not run tools. Set LUTRIS_BINARY if
lutris isn't on PATH.
Bottles works the same way: set the game folder inside the bottle, or the folder
of a program you added to a bottle. Vortex uses the bottle as the prefix, starts
a program added in Bottles through bottles-cli, and runs tools with the
bottle's runner. Bottles keeps bottles by name, so rename bottles that share a
name. Flatpak Bottles only sees folders its sandbox allows. Set
BOTTLES_CLI_BINARY if bottles-cli isn't on PATH. Both are new and lightly
tested; please report what breaks.
The separate prefix for Vortex’s own helper processes still defaults to
${XDG_DATA_HOME:-$HOME/.local/share}/vortex-linux/wineprefix.
git clone https://github.com/Arkazzae/VortexLinux.git
cd vortex-linux
scripts/prepare-arch-build.sh
cd dist/arch-build
makepkg -siThe build pins Vortex to an exact upstream commit and downloads the source, Node dependencies, Electron and the Microsoft runtime files. First build is a big one.
We support 1.16.9 and 2.6.2 for collections that need an older Vortex, alongside the latest release. Need another version? Open an issue and tell us which version your collection needs.
To build one, fork this repo and run Actions → Build a selected Vortex version, then download the files from the completed run. Or build locally:
python3 scripts/build-version.py --version 2.6.2You'll find the files in dist/versions/2.6.2/artifacts/.
Every change goes through the same pipeline before it can become a release:
- The patches apply. CI checks out the pinned Vortex commit and applies every patch in order.
- The tests pass. It runs the tests that ship with the patches, typechecks the renderer, and builds and tests the native LOOT binding.
- Every package builds. The Arch package is built in a clean Arch container, and the AppImage,
.deband.rpmare built from that package. - Every package starts. The AppImage in a clean Ubuntu 24.04 container, the
.debon Ubuntu 24.04, Ubuntu 26.04 and Debian 13, the.rpmon Fedora 43 and 44, openSUSE Leap 16 and Tumbleweed. Each container has no system .NET; the packages are installed with only their own dependencies, and their libraries are checked against the distribution. Then the bundled checks run (the .NET probe, the Windows .NET runtimes through Wine, a FOMOD install, LOOT sorting, INI writes, prefix selection, Heroic discovery, tool arguments, hardlink purge), Vortex boots under Xvfb, the main page has to render and Vortex has to find .NET from inside the app. The packages must also uninstall cleanly.
scripts/test-package.sh dist/Vortex-*.AppImage # the AppImage check
scripts/test-package.sh dist/vortex-linux-*.rpm fedora:44 # a package on one distribution
scripts/check-upstream-compatibility.sh --ref latest --keep # patches against the newest Vortex
scripts/run-upstream-tests.sh /path/to/patched-vortex # the test suite--ref pinned checks the patches against the pinned version instead, and --keep keeps the prepared source for the test suite.
Open an issue with the game, the store, where it's installed, how to reproduce it, and the relevant chunk of ~/.config/Vortex/vortex.log. Scrub your Nexus tokens and private download links out of the log first.
Most of what got fixed here started as somebody's bug report. The people behind those reports and pull requests are listed in THANKS.md.
The build files and Linux patches here are GPL-3.0-only. Vortex itself stays under the upstream Nexus Mods license. See LICENSE.
