[[ $- != *i* ]] && return

shopt -s histappend
shopt -s checkwinsize
export HISTCONTROL=ignoreboth
export HISTSIZE=1000
export HISTFILESIZE=2000

set -o vi

export EDITOR=nvim
export GIT_EDITOR=nvim
export PIPENV_VERBOSITY=-1
export MAKEFLAGS="-j$(($(nproc) + 1))"
export JULIA_NUM_THREADS="$(nproc)"
export YAOURT_COLORS="nb=1:pkg=1:ver=1;32:lver=1;45:installed=1;42:grp=1;34:od=1;41;5:votes=1;44:dsc=0:other=1;35"
export XDG_CONFIG_HOME="$HOME/.config"
export PASSWORD_STORE_DIR="$HOME/.cache/password-store"
export GLAMOUR_STYLE="$XDG_CONFIG_HOME/glamour/tokyo_night.json"

if [[ "$(uname)" != "Windows_NT" ]]; then
    export GPG_TTY=$(tty)
fi

export LESS_TERMCAP_mb=$'\e[01;31m'
export LESS_TERMCAP_md=$'\e[01;31m'
export LESS_TERMCAP_me=$'\e[0m'
export LESS_TERMCAP_so=$'\e[01;44;36m'
export LESS_TERMCAP_se=$'\e[0m'
export LESS_TERMCAP_us=$'\e[00;36m'
export LESS_TERMCAP_ue=$'\e[0m'

if [ -f "$HOME/.config/path.env" ]; then
    while IFS= read -r line || [[ -n "$line" ]]; do
        [[ "$line" =~ ^#.*$ || -z "$line" ]] && continue
        expanded_path="${line/#\~/$HOME}"
        if [ -d "$expanded_path" ]; then
            export PATH="$expanded_path:$PATH"
        fi
    done < "$HOME/.config/path.env"
fi

# --- Aliases ---
# Modern Unix Replacements
alias cat='bat'
alias du='dust'
alias df='duf'
alias grep='rg'
alias cp='xcp'
alias find='fd'
alias top='btm'
alias htop='btm'
alias burn='command rm'
alias rm='rip'

# Convenience aliases
alias free='free -m'
alias npkg='nano -w PKGBUILD'
alias q='exit'
alias :q='exit'
alias c='clear'
alias h='history'
alias lsa='ls -a'
alias lsl='ls -l'
alias lsla='ls -la'

# Navigation
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
alias .....='cd ../../../..'

# Python / Poetry
alias pip-upgrade='python -m pip install --upgrade pip'
alias pypy='pypy3'
alias poem='poetry run python'
alias bashpoem='poetry run bash'
alias nupoem='poetry run nu'
alias jupyterpoem='poetry run jupyter'

# Misc
alias vim='nvim'
alias vi='nvim'
alias nix-bash='nix-shell --command bash'

cd() {
    builtin cd "$@" || return
    if [ -d .git ] && command -v onefetch >/dev/null 2>&1; then
        onefetch --nerd-fonts
    fi
}

sysfetch() {
    if command -v fastfetch >/dev/null 2>&1; then
        if { [[ "$TERM" == *"kitty"* ]] || [[ "$TERM" == *"ghostty"* ]]; } \
           && [ -f "$HOME/.config/fastfetch/kitty.jsonc" ]; then
            fastfetch --config "$HOME/.config/fastfetch/kitty.jsonc"
        else
            fastfetch
        fi
    elif command -v neofetch >/dev/null 2>&1; then
        echo "Why are you still using neofetch? It's deprecated!"
        neofetch
    elif command -v screenfetch >/dev/null 2>&1; then
        screenfetch
    elif command -v archey >/dev/null 2>&1; then
        archey
    elif command -v lsb_release >/dev/null 2>&1; then
        lsb_release -a
    elif command -v uname >/dev/null 2>&1; then
        uname
    fi
}

# --- Plugin Initializations ---
# Starship
if command -v starship >/dev/null 2>&1; then
    eval "$(starship init bash)"
fi

# Atuin (Shell History)
if command -v atuin >/dev/null 2>&1; then
    eval "$(atuin init bash)"
fi

# Direnv
if command -v direnv >/dev/null 2>&1; then
    eval "$(direnv hook bash)"
fi

# Rbw (Bitwarden)
if command -v rbw >/dev/null 2>&1; then
    eval "$(rbw gen-completions bash)"
fi

sysfetch
