# Only create aliases if the underlying programs are available
# This allows portability between machines in different states
alias_if_exists () {
  ALIAS=${1}
  COMMAND=${2}
  ARGS=${3}
  if [ $(command -v $COMMAND) ]; then
    if [ -n "$ARGS" ]; then
      alias $ALIAS="$COMMAND $ARGS"
    else
      alias $ALIAS="$COMMAND"
    fi
  fi
}

# Context-sensitive aliases
alias_if_exists config git '--git-dir=$HOME/.cfg/ --work-tree=$HOME'
alias_if_exists bat batcat
alias_if_exists cat bat
alias_if_exists ls lsd

# Universal aliases
alias please='sudo $(fc -ln -1)'
alias nrun='__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia __VK_LAYER_NV_optimus="NVIDIA_only"'

# Alias-like functions
nd () {
  mkdir "$1"
  cd "$1"
}