168 lines
5.5 KiB
Bash
168 lines
5.5 KiB
Bash
#!/bin/sh
|
|
# Blake's environment variables
|
|
# This file should be compatible with standard sh
|
|
# shellcheck disable=SC2034
|
|
|
|
# path_append from https://superuser.com/questions/39751/add-directory-to-path-if-its-not-already-there
|
|
# checks if a path is already in the PATH and if it exists
|
|
path_append() {
|
|
if [ -d "$1" ]; then
|
|
# posix SH doesn't have [[, so we skip testing if the path is already in the PATH for simplicity
|
|
# shellcheck disable=SC3010
|
|
if command '[[' > /dev/null 2>&1 && [[ ":$PATH:" != *":$1:"* ]]; then
|
|
PATH="${PATH:+"$PATH:"}$1"
|
|
else
|
|
PATH="$PATH:$1"
|
|
fi
|
|
fi
|
|
}
|
|
path_prepend() {
|
|
if [ -d "$1" ]; then
|
|
# posix SH doesn't have [[, so we skip testing if the path is in the PATH already for simplicity
|
|
# shellcheck disable=SC3010
|
|
if command '[[' > /dev/null 2>&1 && [[ ":$PATH:" != *":$1:"* ]]; then
|
|
PATH="$1${PATH:+":$PATH"}"
|
|
else
|
|
PATH="$1:$PATH"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
# these would be temp vars, but ZSH does something weird where it makes them evaluate at runtime instead of
|
|
export CONFIG_HOME="${XDG_DATA_HOME:-$HOME/.config}"
|
|
export CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}"
|
|
export DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}"
|
|
export LOCAL_HOME="$HOME/.local"
|
|
|
|
export SHELL_CONFIG_DIR="${SHELL_CONFIG_DIR:-"$CONFIG_HOME/shell"}"
|
|
if ! [ -d "$SHELL_CONFIG_DIR" ]; then
|
|
echo "FATAL ERROR: \$SHELL_CONFIG_DIR is not set to a real directory: $SHELL_CONFIG_DIR" >&2
|
|
fi
|
|
|
|
## PATH MODIFICATION
|
|
# add local bin path and shell bin path to PATH
|
|
path_append "$LOCAL_HOME/bin"
|
|
# add shell bin files
|
|
path_append "$SHELL_CONFIG_DIR/bin"
|
|
# add doom emacs bin folder to path if it exists
|
|
path_append "$CONFIG_HOME/emacs/bin"
|
|
# add nixvim path if it exists
|
|
path_prepend "/home/blake/code/nixvim-config/result/bin"
|
|
|
|
export PATH
|
|
|
|
if [ -z "$PROFILE_LOADED" ] && [ -f ~/.profile ]; then
|
|
# shellcheck source=/home/blake/.profile
|
|
. ~/.profile
|
|
fi
|
|
|
|
# Intelligently set $EDITOR
|
|
if [ "${EDITOR:-}" = "" ] || [ "${EDITOR##*/}" = "nano" ]; then
|
|
if command -v nvim > /dev/null;then
|
|
export EDITOR=nvim
|
|
elif command -v vim > /dev/null;then
|
|
export EDITOR=vim
|
|
elif command -v vi > /dev/null;then
|
|
export EDITOR=vi
|
|
fi
|
|
fi
|
|
export SYSTEMD_EDITOR="$EDITOR"
|
|
export VISUAL="$EDITOR"
|
|
|
|
# Tell zellij to auto attach by default instead of opening a new session
|
|
export ZELLIJ_AUTO_ATTACH=true
|
|
|
|
# Shell to use for commands like `nix-shell -p` (use zsh if using zsh)
|
|
if test -n "${ZSH_VERSION:-}"; then
|
|
export NIX_BUILD_SHELL=zsh
|
|
fi
|
|
|
|
# Basic default LS colors
|
|
export LSCOLORS="Gxfxcxdxbxegedabagacad"
|
|
|
|
# `less` colors
|
|
# shellcheck disable=SC2016
|
|
export LESS='-R --use-color -Dd+g$Du+b'
|
|
export MANPAGER="less -R --use-color -Dd+g -Du+b"
|
|
|
|
# Theme for zsh and nvim (soon™)
|
|
COLOR_SCHEME=tokyonight
|
|
|
|
# move zsh cache to where it should go
|
|
export ZSH_CACHE_DIR="$CACHE_HOME/zsh"
|
|
|
|
# Don't add extra space to the right side of the prompt
|
|
export ZLE_RPROMPT_INDENT=0
|
|
|
|
# Move zinit to where it should go
|
|
export ZINIT_HOME_DIR="$DATA_HOME/zinit"
|
|
|
|
# Add cargo to PATH if it exists
|
|
[ -d "$HOME/.cargo/bin" ] && export PATH="$PATH:$HOME/.cargo/bin"
|
|
|
|
# Set documents directory (auto set to the repo the file ~/todo points to is in)
|
|
if [ -h ~/todo ] && command -v git > /dev/null; then
|
|
# shellcheck disable=SC2155
|
|
export DOCS_DIR="$(git -C "$(dirname "$(realpath ~/todo)" 2>&1)" rev-parse --show-toplevel | head -1)"
|
|
elif [ -d "$HOME/Documents/docs" ]; then
|
|
export DOCS_DIR="$HOME/Documents/docs/"
|
|
else
|
|
echo "Error: couldn't find the documents repo" > /dev/null
|
|
fi
|
|
|
|
if [ -d "/etc/nixos" ]; then
|
|
export NIXOS_DIR=/etc/nixos
|
|
fi
|
|
|
|
## Working directory save settings (see things at bottom of zshrc)
|
|
WORKING_DIR_SAVE_FILE="$CACHE_HOME/zsh/last-working-dir"
|
|
# make the dir for the file if needed
|
|
test -d "$(dirname "$WORKING_DIR_SAVE_FILE")" || mkdir -p "$(dirname "$WORKING_DIR_SAVE_FILE")"
|
|
|
|
# ZSH plugin settings >>>
|
|
# ZSH Vi Mode
|
|
export ZVM_VI_HIGHLIGHT_FOREGROUND=#BBC2CF
|
|
export ZVM_VI_HIGHLIGHT_BACKGROUND=#515860
|
|
# ZVM_VI_HIGHLIGHT_EXTRASTYLE=bold,underline # bold and underline
|
|
|
|
# vim-mode cursor
|
|
# syntax: "[color] [blinking] [style]" see: https://github.com/softmoth/zsh-vim-mode#mode-in-prompt
|
|
export MODE_CURSOR_VIINS="blinking bar"
|
|
export MODE_CURSOR_REPLACE="steady bar"
|
|
export MODE_CURSOR_VICMD="steady block"
|
|
export MODE_CURSOR_SEARCH="blinking underline"
|
|
export MODE_CURSOR_VISUAL="steady block"
|
|
export MODE_CURSOR_VLINE="steady block"
|
|
|
|
# OMZ Completion
|
|
export COMPLETION_WAITING_DOTS=true
|
|
|
|
# Powerlevel 10k
|
|
export POWERLEVEL9K_DISABLE_CONFIGURATION_WIZARD="${POWERLEVEL9K_DISABLE_CONFIGURATION_WIZARD:-true}"
|
|
export POWERLEVEL9K_INSTANT_PROMPT="${POWERLEVEL9K_INSTANT_PROMPT:-quiet}"
|
|
# TODO?: maybe add a bit of code to select a random theme if none is detected (make sure to disable instant prompt if this happens)
|
|
export P10K_CONFIG_LOCATION="${P10K_CONFIG_LOCATION:-"$SHELL_CONFIG_DIR/p10k/current"}"
|
|
# <<<
|
|
|
|
###########################################
|
|
### Directory and file quick access ###
|
|
###########################################
|
|
S="$SHELL_CONFIG_DIR"
|
|
SS="$S/shrc"
|
|
DD="$DOCS_DIR"
|
|
C=~/code/spu/ds2/src
|
|
N="${NIXOS_DIR:-}"
|
|
DP=~/'Documents/0 D'i'gi'P'e'n
|
|
DPC="$DP/classes"
|
|
|
|
export S SS # this makes it easier to load the shrc while in posix sh
|
|
|
|
# wine things (TODO: REMOVE WHEN NOT NEEDED)
|
|
if test -d "$HOME/.local/share/bottles/bottles/east-west-composers"; then
|
|
WINEPREFIX="$HOME/.local/share/bottles/bottles/east-west-composers"
|
|
fi
|
|
if test -d "$HOME/.local/share/bottles/runners/wine-ge-proton8-21/bin"; then
|
|
PATH="$HOME/.local/share/bottles/runners/wine-ge-proton8-21/bin:$PATH"
|
|
fi
|
|
|
|
# vim:fdm=marker:fmr=>>>,<<<:et:ft=sh:sw=3:ts=3
|