diff --git a/.pathrc b/.pathrc new file mode 100644 index 0000000..0c6c62a --- /dev/null +++ b/.pathrc @@ -0,0 +1,101 @@ +# Shared PATH setup for local shells. +# Source this from login and interactive startup files; it is idempotent. + +_pathrc_path_has() { + case ":${PATH:-}:" in + *:"$1":*) return 0 ;; + *) return 1 ;; + esac +} + +_pathrc_path_remove() { + [ -n "${PATH:-}" ] || return 0 + + _pathrc_old_ifs=$IFS + IFS=: + _pathrc_new_path= + for _pathrc_dir in $PATH; do + [ "$_pathrc_dir" = "$1" ] && continue + [ -n "$_pathrc_dir" ] || continue + case ":$_pathrc_new_path:" in + *:"$_pathrc_dir":*) ;; + *) + if [ -n "$_pathrc_new_path" ]; then + _pathrc_new_path="$_pathrc_new_path:$_pathrc_dir" + else + _pathrc_new_path="$_pathrc_dir" + fi + ;; + esac + done + IFS=$_pathrc_old_ifs + PATH=$_pathrc_new_path +} + +_pathrc_path_prepend() { + [ -d "$1" ] || return 0 + _pathrc_path_remove "$1" + + if [ -n "${PATH:-}" ]; then + PATH="$1:$PATH" + else + PATH="$1" + fi +} + +_pathrc_path_append() { + [ -d "$1" ] || return 0 + _pathrc_path_has "$1" && return 0 + + if [ -n "${PATH:-}" ]; then + PATH="$PATH:$1" + else + PATH="$1" + fi +} + +if [ -d /opt/homebrew ]; then + export HOMEBREW_PREFIX=/opt/homebrew + export HOMEBREW_CELLAR=/opt/homebrew/Cellar + export HOMEBREW_REPOSITORY=/opt/homebrew +fi + +export GEM_HOME="$HOME/.gem" +export NVM_DIR="$HOME/.nvm" +export ASDF_DATA_DIR="${ASDF_DATA_DIR:-$HOME/.asdf}" + +# Prepend in reverse priority order. +_pathrc_path_prepend "$HOME/Documents/codex-tools/mcpgw-cli" +_pathrc_path_prepend "$HOME/.fzf/bin" +_pathrc_path_prepend "$HOME/.rd/bin" +_pathrc_path_prepend "$HOME/work/flutter/bin" +_pathrc_path_prepend "$HOME/bin" +_pathrc_path_prepend "$HOME/.local/bin" +_pathrc_path_prepend /usr/local/bin +_pathrc_path_prepend "$ASDF_DATA_DIR/shims" +_pathrc_path_prepend /opt/homebrew/sbin +_pathrc_path_prepend /opt/homebrew/bin +_pathrc_path_prepend /opt/homebrew/opt/ruby/bin +_pathrc_path_prepend "$HOME/.gem/ruby/3.3.0/bin" +_pathrc_path_prepend "$GEM_HOME/bin" + +_pathrc_path_append /usr/bin +_pathrc_path_append /bin +_pathrc_path_append /usr/sbin +_pathrc_path_append /sbin + +if [ -n "${ZSH_VERSION:-}" ] && [ -d /opt/homebrew/share/zsh/site-functions ]; then + fpath=(/opt/homebrew/share/zsh/site-functions ${fpath:#/opt/homebrew/share/zsh/site-functions}) +fi + +if [ -d /opt/homebrew/share/info ]; then + case ":${INFOPATH:-}:" in + *:/opt/homebrew/share/info:*) ;; + *) export INFOPATH="/opt/homebrew/share/info:${INFOPATH:-}" ;; + esac +fi + +export PATH + +unset -f _pathrc_path_has _pathrc_path_remove _pathrc_path_prepend _pathrc_path_append 2>/dev/null || true +unset _pathrc_old_ifs _pathrc_new_path _pathrc_dir diff --git a/.zprofile b/.zprofile new file mode 100644 index 0000000..8acac71 --- /dev/null +++ b/.zprofile @@ -0,0 +1 @@ +[[ -r "$HOME/.pathrc" ]] && . "$HOME/.pathrc" diff --git a/.zshenv b/.zshenv index 77756f7..3386aea 100644 --- a/.zshenv +++ b/.zshenv @@ -1,157 +1,9 @@ -set -o vi +# Minimal zsh environment. This file is read by every zsh process, including +# non-interactive shells, so keep startup work out of it. export LC_ALL=en_US.UTF-8 -export PATH=/Users/jetpac/.asdf/shims/:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/jetpac/work/flutter/bin:$HOME/.rd/bin:$HOME/bin:$PATH:$HOME/.fzf/bin:$HOME/Documents/codex-tools/mcpgw-cli/ - -# homebrew config -# output of brew shellenv -export HOMEBREW_PREFIX="/opt/homebrew"; -export HOMEBREW_CELLAR="/opt/homebrew/Cellar"; -export HOMEBREW_REPOSITORY="/opt/homebrew"; -fpath[1,0]="/opt/homebrew/share/zsh/site-functions"; -eval "$(/usr/bin/env PATH_HELPER_ROOT="/opt/homebrew" /usr/libexec/path_helper -s)" -[ -z "${MANPATH-}" ] || export MANPATH=":${MANPATH#:}"; -export INFOPATH="/opt/homebrew/share/info:${INFOPATH:-}"; - - - -alias oe='open /Applications/Emacs.app' -# Force mc to use bash for its subshell -alias mc='SHELL=/bin/bash mc' - alias config='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME' -alias -g N="2>&1 " -alias pig='ping' - -alias ops='OCI_CLI_PROFILE=solarisx86-us-phoenix-1-apikey ops' - -# export PATH=$HOME/.rd/bin -# - -# on speccy only -if [[ "$(hostname)" == "speccy" ]]; -then - # defined via https://github.com/syl20bnr/spacemacs/wiki/Terminal - export TERM=xterm-24bit - alias ssh="TERM=xterm-256color ssh" - alias vi=te - alias vim=te -fi - - -# for gems installed in my home direcotry -# inspiration: https://guides.cocoapods.org/using/getting-started.html#installation -export GEM_HOME=$HOME/.gem -export PATH=$GEM_HOME/bin:$PATH - - -# change iTerm & tmux profile -# doc: -# https://iterm2.com/documentation-escape-codes.html -# https://github.com/tmux/tmux/issues/1502 - -## change color profile in iTerm -##it2prof() { echo -e "\033]50;SetProfile=$1\a" } - -function print_osc() { - if [[ -n $TMUX ]] ; then - printf '\033Ptmux;\033\033]'; - else printf '\033]'; fi -} - -function print_st() { - if [[ -n $TMUX ]] ; then - printf '\a\033\\' - else printf '\a'; fi -} - -function set_iterm_profile() { - readonly profile=${1:?"The profile must be specified."} - print_osc - printf "1337;SetProfile=$profile" - print_st -} - -function set_tmux_profile() { - if [[ -n $TMUX ]]; then - profile=${1:?"The profile must be specified."} - tmux source-file $HOME/.tmux/plugins/tmux-colors-solarized/tmuxcolors-${profile}.conf - fi -} - -function set_dark() { - set_iterm_profile 'Solarized Dark' - set_tmux_profile 'dark' -} - -function set_light() { - set_iterm_profile 'Solarized Light' - set_tmux_profile 'light' -} export seznam6='2a02:598:2::1222' - export OPENAI_API_KEY='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' - -# for flutter -# export PATH=$PATH:/Users/jetpac/Documents/flutter-dev-env/bin -export NVM_DIR="$HOME/.nvm" -# nvm initialization is commented out; it significantly slows down shell startup -# [ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && \. "/opt/homebrew/opt/nvm/nvm.sh" -# - -ZSH_AUTOSUGGEST_ACCEPT_WIDGETS='vi-forward-char' -#ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS='end-of-line' -# -# alias km='kubectl --kubeconfig /Users/jetpac/.kube.lenovo/config' - - -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" - - -if [ -f "/Users/jetpac/.local/bin/k9s" ]; then - alias k9s='/Users/jetpac/.local/bin/k9s --logoless' -fi - - -# lh nodes function for kubectl -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 -alias scm-ssh='/Users/jetpac/.ssh/scm-script.sh' diff --git a/.zshrc b/.zshrc index dbc2852..431016a 100644 --- a/.zshrc +++ b/.zshrc @@ -1,233 +1,213 @@ -# disable alacritty jumping when set on urgent -# https://github.com/alacritty/alacritty/pull/7019 -printf "\e[?1042l" +_profile_interactive=0 +[[ -o interactive ]] && _profile_interactive=1 -# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc. -# Initialization code that may require console input (password prompts, [y/n] -# confirmations, etc.) must go above this block; everything else may go below. -if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then - source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" +_profile_emacs="${INSIDE_EMACS:-}" +_profile_terminal=0 +if [[ "$_profile_interactive" == 1 && "${TERM:-}" != dumb && "$_profile_emacs" != *eshell* && -t 1 ]]; then + _profile_terminal=1 fi -# if not present, install zsh-syntax-highlighting plugin -if [ ! -d "${HOME}/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting" ]; -then - cd "${HOME}/.oh-my-zsh/custom/plugins/" - git clone https://github.com/zsh-users/zsh-syntax-highlighting.git &> /dev/null +# 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 not present, install zsh-completions plugin -if [ ! -d "${HOME}/.oh-my-zsh/custom/plugins/zsh-completions" ]; -then - cd "${HOME}/.oh-my-zsh/custom/plugins/" - git clone https://github.com/zsh-users/zsh-completions.git &> /dev/null +if [[ "$_profile_terminal" == 1 && "${TERM_PROGRAM:-}" == Alacritty ]]; then + printf '\e[?1042l' fi -# if not present, install zsh-autosuggestions plugin -if [ ! -d "${HOME}/.oh-my-zsh/custom/plugins/zsh-autosuggestions" ]; -then - cd "${HOME}/.oh-my-zsh/custom/plugins/" - git clone https://github.com/zsh-users/zsh-autosuggestions.git &> /dev/null -fi +[[ -r "$HOME/.pathrc" ]] && . "$HOME/.pathrc" +set -o vi - - -# doesn't work well on remote hosts -# [[ -f .iterm2_shell_integration.zsh ]] && source .iterm2_shell_integration.zsh - -# If you come from bash you might have to change your $PATH. -# export PATH=$HOME/bin:/usr/local/bin:$PATH - -# Path to your oh-my-zsh installation. export ZSH="$HOME/.oh-my-zsh" +if [[ "$_profile_terminal" == 1 ]]; then + ZSH_THEME="powerlevel10k/powerlevel10k" +else + ZSH_THEME="" + PROMPT='%n@%m:%~%# ' +fi -# Set name of the theme to load --- if set to "random", it will -# load a random theme each time oh-my-zsh is loaded, in which case, -# to know which specific one was loaded, run: echo $RANDOM_THEME -# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes - -ZSH_THEME="powerlevel10k/powerlevel10k" - -# Set list of themes to pick from when loading at random -# Setting this variable when ZSH_THEME=random will cause zsh to load -# a theme from this variable instead of looking in $ZSH/themes/ -# If set to an empty array, this variable will have no effect. -# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" ) - -# Uncomment the following line to use case-sensitive completion. -# CASE_SENSITIVE="true" - -# Uncomment the following line to use hyphen-insensitive completion. -# Case-sensitive completion must be off. _ and - will be interchangeable. -# HYPHEN_INSENSITIVE="true" - -# Uncomment one of the following lines to change the auto-update behavior -# zstyle ':omz:update' mode disabled # disable automatic updates -# zstyle ':omz:update' mode auto # update automatically without asking -# zstyle ':omz:update' mode reminder # just remind me to update when it's time - -# Uncomment the following line to change how often to auto-update (in days). -# zstyle ':omz:update' frequency 13 - -# Uncomment the following line if pasting URLs and other text is messed up. -# DISABLE_MAGIC_FUNCTIONS="true" - -# Uncomment the following line to disable colors in ls. -# DISABLE_LS_COLORS="true" - -# Uncomment the following line to disable auto-setting terminal title. DISABLE_AUTO_TITLE="true" - -# Uncomment the following line to enable command auto-correction. -# ENABLE_CORRECTION="true" - -# Uncomment the following line to display red dots whilst waiting for completion. -# You can also set it to another string to have that shown instead of the default red dots. -# e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f" -# Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765) 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 -# Uncomment the following line if you want to disable marking untracked files -# under VCS as dirty. This makes repository status check for large repositories -# much, much faster. -# DISABLE_UNTRACKED_FILES_DIRTY="true" +_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" -# Uncomment the following line if you want to change the command execution time -# stamp shown in the history command output. -# You can set one of the optional three formats: -# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" -# or set a custom format using the strftime function format specifications, -# see 'man strftime' for details. -# HIST_STAMPS="mm/dd/yyyy" +plugins=( + colorize + colored-man-pages + vi-mode + common-aliases + iterm2 + zsh-navigation-tools + urltools + history + aliases +) -# Would you like to use another custom folder than $ZSH/custom? -# ZSH_CUSTOM=/path/to/new-custom-folder +_profile_add_plugin() { + local plugin="$1" + (( ${plugins[(Ie)$plugin]} )) || plugins+=("$plugin") +} -# if [ -f ". /opt/homebrew/opt/asdf/libexec/asdf.sh" ]; then -# source /opt/homebrew/opt/asdf/libexec/asdf.sh -# fi +_profile_add_plugin_if_command_exists() { + local plugin="$1" + local cmd="${2:-$plugin}" + [[ -n ${commands[$cmd]} ]] && _profile_add_plugin "$plugin" +} -# Which plugins would you like to load? -# Standard plugins can be found in $ZSH/plugins/ -# Custom plugins may be added to $ZSH_CUSTOM/plugins/ -# Example format: plugins=(rails git textmate ruby lighthouse) -# Add wisely, as too many plugins slow down shell startup. -plugins=(colorize colored-man-pages vi-mode common-aliases themes dircycle iterm2 zsh-navigation-tools urltools history zsh-syntax-highlighting zsh-autosuggestions web-search aliases) +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 -cmd_plugins=(git rsync conda tmux docker docker-compose tmux kubectl helm terraform asdf brew emacs fzf asdf brew emacs) + _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 -# Add a plugin only if its command exists -add_plugin_if_command_exists() { - local cmd="$1" - if [[ -n ${commands[$cmd]} ]]; then - # Only append if not already in the plugins array - if (( ! ${plugins[(Ie)$cmd]} )); then - plugins+=("$cmd") - 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 } -for cmd in $cmd_plugins; do - add_plugin_if_command_exists "$cmd" -done +print_st() { + if [[ -n $TMUX ]]; then + printf '\a\033\\' + else + printf '\a' + fi +} -# use mercurial plugin -if [[ -n ${commands[hg]} ]]; then - plugins+=("mercurial") +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 -# use macos plugin -if [[ "$(uname -o)" == "Darwin" ]]; then - plugins+=("macos") +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 -# use zoxide -if [[ -n ${commands[zoxide]} ]]; then - export FZF_DEFAULT_OPTS="--style full" - export _ZO_FZF_OPTS="--height ~90% --tmux bottom,70% --layout reverse" - eval "$(zoxide init --cmd cd zsh)" -fi - -# colorize - adds ccat and cless -# common-aliases: https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/common-aliases -# themes: https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/themes -# dircycle: https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/dircycle -# ctrl+shift+(left|right) - traverses cd history -# plugins=(git rsync colorize colored-man-pages vi-mode common-aliases macos themes dircycle iterm2 docker docker-compose zsh-navigation-tools) - -# zsh-navigation-tools: https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/zsh-navigation-tools -# nkill, nhistory, ncd aliases - -source $ZSH/oh-my-zsh.sh - -# User configuration - -# remove some stupid aliases from common-aliases -alias rm >/dev/null && unalias rm - -# if on macos: -if [[ "$OSTYPE" == "darwin"* ]]; then - touch /tmp/darwin +if [[ "$OSTYPE" == darwin* ]]; then export LSCOLORS=gxfxbEaEBxxEhEhBaDaCaD - - # route man through vim export MANPAGER='col -bx | view -c ":set ft=man nonu nolist nomod nolist" -' fi -# if on Solaris -if [[ "$OSTYPE" == "solaris"* ]]; then - touch /tmp/solaris +if [[ "$OSTYPE" == solaris* ]]; then + unalias ggrep 2>/dev/null - # common aliases correction - unalias ggrep - - # set terminfo - 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" - else - if [ -f "$HOME/.terminfo" ]; then - export TERMINFO=$HOME/.terminfo - fi - fi + 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 - -# export MANPATH="/usr/local/man:$MANPATH" - -# You may need to manually set your language environment -# export LANG=en_US.UTF-8 - -# Preferred editor for local and remote sessions -# if [[ -n $SSH_CONNECTION ]]; then -# export EDITOR='vim' -# else -# export EDITOR='mvim' -# fi - -# Compilation flags -# export ARCHFLAGS="-arch x86_64" - -# Set personal aliases, overriding those provided by oh-my-zsh libs, -# plugins, and themes. Aliases can be placed here, though oh-my-zsh -# users are encouraged to define aliases within the ZSH_CUSTOM folder. -# For a full list of active aliases, run `alias`. -# -# Example aliases -# alias zshconfig="mate ~/.zshrc" -# alias ohmyzsh="mate ~/.oh-my-zsh" - -# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh. -[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh -# test -e /Users/jetpac/.iterm2_shell_integration.zsh && source /Users/jetpac/.iterm2_shell_integration.zsh || true - -# # zsh history is too short -# - https://unix.stackexchange.com/questions/273861/unlimited-history-in-zsh - - +# - https://unix.stackexchange.com/questions/273861/unlimited-history-in-zsh +# # inspiration taken from yt video: # https://youtu.be/ud7YxC33Z3w HISTSIZE=999999999 @@ -244,81 +224,41 @@ setopt hist_find_no_dups setopt hist_reduce_blanks bindkey '^p' history-search-backward bindkey '^n' history-search-forward -# bindkey '^f' autosuggest-accept -ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=10" - - -# >>> conda initialize >>> -# !! Contents within this block are managed by 'conda init' !! -__conda_setup="$('/opt/homebrew/Caskroom/miniconda/base/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)" -if [ $? -eq 0 ]; then - eval "$__conda_setup" -else - if [ -f "/opt/homebrew/Caskroom/miniconda/base/etc/profile.d/conda.sh" ]; then - . "/opt/homebrew/Caskroom/miniconda/base/etc/profile.d/conda.sh" - else - export PATH="/opt/homebrew/Caskroom/miniconda/base/bin:$PATH" - fi -fi -unset __conda_setup -# <<< conda initialize <<< - -#### -# --- Enable conda autocompletion --- -if command -v conda &>/dev/null; then - # Ensure Conda hook is loaded - eval "$(conda shell.zsh hook)" - - # Add Conda's completion functions to zsh's function path - _conda_zsh_completions_dir="$(conda info --base)/etc/profile.d" - if [ -d "$_conda_zsh_completions_dir" ]; then - fpath+=("$_conda_zsh_completions_dir") - fi +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 -autoload -U compinit && compinit -#### - - - -# export PATH="/opt/homebrew/bin:$PATH" - -# for cocoapods -export PATH=/opt/homebrew/opt/ruby/bin:$PATH -export GEM_HOME=$HOME/.gem -export PATH=$GEM_HOME/bin:$HOME/.gem/ruby/3.3.0/bin:$PATH - -# Generated for envman. Do not edit. -# [ -s "$HOME/.config/envman/load.sh" ] && source "$HOME/.config/envman/load.sh" - - -# alias scm-ssh='/Users/jetpac/.ssh/scm-script.sh' -# scm-ssh start_agent - -# export FZF_DEFAULT_OPTS="--style full --preview '/opt/homebrew/bin/pygmentize -g {}' --bind 'focus:transform-header:file --brief {}'" - -# set to system ssh-agent if command -v launchctl >/dev/null 2>&1; then - export SSH_AUTH_SOCK="$(launchctl getenv SSH_AUTH_SOCK)" -fi - -export GPG_TTY=$(tty) - -# zellij startup workaround: -# keep zellij aliases/functions while stripping the problematic runtime completion call. -_zellij_comp_src="$HOME/.config/zellij/comp.zsh" -_zellij_comp_safe="$HOME/.cache/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" + _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 - source "$_zellij_comp_safe" - (( $+functions[compdef] )) && compdef _zellij zellij fi -unset _zellij_comp_src _zellij_comp_safe -### MANAGED BY RANCHER DESKTOP START (DO NOT EDIT) -export PATH="/Users/jetpac/.rd/bin:$PATH" -### MANAGED BY RANCHER DESKTOP END (DO NOT EDIT) +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