#!/bin/sh
set -e

# Set these to reasonable defaults if not already set
if [ -z "$XDG_CONFIG_HOME" ]; then
  export XDG_CONFIG_HOME="$SNAP_REAL_HOME/.config"
fi

if [ -z "$XDG_CACHE_HOME" ]; then
  export XDG_CACHE_HOME="$SNAP_REAL_HOME/.cache"
fi

if [ -z "$XDG_DATA_HOME" ]; then
  export XDG_DATA_HOME="$SNAP_REAL_HOME/.local/share"
fi

if [ -f "$SNAP_USER_DATA/.last_revision" ]; then
  if ! source "$SNAP_USER_DATA/.last_revision" 2>/dev/null; then
    # file exist but sourcing it fails, so it's likely
    # not good anyway
    rm -f "$SNAP_USER_DATA/.last_revision"
  fi
fi

if [ "$LAST_REVISION" = "$SNAP_REVISION" ]; then
  needs_update=false
else
  needs_update=true
fi

export HOME="$SNAP_REAL_HOME"

if [ "$SNAP_ARCH" = "amd64" ]; then
  ARCH="x86_64-linux-gnu"
elif [ "$SNAP_ARCH" = "arm64" ]; then
  ARCH="aarch64-linux-gnu"
else
  ARCH="$SNAP_ARCH-linux-gnu"
fi

export LD_LIBRARY_PATH=${SNAP}/usr/lib/${ARCH}:${SNAP}/usr/lib/${ARCH}/vdpau:${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}
export LIBGL_DRIVERS_PATH=${LIBGL_DRIVERS_PATH:+$LIBGL_DRIVERS_PATH:}${SNAP}/usr/lib/${ARCH}/dri/
export LIBVA_DRIVERS_PATH=${LIBVA_DRIVERS_PATH:+$LIBVA_DRIVERS_PATH:}${SNAP}/usr/lib/${ARCH}/dri/
export __EGL_VENDOR_LIBRARY_DIRS=${__EGL_VENDOR_LIBRARY_DIRS:+$__EGL_VENDOR_LIBRARY_DIRS:}/etc/glvnd/egl_vendor.d:/usr/share/glvnd/egl_vendor.d:${SNAP}/usr/share/glvnd/egl_vendor.d
export __EGL_EXTERNAL_PLATFORM_CONFIG_DIRS=${__EGL_EXTERNAL_PLATFORM_CONFIG_DIRS:+$__EGL_EXTERNAL_PLATFORM_CONFIG_DIRS:}${SNAP}/usr/share/egl/egl_external_platform.d
export DRIRC_CONFIGDIR=${SNAP}/usr/share/drirc.d
export VK_LAYER_PATH=${VK_LAYER_PATH:+$VK_LAYER_PATH:}${SNAP}/usr/share/vulkan/implicit_layer.d/:${SNAP}/usr/share/vulkan/explicit_layer.d/
export XDG_DATA_DIRS=${SNAP}/usr/share${XDG_DATA_DIRS:+:$XDG_DATA_DIRS}
export XLOCALEDIR="${SNAP}/usr/share/X11/locale"
export GTK_PATH="$SNAP/usr/lib/$ARCH/gtk-4.0"
export GIO_MODULE_DIR="$SNAP/usr/lib/$ARCH/gio/modules"
unset GIO_EXTRA_MODULES
export TERMINFO_DIRS="${SNAP}/share/terminfo${TERMINFO_DIRS:+:$TERMINFO_DIRS}"

# Gdk-pixbuf loaders
mkdir -p "$SNAP_USER_COMMON/.cache"
export GDK_PIXBUF_MODULE_FILE="$SNAP_USER_COMMON/.cache/gdk-pixbuf-loaders.cache"
export GDK_PIXBUF_MODULEDIR="$SNAP/usr/lib/$ARCH/gdk-pixbuf-2.0/2.10.0/loaders"
if [ "$needs_update" = true ] || [ ! -f "$GDK_PIXBUF_MODULE_FILE" ]; then
  rm -f "$GDK_PIXBUF_MODULE_FILE"
  if [ -f "$SNAP/usr/lib/$ARCH/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders" ]; then
    "$SNAP/usr/lib/$ARCH/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders" > "$GDK_PIXBUF_MODULE_FILE"
  fi
fi

if [ "${__NV_PRIME_RENDER_OFFLOAD:-}" != 1 ]; then
  # Prevent picking VA-API (Intel/AMD) over NVIDIA VDPAU
  # https://download.nvidia.com/XFree86/Linux-x86_64/510.54/README/primerenderoffload.html#configureapplications
  export LIBVA_DRIVERS_PATH
fi

[ "$needs_update" = true ] && echo "LAST_REVISION=$SNAP_REVISION" > "$SNAP_USER_DATA/.last_revision"

exec "$@"
