diff options
| author | srdusr <trevorgray@srdusr.com> | 2025-09-30 11:55:11 +0200 |
|---|---|---|
| committer | srdusr <trevorgray@srdusr.com> | 2025-09-30 11:55:11 +0200 |
| commit | 3bb4dbc5e0b9b9a003b3d47b7f48a98319ad9108 (patch) | |
| tree | 16305c7465853aa720fa3f449ee1139545e0217f /common/config/zsh/.zshenv | |
| parent | a6243585ba861c80d19f5f135170204e22bfc346 (diff) | |
| download | dotfiles-3bb4dbc5e0b9b9a003b3d47b7f48a98319ad9108.tar.gz dotfiles-3bb4dbc5e0b9b9a003b3d47b7f48a98319ad9108.zip | |
Various changes, fixed .zshenv initializing properly, updated install.sh/packages.yml (testing shell-git invocation/make tmp and re-exec with bash)
Diffstat (limited to 'common/config/zsh/.zshenv')
| -rw-r--r-- | common/config/zsh/.zshenv | 410 |
1 files changed, 150 insertions, 260 deletions
diff --git a/common/config/zsh/.zshenv b/common/config/zsh/.zshenv index cdab5b7..b7b4f56 100644 --- a/common/config/zsh/.zshenv +++ b/common/config/zsh/.zshenv @@ -1,282 +1,189 @@ -# Load local/system wide binaries and scripts -export PATH=$HOME/.bin:$HOME/.local/bin:$HOME/.scripts:/usr/local/bin:/sbin:/usr/sbin:$PATH -export PATH="/data/data/com.termux/files/usr/local/bin:$PATH" +####################################### +# XDG Base Directories +####################################### +export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" +export XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}" +export XDG_CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}" + +export INPUTRC="$XDG_CONFIG_HOME/inputrc" +export ZDOTDIR="$XDG_CONFIG_HOME/zsh" + +####################################### +# PATH Setup +####################################### +# Base user paths +export PATH="$HOME/.bin:$HOME/.local/bin:$HOME/.scripts:/usr/local/bin:/sbin:/usr/sbin:$PATH" + +# Termux (Android) +if [ -d "/data/data/com.termux/files/usr/local/bin" ]; then + export PATH="/data/data/com.termux/files/usr/local/bin:$PATH" +fi + +# cmake +if [ -x "/usr/bin/cmake" ]; then + export PATH="/usr/bin/cmake:$PATH" +fi -# List of directories to ignore (relative to ~/.scripts) -EXCLUDE_DIRS=("assets" "test") +# Chrome +if [ -d "/opt/google/chrome" ]; then + export PATH="$PATH:/opt/google/chrome" +fi + +# Homebrew (macOS / Linux) +if [ -d "/opt/homebrew/bin" ]; then + export PATH="/opt/homebrew/bin:/opt/homebrew/sbin:$PATH" +fi + +# Nix profile +if [ -d "$HOME/.nix-profile/bin" ]; then + export PATH="$HOME/.nix-profile/bin:$PATH" +fi -# Add .scripts to path +####################################### +# Add ~/.scripts (excluding some dirs) +####################################### +EXCLUDE_DIRS=(".git" "assets" "test") if [ -d "$HOME/.scripts" ]; then while IFS= read -r -d '' dir; do - # Extract relative path rel_path="${dir#$HOME/.scripts/}" - - # Check if the directory is in the exclude list skip=false for exclude in "${EXCLUDE_DIRS[@]}"; do - if [[ "$rel_path" == "$exclude"* ]]; then - skip=true - break - fi + [[ "$rel_path" == "$exclude"* ]] && skip=true && break done - - # Add to PATH if not excluded - if [ "$skip" = false ]; then - PATH="$dir:$PATH" - fi + [ "$skip" = false ] && PATH="$dir:$PATH" done < <(find "$HOME/.scripts" -type d -print0) fi -# Global TERM color -export TERM=xterm-256color - +####################################### +# Terminal +####################################### +export TERM="xterm-256color" +export COLORTERM="truecolor" -# Conditionally set default term -available_terms=("wezterm" "kitty" "alacritty" "xterm") -for term in "${available_terms[@]}"; do - if command -v "$term" &> /dev/null; then +# Choose default terminal +for term in wezterm kitty alacritty xterm; do + if command -v "$term" &>/dev/null; then export TERMINAL="$term" break fi done -# Default Programs: -export EDITOR=$(command -v nvim || echo "vim") +####################################### +# Default Programs +####################################### +export EDITOR="$(command -v nvim || command -v vim || echo nano)" export TEXEDIT="$EDITOR" export FCEDIT="$EDITOR" export VISUAL="$EDITOR" export GIT_EDITOR="$EDITOR" -export COLORTERM="truecolor" -export TERM="xterm-256color" + export READER="zathura" export BROWSER="firefox" export OPENER="xdg-open" -if command -v nvim &> /dev/null; then +export VIDEO="mpv" +export IMAGE="phototonic" + +# Man pager +if command -v nvim &>/dev/null; then export MANPAGER="sh -c 'col -b | nvim -c \"set ft=man ts=8 nomod nolist nonu noma\" -c \"autocmd VimEnter * call feedkeys(\\\"\\<CR>q\\\")\" -'" else export MANPAGER="bat" fi export MANROFFOPT="-c" export PAGER="less" -export FAQ_STYLE='github' -export VIDEO="mpv" -export IMAGE="phototonic" - -# XDG Paths: -export XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-$HOME/.config} -export XDG_DATA_HOME=${XDG_DATA_HOME:-$HOME/.local/share} -export XDG_CACHE_HOME=${XDG_CACHE_HOME:-$HOME/.cache} -export INPUTRC="${XDG_CONFIG_HOME:-$HOME/.config}/inputrc" -export ZDOTDIR="$XDG_CONFIG_HOME/zsh" -export HISTFILE="$ZDOTDIR/.zhistory" # History filepath -export HISTSIZE=1000000 # Maximum events for internal history -export SAVEHIST=1000000 # Maximum events in history file -export BANG_HIST # Treat the '!' character specially during expansion. -export EXTENDED_HISTORY # Write the history file in the ":start:elapsed;command" format. -export INC_APPEND_HISTORY # Write to the history file immediately, not when the shell exits. -export SHARE_HISTORY # Share history between all sessions. -export HIST_EXPIRE_DUPS_FIRST # Expire duplicate entries first when trimming history. -export HIST_IGNORE_DUPS # Don't record an entry that was just recorded again. -export HIST_IGNORE_ALL_DUPS # Delete old recorded entry if new entry is a duplicate. -export HIST_FIND_NO_DUPS # Do not display a line previously found. -export HIST_IGNORE_SPACE # Don't record an entry starting with a space. -export HIST_SAVE_NO_DUPS # Don't write duplicate entries in the history file. -export HIST_REDUCE_BLANKS # Remove superfluous blanks before recording entry. -export HIST_VERIFY # Don't execute immediately upon history expansion. -export HIST_BEEP # Beep when accessing nonexistent history. -export INC_APPEND_HISTORY - -# Customize `ls` colours +####################################### +# Shell History +####################################### +export HISTFILE="$ZDOTDIR/.zhistory" +export HISTSIZE=1000000 +export SAVEHIST=1000000 +setopt BANG_HIST EXTENDED_HISTORY INC_APPEND_HISTORY SHARE_HISTORY +setopt HIST_EXPIRE_DUPS_FIRST HIST_IGNORE_DUPS HIST_IGNORE_ALL_DUPS +setopt HIST_FIND_NO_DUPS HIST_IGNORE_SPACE HIST_SAVE_NO_DUPS +setopt HIST_REDUCE_BLANKS HIST_VERIFY HIST_BEEP + +####################################### +# Colors +####################################### export LSCOLORS=ExGxBxDxCxEgEdxbxgxcxd -# Other XDG paths: +# less colors +export LESS_TERMCAP_mb=$(tput bold; tput setaf 2) # green +export LESS_TERMCAP_md=$(tput bold; tput setaf 2) # green +export LESS_TERMCAP_so=$(tput bold; tput setaf 3) # yellow +export LESS_TERMCAP_se=$(tput rmso; tput sgr0) +export LESS_TERMCAP_us=$(tput smul; tput bold; tput setaf 1) # red +export LESS_TERMCAP_ue=$(tput sgr0) +export LESS_TERMCAP_me=$(tput sgr0) + +####################################### +# Miscellaneous XDG-aware configs +####################################### export RIPGREP_CONFIG_PATH="$XDG_CONFIG_HOME/ripgrep/ripgreprc" export DOCKER_CONFIG="$XDG_CONFIG_HOME/docker" export VSCODE_PORTABLE="$XDG_DATA_HOME/vscode" export GTK2_RC_FILES="$XDG_CONFIG_HOME/gtk-2.0/gtkrc" -export PATH="/usr/bin/cmake:$PATH" -export PATH=$PATH:/opt/google/chrome export DISCORD_USER_DATA_DIR="$XDG_DATA_HOME" export LYNX_CFG="$XDG_CONFIG_HOME/.lynxrc" -# Manage Arch linux build sources -export ASPROOT="${XDG_CACHE_HOME:-$HOME/.cache}/asp" - -# Homebrew -#export PATH=/opt/homebrew/bin:$PATH -export PATH="/opt/homebrew/sbin:$PATH" - -# Nix-profile -export PATH=$HOME/.nix-profile/bin:$PATH - -# GnuPG -export GPG_TTY=$(tty) -#export GNUPGHOME="$XDG_CONFIG_HOME/gnupg" - -# Nvim -export NVIM_TUI_ENABLE_TRUE_COLOR=1 - -# Let FZF use ripgrep by default -if type rg &> /dev/null; then - export FZF_DEFAULT_COMMAND="rg --files --hidden --glob '!{node_modules/*,.git/*}'" - export FZF_DEFAULT_OPTS='-m --height 50% --border' - export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND" -fi - -# Zoxide (cd alternative) -if command -v zoxide >/dev/null 2>&1; then - eval "$(zoxide init zsh)" -fi - -export XDG_MENU_PREFIX=gnome- - -# enable git scripts -export DEVELOPMENT_DIRECTORY="$HOME/code" - -# Android Home -export ANDROID_HOME=/opt/android-sdk -export PATH=$ANDROID_HOME/cmdline-tools/latest/bin:$PATH -#export PATH=$ANDROID_HOME/cmdline-tools/bin:$PATH -export PATH=$ANDROID_HOME/tools:$PATH -export PATH=$ANDROID_HOME/tools/bin:$PATH -export PATH=$ANDROID_HOME/platform-tools:$PATH -# Android emulator PATH -export PATH=$ANDROID_HOME/emulator:$PATH -# Android SDK ROOT PATH -export ANDROID_SDK_ROOT=/opt/android-sdk -export PATH=$ANDROID_SDK_ROOT:$PATH -#export ANDROID_SDK_HOME="${XDG_CONFIG_HOME:-$HOME/.config}/android" - -# Programming Environment Variables: +####################################### +# Languages / SDKs +####################################### # Rust -export RUSTUP_HOME=${XDG_DATA_HOME:-$HOME/.local/share}/rustup -export CARGO_HOME=${XDG_DATA_HOME:-$HOME/.local/share}/cargo -export PATH="${CARGO_HOME}/bin:${RUSTUP_HOME}/bin:$PATH" -#export PATH="$PATH:$CARGO_HOME/bin" -#[[ -d $CARGO_HOME/bin ]] && path=($CARGO_HOME/bin $path) -if which rustc > /dev/null; then export RUST_BACKTRACE=1; fi -#export PATH="$HOME/.cargo/bin:$PATH" -#export CARGO_HOME=${XDG_DATA_HOME}/cargo -#export RUSTUP_HOME=${XDG_DATA_HOME}/rustup - +export RUSTUP_HOME="$XDG_DATA_HOME/rustup" +export CARGO_HOME="$XDG_DATA_HOME/cargo" +export PATH="$CARGO_HOME/bin:$RUSTUP_HOME/bin:$PATH" +command -v rustc &>/dev/null && export RUST_BACKTRACE=1 # Dotnet -# # Currently dotnet does not support XDG ( https://github.com/dotnet/sdk/issues/10390 ) -#export DOTNET_TOOLS_DIR="$HOME/.dotnet/tools" -export DOTNET_HOME=${XDG_DATA_HOME:-$HOME/.local/share}/dotnet +export DOTNET_HOME="$XDG_DATA_HOME/dotnet" export DOTNET_CLI_HOME="$XDG_CONFIG_HOME/dotnet" -#mkdir -p "$DOTNET_CLI_HOME"; -export PATH="$PATH":"$DOTNET_HOME"/tools -export DOTNET_ROOT=/opt/dotnet -# Disable telemetry for dotnet apps +export PATH="$DOTNET_HOME/tools:$PATH" +export DOTNET_ROOT="/opt/dotnet" export DOTNET_CLI_TELEMETRY_OPTOUT=1 - # Java -#export JAVA_HOME=/usr/lib/jvm/default-java -#export JAVA_HOME='/usr/lib/jvm/java-8-openjdk' -#export JAVA_HOME='/usr/lib/jvm/java-10-openjdk' -#export JAVA_HOME='/usr/lib/jvm/java-11-openjdk' -#export JAVA_HOME='/usr/lib/jvm/java-17-openjdk' -export JAVA_HOME='/usr/lib/jvm/java-20-openjdk' -#export PATH=$JAVA_HOME/bin:$PATH -export _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME"/java -#export DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME" -XX:+IgnoreUnrecognizedVMOptions' -#export _JAVA_AWT_WM_NONREPARENTING=1 -#export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee' -#export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.xml.bind' -#Windows: -#set JAVA_OPTS=-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee - - -# Dart/Flutter -export PATH="/opt/flutter/bin:/usr/lib/dart/bin:$PATH" +export JAVA_HOME="/usr/lib/jvm/java-20-openjdk" +export _JAVA_OPTIONS="-Djava.util.prefs.userRoot=$XDG_CONFIG_HOME/java" +# Dart / Flutter +if [ -d "/opt/flutter/bin" ]; then + export PATH="/opt/flutter/bin:/usr/lib/dart/bin:$PATH" +fi # Go -export GO_PATH=${XDG_DATA_HOME}/go -export GOPATH="${XDG_DATA_HOME:-$HOME/.local/share}/go" - +export GOPATH="$XDG_DATA_HOME/go" -# Javascript -# NVM -export NVM_DIR="$HOME/.config/nvm" +# Node / NVM +export NVM_DIR="$XDG_CONFIG_HOME/nvm" [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" -#[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm - -# global node installs (gross) -[[ -d "$XDG_DATA_HOME/node/bin" ]] && path=($XDG_DATA_HOME/node/bin $path) -export NODE_REPL_HISTORY="$XDG_DATA_HOME"/node_repl_history -export NPM_CONFIG_USERCONFIG=$XDG_CONFIG_HOME/npm/npmrc -#export NPM_CONFIG_INIT_AUTHOR_NAME='srdusr' -#export NPM_CONFIG_INIT_AUTHOR_EMAIL='trevorgray@srdusr.com' -#export NPM_CONFIG_INIT_AUTHOR_URL='https://srdusr.com' -#export NPM_CONFIG_INIT_LICENSE='GPL-3.0' -#export NPM_CONFIG_INIT_VERSION='0.0.0' -#export NPM_CONFIG_SIGN_GIT_TAG='true' +[[ -d "$XDG_DATA_HOME/node/bin" ]] && PATH="$XDG_DATA_HOME/node/bin:$PATH" +export NODE_REPL_HISTORY="$XDG_DATA_HOME/node_repl_history" +export NPM_CONFIG_USERCONFIG="$XDG_CONFIG_HOME/npm/npmrc" + +# Bun export BUN_INSTALL="$HOME/.bun" export PATH="$BUN_INSTALL/bin:$PATH" -# Register Bun completion -#fpath=("$HOME/.bun" $fpath) - -# Yarn -#if command -v yarn >/dev/null 2>&1; then -# export PATH="$PATH:`yarn global bin`" -#fi -#export PATH="$(yarn global bin):$PATH" -#YARN_PATH="$HOME/.yarn/bin" -#YARN_BIN_EXPORT="$HOME/.config/yarn/global/node_modules/.bin" - # Ruby -export GEM_PATH="$XDG_DATA_HOME/ruby/gems" -export GEM_SPEC_CACHE="$XDG_DATA_HOME/ruby/specs" export GEM_HOME="$XDG_DATA_HOME/ruby/gems" -#if [[ -d ~/.gem/ruby ]]; then -# ver=$(find ~/.gem/ruby/* -maxdepth 0 | sort -rV | head -n 1) -# export PATH="$PATH:${ver}/bin" -#fi - +export GEM_PATH="$GEM_HOME" +export GEM_SPEC_CACHE="$XDG_DATA_HOME/ruby/specs" # Python -# lazy load pyenv -#export PYENV_ROOT=${PYENV_ROOT:-$HOME/.pyenv} -#[[ -a $PYENV_ROOT/bin/pyenv ]] && path=($PYENV_ROOT/bin $path) -#if type pyenv &> /dev/null || [[ -a $PYENV_ROOT/bin/pyenv ]]; then -# function pyenv() { -# unset pyenv -# path=($PYENV_ROOT/shims $path) -# eval "$(command pyenv init -)" -# if which pyenv-virtualenv-init > /dev/null; then -# eval "$(pyenv virtualenv-init -)" -# export PYENV_VIRTUALENV_DISABLE_PROMPT=1 -# fi -# pyenv $@ -# } -#fi -#export WORKON_HOME="$XDG_DATA_HOME/virtualenvs" -#export WORKON_HOME=$HOME/.virtualenvs -#export VIRTUALENVWRAPPER_PYTHON=`which python3` -#export VIRTUALENVWRAPPER_PYTHON=$(which python3) -#export VIRTUALENVWRAPPER_VIRTUALENV=`which virtualenv` -#source /usr/local/bin/virtualenvwrapper.sh - -# Check if virtualenvwrapper.sh exists before sourcing if command -v virtualenvwrapper.sh >/dev/null 2>&1; then export WORKON_HOME="$HOME/.virtualenvs" export VIRTUALENVWRAPPER_PYTHON="$(command -v python3)" export VIRTUALENVWRAPPER_VIRTUALENV="$(command -v virtualenv)" source "$(command -v virtualenvwrapper.sh)" fi - export VIRTUAL_ENV_DISABLE_PROMPT=false export JUPYTER_CONFIG_DIR="$XDG_CONFIG_HOME/jupyter" export IPYTHONDIR="$XDG_CONFIG_HOME/jupyter" -# Python [[ "$(uname)" == "Darwin" ]] && export PYTHON_CONFIGURE_OPTS="--enable-framework" [[ "$(uname)" == "Linux" ]] && export PYTHON_CONFIGURE_OPTS="--enable-shared" @@ -284,63 +191,46 @@ export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" # PHP -PATH="$HOME/.config/composer/vendor/bin:$PATH" - +export PATH="$HOME/.config/composer/vendor/bin:$PATH" # Lua -export PATH=$PATH:/usr/local/luarocks/bin -#export PATH="$XDG_DATA_HOME/luarocks/bin:$PATH" - -#ver=$(find lua* -maxdepth 0 | sort -rV | head -n 1) -#export LUA_PATH="$LUA_PATH:${ver}/share/lua/5.1/?.lua;${ver}/share/lua/5.1/?/init.lua;;" -#export LUA_CPATH="$LUA_CPATH:${ver}/lib/lua/5.1/?.so;;" - -#LUAROCKS_PREFIX=/usr/local -#export LUA_PATH="$LUAROCKS_PREFIX/share/lua/5.1/?.lua;$LUAROCKS_PREFIX/share/lua/5.1/?/init.lua;;" -#export LUA_CPATH="$LUAROCKS_PREFIX/lib/lua/5.1/?.so;;" - -#export LUA_PATH="<path-to-add>;;" -#export LUA_CPATH="./?.so;/usr/local/lib/lua/5.3/?.so; -# /usr/local/share/lua/5.3/?.so;<path-to-add>" - +if [ -d "/usr/local/luarocks/bin" ]; then + export PATH="$PATH:/usr/local/luarocks/bin" +fi -# Program settings -#export MOZ_USE_XINPUT2="1" # Mozilla smooth scrolling/touchpads. -# Pixel-perfect Firefox touchpad scrolling -export MOZ_USE_XINPUT2=1 +####################################### +# Android SDK +####################################### +if [ -d "/opt/android-sdk" ]; then + export ANDROID_HOME="/opt/android-sdk" + export ANDROID_SDK_ROOT="/opt/android-sdk" + export PATH="$ANDROID_HOME/cmdline-tools/latest/bin:$PATH" + export PATH="$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$PATH" + export PATH="$ANDROID_HOME/platform-tools:$ANDROID_HOME/emulator:$PATH" +fi -# Cmake +####################################### +# Misc +####################################### +export NVIM_TUI_ENABLE_TRUE_COLOR=1 +export GPG_TTY="$(tty)" +export XDG_MENU_PREFIX="gnome-" +export DEVELOPMENT_DIRECTORY="$HOME/code" export PKG_CONFIG_PATH="/usr/local/lib64/pkgconfig:$PKG_CONFIG_PATH" +# FZF + rg +if command -v rg &>/dev/null; then + export FZF_DEFAULT_COMMAND="rg --files --hidden --glob '!{node_modules/*,.git/*}'" + export FZF_DEFAULT_OPTS='-m --height 50% --border' + export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND" +fi -# Scaling -#export QT_AUTO_SCREEN_SCALE_FACTOR=0 -#export QT_SCALE_FACTOR=1 -#export QT_SCREEN_SCALE_FACTORS="1;1;1" -#export GDK_SCALE=1 -#export GDK_DPI_SCALE=1 - -## Prevent duplicate paths -#typeset -U PATH path -# -## Default most programs to use fcitx global keyboard configurations -#export GTK_IM_MODULE='fcitx' -#export QT_IM_MODULE='fcitx' -#export SDL_IM_MODULE='fcitx' -#export XMODIFIERS='@im=fcitx' - +# Zoxide +if command -v zoxide &>/dev/null; then + eval "$(zoxide init zsh)" +fi -# Start blinking -export LESS_TERMCAP_mb=$(tput bold; tput setaf 2) # green -# Start bold -export LESS_TERMCAP_md=$(tput bold; tput setaf 2) # green -# Start stand out -export LESS_TERMCAP_so=$(tput bold; tput setaf 3) # yellow -# End standout -export LESS_TERMCAP_se=$(tput rmso; tput sgr0) -# Start underline -export LESS_TERMCAP_us=$(tput smul; tput bold; tput setaf 1) # red -# End Underline -export LESS_TERMCAP_ue=$(tput sgr0) -# End bold, blinking, standout, underline -export LESS_TERMCAP_me=$(tput sgr0). +####################################### +# Cleanup PATH (remove duplicates) +####################################### +typeset -U PATH path |
