_profile_interactive=0 [[ -o interactive ]] && _profile_interactive=1 _profile_emacs="${INSIDE_EMACS:-}" _profile_terminal=0 if [[ "$_profile_interactive" == 1 && "${TERM:-}" != dumb && "$_profile_emacs" != *eshell* && -t 1 ]]; then _profile_terminal=1 fi # Powerlevel10k and terminal escapes are useful in real terminals, including # Emacs vterm, but are noisy in eshell, TERM=dumb, and Codex-style shells. if [[ "$_profile_terminal" == 1 && -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" fi if [[ "$_profile_terminal" == 1 && "${TERM_PROGRAM:-}" == Alacritty ]]; then printf '\e[?1042l' fi [[ -r "$HOME/.pathrc" ]] && . "$HOME/.pathrc" set -o vi export ZSH="$HOME/.oh-my-zsh" if [[ "$_profile_terminal" == 1 ]]; then ZSH_THEME="powerlevel10k/powerlevel10k" else ZSH_THEME="" PROMPT='%n@%m:%~%# ' fi DISABLE_AUTO_TITLE="true" COMPLETION_WAITING_DOTS="true" ZSH_AUTOSUGGEST_ACCEPT_WIDGETS='vi-forward-char' ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=10" HIST_STAMPS="dd.mm.yyyy" ZSH_TMUX_FIXTERM=true ZSH_TMUX_AUTOQUIT=false _profile_cache_root="${TMPDIR:-/tmp}/profile-zsh-${USER:-${LOGNAME:-user}}" ZSH_CACHE_DIR="$_profile_cache_root/oh-my-zsh" ZSH_COMPDUMP="$_profile_cache_root/.zcompdump-${HOST%%.*}-${ZSH_VERSION}" mkdir -p "$ZSH_CACHE_DIR/completions" plugins=( colorize colored-man-pages vi-mode common-aliases iterm2 zsh-navigation-tools urltools history aliases ) _profile_add_plugin() { local plugin="$1" (( ${plugins[(Ie)$plugin]} )) || plugins+=("$plugin") } _profile_add_plugin_if_command_exists() { local plugin="$1" local cmd="${2:-$plugin}" [[ -n ${commands[$cmd]} ]] && _profile_add_plugin "$plugin" } if [[ "$_profile_terminal" == 1 ]]; then for _profile_plugin in zsh-completions zsh-syntax-highlighting zsh-autosuggestions; do [[ -d "$ZSH_CUSTOM/plugins/$_profile_plugin" ]] && _profile_add_plugin "$_profile_plugin" done _profile_add_plugin_if_command_exists git _profile_add_plugin_if_command_exists rsync _profile_add_plugin_if_command_exists tmux _profile_add_plugin_if_command_exists docker _profile_add_plugin_if_command_exists docker-compose _profile_add_plugin_if_command_exists kubectl _profile_add_plugin_if_command_exists helm _profile_add_plugin_if_command_exists terraform _profile_add_plugin_if_command_exists asdf _profile_add_plugin_if_command_exists brew _profile_add_plugin_if_command_exists emacs _profile_add_plugin_if_command_exists fzf _profile_add_plugin_if_command_exists macos sw_vers [[ -n ${commands[hg]} ]] && _profile_add_plugin mercurial fi if [[ "$_profile_terminal" == 1 && -r "$ZSH/oh-my-zsh.sh" ]]; then source "$ZSH/oh-my-zsh.sh" fi alias rm >/dev/null 2>&1 && unalias rm alias oe='open /Applications/Emacs.app' alias mc='SHELL=/bin/bash mc' alias -g N='2>&1 ' alias pig='ping' alias ops='OCI_CLI_PROFILE=solarisx86-us-phoenix-1-apikey ops' alias nextcloud-shell='k exec -n nextcloud deployments/nextcloud -c nextcloud -it -- runuser --user www-data bash' alias nextcloud-shell-root='k exec -n nextcloud deployments/nextcloud -c nextcloud -it -- bash' alias occ='k exec -n nextcloud deployments/nextcloud -c nextcloud -it -- runuser --user www-data /var/www/html/occ' alias speech_to_text="$HOME/Downloads/whisper.cpp/convert_video_to_txt.sh" alias scm-ssh='/Users/jetpac/.ssh/scm-script.sh' if [[ "$(hostname)" == "speccy" ]]; then export TERM=xterm-24bit alias ssh='TERM=xterm-256color ssh' alias vi=te alias vim=te fi print_osc() { if [[ -n $TMUX ]]; then printf '\033Ptmux;\033\033]' else printf '\033]' fi } print_st() { if [[ -n $TMUX ]]; then printf '\a\033\\' else printf '\a' fi } set_iterm_profile() { local profile=${1:?"The profile must be specified."} print_osc printf '1337;SetProfile=%s' "$profile" print_st } set_tmux_profile() { if [[ -n $TMUX ]]; then local profile=${1:?"The profile must be specified."} tmux source-file "$HOME/.tmux/plugins/tmux-colors-solarized/tmuxcolors-${profile}.conf" fi } set_dark() { set_iterm_profile 'Solarized Dark' set_tmux_profile dark } set_light() { set_iterm_profile 'Solarized Light' set_tmux_profile light } if [[ -f "/Users/jetpac/.local/bin/k9s" ]]; then alias k9s='/Users/jetpac/.local/bin/k9s --logoless' fi if [[ -n ${commands[kubectl]} ]]; then lh_nodes() { local ns="${1:-longhorn-system}" kubectl -n "$ns" get nodes.longhorn.io -o yaml | \ yq eval ' .items[] | { "node": .metadata.name, "allowScheduling": .spec.allowScheduling, "disks": ( [ (.spec.disks // {}) | to_entries | .[] | { "diskName": .key, "path": .value.path, "allowScheduling": .value.allowScheduling, "evictionRequested": .value.evictionRequested, "storageReservedGiB": ((.value.storageReserved // 0) / 1073741824) } ] ), "diskStatus": ( [ (.status.diskStatus // {}) | to_entries | .[] | { "diskName": .key, "storageAvailableGiB": ((.value.storageAvailable // 0) / 1073741824), "storageMaximumGiB": ((.value.storageMaximum // 0) / 1073741824), "storageScheduledGiB":((.value.storageScheduled // 0) / 1073741824) } ] ) }' } fi if [[ "$OSTYPE" == darwin* ]]; then export LSCOLORS=gxfxbEaEBxxEhEhBaDaCaD export MANPAGER='col -bx | view -c ":set ft=man nonu nolist nomod nolist" -' fi if [[ "$OSTYPE" == solaris* ]]; then unalias ggrep 2>/dev/null if [[ ! -f "/usr/share/lib/terminfo/r/rxvt-256color" ]]; then if [[ -f "/usr/gnu/share/terminfo/r/rxvt-256color" ]]; then export TERMINFO="/usr/gnu/share/terminfo/r/rxvt-256color" elif [[ -d "$HOME/.terminfo" ]]; then export TERMINFO="$HOME/.terminfo" fi fi fi # zsh history is too short # - https://unix.stackexchange.com/questions/273861/unlimited-history-in-zsh # # inspiration taken from yt video: # https://youtu.be/ud7YxC33Z3w HISTSIZE=999999999 HISTFILE=~/.zsh_history SAVEHIST=$HISTSIZE HISTDUP=erase setopt appendhistory setopt sharehistory setopt hist_ignore_space setopt hist_ignore_all_dups setopt hist_save_no_dups setopt hist_ignore_dups setopt hist_find_no_dups setopt hist_reduce_blanks bindkey '^p' history-search-backward bindkey '^n' history-search-forward if [[ -r "/opt/homebrew/Caskroom/miniconda/base/etc/profile.d/conda.sh" ]]; then . "/opt/homebrew/Caskroom/miniconda/base/etc/profile.d/conda.sh" elif [[ -d "/opt/homebrew/Caskroom/miniconda/base/bin" ]]; then path=("/opt/homebrew/Caskroom/miniconda/base/bin" ${path:#/opt/homebrew/Caskroom/miniconda/base/bin}) fi if command -v launchctl >/dev/null 2>&1; then _profile_launchctl_ssh_auth_sock="$(launchctl getenv SSH_AUTH_SOCK 2>/dev/null || true)" if [[ -n "$_profile_launchctl_ssh_auth_sock" ]]; then export SSH_AUTH_SOCK="$_profile_launchctl_ssh_auth_sock" fi fi if [[ -t 0 ]]; then export GPG_TTY="$(tty)" fi if [[ "$_profile_terminal" == 1 ]]; then _zellij_comp_src="$HOME/.config/zellij/comp.zsh" _zellij_comp_safe="$_profile_cache_root/zellij/comp.safe.zsh" if [[ -f "$_zellij_comp_src" ]]; then mkdir -p "${_zellij_comp_safe:h}" if [[ ! -f "$_zellij_comp_safe" || "$_zellij_comp_src" -nt "$_zellij_comp_safe" ]]; then sed '/^_zellij "\$@"$/d' "$_zellij_comp_src" > "$_zellij_comp_safe" fi source "$_zellij_comp_safe" (( $+functions[compdef] )) && compdef _zellij zellij fi unset _zellij_comp_src _zellij_comp_safe fi [[ "$_profile_terminal" == 1 && -r "$HOME/.p10k.zsh" ]] && source "$HOME/.p10k.zsh" [[ -r "$HOME/.pathrc" ]] && . "$HOME/.pathrc" unset _profile_interactive _profile_emacs _profile_terminal _profile_plugin _profile_cache_root _profile_launchctl_ssh_auth_sock unset -f _profile_add_plugin _profile_add_plugin_if_command_exists 2>/dev/null || true