dotfiles/dot_config/bashrc
2024-10-05 15:17:26 -07:00

576 lines
15 KiB
Bash

#!/usr/bin/env bash
# ██████╗ █████╗ ███████╗██╗ ██╗██████╗ ██████╗
# ██╔══██╗██╔══██╗██╔════╝██║ ██║██╔══██╗██╔════╝
# ██████╔╝███████║███████╗███████║██████╔╝██║
# ██╔══██╗██╔══██║╚════██║██╔══██║██╔══██╗██║
# ██████╔╝██║ ██║███████║██║ ██║██║ ██║╚██████╗
# ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝
export HISTFILE="$XDG_STATE_HOME"/bash/history
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
alias ls='ls --color=auto'
alias grep='grep --color=auto'
PS1='[\u@\h \W]\$ '
export EDITOR='nvim'
export VISUAL="$EDITOR"
# ██╗ ██╗██████╗ ██████╗
# ╚██╗██╔╝██╔══██╗██╔════╝
# ╚███╔╝ ██║ ██║██║ ███╗
# ██╔██╗ ██║ ██║██║ ██║
# ██╔╝ ██╗██████╔╝╚██████╔╝
# ╚═╝ ╚═╝╚═════╝ ╚═════╝
# Almost this entire list:
# https://wiki.archlinux.org/title/XDG_Base_Directory
#
# Excluded:
# Anything that makes me nervous about breakage (e.g. ~/.terminfo)
# Programs that create their files outside the ~ directory (e.g. /usr/local/n)
# as the goal is less standardization and more a clean home directory
#
# I don't use most of these programs. Anything I actually use will be copied to
# relevant fish/conf.d files. The list exists here to both catch anything that
# bypasses fish and for newly installed programs, so I have an easy way to copy
# over the needed settings.
export XDG_CONFIG_HOME="$HOME"/.config
export XDG_CACHE_HOME="$HOME"/.cache
export XDG_DATA_HOME="$HOME"/.local/share
export XDG_STATE_HOME="$HOME"/.local/state
# abook
alias abook='abook --config $XDG_CONFIG_HOME/abook/abookrc --datafile $XDG_DATA_HOME/abook/addressbook'
# ack
export ACKRC="$XDG_CONFIG_HOME/ack/ackrc"
# Ansible
export ANSIBLE_HOME="${XDG_CONFIG_HOME}/ansible"
export ANSIBLE_CONFIG="${XDG_CONFIG_HOME}/ansible.cfg"
export ANSIBLE_GALAXY_CACHE_DIR="${XDG_CACHE_HOME}/ansible/galaxy_cache"
# asdf
export ASDF_CONFIG_FILE="${XDG_CONFIG_HOME}/asdf/asdfrc"
export ASDF_DATA_DIR="${XDG_DATA_HOME}/asdf"
# aspell
export ASPELL_CONF="per-conf $XDG_CONFIG_HOME/aspell/aspell.conf; personal $XDG_DATA_HOME/aspell/en.pws; repl $XDG_DATA_HOME/aspell/en.prepl"
# aws-cli
export AWS_SHARED_CREDENTIALS_FILE="$XDG_CONFIG_HOME"/aws/credentials
export AWS_CONFIG_FILE="$XDG_CONFIG_HOME"/aws/config
# azure-cli
export AZURE_CONFIG_DIR=$XDG_DATA_HOME/azure
# bash-completion
export BASH_COMPLETION_USER_FILE="$XDG_CONFIG_HOME"/bash-completion/bash_completion
# bashdb
alias bashdb='bashdb -x ${XDG_CONFIG_HOME:-$HOME/.config}/bashdb/bashdbinit'
# bazaar
# mkdir "$XDG_CONFIG_HOME"/bazaar
# bogofilter
export BOGOFILTER_DIR="$XDG_DATA_HOME"/bogofilter
# btpd-git
alias btpd='btpd -d $XDG_DATA_HOME/.btpd'
alias btcli='HOME="$XDG_DATA_HOME" btcli'
# calc
export CALCHISTFILE="$XDG_CACHE_HOME"/calc_history
# cargo
export CARGO_HOME="$XDG_DATA_HOME"/cargo
# cd-bookmark
export CD_BOOKMARK_FILE=$XDG_CONFIG_HOME/cd-bookmark/bookmarks
# cgdb
export CGDB_DIR=$XDG_CONFIG_HOME/cgdb
# chez-scheme
alias petite='petite --eehistory "$XDG_DATA_HOME"/chezscheme/history'
# chktex in texlive-binextra
export CHKTEXRC=$XDG_CONFIG_HOME/chktex
# cinelerra
export CIN_CONFIG="$XDG_CONFIG_HOME"/bcast5
# conky
alias conky='conky --config="$XDG_CONFIG_HOME"/conky/conkyrc'
# claws-mail
alias claws-mail='claws-mail --alternate-config-dir "$XDG_DATA_HOME"/claws-mail'
# crawl
export CRAWL_DIR="$XDG_DATA_HOME"/crawl/
# CUDA
export CUDA_CACHE_PATH="$XDG_CACHE_HOME"/nv
# dict
alias dict='dict -c "$XDG_CONFIG_HOME"/dict/dictrc'
# discord
export DISCORD_USER_DATA_DIR="${XDG_DATA_HOME}"
# Docker
export DOCKER_CONFIG="$XDG_CONFIG_HOME"/docker
# docker-machine
export MACHINE_STORAGE_PATH="$XDG_DATA_HOME"/docker-machine
# DOSBox
alias dosbox='dosbox -conf "$XDG_CONFIG_HOME"/dosbox/dosbox.conf'
# Electrum Bitcoin Wallet
export ELECTRUMDIR="$XDG_DATA_HOME/electrum"
# ELinks
export ELINKS_CONFDIR="$XDG_CONFIG_HOME"/elinks
# elixir
export MIX_XDG="true"
# Elm
export ELM_HOME="$XDG_CONFIG_HOME"/elm
# factorio
# nvim __install_dir/config-path.cfg
# use-system-read-write-data-directories=true
# nvim __install_dir/config/config.ini
# [path]
# read-data=__PATH__executable__/../../data
# write-data=.local/share/factorio
# fceux
export FCEUX_HOME="$XDG_CONFIG_HOME"/fceux
# FFmpeg
export FFMPEG_DATADIR="$XDG_CONFIG_HOME"/ffmpeg
# emscripten
export EM_CONFIG="$XDG_CONFIG_HOME"/emscripten/config
export EM_CACHE="$XDG_CACHE_HOME"/emscripten/cache
export EM_PORTS="$XDG_DATA_HOME"/emscripten/cache
alias emcc='emcc --em-config "$XDG_CONFIG_HOME"/emscripten/config --em-cache "$XDG_CACHE_HOME"/emscripten/cache'
# get_iplayer
export GETIPLAYERUSERPREFS="$XDG_DATA_HOME"/get_iplayer
# getmail
alias getmail='getmail --rcfile="$XDG_CONFIG_HOME/getmail/getmailrc" --getmaildir="$XDG_DATA_HOME/getmail"'
# ghcup-hs-bin
export GHCUP_USE_XDG_DIRS=true
# gliv
alias gliv='gliv --glivrc="$XDG_CONFIG_HOME"/gliv/glivrc'
# gnuradio
export GR_PREFS_PATH="$XDG_CONFIG_HOME"/gnuradio
export GRC_PREFS_PATH="$XDG_CONFIG_HOME"/gnuradio/grc.conf
# Go
export GOPATH="$XDG_DATA_HOME"/go
export GOMODCACHE="$XDG_CACHE_HOME"/go/mod
# gopass
# nvim "$XDG_CONFIG_HOM"$XDG_CONFIG_HOME"/config.yml
# root:
# path: gpgcli-gitcli-fs+file:///home/<userid>/.config/password-storeroot:
# path: gpgcli-gitcli-fs+file:///home/<userid>/.config/password-store
# GQ LDAP client
export GQRC="$XDG_CONFIG_HOME"/gqrc
export GQSTATE="$XDG_DATA_HOME"/gq/gq-state
# Gradle
export GRADLE_USER_HOME="$XDG_DATA_HOME"/gradle
# GTK
export GTK_RC_FILES="$XDG_CONFIG_HOME"/gtk-1.0/gtkrc
export GTK2_RC_FILES="$XDG_CONFIG_HOME/gtk-2.0/gtkrc":"$XDG_CONFIG_HOME/gtk-2.0/gtkrc.mine"
# Haskell Stack
export STACK_XDG=1
# hledger
export LEDGER_FILE="$XDG_DATA_HOME"/hledger.journal
# Houdini
export HOUDINI_USER_PREF_DIR="$XDG_CACHE_HOME"/houdini__HVER__
# imapfilter
export IMAPFILTER_HOME="$XDG_CONFIG_HOME/imapfilter"
# IPFS
export IPFS_PATH="$XDG_DATA_HOME"/ipfs
# irb
export IRBRC="$XDG_CONFIG_HOME"/irb/irbrc
# nvim "$XDG_CONFIG_HOME"/irb/irbrc
# IRB.conf[:SAVE_HISTORY] ||= 1000
# IRB.conf[:HISTORY_FILE] ||= File.join(ENV["XDG_DATA_HOME"], "irb", "history")
# irssi
alias irssi='irssi --config="$XDG_CONFIG_HOME"/irssi/config --home="$XDG_DATA_HOME"/irssi'
# isync
alias mbsync='mbsync -c "$XDG_CONFIG_HOME"/isync/mbsyncrc'
# Java OpenJDK
export _JAVA_OPTIONS="$_JAVA_OPTIONS" -Djava.util.prefs.userRoot="$XDG_CONFIG_HOME"/java
# k9s
export K9SCONFIG="$XDG_CONFIG_HOME"/k9s
# KDE
export KDEHOME="$XDG_CONFIG_HOME"/kde
# keychain
alias keychain='keychain --absolute --dir "$XDG_RUNTIME_DIR"/keychain'
# kodi
export KODI_DATA=$XDG_DATA_HOME/kodi
# kscript
export KSCRIPT_CACHE_DIR="$XDG_CACHE_HOME"/kscript
# ledger
alias ledger='ledger --init-file "$XDG_CONFIG_HOME"/ledgerrc'
# Leiningen
export LEIN_HOME="$XDG_DATA_HOME"/lein
# libdvdcss
export DVDCSS_CACHE="$XDG_DATA_HOME"/dvdcss
# libice
export ICEAUTHORITY="$XDG_CACHE_HOME"/ICEauthority
# libx11
export XCOMPOSEFILE="$XDG_CONFIG_HOME"/X11/xcompose
export XCOMPOSECACHE="$XDG_CACHE_HOME"/X11/xcompose
# ltrace
alias ltrace='ltrace -F "$XDG_CONFIG_HOME"/ltrace/ltrace.conf'
# lynx
export LYNX_CFG="$XDG_CONFIG_HOME"/lynx.cfg
# maptool-bin
# sudo nvim /opt/maptool/lib/app/MapTool.cfg
# [JavaOptions]
# -DMAPTOOL_DATADIR=.local/share/maptool-rptools
# Mathematica
export MATHEMATICA_USERBASE="$XDG_CONFIG_HOME"/mathematica
# maxima
export MAXIMA_USERDIR="$XDG_CONFIG_HOME"/maxima
# mednafen
export MEDNAFEN_HOME="$XDG_CONFIG_HOME"/mednafen
# minikube
export MINIKUBE_HOME="$XDG_DATA_HOME"/minikube
# mitmproxy
alias mitmproxy='mitmproxy --set confdir=$XDG_CONFIG_HOME/mitmproxy'
alias mitmweb='mitmweb --set confdir=$XDG_CONFIG_HOME/mitmproxy'
# MOC
alias mocp='mocp -M "$XDG_CONFIG_HOME"/moc'
# monero
alias monerod='monerod --data-dir "$XDG_DATA_HOME"/bitmonero'
# most
export MOST_INITFILE="$XDG_CONFIG_HOME"/mostrc
# MPlayer
export MPLAYER_HOME="$XDG_CONFIG_HOME"/mplayer
# mtpaint
# sudo nvim /etc/mtpaint/mtpaintrc
# userINI = ~/.config/mtpaint
# mypy
export MYPY_CACHE_DIR="$XDG_CACHE_HOME"/mypy
# MySQL
export MYSQL_HISTFILE="$XDG_DATA_HOME"/mysql_history
# mysql-workbench
alias mysql-workbench='mysql-workbench --configdir="$XDG_DATA_HOME/mysql/workbench"'
# ncmpc
alias ncmpc='ncmpc -f "$XDG_CONFIG_HOME"/ncmpc/config'
# Netbeans
alias netbeans='netbeans --userdir "${XDG_CONFIG_HOME}"/netbeans'
# newsboat
# mkdir -p "$XDG_DATA_HOME"/newsboat "$XDG_CONFIG_HOME"/newsboat
# Node.js
export NODE_REPL_HISTORY="$XDG_DATA_HOME"/node_repl_history
# nodenv
export NODENV_ROOT="$XDG_DATA_HOME"/nodenv
# notmuch
# mkdir -p $XDG_CONFIG_HOME/notmuch/default; mv $HOME/.notmuch-config $XDG_CONFIG_HOME/notmuch/default/config
# npm
export NPM_CONFIG_USERCONFIG=$XDG_CONFIG_HOME/npm/npmrc
# nvim "$XDG_CONFIG_HOME/npm/npmrc"
# prefix=${XDG_DATA_HOME}/npm
# cache=${XDG_CACHE_HOME}/npm
# init-module=${XDG_CONFIG_HOME}/npm/config/npm-init.js
# logs-dir=${XDG_STATE_HOME}/npm/logs
# nuget
export NUGET_PACKAGES="$XDG_CACHE_HOME"/NuGetPackages
# nvidia-settings
alias nvidia-settings='nvidia-settings --config="$XDG_CONFIG_HOME"/nvidia/settings'
# nvm
export NVM_DIR="$XDG_DATA_HOME"/nvm
# Octave
export OCTAVE_HISTFILE="$XDG_CACHE_HOME/octave-hsts"
export OCTAVE_SITE_INITFILE="$XDG_CONFIG_HOME/octave/octaverc"
# nvim "$XDG_CONFIG_HOME"/octave/octaverc
# source /usr/share/octave/site/m/startup/octaverc;
# pkg prefix ~/.local/share/octave/packages ~/.local/share/octave/packages;
# pkg local_list /home/<your username>/.local/share/octave/octave_packages;
#
## local_list must be an absolute path
# omnisharp-roslyn-bin
export OMNISHARPHOME="$XDG_CONFIG_HOME/omnisharp"
# opam
export OPAMROOT="$XDG_DATA_HOME/opam"
# parallel
export PARALLEL_HOME="$XDG_CONFIG_HOME"/parallel
# pass
export PASSWORD_STORE_DIR="$XDG_DATA_HOME"/pass
# pdfsam
export _JAVA_OPTIONS="$_JAVA_OPTIONS" -Djavafx.cachedir="$XDG_CACHE_HOME"/openjfx
# phive
export PHIVE_HOME="$XDG_DATA_HOME/phive"
# Pidgin
alias pidgin='pidgin --config="$XDG_DATA_HOME"/purple'
# platformio-core
export PLATFORMIO_CORE_DIR="$XDG_DATA_HOME"/platformio
# PostgreSQL
export PSQLRC="$XDG_CONFIG_HOME/pg/psqlrc"
export PSQL_HISTORY="$XDG_STATE_HOME/psql_history"
export PGPASSFILE="$XDG_CONFIG_HOME/pg/pgpass"
export PGSERVICEFILE="$XDG_CONFIG_HOME/pg/pg_service.conf"
# mkdir "$XDG_CONFIG_HOME/pg" && mkdir "$XDG_STATE_HOME"
# PulseAudio
# sudo nvim /etc/pulse/client.conf
# cookie-file = ~/.config/pulse/cookie
# PuTTY
# mkdir "$XDG_CONFIG_HOME"/putty
# pyenv
export PYENV_ROOT=$XDG_DATA_HOME/pyenv
# python
export PYTHON_HISTORY=$XDG_STATE_HOME/python/history
export PYTHONPYCACHEPREFIX=$XDG_CACHE_HOME/python
export PYTHONUSERBASE=$XDG_DATA_HOME/python
# python-easyocr
export EASYOCR_MODULE_PATH="$XDG_CONFIG_HOME/EasyOCR"
# python-grip
export GRIPHOME="$XDG_CONFIG_HOME/grip"
# python-pylint
export PYLINTRC="$XDG_CONFIG_HOME"/pylint/pylintrc
# python-setuptools
export PYTHON_EGG_CACHE="$XDG_CACHE_HOME"/python-eggs
# racket
export PLTUSERHOME="$XDG_DATA_HOME"/racket
# rbenv
export RBENV_ROOT="$XDG_DATA_HOME"/rbenv
# readline
export INPUTRC="$XDG_CONFIG_HOME"/readline/inputrc
# recoll
export RECOLL_CONFDIR="$XDG_CONFIG_HOME/recoll"
# redis
export REDISCLI_HISTFILE="$XDG_DATA_HOME"/redis/rediscli_history
export REDISCLI_RCFILE="$XDG_CONFIG_HOME"/redis/redisclirc
# ripgrep
export RIPGREP_CONFIG_PATH=$XDG_CONFIG_HOME/ripgrep/config
# rlwrap
export RLWRAP_HOME="$XDG_DATA_HOME"/rlwrap
# ruby-bundler
export BUNDLE_USER_CACHE=$XDG_CACHE_HOME/bundle
export BUNDLE_USER_CONFIG=$XDG_CONFIG_HOME/bundle/config
export BUNDLE_USER_PLUGIN=$XDG_DATA_HOME/bundle
# ruby-solargraph
export SOLARGRAPH_CACHE=$XDG_CACHE_HOME/solargraph
# ruby-travis
export TRAVIS_CONFIG_PATH=$XDG_CONFIG_HOME/travis
# ruff
export RUFF_CACHE_DIR=$XDG_CACHE_HOME/ruff
# Rust Rustup
export RUSTUP_HOME="$XDG_DATA_HOME"/rustup
# SageMath
export DOT_SAGE="$XDG_CONFIG_HOME"/sage
# sbt
alias sbt='sbt -ivy "$XDG_DATA_HOME"/ivy2 -sbt-dir "$XDG_DATA_HOME"/sbt'
# GNU Screen
export SCREENRC="$XDG_CONFIG_HOME"/screen/screenrc
export SCREENDIR="${XDG_RUNTIME_DIR}/screen"
# scummvm
# mkdir "$XDG_CONFIG_HOME"/scummvm/ "$XDG_DATA_HOME"/scummvm
# mv $HOME/.scummvmrc "$XDG_CONFIG_HOME"/scummvm/scummvm.ini
# mv $HOME/.scummvm "$XDG_DATA_HOME"/scummvm/saves
# simplescreenrecorder
# mkdir "$XDG_CONFIG_HOME"/simplescreenrecorder
# singularity-ce
export SINGULARITY_CONFIGDIR="$XDG_CONFIG_HOME/singularity"
export SINGULARITY_CACHEDIR="$XDG_CACHE_HOME/singularity"
# spacemacs
export SPACEMACSDIR="$XDG_CONFIG_HOME"/spacemacs
# spotdl
# mkdir "$XDG_DATA_HOME"/spotdl
# SQLite
export SQLITE_HISTORY=$XDG_DATA_HOME/sqlite_history
# starship
export STARSHIP_CONFIG="$XDG_CONFIG_HOME"/starship.toml
export STARSHIP_CACHE="$XDG_CACHE_HOME"/starship
# subversion
alias svn='svn --config-dir "$XDG_CONFIG_HOME"/subversion'
# task
# Let it create the sample .taskrc, then:
# mkdir "$XDG_CONFIG_HOME"/task
# mv "$HOME"/.taskrc "$XDG_CONFIG_HOME"/task/taskrc
# TeX Live
export TEXMFHOME=$XDG_DATA_HOME/texmf
export TEXMFVAR=$XDG_CACHE_HOME/texlive/texmf-var
export TEXMFCONFIG=$XDG_CONFIG_HOME/texlive/texmf-config
# TeXmacs
export TEXMACS_HOME_PATH=$XDG_STATE_HOME/texmacs
# tig
# mkdir "$XDG_DATA_HOME"/tig
# uncrustify
export UNCRUSTIFY_CONFIG="$XDG_CONFIG_HOME"/uncrustify/uncrustify.cfg
# Unison
export UNISON="$XDG_DATA_HOME"/unison
# units
alias units='units --history "$XDG_CACHE_HOME"/units_history'
# urxvtd
export RXVT_SOCKET="$XDG_RUNTIME_DIR"/urxvtd
# Vagrant
export VAGRANT_HOME="$XDG_DATA_HOME"/vagrant
export VAGRANT_ALIAS_FILE="$XDG_DATA_HOME"/vagrant/aliases
# virtualenv
export WORKON_HOME="$XDG_DATA_HOME/virtualenvs"
# w3m
export W3M_DIR="$XDG_STATE_HOME/w3m"
# wakatime
export WAKATIME_HOME="$XDG_CONFIG_HOME/wakatime"
# mkdir "$XDG_CONFIG_HOME/wakatime"
# wget
export WGETRC="$XDG_CONFIG_HOME/wgetrc"
alias wget='export WGETRC="$XDG_CONFIG_HOME/wgetrc"'
# wine
# mkdir -p "$XDG_DATA_HOME"/wineprefixes
export WINEPREFIX="$XDG_DATA_HOME"/wineprefixes/default
# x3270
export X3270PRO="$XDG_CONFIG_HOME"/x3270/config
export C3270PRO="$XDG_CONFIG_HOME"/c3270/config
# xbindkeys
alias xbindkeys='xbindkeys -f "$XDG_CONFIG_HOME"/xbindkeys/config'
# xinit
export XINITRC="$XDG_CONFIG_HOME"/X11/xinitrc
export XSERVERRC="$XDG_CONFIG_HOME"/X11/xserverrc
# yarn
alias yarn='yarn --use-yarnrc "$XDG_CONFIG_HOME/yarn/config"'
# z
export _Z_DATA="$XDG_DATA_HOME/z"
# zsh
export ZDOTDIR=$XDG_CONFIG_HOME/zsh
# nvim "$XDG_CONFIG_HOME"/zsh/.zshrc
# HISTFILE="$XDG_STATE_HOME"/zsh/history
# # Completion files: Use XDG dirs
# [ -d "$XDG_CACHE_HOME"/zsh ] || mkdir -p "$XDG_CACHE_HOME"/zsh
# zstyle ':completion:*' cache-path "$XDG_CACHE_HOME"/zsh/zcompcache
# compinit -d "$XDG_CACHE_HOME"/zsh/zcompdump-$ZSH_VERSION
#
# For using zsh as a login shell:
# nvim "$HOME"/.zshenv
# export ZDOTDIR=$XDG_CONFIG_HOME/zsh