├── .gitignore ├── LICENSE ├── README.md ├── install.desktop ├── install.sh ├── post-install.sh ├── update.desktop └── vortex ├── fallout3-post-deploy.desktop.in ├── fallout3-post-deploy.sh ├── fallout4-post-deploy.desktop.in ├── fallout4-post-deploy.sh ├── falloutnv-post-deploy.desktop.in ├── falloutnv-post-deploy.sh ├── falloutnv-pre-deploy.sh ├── install-umu.sh ├── install-vortex.desktop.in ├── install-vortex.sh ├── oblivion-post-deploy.desktop.in ├── oblivion-post-deploy.sh ├── skyrim-post-deploy.desktop.in ├── skyrim-post-deploy.sh ├── skyrimle-post-deploy.desktop.in ├── skyrimle-post-deploy.sh ├── vortex-wrapper.sh ├── vortex.desktop.in └── vortex.ico /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 pikdum 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # pikdum's steam deck tools 2 | 3 | ## what is this 4 | 5 | a collection of steam deck tools and scripts to help automate some things, starting with installing vortex 6 | 7 | hopefully temporary solution until https://github.com/Nexus-Mods/NexusMods.App is ready 8 | 9 | ## install 10 | 11 | 1. right click and save as [this install.desktop link](https://raw.githubusercontent.com/pikdum/steam-deck/master/install.desktop) 12 | 2. go to the downloads folder, move the `install.desktop` file to the desktop, and double click to run it 13 | 14 | or 15 | 16 | ``` bash 17 | curl https://raw.githubusercontent.com/pikdum/steam-deck/master/install.sh | bash -s -- 18 | ``` 19 | 20 | ## vortex 21 | 22 | after installing, you should have a shortcut on the desktop to install vortex 23 | 24 | this will: 25 | 26 | 1. use umu to set up vortex 27 | 2. add a 'Skyrim Post-Deploy' shortcut to desktop 28 | * needs to be run every time after you change mods in Vortex 29 | * also adds a 'Fallout 4 Post-Deploy' and some others 30 | 3. map J: to internal games and K: to sd card games 31 | * E: is the sd card root 32 | 33 | after modding, run games normally through game mode rather than launching through vortex 34 | 35 | ### adding a game 36 | 37 | * will need to manually set the location, use either the J: or K: drives 38 | * J: is internal storage games, K: is sd card games 39 | * vortex may pop up some warnings about: staging location, deployment method 40 | * if it does: 41 | * walk through their fixes 42 | * staging folder needs to be on the same drive as the game 43 | * suggested path works here 44 | * deployment method should be hardlinks 45 | * if it doesn't: 46 | * go to Settings -> Mods 47 | * set the **Base Path** to: 48 | * `K:\vortex_mods\{GAME}` if your games are on the sd card 49 | * `J:\vortex_mods\{GAME}` if your games are on the internal drive 50 | * press **Apply** 51 | * **Deployment Method** will now allow you to select `Hardlink deployment` 52 | * press **Apply** again 53 | 54 | ### download with vortex button link handler 55 | 56 | * might work out of the box, unless you've installed vortex before 57 | * if it doesn't work, edit these lines in ~~`~/.local/share/applications/mimeapps.list`~~ `~/.config/mimeapps.list` 58 | ``` 59 | x-scheme-handler/nxm=vortex.desktop 60 | x-scheme-handler/nxm-protocol=vortex.desktop 61 | ``` 62 | * run `update-mime-database ~/.local/share/mime/` 63 | * might need to reboot 64 | * if still issues, make sure your browser is using the default app 65 | 66 | ### what are these post-deploy shortcuts? 67 | 68 | these are for games that need a bit extra to get things working after modding in Vortex 69 | 70 | they automate things like: 71 | 72 | * copying required files from Vortex's Documents folder to the game's Documents folder 73 | * plugins.txt, loadorder.txt, etc. 74 | * setting up script extenders to launch through Steam 75 | 76 | a game's post-deploy script should be ran every time after modding in vortex 77 | 78 | > **Note:** If you know what you're doing, could set up symlinks instead for this. 79 | > That way it only needs to be set up once, before starting modding. 80 | > Might evaluate refactoring to that approach in a v2. 81 | 82 | ### adding symlink instead of running post-deploy shortcuts 83 | 84 | First navigate to ~/.vortex-linux/compatdata/pfx/drive_c/ 85 | Then open a second tab and navigate to ~/.local/share/Steam/steamapps/compatdata//pfx/drive_c/ 86 | 87 | To find the ID of a game, go to the Steam store page. The numbers after "app" in the url are the ID. 88 | 89 | Example for Skyrim SE: 90 | * URl: https://store.steampowered.com/app/489830/The_Elder_Scrolls_V_Skyrim_Special_Edition/ 91 | * game_id: 489830 92 | * Path: ~/.local/share/Steam/steamapps/compatdata/489830/pfx/drive_c/ 93 | 94 | Now take the "users" folder from the first location and move it to the second one. 95 | Overwrite when asked, some settings could be overwritten and you should launch the game once before modding. 96 | 97 | Now in the first location, right click and go to create new>link to file or directory. 98 | Navigate back to ~/.local/share/Steam/steamapps/compatdata//pfx/drive_c/ and select the users folder. 99 | 100 | Additional Steps: 101 | 102 | For Fallout 3: 103 | * Once you have installed FOSE, rename "Fallout3Launcher.exe" to "Fallout3Launcher.exe.old" 104 | * Then rename "fose_loader.exe" to "Fallout3Launcher.exe" 105 | * Now pressing play on Steam will use FOSE. 106 | 107 | For Fallout NV: 108 | * Once you have installed NVSE, rename "FalloutNVLauncher.exe" to "FalloutNVLauncher.exe.old" 109 | * Then rename "nvse_loader.exe" to "FalloutNVLauncher.exe" 110 | * Now pressing play on Steam will use NVSE. 111 | 112 | For Fallout 4: 113 | * Once you have installed F4SE, rename "Fallout4Launcher.exe" to "Fallout4Launcher.exe.old" 114 | * Then rename "f4se_loader.exe" to "Fallout4Launcher.exe" 115 | * Now pressing play on Steam will use F4SE. 116 | 117 | For Oblivion: 118 | * Once you have installed OBSE, rename "OblivionLauncher.exe" to "OblivionLauncher.exe.old" 119 | * Then rename "obse_loader.exe" to "OblivionLauncher.exe" 120 | * Now pressing play on Steam will use SKSE. 121 | 122 | For Skyrim LE: 123 | * Once you have installed SKSE, rename "SkyrimLauncher.exe" to "SkyrimLauncher.exe.old" 124 | * Then rename "skse_loader.exe" to "SkyrimLauncher.exe" 125 | * Now pressing play on Steam will use SKSE. 126 | 127 | For Skyrim SE: 128 | * Once you have installed SKSE64, rename "SkyrimSELauncher.exe" to "SkyrimSELauncher.exe.old" 129 | * Then rename "skse64_loader.exe" to "SkyrimSELauncher.exe" 130 | * Now pressing play on Steam will use SKSE64. 131 | 132 | IMPORTANT: After these steps you should never run the deploy shortcuts. 133 | 134 | ### how to open launcher to change settings afterwards 135 | 136 | using Skyrim as an example: 137 | 138 | * after running post-deploy, the game will now start SKSE instead of the launcher 139 | * to open the launcher, install protontricks and launch the underscore-prefixed launcher .exe with it 140 | 141 | ## uninstall 142 | 143 | ```bash 144 | # remove these tools 145 | rm -rf ~/.pikdum/ 146 | # remove vortex 147 | rm -rf ~/.vortex-linux/ 148 | rm -rf ~/.local/share/applications/vortex.* 149 | # manually remove desktop icons 150 | # uninstall umu proton builds/etc. if desired 151 | ``` 152 | 153 | ## old version uninstall 154 | 155 | ```bash 156 | # remove steamtinkerlaunch 157 | rm -rf ~/stl/ 158 | rm -rf ~/.config/steamtinkerlaunch/ 159 | # remove these tools 160 | rm -rf ~/.pikdum/ 161 | rm -rf ~/.local/share/applications/pikdum-vortex.desktop 162 | ``` 163 | 164 | -------------------------------------------------------------------------------- /install.desktop: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env xdg-open 2 | [Desktop Entry] 3 | Name=Install Pikdum's Tools 4 | Exec=curl https://raw.githubusercontent.com/pikdum/steam-deck/master/install.sh | bash -s -- 5 | Icon=steamdeck-gaming-return 6 | Terminal=true 7 | Type=Application 8 | StartupNotify=false 9 | -------------------------------------------------------------------------------- /install.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -euxo pipefail 3 | 4 | mkdir -p ~/.local/share/applications/ 5 | 6 | mkdir -p ~/.pikdum 7 | cd ~/.pikdum 8 | wget -O steam-deck.zip https://github.com/pikdum/steam-deck/archive/refs/heads/master.zip 9 | unzip -o steam-deck.zip 10 | rm steam-deck.zip 11 | 12 | ~/.pikdum/steam-deck-master/post-install.sh 13 | 14 | echo "Success! Exiting in 3..." 15 | sleep 3 16 | -------------------------------------------------------------------------------- /post-install.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -euxo pipefail 3 | 4 | # Clean up data from old implementation 5 | rm -rf ~/.vortex-linux/proton-builds/ 6 | rm -rf ~/.pikdum/steam-deck-master/vortex/vortex-linux 7 | 8 | echo "Templating files..." 9 | pushd ~/.pikdum/steam-deck-master/ 10 | find . -type f -name "*.in" -exec sh -c 'envsubst < "$1" > "${1%.in}" && chmod +x "${1%.in}"' _ {} \; 11 | popd 12 | 13 | ln -sf ~/.pikdum/steam-deck-master/update.desktop ~/Desktop/pikdum-update.desktop 14 | 15 | if [ ! -f "$HOME/.local/share/applications/vortex.desktop" ]; then 16 | echo "Creating Vortex install desktop shortcut..." 17 | ln -s ~/.pikdum/steam-deck-master/vortex/install-vortex.desktop ~/Desktop/install-vortex.desktop || true 18 | else 19 | # update .desktop file to make sure it's up to date 20 | cp ~/.pikdum/steam-deck-master/vortex/vortex.desktop ~/.local/share/applications/ 21 | 22 | echo "Creating Vortex desktop shortcuts..." 23 | ln -sf ~/.local/share/applications/vortex.desktop ~/Desktop/ 24 | ln -sf ~/.pikdum/steam-deck-master/vortex/skyrim-post-deploy.desktop ~/Desktop/ 25 | ln -sf ~/.pikdum/steam-deck-master/vortex/skyrimle-post-deploy.desktop ~/Desktop/ 26 | ln -sf ~/.pikdum/steam-deck-master/vortex/fallout4-post-deploy.desktop ~/Desktop/ 27 | ln -sf ~/.pikdum/steam-deck-master/vortex/falloutnv-post-deploy.desktop ~/Desktop/ 28 | ln -sf ~/.pikdum/steam-deck-master/vortex/fallout3-post-deploy.desktop ~/Desktop/ 29 | ln -sf ~/.pikdum/steam-deck-master/vortex/oblivion-post-deploy.desktop ~/Desktop/ 30 | 31 | echo "Vortex is already installed, updating umu-launcher..." 32 | ~/.pikdum/steam-deck-master/vortex/install-umu.sh 33 | fi 34 | 35 | MOUNTPOINT="$(findmnt /dev/mmcblk0p1 -o TARGET -n)" 36 | 37 | mkdir -p $MOUNTPOINT/vortex-downloads || true 38 | -------------------------------------------------------------------------------- /update.desktop: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env xdg-open 2 | [Desktop Entry] 3 | Name=Update Pikdum's Tools 4 | Exec=curl https://raw.githubusercontent.com/pikdum/steam-deck/master/install.sh | bash -s -- 5 | Icon=steamdeck-gaming-return 6 | Terminal=true 7 | Type=Application 8 | StartupNotify=false 9 | -------------------------------------------------------------------------------- /vortex/fallout3-post-deploy.desktop.in: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env xdg-open 2 | [Desktop Entry] 3 | Name=Fallout 3 Post-Deploy 4 | Exec=$HOME/.pikdum/steam-deck-master/vortex/fallout3-post-deploy.sh 5 | Icon=steam_icon_22300 6 | Terminal=true 7 | Type=Application 8 | StartupNotify=false 9 | -------------------------------------------------------------------------------- /vortex/fallout3-post-deploy.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -euxo pipefail 3 | 4 | FALLOUT3_INTERNAL="$HOME/.steam/steam/steamapps/common/Fallout 3/" 5 | FALLOUT3_EXTERNAL="/run/media/mmcblk0p1/steamapps/common/Fallout 3/" 6 | 7 | fose_setup() { 8 | if [ -d "$1" ] && 9 | [ -f "${1}fose_loader.exe" ] && 10 | [ -f "${1}Fallout3Launcher.exe" ]; then 11 | cd "$1" 12 | if ! cmp --silent -- "fose_loader.exe" "Fallout3Launcher.exe"; then 13 | echo "Swapping Fallout3Launcher.exe for fose_loader.exe" 14 | mv Fallout3Launcher.exe _Fallout3Launcher.exe 15 | cp fose_loader.exe Fallout3Launcher.exe 16 | fi 17 | fi 18 | } 19 | 20 | fose_setup "$FALLOUT3_INTERNAL" 21 | fose_setup "$FALLOUT3_EXTERNAL" 22 | 23 | APPDATA_VORTEX="$HOME/.vortex-linux/compatdata/pfx/drive_c/users/steamuser/AppData/Local/fallout3/" 24 | APPDATA_INTERNAL="$HOME/.local/share/Steam/steamapps/compatdata/22300/pfx/drive_c/users/steamuser/AppData/Local/fallout3/" 25 | APPDATA_EXTERNAL="/run/media/mmcblk0p1/steamapps/compatdata/22300/pfx/drive_c/users/steamuser/AppData/Local/fallout3/" 26 | 27 | echo "Copying loadorder.txt and plugins.txt" 28 | mkdir -p "$APPDATA_INTERNAL" || true 29 | mkdir -p "$APPDATA_EXTERNAL" || true 30 | cp "$APPDATA_VORTEX"/* "$APPDATA_INTERNAL" || true 31 | cp "$APPDATA_VORTEX"/* "$APPDATA_EXTERNAL" || true 32 | # use Plugins.txt instead of plugins.txt 33 | mv "$APPDATA_INTERNAL/plugins.txt" "$APPDATA_INTERNAL/Plugins.txt" || true 34 | mv "$APPDATA_EXTERNAL/plugins.txt" "$APPDATA_EXTERNAL/Plugins.txt" || true 35 | 36 | echo "Success! Exiting in 3..." 37 | sleep 3 38 | -------------------------------------------------------------------------------- /vortex/fallout4-post-deploy.desktop.in: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env xdg-open 2 | [Desktop Entry] 3 | Name=Fallout 4 Post-Deploy 4 | Exec=$HOME/.pikdum/steam-deck-master/vortex/fallout4-post-deploy.sh 5 | Icon=steam_icon_377160 6 | Terminal=true 7 | Type=Application 8 | StartupNotify=false 9 | -------------------------------------------------------------------------------- /vortex/fallout4-post-deploy.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -euxo pipefail 3 | 4 | FALLOUT4_INTERNAL="$HOME/.steam/steam/steamapps/common/Fallout 4/" 5 | FALLOUT4_EXTERNAL="/run/media/mmcblk0p1/steamapps/common/Fallout 4/" 6 | 7 | f4se_setup() { 8 | if [ -d "$1" ] && 9 | [ -f "${1}f4se_loader.exe" ] && 10 | [ -f "${1}Fallout4Launcher.exe" ]; then 11 | cd "$1" 12 | if ! cmp --silent -- "f4se_loader.exe" "Fallout4Launcher.exe"; then 13 | echo "Swapping Fallout4Launcher.exe for f4se_loader.exe" 14 | mv Fallout4Launcher.exe _Fallout4Launcher.exe 15 | cp f4se_loader.exe Fallout4Launcher.exe 16 | fi 17 | fi 18 | } 19 | 20 | f4se_setup "$FALLOUT4_INTERNAL" 21 | f4se_setup "$FALLOUT4_EXTERNAL" 22 | 23 | APPDATA_VORTEX="$HOME/.vortex-linux/compatdata/pfx/drive_c/users/steamuser/AppData/Local/Fallout4" 24 | APPDATA_INTERNAL="$HOME/.local/share/Steam/steamapps/compatdata/377160/pfx/drive_c/users/steamuser/AppData/Local/Fallout4/" 25 | APPDATA_EXTERNAL="/run/media/mmcblk0p1/steamapps/compatdata/377160/pfx/drive_c/users/steamuser/AppData/Local/Fallout4/" 26 | 27 | echo "Copying loadorder.txt and plugins.txt" 28 | mkdir -p "$APPDATA_INTERNAL" || true 29 | mkdir -p "$APPDATA_EXTERNAL" || true 30 | cp "$APPDATA_VORTEX"/* "$APPDATA_INTERNAL" || true 31 | cp "$APPDATA_VORTEX"/* "$APPDATA_EXTERNAL" || true 32 | # use Plugins.txt instead of plugins.txt 33 | mv "$APPDATA_INTERNAL/plugins.txt" "$APPDATA_INTERNAL/Plugins.txt" || true 34 | mv "$APPDATA_EXTERNAL/plugins.txt" "$APPDATA_EXTERNAL/Plugins.txt" || true 35 | 36 | echo "Success! Exiting in 3..." 37 | sleep 3 38 | -------------------------------------------------------------------------------- /vortex/falloutnv-post-deploy.desktop.in: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env xdg-open 2 | [Desktop Entry] 3 | Name=Fallout New Vegas Post-Deploy 4 | Exec=$HOME/.pikdum/steam-deck-master/vortex/falloutnv-post-deploy.sh 5 | Icon=steam_icon_22380 6 | Terminal=true 7 | Type=Application 8 | StartupNotify=false 9 | -------------------------------------------------------------------------------- /vortex/falloutnv-post-deploy.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -euxo pipefail 3 | 4 | FALLOUTNV_INTERNAL="$HOME/.steam/steam/steamapps/common/Fallout New Vegas/" 5 | FALLOUTNV_EXTERNAL="/run/media/mmcblk0p1/steamapps/common/Fallout New Vegas/" 6 | 7 | nvse_setup() { 8 | if [ -d "$1" ] && 9 | [ -f "${1}nvse_loader.exe" ] && 10 | [ -f "${1}FalloutNVLauncher.exe" ]; then 11 | cd "$1" 12 | if ! cmp --silent -- "nvse_loader.exe" "FalloutNVLauncher.exe"; then 13 | echo "Swapping FalloutNVLauncher.exe for nvse_loader.exe" 14 | mv FalloutNVLauncher.exe _FalloutNVLauncher.exe 15 | cp nvse_loader.exe FalloutNVLauncher.exe 16 | fi 17 | fi 18 | } 19 | 20 | nvse_setup "$FALLOUTNV_INTERNAL" 21 | nvse_setup "$FALLOUTNV_EXTERNAL" 22 | 23 | APPDATA_VORTEX="$HOME/.vortex-linux/compatdata/pfx/drive_c/users/steamuser/AppData/Local/FalloutNV/" 24 | APPDATA_INTERNAL="$HOME/.local/share/Steam/steamapps/compatdata/22380/pfx/drive_c/users/steamuser/AppData/Local/FalloutNV/" 25 | APPDATA_EXTERNAL="/run/media/mmcblk0p1/steamapps/compatdata/22380/pfx/drive_c/users/steamuser/AppData/Local/FalloutNV/" 26 | 27 | echo "Copying loadorder.txt and plugins.txt" 28 | mkdir -p "$APPDATA_INTERNAL" || true 29 | mkdir -p "$APPDATA_EXTERNAL" || true 30 | cp "$APPDATA_VORTEX"/* "$APPDATA_INTERNAL" || true 31 | cp "$APPDATA_VORTEX"/* "$APPDATA_EXTERNAL" || true 32 | # use Plugins.txt instead of plugins.txt 33 | mv "$APPDATA_INTERNAL/plugins.txt" "$APPDATA_INTERNAL/Plugins.txt" || true 34 | mv "$APPDATA_EXTERNAL/plugins.txt" "$APPDATA_EXTERNAL/Plugins.txt" || true 35 | 36 | echo "Success! Exiting in 3..." 37 | sleep 3 38 | -------------------------------------------------------------------------------- /vortex/falloutnv-pre-deploy.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -euxo pipefail 3 | 4 | FALLOUTNV_INTERNAL="$HOME/.steam/steam/steamapps/common/Fallout New Vegas/" 5 | FALLOUTNV_EXTERNAL="/run/media/mmcblk0p1/steamapps/common/Fallout New Vegas/" 6 | 7 | INIFILES_VORTEX="$HOME/.vortex-linux/compatdata/pfx/drive_c/users/steamuser/Documents/My Games/FalloutNV/" 8 | INIFILES_INTERNAL="$HOME/.local/share/Steam/steamapps/compatdata/22380/pfx/drive_c/users/steamuser/Documents/My Games/FalloutNV/" 9 | INIFILES_EXTERNAL="/run/media/mmcblk0p1/steamapps/compatdata/22380/pfx/drive_c/users/steamuser/Documents/My Games/FalloutNV/" 10 | 11 | if [ -d "$INIFILES_EXTERNAL" ]; then 12 | ln -sf "$INIFILES_EXTERNAL"/Fallout.ini "$INIFILES_VORTEX"/ 13 | ln -sf "$INIFILES_EXTERNAL"/FalloutPrefs.ini "$INIFILES_VORTEX"/ 14 | fi 15 | 16 | if [ -d "$INIFILES_INTERNAL" ]; then 17 | ln -sf "$INIFILES_INTERNAL"/Fallout.ini "$INIFILES_VORTEX"/ 18 | ln -sf "$INIFILES_INTERNAL"/FalloutPrefs.ini "$INIFILES_VORTEX"/ 19 | fi 20 | 21 | sleep 3 22 | -------------------------------------------------------------------------------- /vortex/install-umu.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -euxo pipefail 3 | 4 | UMU_VERSION="1.2.6" 5 | UMU_URL="https://github.com/Open-Wine-Components/umu-launcher/releases/download/$UMU_VERSION/umu-launcher-$UMU_VERSION-zipapp.tar" 6 | UMU_DIR="$HOME/.pikdum/umu" 7 | 8 | echo "Installing umu-launcher $UMU_VERSION..." 9 | 10 | # Create umu directory 11 | mkdir -p "$UMU_DIR" 12 | cd "$UMU_DIR" 13 | 14 | # Download umu-launcher 15 | echo "Downloading umu-launcher from $UMU_URL..." 16 | wget -O "umu-launcher-$UMU_VERSION-zipapp.tar" "$UMU_URL" 17 | 18 | # Extract with strip-components to remove leading directory 19 | echo "Extracting umu-launcher..." 20 | tar --strip-components=1 -xf "umu-launcher-$UMU_VERSION-zipapp.tar" 21 | 22 | # Make all files executable 23 | chmod +x * 24 | 25 | # Clean up downloaded archive 26 | rm "umu-launcher-$UMU_VERSION-zipapp.tar" 27 | 28 | echo "umu-launcher installation completed successfully!" 29 | -------------------------------------------------------------------------------- /vortex/install-vortex.desktop.in: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env xdg-open 2 | [Desktop Entry] 3 | Name=Install Vortex 4 | Exec=$HOME/.pikdum/steam-deck-master/vortex/install-vortex.sh 5 | Icon=$HOME/.pikdum/steam-deck-master/vortex/vortex.ico 6 | Terminal=true 7 | Type=Application 8 | StartupNotify=false 9 | -------------------------------------------------------------------------------- /vortex/install-vortex.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -euxo pipefail 3 | 4 | VORTEX_VERSION="1.13.7" 5 | VORTEX_INSTALLER="vortex-setup-$VORTEX_VERSION.exe" 6 | VORTEX_URL="https://github.com/Nexus-Mods/Vortex/releases/download/v$VORTEX_VERSION/$VORTEX_INSTALLER" 7 | DOTNET_URL="https://builds.dotnet.microsoft.com/dotnet/WindowsDesktop/6.0.36/windowsdesktop-runtime-6.0.36-win-x64.exe" 8 | 9 | export WINEPREFIX="$HOME/.vortex-linux/compatdata/pfx" 10 | 11 | mkdir -p ~/.pikdum/steam-deck-master/vortex/ 12 | cd ~/.pikdum/steam-deck-master/vortex/ 13 | 14 | # Install umu-launcher 15 | ./install-umu.sh 16 | 17 | # Download Vortex installer 18 | wget -O "$VORTEX_INSTALLER" "$VORTEX_URL" 19 | 20 | # Install .NET runtime 21 | wget -O dotnet-runtime.exe "$DOTNET_URL" 22 | ~/.pikdum/umu/umu-run dotnet-runtime.exe /q 23 | 24 | # Install Vortex 25 | ~/.pikdum/umu/umu-run "$VORTEX_INSTALLER" /S 26 | 27 | # Create desktop file 28 | mkdir -p ~/.local/share/applications 29 | cp ~/.pikdum/steam-deck-master/vortex/vortex.desktop ~/.local/share/applications/ 30 | 31 | # Set up drive letter mappings for Steam libraries 32 | cd "$WINEPREFIX/dosdevices" 33 | 34 | if [ -d "$HOME/.steam/steam/steamapps/common/" ]; then 35 | ln -s "$HOME/.steam/steam/steamapps/common/" j: || true 36 | fi 37 | 38 | MOUNTPOINT="$(findmnt /dev/mmcblk0p1 -o TARGET -n)" 39 | if [ -d "$MOUNTPOINT/steamapps/common/" ]; then 40 | ln -s "$MOUNTPOINT/steamapps/common/" k: || true 41 | fi 42 | 43 | update-desktop-database || true 44 | 45 | rm -f ~/Desktop/install-vortex.desktop 46 | ln -sf ~/.local/share/applications/vortex.desktop ~/Desktop/ 47 | ln -sf ~/.pikdum/steam-deck-master/vortex/skyrim-post-deploy.desktop ~/Desktop/ 48 | ln -sf ~/.pikdum/steam-deck-master/vortex/skyrimle-post-deploy.desktop ~/Desktop/ 49 | ln -sf ~/.pikdum/steam-deck-master/vortex/fallout4-post-deploy.desktop ~/Desktop/ 50 | ln -sf ~/.pikdum/steam-deck-master/vortex/falloutnv-post-deploy.desktop ~/Desktop/ 51 | ln -sf ~/.pikdum/steam-deck-master/vortex/falloutnv-pre-deploy.desktop ~/Desktop/ 52 | ln -sf ~/.pikdum/steam-deck-master/vortex/fallout3-post-deploy.desktop ~/Desktop/ 53 | ln -sf ~/.pikdum/steam-deck-master/vortex/oblivion-post-deploy.desktop ~/Desktop/ 54 | 55 | mkdir -p $MOUNTPOINT/vortex-downloads || true 56 | 57 | echo "Success! Exiting in 3..." 58 | sleep 3 59 | -------------------------------------------------------------------------------- /vortex/oblivion-post-deploy.desktop.in: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env xdg-open 2 | [Desktop Entry] 3 | Name=Oblivion Post-Deploy 4 | Exec=$HOME/.pikdum/steam-deck-master/vortex/oblivion-post-deploy.sh 5 | Icon=steam_icon_22330 6 | Terminal=true 7 | Type=Application 8 | StartupNotify=false 9 | -------------------------------------------------------------------------------- /vortex/oblivion-post-deploy.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -euxo pipefail 3 | 4 | OBLIVION_INTERNAL="$HOME/.steam/steam/steamapps/common/Oblivion/" 5 | OBLIVION_EXTERNAL="/run/media/mmcblk0p1/steamapps/common/Oblivion/" 6 | 7 | obse_setup() { 8 | if [ -d "$1" ] && 9 | [ -f "${1}obse_loader.exe" ] && 10 | [ -f "${1}OblivionLauncher.exe" ]; then 11 | cd "$1" 12 | if ! cmp --silent -- "obse_loader.exe" "OblivionLauncher.exe"; then 13 | echo "Swapping OblivionLauncher.exe for obse_loader.exe" 14 | mv OblivionLauncher.exe _OblivionLauncher.exe 15 | cp obse_loader.exe OblivionLauncher.exe 16 | fi 17 | fi 18 | } 19 | 20 | obse_setup "$OBLIVION_INTERNAL" 21 | obse_setup "$OBLIVION_EXTERNAL" 22 | 23 | APPDATA_VORTEX="$HOME/.vortex-linux/compatdata/pfx/drive_c/users/steamuser/AppData/Local/Oblivion/" 24 | APPDATA_INTERNAL="$HOME/.local/share/Steam/steamapps/compatdata/22330/pfx/drive_c/users/steamuser/AppData/Local/Oblivion/" 25 | APPDATA_EXTERNAL="/run/media/mmcblk0p1/steamapps/compatdata/22330/pfx/drive_c/users/steamuser/AppData/Local/Oblivion/" 26 | 27 | echo "Copying loadorder.txt and plugins.txt" 28 | mkdir -p "$APPDATA_INTERNAL" || true 29 | mkdir -p "$APPDATA_EXTERNAL" || true 30 | cp "$APPDATA_VORTEX"/* "$APPDATA_INTERNAL" || true 31 | cp "$APPDATA_VORTEX"/* "$APPDATA_EXTERNAL" || true 32 | # use Plugins.txt instead of plugins.txt 33 | mv "$APPDATA_INTERNAL/plugins.txt" "$APPDATA_INTERNAL/Plugins.txt" || true 34 | mv "$APPDATA_EXTERNAL/plugins.txt" "$APPDATA_EXTERNAL/Plugins.txt" || true 35 | 36 | echo "Success! Exiting in 3..." 37 | sleep 3 38 | -------------------------------------------------------------------------------- /vortex/skyrim-post-deploy.desktop.in: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env xdg-open 2 | [Desktop Entry] 3 | Name=Skyrim SE/AE Post-Deploy 4 | Exec=$HOME/.pikdum/steam-deck-master/vortex/skyrim-post-deploy.sh 5 | Icon=steam_icon_489830 6 | Terminal=true 7 | Type=Application 8 | StartupNotify=false 9 | -------------------------------------------------------------------------------- /vortex/skyrim-post-deploy.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -euxo pipefail 3 | 4 | SKYRIM_INTERNAL="$HOME/.steam/steam/steamapps/common/Skyrim Special Edition/" 5 | SKYRIM_EXTERNAL="/run/media/mmcblk0p1/steamapps/common/Skyrim Special Edition/" 6 | 7 | skse_setup() { 8 | if [ -d "$1" ] && 9 | [ -f "${1}skse64_loader.exe" ] && 10 | [ -f "${1}SkyrimSELauncher.exe" ]; then 11 | cd "$1" 12 | if ! cmp --silent -- "skse64_loader.exe" "SkyrimSELauncher.exe"; then 13 | echo "Swapping SkyrimSELauncher.exe for skse64_loader.exe" 14 | mv SkyrimSELauncher.exe _SkyrimSELauncher.exe 15 | cp skse64_loader.exe SkyrimSELauncher.exe 16 | fi 17 | fi 18 | } 19 | 20 | skse_setup "$SKYRIM_INTERNAL" 21 | skse_setup "$SKYRIM_EXTERNAL" 22 | 23 | APPDATA_VORTEX="$HOME/.vortex-linux/compatdata/pfx/drive_c/users/steamuser/AppData/Local/Skyrim Special Edition" 24 | APPDATA_INTERNAL="$HOME/.local/share/Steam/steamapps/compatdata/489830/pfx/drive_c/users/steamuser/AppData/Local/Skyrim Special Edition/" 25 | APPDATA_EXTERNAL="/run/media/mmcblk0p1/steamapps/compatdata/489830/pfx/drive_c/users/steamuser/AppData/Local/Skyrim Special Edition/" 26 | 27 | echo "Copying loadorder.txt and plugins.txt" 28 | mkdir -p "$APPDATA_INTERNAL" || true 29 | mkdir -p "$APPDATA_EXTERNAL" || true 30 | cp "$APPDATA_VORTEX"/* "$APPDATA_INTERNAL" || true 31 | cp "$APPDATA_VORTEX"/* "$APPDATA_EXTERNAL" || true 32 | # use Plugins.txt instead of plugins.txt 33 | mv "$APPDATA_INTERNAL/plugins.txt" "$APPDATA_INTERNAL/Plugins.txt" || true 34 | mv "$APPDATA_EXTERNAL/plugins.txt" "$APPDATA_EXTERNAL/Plugins.txt" || true 35 | 36 | echo "Success! Exiting in 3..." 37 | sleep 3 38 | -------------------------------------------------------------------------------- /vortex/skyrimle-post-deploy.desktop.in: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env xdg-open 2 | [Desktop Entry] 3 | Name=Skyrim LE Post-Deploy 4 | Exec=$HOME/.pikdum/steam-deck-master/vortex/skyrimle-post-deploy.sh 5 | Icon=steam_icon_2028782 6 | Terminal=true 7 | Type=Application 8 | StartupNotify=false 9 | -------------------------------------------------------------------------------- /vortex/skyrimle-post-deploy.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -euxo pipefail 3 | 4 | SKYRIM_INTERNAL="$HOME/.steam/steam/steamapps/common/Skyrim/" 5 | SKYRIM_EXTERNAL="/run/media/mmcblk0p1/steamapps/common/Skyrim/" 6 | 7 | skse_setup() { 8 | if [ -d "$1" ] && 9 | [ -f "${1}skse_loader.exe" ] && 10 | [ -f "${1}SkyrimLauncher.exe" ]; then 11 | cd "$1" 12 | if ! cmp --silent -- "skse_loader.exe" "SkyrimLauncher.exe"; then 13 | echo "Swapping SkyrimLauncher.exe for skse_loader.exe" 14 | mv SkyrimLauncher.exe _SkyrimLauncher.exe 15 | cp skse_loader.exe SkyrimLauncher.exe 16 | fi 17 | fi 18 | } 19 | 20 | skse_setup "$SKYRIM_INTERNAL" 21 | skse_setup "$SKYRIM_EXTERNAL" 22 | 23 | APPDATA_VORTEX="$HOME/.vortex-linux/compatdata/pfx/drive_c/users/steamuser/AppData/Local/Skyrim" 24 | APPDATA_INTERNAL="$HOME/.local/share/Steam/steamapps/compatdata/2028782/pfx/drive_c/users/steamuser/AppData/Local/Skyrim/" 25 | APPDATA_EXTERNAL="/run/media/mmcblk0p1/steamapps/compatdata/2028782/pfx/drive_c/users/steamuser/AppData/Local/Skyrim/" 26 | 27 | echo "Copying loadorder.txt and plugins.txt" 28 | mkdir -p "$APPDATA_INTERNAL" || true 29 | mkdir -p "$APPDATA_EXTERNAL" || true 30 | cp "$APPDATA_VORTEX"/* "$APPDATA_INTERNAL" || true 31 | cp "$APPDATA_VORTEX"/* "$APPDATA_EXTERNAL" || true 32 | # use Plugins.txt instead of plugins.txt 33 | mv "$APPDATA_INTERNAL/plugins.txt" "$APPDATA_INTERNAL/Plugins.txt" || true 34 | mv "$APPDATA_EXTERNAL/plugins.txt" "$APPDATA_EXTERNAL/Plugins.txt" || true 35 | 36 | echo "Success! Exiting in 3..." 37 | sleep 3 38 | -------------------------------------------------------------------------------- /vortex/vortex-wrapper.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | export WINEPREFIX="$HOME/.vortex-linux/compatdata/pfx" 3 | 4 | cd "$WINEPREFIX/drive_c/Program Files/Black Tree Gaming Ltd/Vortex" || exit 1 5 | 6 | # Check for -d or -i with no "nxm" in the following argument 7 | if [[ ("$1" == "-d" || "$1" == "-i") && "$2" != *"nxm"* ]]; then 8 | echo "No url provided, ignoring $1" 9 | exec ~/.pikdum/umu/umu-run Vortex.exe 10 | else 11 | export PROTON_VERB="runinprefix" 12 | exec ~/.pikdum/umu/umu-run Vortex.exe "$@" 13 | fi 14 | -------------------------------------------------------------------------------- /vortex/vortex.desktop.in: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Type=Application 3 | Categories=Game;Utility 4 | Name=Vortex 5 | MimeType=x-scheme-handler/nxm;x-scheme-handler/nxm-protocol 6 | Terminal=false 7 | X-KeepTerminal=false 8 | Path=$HOME/.vortex-linux/compatdata/pfx/drive_c/Program Files/Black Tree Gaming Ltd/Vortex 9 | Exec=$HOME/.pikdum/steam-deck-master/vortex/vortex-wrapper.sh -d %u 10 | Icon=$HOME/.pikdum/steam-deck-master/vortex/vortex.ico 11 | -------------------------------------------------------------------------------- /vortex/vortex.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pikdum/steam-deck/6fa251792c95e78469af926f6c79cbb6a1a85962/vortex/vortex.ico --------------------------------------------------------------------------------