Modding

Switching to Pikdum scripts for modding my Steam Deck

This post overrides all previous posts I’ve done on the topic of how I’m modding on my Steam Deck. The TL;DR version is, I got frustrated with Vortex not being supported well with steamtinkerlaunch, which was causing me problems with being able to update Vortex to new versions.

I have now ditched steamtinkerlaunch from my setup entirely, in favor of setup scripts created by and posted to Github by a user called pikdum.

Deets behind the fold.

The Vortex problem I was having

“But Anna,” you might be saying, “you had a working setup, what happened to make you change it?”

Basically, Vortex stopped letting me update it. It would say “oh hey there’s an update available,” and I’d go “fabulous, restart and install!” Except when I did that… nothing happened. I’d manually restart and come right back to the exact same version of Vortex.

Which is not optimal when the whole point of updating is to, well, update.

The maintainer of steamtinkerlaunch has said on the Github repo for the tool that:

  1. He doesn’t use Vortex, and
  2. He doesn’t want to test things on his Steam Deck to keep it clean.

Which means that Vortex support on the Steam Deck for steamtinkerlaunch falls into the realm of “edge case” for him, and he doesn’t want to spend cycles on it. Which is, of course, his prerogative! As an SDET, I get edge cases.

But since I want to use Vortex, this meant that steamtinkerlaunch was now a problem.

Mind you, before I decided to ditch steamtinkerlaunch completely, I tried a bunch of things first to solve this failure to update Vortex, including:

  1. Telling steamtinkerlaunch to download the latest version, which it did
  2. Telling it to install the latest version, and it tried that, but with no obvious results–and I couldn’t find any relevant info in logs
  3. Blowing away steamtinkerlaunch completely and reinstalling it from scratch
  4. Installing Vortex via Lutris

You’d think number three on this list might have worked. It did at least get me an active install of the current Vortex version. Except it got stuck in an endless loop of telling me it wanted to install dotnet 6, and then erroring out before it could do so.

Number four on this list also didn’t get me anywhere. There are two options available for Vortex in Lutris, but the one for Linux claimed that Steam needed to be on the machine, and, uh, yeah, got that? It’s a Steam Deck? Steam is kinda built in by definition?

And if I tried to do the Windows install, that threw me unrecoverable errors and I was never able to complete it.

Why not go to Mod Organizer 2?

I know, a lot of people out there are MO2 fans and strongly prefer it over running Vortex. But I didn’t want to try to switch to MO2 for three reasons:

  1. I have a new modded playthrough in progress–two, if you count the one I’m running in Skyrim Together. And I did not want to try to change what mod manager I’m using in the middle of modded playthroughs.
  2. Ditto for my modded Oblivion playthrough. Don’t want to swap mod managers mid-playthrough on that, either.
  3. And also, look y’all, the times I’ve poked at MO2, I’ve just found the UI super clunky. I just don’t like it. Vortex feels nicer to me to use. And I like the convenience of having it yoink stuff straight down off of Nexus.

That said: I don’t discount all the various people out there on various threads that I’ve seen saying MO2 just works better. I don’t disbelieve y’all, necessarily. But again, I don’t want to change mod managers on established playthroughs.

So for purposes of solving this problem, MO2 was off the table.

(I will, however, probably try out MO2 in the future as my means by which I’ll mod Open Morrowind. Because that’ll give me a chance to try out MO2 with a clean modded run, and from what I’ve seen, MO2 does seem to be the recommended means to mod Morrowind. And then I’ll have an informed opinion about both mod managers. But hold that thought. Future Anna will get back to that.)

So who’s Pikdum and what are these scripts?

I went searching for more recommendations about what to do about this, and came across a Reddit thread that in turn pointed at Pikdum’s scripts. I went over to Pikdum’s Github to have a look, and one thing immediately stood out for me: that this little collection of scripts promised to get a much simpler setup onto my Deck.

Don’t get me wrong, Steamtinkerlaunch is awesome. But it also, honestly, is a bigger tool than what I really need. It has a fuckton of options in it that I never use, and which I don’t need, when all I want to do is run Vortex and put mods in it for Skyrim and Oblivion.

Pikdum’s scripts jump through the correct hoops to pull down a Vortex install and get it set up properly with dotnet 6 as well. Bonus love for me that they also even put a Vortex icon right onto the desktop–since via steamtinkerlaunch, I didn’t get that convenience. Previously, I’d had to implement the workaround of a batch file with a single-line command line script in it, that launched Vortex via steamtinkerlaunch.

Now I don’t have to do that.

There are other scripts in this package as well that do some post-deploy work after you activate a modded playthrough. Namely, at least in the case of Skyrim, renaming the vanilla launcher to a backup name, and then renaming the Skyrim Script Extender launcher to the vanilla launcher’s name. I didn’t mind having to re-implement this, because it’s a thing I’d seen before when trying to do mods on my old PC laptop.

Thanks to this set of scripts, I now have a functioning current version of Vortex again on the device. I had to re-do all of my mod profiles, and that took several hours of work. But I did get my main modded Skyrim profile set up again, as well as the one for Skyrim Together. And Oblivion’s modded profile is awake again.

Process I followed to set up Pikdum’s scripts, plus tweaks I had to do

This is the rough process I went through to get these scripts going.

  1. Blew away steamtinkerlaunch completely off my device
  2. Followed the instructions in Pikdum’s Readme, which were pretty straightforward
  3. Pikdum’s script pulled down Vortex 1.8.3, so once Vortex was installed, I told it to go ahead and update–and this time it worked, putting me up to 1.9.3, which is where I wanted to be
  4. Logged into Vortex with my Nexus Premium account
  5. Rebuilt all my mod profiles for Skyrim and Oblivion in Vortex, including following Vortex’s instructions re: purging info about the profiles that had been set up by the previous Vortex

