My dotfile

Sep 18, 2026

Rather than maintain a repo that I'm constantly scrubbing secrets from, I've thought about the use case for a .config or dotfiles repo, the purpose is often to share the code that powers my setup with colleagues. Thus, this page fulfils that need. I no longer have a need to set up a new computer, download my .config repo and have everything break.

Bash Git Prompt

Since being forced to switch to zsh on mac, I've rolled my own version of bash-git-prompt, its minimal and has the essentials.

autoload -Uz compinit && compinit
autoload -Uz vcs_info


precmd() { vcs_info }

setopt PROMPT_SUBST

zstyle ':vcs_info:git*:*' check-for-changes true

zstyle ':vcs_info:*' unstagedstr '%F{177}+%f'
zstyle ':vcs_info:*' stagedstr '%F{87}+%f'

zstyle ':vcs_info:git:*' formats '%F{blue}%b%f%u%c%m'
zstyle ':vcs_info:git:*' actionformats '(%b|%a%u%c)'

PROMPT='%(?.%F{green}●.%F{red}●%f) %F{yellow}%1~%f ${vcs_info_msg_0_} 
$ '
RPROMPT='%F{245}%*%f'

# Add arrows for changes to pull/push
zstyle ':vcs_info:git+post-backend:*' hooks git-post-backend-updown
+vi-git-post-backend-updown() {
	git rev-parse @{upstream} >/dev/null 2>&1 || return
	local -a x; x=( $(git rev-list --left-right --count HEAD...@{upstream} ) )
	(( x[2] )) && hook_com[branch]+="%F{214}↓$x[2]%f"
	(( x[1] )) && hook_com[branch]+="%F{214}↑$x[1]%f"
	return 0
}


# Add + for untracked changes in current branch
 zstyle ':vcs_info:git*+set-message:*' hooks git-untracked git-stashed

 +vi-git-untracked(){
 	if [[ $(git rev-parse --is-inside-work-tree 2> /dev/null) == 'true' ]] && \
     	git status --porcelain | grep '??' &> /dev/null ; then
         hook_com[staged]+='%F{red}+%f'
     fi
 }

 # Adds a *n for each staged change
 +vi-git-stashed(){
 	local -a x; x=( $(git stash list | wc -l) )
 	(( x)) && hook_com[misc]+="%F{green}󰈻$x%f"
 	return 0
 }

Opencode

opencode was annoying to type, as well as waiting for the menu to load to type a single prompt.

oc() {
  setopt localoptions no_nomatch no_glob
  if (( $# == 0 )); then
    opencode
  else
    opencode --prompt "$*"
  fi
}

alias oc='noglob oc'

This lets you type oc to launch opencode or oc <initiate prompt to use with default settings> (<> not needed).

Jira

alias emo="jira sprint list --current -a$(jira me) --order-by status"
alias ji="jira issue view"

emo launches the jira cli with a view centered on my current issues.

https://overlandandseas.dev/posts/atom.xml