Refactor dotfiles - 2026-01-18

Changes:
- Refactored .zshrc into modular oh-my-zsh/custom/ files
- Created aliases.zsh, functions.zsh, path.zsh, keybindings.zsh
- Added bira-time.zsh-theme (bira with timestamp)
- Added tools/*.zsh for pyenv, nvm, kubectl
- Updated .tmux.conf.local with cross-platform support
- Updated gpakosz/.tmux framework
- Cleaned up .zshenv
This commit is contained in:
Viktor Barzin 2026-01-18 14:23:48 +00:00
parent a33f99e765
commit 55b0d31604
12 changed files with 811 additions and 453 deletions

206
dot_zshrc
View file

@ -1,133 +1,61 @@
#zmodload zsh/zprof
#[[ $TERM != "screen" ]] && exec tmux
# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:/usr/local/bin:$PATH
# ~/.zshrc - Zsh configuration for interactive shells
# Customizations are in ~/.oh-my-zsh/custom/*.zsh (auto-loaded)
include () {
[[ -f "$1" ]] && source "$1"
}
# Path to your oh-my-zsh installation.
export ZSH=~/.oh-my-zsh
# unset LD_PRELOAD
# ============================================================================
# Oh-My-Zsh Configuration (BEFORE sourcing oh-my-zsh.sh)
# ============================================================================
# Set name of the theme to load. Optionally, if you set this to "random"
# it'll load a random theme each time that oh-my-zsh is loaded.
# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
ZSH_THEME="bira"
# ZSH_THEME="adben"
# Path to oh-my-zsh installation
export ZSH="$HOME/.oh-my-zsh"
# Uncomment the following line to use case-sensitive completion.
# CASE_SENSITIVE="true"
#
# Theme - see https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
ZSH_THEME="bira-time"
# Case-insensitive completion (a-z matches A-Z)
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'
HISTSIZE=9000
HISTFILESIZE=9000
#HISTFILE="~/.bash_history"
# Uncomment the following line to use hyphen-insensitive completion. Case
# sensitive completion must be off. _ and - will be interchangeable.
# Hyphen-insensitive completion (_ and - are interchangeable)
HYPHEN_INSENSITIVE="true"
# Uncomment the following line to disable bi-weekly auto-update checks.
DISABLE_AUTO_UPDATE="true"
# Disable automatic updates (update manually with: omz update)
zstyle ':omz:update' mode disabled
# Uncomment the following line to change how often to auto-update (in days).
# export UPDATE_ZSH_DAYS=13
# 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.
# Show red dots while waiting for completion
COMPLETION_WAITING_DOTS="true"
# 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.
# Don't mark untracked files as dirty (faster for large repos)
DISABLE_UNTRACKED_FILES_DIRTY="true"
# Uncomment the following line if you want to change the command execution time
# stamp shown in the history command output.
# The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
# History timestamp format
HIST_STAMPS="dd.mm.yyyy"
# Would you like to use another custom folder than $ZSH/custom?
# ZSH_CUSTOM=/path/to/new-custom-folder
# History settings
HISTSIZE=10000
SAVEHIST=10000
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(encode64 gitignore zsh-z)
# Plugins - loaded from $ZSH/plugins/ and $ZSH_CUSTOM/plugins/
# Keep this list minimal for fast startup
plugins=(
git
encode64
gitignore
z
)
# ============================================================================
# Load Oh-My-Zsh
# ============================================================================
source $ZSH/oh-my-zsh.sh
# Update PROMPT to include current time
local time='%{$terminfo[bold]$fg[red]%}%*%{$reset_color%}'
PROMPT="╭─${user_host}${time}${current_dir}${rvm_ruby}${git_branch}${venv_prompt}
╰─%B${user_symbol}%b "
# tmux source-file /home/viktor/.tmux.conf
# User configuration
# ============================================================================
# Post-OMZ Settings
# ============================================================================
# export MANPATH="/usr/local/man:$MANPATH"
# Enable extended glob patterns
setopt extendedglob
# 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'
export EDITOR='vim'
fi
# Compilation flags
# export ARCHFLAGS="-arch x86_64"
# ssh
# export SSH_KEY_PATH="~/.ssh/rsa_id"
# 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"
#eval "$(jump shell)"
# Load aliases
. ~/.bash_aliases
# . ~/.bash_completion
# Locale settings for perl
#export LC_CTYPE=en_US.UTF-8
#export LC_ALL=C
#export LC_ALL=en_US.UTF-8
# Defined in ~/.zshenv
PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init - bash)"
#export PYENV_VIRTUALENVWRAPPER_PREFER_PYVENV="true"
#export WORKON_HOME=$HOME/.virtualenvs
#pyenv virtualenvwrapper_lazy
include /usr/local/bin/virtualenvwrapper.sh
# eval ssh-agent > /dev/null
# VIRTUALENVWRAPPER_PYTHON=python3
export PYTHONBREAKPOINT=ipdb.set_trace
include ~/.zshenv
# Disable command_not_found handler (can be slow)
unset command_not_found_handle
# Color man pages
export LESS_TERMCAP_mb=$'\e[1;32m'
@ -138,51 +66,13 @@ export LESS_TERMCAP_so=$'\e[01;33m'
export LESS_TERMCAP_ue=$'\e[0m'
export LESS_TERMCAP_us=$'\e[1;4;31m'
# Enable extended glob
setopt extendedglob
# Enable Ctrl-x-e to edit command line
autoload -U edit-command-line
# Emacs style
zle -N edit-command-line
bindkey '^xe' edit-command-line
bindkey '^x^e' edit-command-line
# Vi style:
# zle -N edit-command-line
# bindkey -M vicmd v edit-command-line
# add GO to path
export PATH="/home/wizard/go/bin:$PATH"
export PATH="/home/wizard/.local/bin:$PATH"
#export GO111MODULE=on
export GOPATH="/home/$USER/go"
# add JDK 12 go path
export PATH="/opt/jdk-12.0.1/bin:$PATH"
# add azure core tools to path
# export PATH="/opt/azure/:$PATH"
unset command_not_found_handle
# Load nvm
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"# This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"# This loads nvm bash_completion
export PATH="/home/viktor/.local/bin:$PATH"
# Load Z to jump around recent dirs
#. ~/z.sh
fpath+=~/.zfunc
autoload -Uz compinit && compinit
# add k8s autocompletion, must be after compinit!
if which kubectl >/dev/null 2>/dev/null; then
source <(kubectl completion zsh)
fi
include /etc/profile.d/golang_path.sh
# krew path
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
# ============================================================================
# Files in ~/.oh-my-zsh/custom/ are auto-loaded:
# - aliases.zsh : All aliases
# - functions.zsh : All functions
# - path.zsh : PATH modifications
# - prompt.zsh : Custom prompt
# - keybindings.zsh : Key bindings
# - secrets.zsh : API tokens (gitignored)
# - tools/*.zsh : Tool-specific configs (pyenv, nvm, kubectl)
# ============================================================================