dots/link/nix/zshrc

271 lines
9.8 KiB
Bash

# 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
if [[ `uname` == 'Linux' ]]; then
ZSH_THEME="beanbag"
#ZSH_THEME="af-magic"
else
ZSH_THEME="beanbag"
#ZSH_THEME="robbyrussell"
#ZSH_THEME="pygmalion"
#ZSH_THEME="muse"
fi
# 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=(brew bundler gem git git-flow github history kube-aliases kube-ps1 kubectl macos pip python terraform vagrant vscode)
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" -i ~/.ssh/id_rsa-acceptance'
alias sal='ssh-add -L'
alias st='open -a SourceTree'
alias sz='source ~/.zshrc'
# aliases whose command changes based on OS
if [[ `uname` == 'Linux' ]]; then
alias ykey='sudo systemctl restart pcscd && sudo pkill -9 gpg-agent && source ~/.zshrc; ssh-add -L'
else
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'
alias uwgroute='nmcli connection modify SecureWest ipv4.route-metric 20; nmcli radio wifi off; nmcli radio wifi on'
alias uwgforget='nmcli connection delete SecureWest'
fi
if [[ `uname` != 'Linux' ]]; then
function otpon() {
osascript -e 'tell application "yubiswitch" to KeyOn'
}
function otpoff() {
osascript -e 'tell application "yubiswitch" to KeyOff'
}
fi
# helper for aws and assume-role
function awsrole() {
echo "Enter MFA token:"
read mfatoken
eval $(assume-role $1 $AWS_HELPER_USERNAME $mfatoken)
}
function aws_account_info {
[ "$AWS_ACCOUNT_NAME" ] && [ "$AWS_ACCOUNT_ROLE" ] && echo "%{$reset_color%}%{$fg[blue]%}aws:(%{$reset_color%}%{$fg[red]%}$AWS_ACCOUNT_NAME:$AWS_ACCOUNT_ROLE%{$fg[blue]%})%{$reset_color%}"
}
# )ofni_tnuocca_swa($ is $(aws_account_info) backwards
#PROMPT=`echo $PROMPT | rev | sed 's/ / )ofni_tnuocca_swa($ /'| rev`
function get_cluster_short() {
echo "$1" |rev |cut -d _ -f1 |rev
}
KUBE_PS1_CLUSTER_FUNCTION=get_cluster_short
KUBE_PS1_COLOR_CONTEXT="%{$fg[yellow]%}"
KUBE_PS1_ENABLED=false
export EDITOR='vim'
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 by travis gem
[ -f ~/.travis/travis.sh ] && source ~/.travis/travis.sh || echo 'The travis gem is missing. After installing it run "echo y|travis" to create ~/.travis'
# 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
# default kube-ps1 to off
kubeoff