#!/usr/bin/env zsh

# WARNING!! This file is not well written. It probably only works on my setup,
# with Lutris thinking it's running Skyrim from GOG, but really running MO2

local conf_file="${HOME}/.config/lutris/games/the_elder_scrolls_v_skyrim_special_edition-1703312623.yml"

local wine_ver="$(cat "${conf_file}" | yq -r ".wine.version")"

local wine_bin
if [[ -d "${HOME}/.local/share/Steam/compatibilitytools.d/${wine_ver}" ]]; then
    wine_bin="${HOME}/.local/share/Steam/compatibilitytools.d/${wine_ver}/files/bin"
elif [[ -d "${HOME}/.local/share/lutris/runners/wine/${wine_ver}" ]]; then
    wine_bin="${HOME}/.local/share/lutris/runners/wine/${wine_ver}/bin"
fi

local wine="${wine_bin}/wine"
local wineserver="${wine_bin}/wineserver"

let server_pid="$(pgrep -xf "${wineserver}" | head -n1)"

local server_env_arr=(${(0)"$(</proc/${server_pid}/environ)"})

typeset -A server_env

for entry in ${server_env_arr}; do
    local parts=(${(ps:=:)entry})
    eval "server_env[${(q)parts[1]}]=${(q)${(j:=:)${parts:1}}}"
done

for var in DISPLAY WINEPREFIX WINEFSYNC; do
    export "${var}=${server_env[$var]}"
done

"${wine}" "C:\\Modding\\MO2\\nxmhandler.exe" "${@}"