# 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 github history 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