Now because I do have three different Skyrim playthroughs in progress right now, two of which are modded and the third of which is not, I do need to be able to swap between them. Which meant I needed an additional post-deploy script to go with the one that Pikdum made. I went through the following additional steps:

  1. Went into Pikdum’s directory in Konsole on my device, and to this subdirectory in particular: ~/.pikdum/steam-deck-master/vortex/
  2. Duplicated Pikdum’s skyrim-post-deploy.sh script and named the copy skyrim-post-deploy-vanilla.sh
  3. Duplicated the desktop file skyrim-post-deploy.desktop and named the copy skyrim-post-deploy-vanilla.desktop
  4. Edited that desktop file to make it run the new vanilla script I’d created
  5. In my Konsole shell, changed over to the Desktop directory
  6. Made a symlink to the new desktop file, using this command: ln -sf ~/.pikdum/steam-deck-master/vortex/skyrim-post-deploy-vanilla.desktop .

Here’s what my skyrim-post-deploy-vanilla.sh script looks like. This reverses the prior swap of SkyrimSELauncher.exe and skse64_loader.exe, so that I can return to Skyrim launching via its original launcher when I want to run Finds-The-Way’s playthrough:

#!/usr/bin/env sh
set -euxo pipefail

SKYRIM_INTERNAL="$HOME/.steam/steam/steamapps/common/Skyrim Special Edition/"
SKYRIM_EXTERNAL="/run/media/mmcblk0p1/steamapps/common/Skyrim Special Edition/"

skse_teardown() {
    if [ -d "$1" ] &&
        [ -f "${1}_SkyrimSELauncher.exe" ] &&
        [ -f "${1}SkyrimSELauncher.exe" ]; then
        cd "$1"
        if ! cmp --silent -- "_SkyrimSELauncher.exe" "SkyrimSELauncher.exe"; then
            echo "Swapping skse64_loader.exe for SkyrimSELauncher.exe"
            cp SkyrimSELauncher.exe skse64_loader.exe
            mv _SkyrimSELauncher.exe SkyrimSELauncher.exe
        fi
    fi
}

skse_teardown "$SKYRIM_INTERNAL"
skse_teardown "$SKYRIM_EXTERNAL"

APPDATA_VORTEX="$HOME/.vortex-linux/compatdata/pfx/drive_c/users/steamuser/AppData/Local/Skyrim Special Edition"
APPDATA_INTERNAL="$HOME/.local/share/Steam/steamapps/compatdata/489830/pfx/drive_c/users/steamuser/AppData/Local/Skyrim Special Edition/"
APPDATA_EXTERNAL="/run/media/mmcblk0p1/steamapps/compatdata/489830/pfx/drive_c/users/steamuser/AppData/Local/Skyrim Special Edition/"

echo "Copying loadorder.txt and plugins.txt"
mkdir -p "$APPDATA_INTERNAL" || true
mkdir -p "$APPDATA_EXTERNAL" || true
cp "$APPDATA_VORTEX"/* "$APPDATA_INTERNAL" || true
cp "$APPDATA_VORTEX"/* "$APPDATA_EXTERNAL" || true

echo "Success! Exiting in 3..."
sleep 3

And here’s what my desktop file looks like:

[Desktop Entry]
Comment[en_US]=
Comment=
Exec=/home/deck/.pikdum/steam-deck-master/vortex/skyrim-post-deploy-vanilla.sh
GenericName[en_US]=
GenericName=
Icon=steam_icon_489830
MimeType=
Name[en_US]=Skyrim SE⁄AE Post-Deploy Vanilla
Name=Skyrim SE⁄AE Post-Deploy Vanilla
Path=
StartupNotify=false
Terminal=true
TerminalOptions=\s--noclose
Type=Application
X-DBUS-ServiceName=
X-DBUS-StartupType=none
X-KDE-SubstituteUID=false
X-KDE-Username=

So now I’m in a state where, if I switch between my Skyrim modded profiles in Vortex, I run either Pikdum’s post-deploy script or mine, depending on which playthrough I’m running.

But I had to do one more thing as well to get Skyrim Together’s launcher to launch correctly, and that was running this command in my terminal, which I’d used before when setting up via steamtinkerlaunch:

protontricks 489830 winecfg

Once I launched winecfg for Skyrim’s game ID, I told it to set the default version of Windows to be Windows 10. I had to do this because SkyrimTogether.exe complained at me that I was trying to run it on a version of the operating system it didn’t like, and it wanted me to update to Windows 8.1 or better. Not an option, given that I’m running it on a Linux fork via Proton!

But once I told protontricks to use Windows 10, I was then able to launch SkyrimTogether.exe as expected.

In summary

I’m back to what appears to be a good working state. And arguably, a better one than I was in before! Because now I can update Vortex without issues. And I have a Vortex icon launchable right off the Deck’s desktop. And I can download mods directly into Vortex, without having to manually pull them down first–which is extra good, because trying to manually install dozens of mods in Vortex on a Steam Deck is annoying!

I’m pretty happy with how all this turned out. Hope writing this up is helpful for other Steam Deck players out there who want to mod!

As Angela Highland, Angela is the writer of the Rebels of Adalonia epic fantasy series with Carina Press. As Angela Korra'ti, she writes the Free Court of Seattle urban fantasy series. She's also an amateur musician and devoted fan of Newfoundland and Quebecois traditional music.