Parent directory

dot_zshrc.tmpl

3795 bytes
  1# vim: ft=zsh
  2# History
  3HISTFILE=~/.histfile
  4HISTSIZE=40000
  5SAVEHIST=40000
  6HIST_STAMPS="yyyy-mm-dd"
  7setopt HIST_IGNORE_DUPS
  8
  9set_env() {
 10    # CLI tools
 11    export MAKEFLAGS="-j $(nproc --all)"
 12    export LESS="-SRF --mouse"
 13    export GPG_TTY=$(tty)
 14    export GOPRIVATE="github.com/duneanalytics/*,git.theedgeofrage.com/*"
 15    export GOPATH="$HOME/dev/go"
 16    export GOBIN="$HOME/dev/go/bin"
 17    export VIRTUAL_ENV_DISABLE_PROMPT="true"
 18    export COMPOSE_BAKE="true"
 19    export FZF_CTRL_T_COMMAND="fd -tf -td -tl"
 20    export FZF_DEFAULT_COMMAND='rg --files --hidden --follow -g "!{.git}/*" 2> /dev/null'
 21    export FZF_DEFAULT_OPTS='
 22        --color fg:#928374,bg:#282828,hl:#fb4934
 23        --color fg+:#b8bb26,bg+:#3c3836,hl+:#fb4934
 24        --color info:#fe8019,prompt:#83a598,header:#83a598
 25        --color pointer:#fb4934,marker:#fb4934,spinner:#ffff60
 26    '
 27    export JQ_COLORS="1;31:0;35:0;35:0;39:0;32:1;39:1;39"
 28
 29    # Claude code
 30    export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC="1"
 31    export DISABLE_AUTOUPDATER="1"
 32
 33    # OpenCode
 34    export OPENCODE_DISABLE_LSP_DOWNLOAD="true"
 35    export OPENCODE_ENABLE_EXA="1"
 36
 37    # Pi
 38    export LLAMA_BASE_URL="https://llama.home.theedgeofrage.com/v1"
 39    export PI_WEB_TOOLS_EXA_ENDPOINT="https://mcp.exa.ai/mcp"
 40
 41    # Common config
 42    export DEFAULT_USER="pavle"
 43    export EDITOR="nvim"
 44    export VISUAL="nvim"
 45    export TERMINAL="ghostty"
 46    export LANG="en_US.UTF-8"
 47    export LC_ALL="C.UTF-8"
 48    export PATH="$HOME/.local/bin:$PATH:$GOBIN:$HOME/.cargo/bin:$HOME/.local/share/nvim/mason/bin:$HOME/.cache/.bun/bin"
 49    export XDG_CONFIG_HOME="$HOME/.config"
 50    export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/gcr/ssh"
 51{{ if and (hasKey . "zshrc") (kindIs "map" .zshrc) (hasKey .zshrc "env_vars") }}
 52    # Additional env vars
 53{{ range $_, $env := .zshrc.env_vars }}    export {{ $env.name }}="{{ $env.value }}"
 54{{ end -}}
 55{{- end -}}
 56}
 57
 58# Custom functions and completions
 59CUSTOM="$HOME/.config/zsh"
 60fpath=(${CUSTOM}/functions ${CUSTOM}/completions "${fpath[@]}" )
 61autoload -Uz ${CUSTOM}/functions/*
 62
 63# oh-my-zsh
 64export ZSH="$HOME/.config/zsh/oh-my-zsh"
 65ZSH_THEME="boban/boban"
 66HYPHEN_INSENSITIVE="true"
 67DISABLE_AUTO_UPDATE="true"
 68plugins=(
 69    archlinux
 70    common-aliases
 71    docker
 72    docker-compose
 73    git
 74    kubectl
 75    you-should-use
 76    zsh-autosuggestions
 77    zsh-autoswitch-virtualenv
 78    zsh-completions
 79    zsh-syntax-highlighting
 80    zsh-autopair
 81)
 82source $ZSH/oh-my-zsh.sh
 83
 84# Misc options
 85setopt extendedglob notify
 86unsetopt beep nomatch
 87bindkey -v
 88zle_highlight+=(paste:none)
 89
 90# Copy current prompt to clipboard with CTRL+Y
 91if [[ -n ${WAYLAND_DISPLAY} ]]; then
 92    copy_line_to_x_clipboard() {
 93        echo -n ${BUFFER} | wl-copy
 94        zle reset-prompt
 95    }
 96    zle -N copy_line_to_x_clipboard
 97    bindkey '^Y' copy_line_to_x_clipboard
 98fi
 99
100source ~/.aliases
101source ~/.config/zsh/kc.zsh
102
103# Bind home and end
104bindkey "\033[H" beginning-of-line
105bindkey "\033[F" end-of-line
106
107# zle -N zle-line-init
108TRAPWINCH() {
109    zle && { zle reset-prompt; zle -R }
110}
111
112# Load fzf
113if [[ $- == *i* ]] && [[ -d /usr/share/fzf/ ]]; then
114    source "/usr/share/fzf/completion.zsh" NO
115    source "/usr/share/fzf/key-bindings.zsh" NO
116fi
117
118type zoxide &> /dev/null && eval "$(zoxide init zsh)"
119type autopair-init &> /dev/null && autopair-init
120
121# Mise dependency manager
122eval "$(mise activate zsh)"
123
124{{ if (index . "gui" | default false) -}}
125if [ -z "${WAYLAND_DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ] && [[ $(tty) = /dev/tty1 ]]; then
126    # hyprland on tty1
127    set_env
128    exec uwsm start -e -D Hyprland hyprland.desktop
129elif [[ $(tty) =~ "/dev/tty[0-9]" ]]; then
130    # Enable unicode characters in the tty
131    set_env
132    unicode_start
133elif [ -n "$SSH_CONNECTION" ] || [ -n "$SSH_CLIENT" ]; then
134    set_env
135fi
136{{ else }}
137set_env
138{{- end }}