199 lines
5.2 KiB
Bash
199 lines
5.2 KiB
Bash
## zshrc file
|
|
## Errol Sanckatar
|
|
## errol@sancaktar.net
|
|
##
|
|
|
|
# HomeBrew
|
|
function ensure_brew_packages {
|
|
local packages=("$@")
|
|
local cellar_dir="/opt/homebrew/Cellar"
|
|
local caskroom_dir="/opt/homebrew/Caskroom"
|
|
|
|
for package in "${packages[@]}"; do
|
|
# Check if the package exists in Cellar (for formulae)
|
|
if [ -d "$cellar_dir/$package" ]; then
|
|
# echo "$package (formula) is already installed."
|
|
# Check if the package exists in Caskroom (for casks)
|
|
elif [ -d "$caskroom_dir/$package" ]; then
|
|
# echo "$package (cask) is already installed."
|
|
else
|
|
echo "Installing $package..."
|
|
# Install or upgrade package based on whether it's a cask
|
|
if brew info --cask $package &>/dev/null; then
|
|
brew install --cask --force $package
|
|
else
|
|
brew install --force $package
|
|
fi
|
|
fi
|
|
done
|
|
}
|
|
|
|
brew_packages=(
|
|
"opentofu"
|
|
"docker"
|
|
"docker-completion"
|
|
"helm"
|
|
"ipython"
|
|
"jq"
|
|
"k9s"
|
|
"kubernetes-cli"
|
|
"neovim"
|
|
"nmap"
|
|
"stow"
|
|
"terragrunt"
|
|
"tmux"
|
|
"font-hack-nerd-font"
|
|
"alacritty"
|
|
"spotify"
|
|
"tailscale"
|
|
"visual-studio-code"
|
|
"fzf"
|
|
"ripgrep"
|
|
"fd"
|
|
"spotify_player"
|
|
)
|
|
|
|
|
|
|
|
function alacritty_config_setup {
|
|
if [[ -f $HOME/.config/alacritty/alacritty-base.toml ]]
|
|
then
|
|
# echo $(pwd)
|
|
toml_files=("$HOME/.config/alacritty/alacritty-base.toml" "$HOME/.config/alacritty/alacritty-$1.toml")
|
|
combined_file="$HOME/.config/alacritty/alacritty.toml"
|
|
echo -n > "$combined_file"
|
|
for file in "${toml_files[@]}"; do
|
|
# Check if the file exists
|
|
if [ -f "$file" ]; then
|
|
# Append content of the current TOML file to the combined file
|
|
cat "$file" >> "$combined_file"
|
|
# Add a newline to separate TOML sections (optional)
|
|
echo >> "$combined_file"
|
|
else
|
|
echo "File '$file' not found. Skipping."
|
|
fi
|
|
done
|
|
fi
|
|
}
|
|
function shell_start_disp {
|
|
echo -n "$(hostname) - "
|
|
if [[ -f /sbin/ifconfig ]]
|
|
then
|
|
ifconfig | awk '/inet / && !/inet6/ && !/127.0.0.1/ {ips = ips " " $2} END {print ips}'
|
|
fi
|
|
}
|
|
|
|
|
|
## Check for HomeBrew
|
|
if [[ -f "/opt/homebrew/bin/brew" ]] then
|
|
eval "$(/opt/homebrew/bin/brew shellenv)"
|
|
export HOMEBREW_NO_ENV_HINTS=1
|
|
ensure_brew_packages $brew_packages
|
|
fi
|
|
|
|
# IF Linux
|
|
if [[ `uname` == "Linux" ]]
|
|
then
|
|
[[ ":$PATH:" != *":/home/errol/Applications:"* ]] && PATH="/home/errol/Applications:${PATH}"
|
|
# The next line updates PATH for the Google Cloud SDK.
|
|
if [ -f '/home/errol/google-cloud-sdk/path.zsh.inc' ]; then . '/home/errol/google-cloud-sdk/path.zsh.inc'; fi
|
|
|
|
# The next line enables shell command completion for gcloud.
|
|
if [ -f '/home/errol/google-cloud-sdk/completion.zsh.inc' ]; then . '/home/errol/google-cloud-sdk/completion.zsh.inc'; fi
|
|
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
|
|
|
|
# Alacritty Crap
|
|
alacritty_config_setup linux
|
|
fi
|
|
|
|
## IF MacOS
|
|
if [[ $(uname) == "Darwin" ]]
|
|
then
|
|
|
|
# Alacritty Crap
|
|
alacritty_config_setup osx
|
|
fi
|
|
|
|
shell_start_disp
|
|
|
|
# Keybindings
|
|
bindkey -e
|
|
bindkey '^p' history-search-backward
|
|
bindkey '^n' history-search-forward
|
|
bindkey '^[w' kill-region
|
|
|
|
# Alias
|
|
if [[ -r ~/.aliasrc ]]; then
|
|
. ~/.aliasrc
|
|
fi
|
|
|
|
# History
|
|
HISTSIZE=5000000
|
|
HISTFILE=~/.zsh_history
|
|
SAVEHIST=$HISTSIZE
|
|
|
|
setopt EXTENDED_HISTORY
|
|
setopt APPEND_HISTORY
|
|
setopt SHARE_HISTORY
|
|
setopt HIST_IGNORE_SPACE
|
|
setopt HIST_IGNORE_ALL_DUPS
|
|
setopt HIST_SAVE_NO_DUPS
|
|
setopt HIST_IGNORE_DUPS
|
|
setopt HIST_FIND_NO_DUPS
|
|
|
|
# Fuzzy search
|
|
function fh() {
|
|
eval $( ([ -n "$ZSH_NAME" ] && fc -l 1 || history) | fzf +s --tac | sed 's/ *[0-9]* *//')
|
|
}
|
|
|
|
# history with search
|
|
function h() {
|
|
# check if we passed any parameters
|
|
if [ -z "$*" ]; then
|
|
# if no parameters were passed print entire history
|
|
history 1
|
|
else
|
|
# if words were passed use it as a search
|
|
history 1 | egrep --color=auto "$@"
|
|
fi
|
|
}
|
|
# Auto CD
|
|
setopt AUTOCD
|
|
|
|
# Completion styling
|
|
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'
|
|
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
|
|
zstyle ':completion:*' menu no
|
|
zstyle ':fzf-tab:complete:cd:*' fzf-preview 'ls --color $realpath'
|
|
zstyle ':fzf-tab:complete:__zoxide_z:*' fzf-preview 'ls --color $realpath'
|
|
zstyle ':completion:*' range 1000:100 # Try 100 history words at a time; max 1000 words.
|
|
|
|
|
|
# Check Starship is installed
|
|
if which starship &> /dev/null
|
|
then
|
|
eval "$(starship init zsh)"
|
|
else
|
|
curl -sS https://starship.rs/install.sh | sh
|
|
fi
|
|
# Created by `pipx` on 2024-07-16 03:28:59
|
|
export PATH="$PATH:/Users/errol/.local/bin"
|
|
|
|
if [[ ! -d ~/.tmux/plugins/tpm ]]
|
|
then
|
|
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
|
|
fi
|
|
# The next line updates PATH for the Google Cloud SDK.
|
|
if [ -f '/Users/errol/Downloads/google-cloud-sdk/path.zsh.inc' ]; then . '/Users/errol/Downloads/google-cloud-sdk/path.zsh.inc'; fi
|
|
|
|
# The next line enables shell command completion for gcloud.
|
|
if [ -f '/Users/errol/Downloads/google-cloud-sdk/completion.zsh.inc' ]; then . '/Users/errol/Downloads/google-cloud-sdk/completion.zsh.inc'; fi
|
|
|
|
export GOOGLE_APPLICATION_CREDENTIALS=/Users/errol/.config/gcloud/application_default_credentials.json
|
|
|
|
alias gam="/home/errol/bin/gamadv-xtd3/gam"
|
|
if which kubectl &> /dev/null
|
|
then
|
|
source <(kubectl completion zsh)
|
|
fi
|