Setting up Lutris and games on external drive with seperated game/windows directories

Hey guys,

I’m new to Lutris. The last time I tried Linux for gaming was some years ago but since then the possibilities have evolved.

Recently I wanted to play around with a plug and play multi-boot drive for gaming. Now I have triple OS bootable external 1 TB HDD with Pop!_OS, Garuda KDE Dr460nized and Garuda LXQT-Kwin.
All three OS’ are supposed to have their own root partition but share a common media partition on which games and game-related media and downloads are supposed to land. I installed Garuda twice because I want to see if one performs better than the other due to a different desktop enviroment (and hence less resources being used in the background while playing a game). Once I know which Garuda perfoms better I will delete the other.

Here a screenshot from gparted summarising the drive:

If for some reason the screenshot does not load:

sudo lsblk -o NAME,FSSIZE,FSUSE%,FSTYPE,LABEL,PARTUUID,PARTLABEL,PTTYPE /dev/sdb
NAME   FSSIZE FSUSE% FSTYPE LABEL            PARTUUID                             PARTLABEL                    PTTYPE
sdb                                                                                                            gpt
├─sdb1                                       72b80af3-d558-46f2-9e27-78bac4b65870                              gpt
├─sdb2               vfat   BOOTLOADER       a8d4e4f3-076d-45ed-8c66-b5810feb4d8c                              gpt
├─sdb3               swap   shared swap      1eaa1460-74bd-48dd-8ae2-10bd46a7f57b shared swap                  gpt
├─sdb4 117,6G    15% ext4   Pop!_OS          61fb1bf2-8e50-4b4d-a14e-69ec6e09443f Pop!_OS (22.04 amd64 NVIDIA) gpt
├─sdb5  58,8G    38% ext4   GarudaDragonized 19290383-bc55-4af6-8924-ff6499149e15 Garuda Linux (dragonized)    gpt
├─sdb6  58,8G    23% ext4   GarudaLXQT-Kwin  6f542995-f5e6-4d1e-9791-fd4728f36a18 Garuda Linux (LXQT-Kwin)     gpt
└─sdb7 659,6G    27% ext4   shared media     e89bcb1e-2355-4c41-9601-d503f8613cfa shared media                 gpt

My test case is to get Horizon Zero Dawn running and using Vulkan.
I had several problems with installing/playing the game. It is now installed but it does not run (tried on Pop_OS! only) using Lutris

The struggle I believe to have, is that I do not understand how Lutris operates/handles my wine prefix which I have set up by a sh bash script that I run on each OS after initialising wine. When I initially checked the winecfg I noticed, that several windows drives are mapped/linked to parts of my drive, that I do not want to modify by accident by using wine, lutris or proton.

First of all my current folder structure on the shared media partition:

tree -L 2 /media/$USER/shared\ media/
/media/oparilames/shared media/
├── Downloads
│   ├── Benchmarks
│   └── GoG-Cache
├── fakeWindows
│   ├── ProgramData
│   ├── Program Files
│   ├── Program Files (x86)
│   ├── !ThisIsFakeWindows
│   ├── users
│   └── windows
├── Games
│   ├── !ThisIsGames
│   ├── horizon-zero-dawn
│   ├── Horizon Zero Dawn
│   └── Metro 2033 Redux
├── null -> /dev/null
├── pop!install.log
├── popOS_afterwine
└── Wallpapers
    └── 8e3c63bcb9cd8ece08e11e29e4d531ac.jpg

The !ThisIs directories are indicators that help me to immediately see if I’m in the intended place when installing/handling files via wine or Lutris.

Here the script I wrote:

#!/bin/bash
# This script overrides the faked windows directory structure in /home/$USER/.wine to only keep C:, D:, and G: for windows/wine stuff (C:), Downloads (D:) and Games (G:)
# Just in case folder structure does not exist yet:
mkdir -p ~/.wine/dosdevices
# move any existing windows related files created from wine to our new C folder:
mv -v ~/.wine/drive_c/* /media/$USER/shared\ media/fakeWindows
# remove remaining folder/file in .wine folder:
rm -rvf ~/.wine/drive_c

# other stuff in order to overwrite:
rm -vf ~/.wine/dosdevices/*:
ln -s /media/$USER/shared\ media/fakeWindows ~/.wine/dosdevices/c:
ln -s /media/$USER/shared\ media/Downloads ~/.wine/dosdevices/d:
ln -s /media/$USER/shared\ media/Games ~/.wine/dosdevices/g:

# recreate empty files like wine did (placeholders?)
cd ~/.wine/dosdevices && touch a:: b:: e:: f:: h:: i:: j:: k:: l:: m:: n:: o:: p:: q:: r:: s:: t:: u:: v:: w:: x:: y:: z:: 

If I already missed an easy way to let all versions of wine an Lutris know where I want the windows drives to point to (as default, not by creating a new wineprefix that I would have to pass to each windows application), please let me know.
I will give you further information, once I know what is required.

Please help me with some questions/ideas. In the next post I will attach a (debug) log created from Lutris to demonstrate what happens, when I try to start the game.