# Path to your oh-my-zsh installation. export ZSH=~/.oh-my-zsh # 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="robbyrussell" # use oh-my-posh for theme # Get Homebrew into the path early so that plugins and such can use # programs installed by it if [[ $(uname) == 'Darwin' ]]; then if [ "$(uname -p)" = 'i386' ] && [ ! -f '/opt/homebrew/bin/brew' ]; then eval "$(/usr/local/bin/brew shellenv)" else eval "$(/opt/homebrew/bin/brew shellenv)" fi elif [[ $(uname) == 'Linux' ]]; then if [[ -e /home/linuxbrew/.linuxbrew/bin/brew ]]; then # Don't use the eval so that it doesn't override system python # eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" export HOMEBREW_PREFIX="/home/linuxbrew/.linuxbrew" export HOMEBREW_CELLAR="/home/linuxbrew/.linuxbrew/Cellar" export HOMEBREW_REPOSITORY="/home/linuxbrew/.linuxbrew/Homebrew" export PATH="${PATH}:/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin" export MANPATH="/home/linuxbrew/.linuxbrew/share/man${MANPATH+:$MANPATH}:" export INFOPATH="/home/linuxbrew/.linuxbrew/share/info:${INFOPATH:-}" fi fi # Get Homebrew shell completion bits # https://docs.brew.sh/Shell-Completion if type brew &>/dev/null; then FPATH="$(brew --prefix)/share/zsh/site-functions:${FPATH}" fi # 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 the following line to disable bi-weekly auto-update checks. # DISABLE_AUTO_UPDATE="true" # 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="false" # Uncomment the following line to display red dots whilst waiting for completion. COMPLETION_WAITING_DOTS="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" # 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" # HIST_STAMPS="mm/dd/yyyy" # Would you like to use another custom folder than $ZSH/custom? # ZSH_CUSTOM=/path/to/new-custom-folder ZSH_CUSTOM=~/repos/customized-oh-my-zsh # 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=(bundler gem git github history kubectl macos pip terraform vagrant vscode zsh-autosuggestions) source $ZSH/oh-my-zsh.sh # User configuration [ -f ~/.private-env ] && source ~/.private-env || echo '~/.private-env is missing' # Start GPG agent # Some tips from https://hedberg.io/yubikey-for-ssh/ helped simplify this: if [[ $(uname) == 'Darwin' ]]; then # Add GPG Suite binaries to the path: export PATH=/usr/local/MacGPG2/bin:$PATH fi export GPG_TTY=$(tty) # export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket) # gpgconf --launch gpg-agent # export MANPATH="/usr/local/man:$MANPATH" # 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" #alias ll='ls -G -l' #alias ls='ls -G' alias beo='bundle exec onceover run spec --trace --force' alias biv='bundle install --path=vendor/bundle' alias ce='code-exploration' alias gbc='git branch --merged | command grep -vE "^(\*|\s*(main|master|develop|production)\s*$)" | command xargs -n 1 git branch -d' alias gitextract='git log --pretty=email --patch-with-stat --reverse --full-index --binary --' alias gpge='gpg2 --encrypt --sign --armor -r ' alias hubpr='hub pull-request --push --browse' alias pssh='ssh -o "UserKnownHostsFile /dev/null" -o "StrictHostKeyChecking no" -o PubkeyAcceptedKeyTypes=+ssh-rsa -o HostKeyAlgorithms=+ssh-rsa -o KexAlgorithms=+diffie-hellman-group1-sha1 -i ~/.ssh/id_rsa-acceptance' alias sal='ssh-add -L' alias st='open -a SourceTree' alias sz='source ~/.zshrc' alias usegpg='killall ssh-agent; export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket) && gpgconf --launch gpg-agent' alias usessh='gpgconf --kill gpg-agent' # aliases whose command changes based on OS if [[ `uname` == 'Linux' ]]; then alias uwgconnect='nmcli dev wifi connect SecureWest password' alias uwgforget='nmcli connection delete SecureWest' alias ykey='sudo systemctl restart pcscd && sudo pkill -9 gpg-agent && source ~/.zshrc; ssh-add -L' else alias currentwifi='networksetup -getairportnetwork en0 |cut -d ":" -f2- | cut -d " " -f2-' alias uwgconnect='networksetup -setairportnetwork en0 SecureWest' alias uwgforget='networksetup -removepreferredwirelessnetwork en0 SecureWest' alias ykey='pkill -9 gpg-agent && source ~/.zshrc; ssh-add -L' fi ## Linux-only aliases if [[ `uname` == 'Linux' ]]; then alias enable-ruby-27='source ~/enable-ruby-27' alias pbcopy='xclip -selection clipboard' alias pbpaste='xclip -selection clipboard -o' function popup() { echo 'checking for updates via apt...' sudo apt update sudo apt upgrade -y echo echo 'checking for updates via flatpak...' flatpak update echo echo 'checking for updates via snap...' sudo snap refresh echo echo 'checking for updates via brew...' brew update brew upgrade echo echo 'checking for updates to Zoom' wget -O /tmp/zoom_amd64.deb https://zoom.us/client/latest/zoom_amd64.deb && sudo apt-get install -y /tmp/zoom_amd64.deb; rm -f /tmp/zoom_amd64.deb echo echo 'checking for firmware updates...' sudo fwupdmgr refresh --force && sudo fwupdmgr get-updates && sudo fwupdmgr update echo echo 'all done :)' } fi if [[ `uname` != 'Linux' ]]; then function otpon() { osascript -e 'tell application "yubiswitch" to KeyOn' } function otpoff() { osascript -e 'tell application "yubiswitch" to KeyOff' } fi export GOPATH=$HOME/go if [[ `uname` == 'Darwin' ]]; then # Bits common to all macOS instances alias flushdns='sudo killall -HUP mDNSResponder' alias localdns='sudo networksetup -setdnsservers Wi-Fi empty && sudo networksetup -setdnsservers Wi-Fi 127.0.0.1 ::1 && flushdns' alias ogk='open -a GitKraken' alias stockdns='sudo networksetup -setdnsservers Wi-Fi empty && flushdns' if [ -d "$HOME/.krew" ]; then export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"; fi export PATH=$PATH:/usr/local/sbin # Araxis needs to come first so that its tools don't get stomped # by ones Homebrew installs to /usr/local/bin. In particular, compare # from ImageMagick breaks using git difftool. if [ -d "/Applications/Araxis Merge.app" ]; then export PATH='/Applications/Araxis Merge.app/Contents/Utilities':$PATH; fi eval '/usr/libexec/path_helper -s' > /dev/null # Add OVFTool to PATH if it is installed if [ -d "/Applications/VMware OVF Tool" ]; then export PATH=$PATH:'/Applications/VMware OVF Tool'; fi # add gems to path GEMBIN="$(gem environment gemdir)/bin" export PATH=$PATH:$GEMBIN # added to make pipx work [ -d /Users/gene/.local/bin ] && export PATH=$PATH:/Users/gene/.local/bin export OPENFAAS_PREFIX="genebean" [ -e "${HOME}/.iterm2_shell_integration.zsh" ] && source "${HOME}/.iterm2_shell_integration.zsh" if [ "$(uname -p)" = 'i386' ] && [ ! -f '/opt/homebrew/bin/brew' ]; then # optional additions from homebrew [ -d "/usr/local/opt/node@12/bin" ] && export PATH="/usr/local/opt/node@12/bin:$PATH" [ -d /usr/local/opt/qt/bin ] && export PATH=$PATH:/usr/local/opt/qt/bin # use homebrew's ruby [ -d /usr/local/opt/ruby/bin ] && export PATH=/usr/local/opt/ruby/bin:$PATH # hide ruby 2.7's extra output export RUBYOPT='-W:no-deprecated -W:no-experimental' export VAGRANT_DEFAULT_PROVIDER='virtualbox' glcoud_zsh_path='/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.zsh.inc' [ -f $glcoud_zsh_path ] && source $glcoud_zsh_path gcloud_zsh_completions='/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.zsh.inc' [ -f $gcloud_zsh_completions ] && source $gcloud_zsh_completions else glcoud_zsh_path='/usr/local/google-cloud-sdk/path.zsh.inc' if [ -f $glcoud_zsh_path ]; then source $glcoud_zsh_path; fi gcloud_zsh_completions='/usr/local/google-cloud-sdk/completion.zsh.inc' if [ -f $gcloud_zsh_completions ]; then source $gcloud_zsh_completions; fi # use homebrew's ruby [ -d "/opt/homebrew/opt/ruby@2.7/bin" ] && export PATH='/opt/homebrew/opt/ruby@2.7/bin':$PATH # hide ruby 2.7's extra output export RUBYOPT='-W:no-deprecated -W:no-experimental' fi elif [[ `uname` == 'Linux' ]]; then PATH="$HOME/.local/bin:$PATH" # add Pulumi to the PATH if [ -d "$HOME/.pulumi/bin" ] ; then PATH=$PATH:$HOME/.pulumi/bin fi if [ -d "$HOME/.local/share/gem/ruby/3.0.0/bin" ] ; then PATH="$HOME/.local/share/gem/ruby/3.0.0/bin:$PATH" fi # export CLOUDSDK_PYTHON="/usr/bin/python2" gcloud_zsh_completions='/snap/google-cloud-cli/current/completion.zsh.inc' if [ -f $gcloud_zsh_completions ]; then source $gcloud_zsh_completions; fi fi if type floaty &>/dev/null; then source $(floaty completion --shell zsh) fi eval "$(oh-my-posh init zsh --config ~/repos/my-oh-my-posh-themes/beanbag.omp.json)"