Withdrawn: Skyrim Sovngarde - Omni-guides/Wabbajack-Modlist-Linux GitHub Wiki
Sovngarde Sovngarde is a lightweight Legacy of the Dragonborn modlist with a minimal yet beautiful visual overhaul and the highest quality quest content. Included is full creation club support and a suite of balance mods to tie it all together with my own cut of simonrim.
Instructions
The following has been tested on Sovngarde v1.0.0
This guide only covers getting the Modlist running. It does not cover downloading the Modlist via Wabbajack, or how to copy the Modlist to your Steam Deck/Linux system.
These steps will need to be carried out in Desktop mode, but once complete you will be able to launch the Modlist and play the game from Game Mode. For Sovngarde, you will need to own the Anniversary Edition of Skyrim, and have launched the vanilla Skyrim game to download the Creation Club content. I also assume that you have set a user password on the Steam Deck.
Sovngarde only supports Skyrim AE, Anniversary Edition is not optional.
Step 1 - Create the directory
Once Wabbajack has successfully completed the download and installation of the Modlist on your Windows system, create a new directory on the Steam Deck to house the required files - this can either be on the internal storage, or with the use of a specific launch parameter described below, can live on the SD Card. Open up Konsole terminal and run only one of the following, depending on where you want to store the Modlist:
Create Directory on Internal Storage:
mkdir -p /home/deck/Games/Skyrim/Sovngarde
OR
Create Directory on SD Card:
mkdir -p /run/media/mmcblk0p1/Games/Skyrim/Sovngarde
(Note: Valve plan to change the default mount point of SD Cards within SteamOS soon, I'll update this guide once that chance is in place)
Technically you can use any path or naming convention you like, but for simplicity of following this guide it may be best just to copy the paths I use. I recommend not including any spaces in the Directory Name - it does not play well with the Proton/mo-redirect/MO2 combination even with the spaces being escaped, for whatever reason..
Copy the Modlist directory from Windows into this newly created directory. There are many ways to do this. I chose to enable ssh on my Deck, and then use rsync to transfer. There are too many options to discuss here, but it should be relatively easy to search for methods. I copied the Modlist directory contents from Windows to the newly created directory on the Deck: /home/deck/Games/Skyrim/Sovngarde/
Finally for this step, it's best to make sure that the newly copied files have sufficient permissions for your user. Run only one of the following for each action (owner and permissions), depending on where you want to store the Modlist:
Change the owner and permissions of the directory on Internal Storage:
sudo chown -R deck:deck /home/deck/Games/Skyrim/Sovngarde
sudo chmod -R 755 /home/deck/Games/Skyrim/Sovngarde
OR
Change the owner and permissions of the directory on SD Card:
sudo chown -R deck:deck /run/media/mmcblk0p1/Games/Skyrim/Sovngarde
sudo chmod -R 755 /run/media/mmcblk0p1/Games/Skyrim/Sovngarde
Step 2 - Add ModOrganizer.exe as a Non-Steam Game
The next step is to add ModOrganizer.exe to Steam as a non-steam game. In Steam, click Games, then "Add a Non-Steam Game to My Library". The latest version of Steam should use the regular File Browser from your system, older versions of Steam had a built-in file browser.
Click Browse:
Browse to the path of your modlist. e.g. /home/deck/Games/Skyrim/Sovngarde, select ModOrganizer.exe, and click Open.
Once added, edit the properties of the new ModOrganizer.exe entry. You can give it a more sensible name - I used "Skyrim - Sovngarde":
Then in the Compatibility tab tick the box for 'Force the use of a specific Steam Play compatibility tool', then select the Proton version - I use Proton 8.0-3 which was the latest stable Proton version provided by Valve at time of writing..
IMPORTANT FOR SD CARD USERS - You must add the following to the Launch Options for the ModOrganizer.exe Non-Steam game, otherwise the Proton environment won't have access to your SD Card contents:
STEAM_COMPAT_MOUNTS=/run/media/mmcblk0p1 %command%
Like so:
Step 3 - Enable Visibility of dot(.) files and folders
Click Start on this new Non-Steam Game entry - it will probably fail to load correctly, but we need to launch the entry once so that it registers fully in Steam, which then allows Protontricks to interact with it in the next Step. If it did start Mo2 correctly, close it or any error windows that appeared.
Sovngarde requires MO2 to point to the vanilla Skyrim install directory in Steam, which is actually in a hidden directory by default (/home/deck/.local/share/Steam/steamapps/common). By default, Wine/Proton applications do not have visibility of .(dot) files and folders, so we need to tweak it via Protontricks. Of course your install path could differ if you have configured your Library differently, and the path will be different if you installed Skyrim to SD Card instead of the internal disk.
If you don't already have it installed, ProtonTricks can be installed via the Discover store as a flatpak:
To enable the use of protontricks via the command line, open a Konsole terminal and run the following command to add an alias:
echo "alias protontricks='flatpak run com.github.Matoking.protontricks'" >> ~/.bashrc
then close and reopen Konsole. We can now invoke protontricks from the command line. Next, we need to allow protontricks access to the filesystem location (adjust as needed if you used a different path):
sudo flatpak override com.github.Matoking.protontricks --filesystem=/home/deck/Games
To add the ability to see dot files and folders inside the Proton prefix, run the following command in a terminal (replace "Skyrim - Sovngarde" below if you called it something else):
APPID=`protontricks -l | grep -i "Skyrim - Sovngarde" | awk {'print $NF'} | sed 's:^.\(.*\).$:\1:' | tail -1` ; protontricks --no-bwrap -c 'wine reg add "HKEY_CURRENT_USER\Software\Wine" /v ShowDotFiles /d Y' $APPID
With this setting now in place, MO2 will have visibility of the required .local directory path to point MO2 at when you first launch it.
Step 4 - Start and Configure ModOrganizer2
Click play on this new entry "Skyrim - Sovngarde" (or whatever you renamed it to) in Steam - Depending on the path on Windows that you copied the Modlist files from, you may see an error pop-up about your account lacking permission:
To fix this, we just need to strip the now incorrect download directory from the ModOrganizer.ini file. in Konsole terminal, run:
sed -i "/download_directory/c\download_directory =" /home/deck/Games/Skyrim/Sovngarde/ModOrganizer.ini
then re-run "Skyrim - Sovngarde" from Steam.
Another error box will appear, complaining that it "Cannot open instance 'Portable'. This is because we copied the Modlist directory (inclusive of the built-in MO2) from Windows, so the path has changed:
To fix this, we need to point MO2 to our new location. Click OK, and then Browse. The path we are looking for is:
Z:\home\deck\.local\share\Steam\steamapps\common\Skyrim Special Edition
If you installed vanilla Skyrim to an SD Card or a different Library location, then you will have to browse to that location, or the equivalent SD Card path in /run/media/mmcblk0p1, which will be mounted inside Proton as the E: Drive.
The splash screen for Sovngarde should hopefully now appear:
You may also get a pop-up asking if you want to Register for handling nxm links, like so:
I usually just hit "Yes" and move on with my life.
Getting close now. Next, we have to ensure that ModOrganizer2 is pointing to the correct location for the required executable. In MO2, click the little two-cog icon at the top, which will bring up the Modify Executables window (please note that this icon may differ for some Modlists that use custom icon sets):
For the Sovngarde executable, we need to point MO2 at a file that may not actually exist yet (but it will exist, once GameRoot does it's thing when you click launch - and is then removed again when the game closes).
The path you need for the Sovngarde application will be:
Z:\home\deck\.local\share\Steam\steamapps\common\Skyrim Special Edition\skse64_loader.exe
If you installed vanilla Skyrim to an SD Card, then you will have to replace with the above with the equivalent path in /run/media/mmcblk0p1.
Step 5 - Disable ENB
While ENB can work under Linux, it is likely going to badly impact performance on the Deck, so I would advise you to disable it. However, if you do want to, you can see my guide to do so here
To disable ENB for Sovngarde, we just need to disable the mods under the 'ENBSERIES' category in MO2:
We also need to make sure that there are no ENB leftovers from the Rootbuilder function. Click the Tools menu at the top of MO2, then select Tool Plugins, Root Builder, then Clear:
Step 6 - Install Required Wine Additions
There is an issue with missing NPC Voices - apparently this is an issue with Proton, so it may ultimately be resolved in time with a newer version of Proton without needing these steps. For now though, we need to install xact and xact_x64 to the Wine/Proton environment Steam created for our "Skyrim - Sovngarde" entry. Sovngarde also requires Microsoft Visual C++ Redistributable 2022 for some of it's mods.
The easiest way to install what we need is to use ProtonTricks, which should be installed already from Step 3 earlier in this guide.
Adding the required packages can be done via the ProtonTricks gui, but perhaps the easiest way is via command line. You can run the following one-liner to do it for you, or if you prefer, you can manually run the individual steps noted below (replace "Skyrim - Sovngarde" with the name of your Non-steam game entry, if you called it something else):
APPID=`protontricks -l | grep -i "Skyrim - Sovngarde" | awk {'print $NF'} | sed 's:^.\(.*\).$:\1:'` ; protontricks --no-bwrap $APPID xact xact_x64 d3dcompiler_47 d3dx11_43 d3dcompiler_43
Alternatively, If you prefer to run this manually, see an alternative step-by-step method in the Additional Notes section below.
Step 7 - Install VCREDIST2022
Next up is the requirement of vcredist2022. Unfortunately this isn't available directly through protontricks as per xact, so we will have to install it semi-manually. The following one-liner should do everything you need (replace "Sovngarde" with the name of your Non-steam game entry, if you called it something else):
APPID=`protontricks -l | grep -i "Sovngarde" | awk {'print $NF'} | sed 's:^.\(.*\).$:\1:' | tail -1` ; wget https://aka.ms/vs/17/release/vc_redist.x64.exe -O '/home/deck/.local/share/Steam/steamapps/compatdata/'"$APPID"'/pfx/drive_c/vc_redist.x64.exe' ; protontricks --no-bwrap -c 'wine /home/deck/.local/share/Steam/steamapps/compatdata/'"$APPID"'/pfx/drive_c/vc_redist.x64.exe /Q' $APPID
Step 8 - Set Resolution
** !! CONFIRM NEW METHOD !! **
Next, we should set the resolution so that the deck isn't doing more work than it needs to. There's no point in asking Skyrim to render at 1440p, and then have the game squeezed into an 800p screen on the deck. To do this in MO2, we can open the INI Editor:
Select the "skyrimprefs.ini" tab, and then edit in the lower pane for your desired resolution:
Finally, click the Save button and close the window to accept the changes
Step 9 - Optional but Recommended
Increase Steam Deck Swap Space, Swappiness and adjust Steam Deck VRAM
This may be optional, but there have been reports of far better stability and performance after increasing the swap space available to the deck when running Modlists. This is an optional step, but if you are experiencing stability issues, it might be worth investigating. How to do so is outside the scope of this guide, but there is plenty of information available elsewhere on how to do it - CryoByte33 has an excellent set of utilities available on github that can take care of this, and more!
Personally I have increased the VRAM in the deck bios to 4GB (see here for details), 16GB Swap space, and a Swappiness of 1 - the recommended settings when you run Cryobyte33's Steam Deck Utilities. In fact, the full video of Cryobyte33 explaining what this all means, is definitely worth a watch!
Conclusion
At last!
If you've read this far, then well done! I'd very much appreciate a Star for this guide, just to show if I'm on the right track. I'm also open to any feedback, positive or negative.
With NPC Voices fixed, and vcredist2022 installed, we should now be ready! Click the Play button in Mod Organizer, and wait.... This takes quite a bit of time to start. Once it had loaded though, performance was as expected in the menus.
On Steam Deck, I limit FPS and Refresh rate to 40, and it does a pretty good job of maintaining that. If you want absolutely no fluctuations at all, you'd likely have to lock to 30fps, but I find sticking it at 40Hz/FPS, and then turning off the FPS counter lets me just get on with the game, feeling fluid enough that I don't think about the FPS any more.
As an addition to the disclaimer at the top of this guide, I have no visibility of longer term stability, so save often, and maybe even make backups of your save-games, just in case ;)
If you need help with any of the above, or better yet have another fix, tweak or workaround to help get these Modlists running on Linux, then please do stop by the #unofficial-linux-help channel on the Wabbajack Discord, I should be around so just @ me (@omni) on there!
Enjoy!
Additional Notes
Install VCREDIST2022 manually step-by-step
Next up is the requirement of vcredist2022. Unfortunately this isn't available directly through protontricks as per xact, so we will have to install it semi-manually. The following one-liner should do everything you need (replace "Sovngarde" with the name of your Non-steam game entry, if you called it something else):
APPID=`protontricks -l | grep -i "Sovngarde" | awk {'print $NF'} | sed 's:^.\(.*\).$:\1:' | tail -1` ; wget https://aka.ms/vs/17/release/vc_redist.x64.exe -O '/home/deck/.local/share/Steam/steamapps/compatdata/'"$APPID"'/pfx/drive_c/vc_redist.x64.exe' ; protontricks --no-bwrap -c 'wine /home/deck/.local/share/Steam/steamapps/compatdata/'"$APPID"'/pfx/drive_c/vc_redist.x64.exe' $APPID
Check the box to agree, and then click install. It should complete quickly.
Alternatively, If you prefer to run this manually, you can do the following. Firstly, we need to download the vc_redist.x64.exe installer inside the Proton prefix. Run the following command, replacing my Game ID (3595949753) with your own which you can get by running protontricks -l in Konsole:
wget https://aka.ms/vs/17/release/vc_redist.x64.exe -O /home/deck/.local/share/Steam/steamapps/compatdata/3595949753/pfx/drive_c/vc_redist.x64.exe
Then we can enter the shell of our Proton environment:
protontricks 3595949753 shell
If successful, it should display a little C: prompt in your terminal window. Your terminal may misbehave after running the wine command - you can regain control by typing 'reset', even if you can't see the characters as you type.
Finally, run the installer:
wine vc_redist.x64.exe
Check the box to agree, and then click install. It should complete quickly.
When running wine commands in Konsole, it usually mangles the terminal a bit - text you type wont be shown (though it technically is still being printed in the terminal) - to get out of that state, either close and reopen Konsole, or just type 'reset' and hit enter, even if you can't see the characters.
Install wine requirements manually (xact, xact_x64, d3dcompiler_47)
first find the AppID of the Non-Steam Game we added for mo-redirect.exe. In a terminal run:
protontricks -l | grep -i "Sovngarde"
Replace "Sovgarde" if you have renamed the Non-Steam Game added earlier. The output should look something like below, though your AppID will differ from mine:
Non-Steam shortcut: Skyrim - Sovngarde (3595949753)
With the AppID now known, install the required xact and xact_x64 packages into this Proton environment (use your own AppID from the command above):
protontricks 3595949753 xact xact_x64 d3dcompiler_47 vcrun2022
This may take a little time to complete, but just let it run the course. Your terminal may misbehave after running the protontricks/wine command - you can regain control by typing 'reset', even if you can't see the characters as you type.