#!/bin/sh

# Function to source a file only if it exists
maybe_source() {
    for file in "$@"; do
        [ -f "$file" ] && . "$file"
    done
}

maybe_source "$HOME/.config/environment.local"
maybe_source "$XDG_DATA_HOME/cargo/env"
maybe_source "$HOME/.nix-profile/etc/profile.d/nix.sh"
maybe_source "$HOME/.nix-profile/etc/profile.d/hm-session-vars.sh"

# set to defaults if any of these are unset
export XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}"
export XDG_STATE_HOME="${XDG_STATE_HOME:-$HOME/.local/state}"
export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
export XDG_CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}"
export TERMINFO_DIRS="$TERMINFO_DIRS:/usr/share/terminfo"

# runit
export SVDIR="$XDG_STATE_HOME"/service

# editor
export EDITOR=nvim
export SUDO_EDITOR="$(which $EDITOR)"
export PAGER=less

# sway
#export XDG_CURRENT_DESKTOP=sway
#export _JAVA_AWT_WM_NONREPARENTING=1
#export QT_WAYLAND_DISABLE_WINDOWDECORATION="1"

# virt
export LIBVIRT_DEFAULT_URI="qemu:///system"

# XDG enforcement
export ANDROID_HOME="$XDG_DATA_HOME"/android/Sdk
export ANDROID_USER_HOME="$XDG_DATA_HOME"/android
export CARGO_HOME="$XDG_DATA_HOME"/cargo
export GNUPGHOME="$XDG_DATA_HOME"/gnupg
export GRADLE_USER_HOME="$XDG_DATA_HOME"/gradle
export GRIDCOIN_DATADIR="$XDG_DATA_HOME"/GridcoinResearch
export GTK2_RC_FILES="$XDG_CONFIG_HOME"/gtk-2.0/gtkrc
export INPUTRC="$XDG_CONFIG_HOME"/readline/inputrc
export KDEHOME="$XDG_CONFIG_HOME"/kde
export KONAN_DATA_DIR="$XDG_DATA_HOME/konan"
export LESSHISTFILE="$XDG_STATE_HOME"/less/history
export MINETEST_USER_PATH="$XDG_DATA_HOME"/minetest
export NODE_REPL_HISTORY="$XDG_DATA_HOME"/node_repl_history
export NPM_CONFIG_CACHE="$XDG_CACHE_HOME"/npm                                 
export NPM_CONFIG_INIT_MODULE="$XDG_CONFIG_HOME"/npm/config/npm-init.js       
export NPM_CONFIG_TMP="$XDG_RUNTIME_DIR"/npm 
export NPM_CONFIG_USERCONFIG="$XDG_CONFIG_HOME"/npm/npmrc
export PASSWORD_STORE_DIR="$XDG_DATA_HOME"/pass
export PYTHON_HISTORY="$XDG_STATE_HOME"/python_history
export RUSTUP_HOME="$XDG_DATA_HOME"/rustup
export SQLITE_HISTORY="$XDG_CACHE_HOME"/sqlite_history
export WINEPREFIX="$XDG_DATA_HOME"/wine
export XCURSOR_PATH=/usr/share/icons:"$XDG_DATA_HOME"/icons
export _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME"/java

# Adds a directory to the START of PATH if not already present
prepend_to_path() {
    case ":$PATH:" in
        *":$1:"*) ;; # Already there, do nothing
        *) PATH="$1:$PATH" ;;
    esac
}

# Adds a directory to the END of PATH if not already present
append_to_path() {
    case ":$PATH:" in
        *":$1:"*) ;; # Already there, do nothing
        *) PATH="$PATH:$1" ;;
    esac
}

prepend_to_path "$HOME/.local/bin"
prepend_to_path "$HOME/.rebbletool/rebbletool/bin"
append_to_path "$XDG_DATA_HOME/xxtools"
append_to_path "$XDG_DATA_HOME/flutter/bin"
append_to_path "$HOME/platform-tools"
append_to_path "$ANDROID_HOME/platform-tools"

export PGUSER=postgres
export XBPS_DISTDIR="$HOME"/repos/void-packages

# pipewire logging
#export PIPEWIRE_DEBUG="*:1,mod.raop*:5,default*:5"
#export PIPEWIRE_LOG=/home/joel/pipewire.log

# Android build stuff
export USE_CCACHE=1
export CCACHE_EXEC=/usr/bin/ccache
if [ -d "$XDG_DATA_HOME"/flatpak/app/com.google.AndroidStudio/current/active/files/extra/android-studio ]; then
  export ANDROID_STUDIO="$XDG_DATA_HOME"/flatpak/app/com.google.AndroidStudio/current/active/files/extra/android-studio
else
  export ANDROID_STUDIO=/opt/android-studio
fi
