# .zshenv [0] Used for setting user's environment variables; it should not # contain commands that produce output or assume the shell is attached to a # tty. This file will always be sourced. [ -f ~/.config/zsh/zshenv.local ] && source ~/.config/zsh/zshenv.local # Ensure cache and state directories exist [ ! -d -${XDG_CACHE_HOME:-$HOME/.cache}/zsh ] && \ mkdir -p ${XDG_CACHE_HOME:-$HOME/.cache}/zsh [ ! -d -${XDG_STATE_HOME:-$HOME/.local/state}/zsh ] && \ mkdir -p ${XDG_STATE_HOME:-$HOME/.local/state}/zsh # Enable saving command history to file HISTFILE=${XDG_STATE_HOME:-$HOME/.local/state}/zsh/histfile HISTSIZE=20000 SAVEHIST=20000 # Migrate histfile from cache to state directory ! [ -f $HISTFILE ] && [ -f $HOME/.cache/zsh/histfile ] && \ mv $HOME/.cache/zsh/histfile \ ${XDG_STATE_HOME:-$HOME/.local/state}/zsh/histfile # Remove vi mode switch delay KEYTIMEOUT=1 # Enable time stats for long lasting commands REPORTTIME=5 # Add ~/.local to the environment fpath+=$HOME/.local/share/zsh/site-functions PATH=$HOME/.local/bin:$PATH MANPATH=$HOME/.local/share/man:$MANPATH INFOPATH=$HOME/.local/share/info:$INFOPATH # Add ccache compiler aliases to PATH and use XDG base dir paths if [ `uname` = Darwin ]; then if [ `uname -m` = arm64 ]; then homebrew_root=/opt/homebrew [ -d /opt/homebrew/bin ] && \ PATH=$homebrew_root/bin:$PATH else homebrew_root=/usr/local fi [ -d $homebrew_root/opt/python/libexec/bin ] && \ PATH=$homebrew_root/opt/python/libexec/bin:$PATH [ -f $homebrew_root/bin/ccache ] && \ PATH=$homebrew_root/opt/ccache/libexec:$PATH elif [ -f /usr/bin/ccache ]; then if [ -d /usr/lib/ccache/bin ]; then PATH=/usr/lib/ccache/bin:$PATH elif [ -d /usr/lib/ccache ]; then PATH=/usr/lib/ccache:$PATH fi fi export CCACHE_CONFIGPATH=${XDG_CONFIG_HOME:-$HOME/.config}/ccache export CCACHE_DIR=${XDG_CACHE_HOME:-$HOME/.cache}/ccache # Add default CMake generator command -v ninja &> /dev/null && \ export CMAKE_GENERATOR=Ninja export CMAKE_EXPORT_COMPILE_COMMANDS=ON # Remove duplicates from environment variables typeset -U fpath typeset -U PATH; export PATH typeset -U MANPATH; export MANPATH typeset -U INFOPATH; export INFOPATH # Set default editor. if command -v nvim &> /dev/null; then export EDITOR=`command -v nvim` # Also use nvim for man pages export MANPAGER='nvim +Man!' elif command -v vim &> /dev/null; then export EDITOR=`command -v vim` fi export GIT_EDITOR=$EDITOR if command -v fzf &> /dev/null; then export FZF_DEFAULT_OPTS='--no-bold --color=fg:#c5c9c5,fg+:#c5c9c5,bg:#000000,bg+:#393836 --color=hl:#8ea4a2,hl+:#8ea4a2,info:#afaf87,marker:#C8C093 --color=prompt:#C8C093,spinner:#8992a7,pointer:#FF9E3B,header:#87afaf --color=gutter:#000000,border:#54546D,label:#aeaeae,query:#c5c9c5' fi # Use ~/.local for pip installs on macOS [ "`uname`" = "Darwin" ] && export PYTHONUSERBASE=$HOME/.local # Change colors used by less and man export LESS_TERMCAP_mb=`printf "\e[0;31m"` export LESS_TERMCAP_md=`printf "\e[0;36m"` export LESS_TERMCAP_me=`printf "\e[0m"` export LESS_TERMCAP_so=`printf "\e[1;40;32m"` export LESS_TERMCAP_se=`printf "\e[0m"` export LESS_TERMCAP_us=`printf "\e[0;34m"` export LESS_TERMCAP_ue=`printf "\e[0m"` # Disable storing less history export LESSHISTFILE=/dev/null # Force GoogleTest to output colors export GTEST_COLOR=yes # Allow completions for GoogleTest break on failure export GTEST_BREAK_ON_FAILURE=0 # Force CTest to verbose output export CTEST_OUTPUT_ON_FAILURE=1 # User ~/.local/share for persistent pylint data export PYLINTHOME=~/.local/share/pylint # Disable virtualenv prompt export VIRTUAL_ENV_DISABLE_PROMPT=1 # If pinentry-curses exists, use it for lastpass-cli command -v pinentry-curses &> /dev/null && \ export LPASS_PINENTRY=pinentry-curses # Teach these some XDG Base Directory Spec manners export IPYTHONDIR=${XDG_CONFIG_HOME:-$HOME/.config}/ipython command -v cargo &> /dev/null && \ export CARGO_HOME=$HOME/.local/share/cargo if command -v ccache &> /dev/null; then export CCACHE_CONFIGPATH=${XDG_CONFIG_HOME:-$HOME/.config}/ccache.conf export CCACHE_DIR=${XDG_CACHE_HOME:-$HOME/.cache}/ccache fi command -v conan &> /dev/null && \ export CONAN_USER_HOME=$HOME/.local/share/conan command -v docker &> /dev/null && \ export DOCKER_CONFIG=$HOME/.local/share/docker export GTK_RC_FILES=${XDG_CONFIG_HOME:-$HOME/.config}/gtk/gtkrc export GTK2_RC_FILES=${XDG_CONFIG_HOME:-$HOME/.config}/gtk-2.0/gtkrc export PYLINTHOME=${XDG_CACHE_HOME:-$HOME/.cache}/pylint command -v rustup &> /dev/null && \ export RUSTUP_HOME=$HOME/.local/share/rustup [ -f ${XDG_CONFIG_HOME:-$HOME/.config}/wget/rc ] && \ export WGETRC=${XDG_CONFIG_HOME:-$HOME/.config}/wget/rc # TODO: terminfo export GOBIN=$HOME/.local/bin export GOPATH=$HOME/.local/share/go export GOCACHE=${XDG_CACHE_HOME:-$HOME/.cache}/go/build export GOMODCACHE=${XDG_CACHE_HOME:-$HOME/.cache}/go/pkg/mod export GOTMPDIR=${XDG_CACHE_HOME:-$HOME/.cache}/go/tmp