Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# State files
vifm/vifm/vifminfo
vifm/vifminfo

# OS files
.DS_Store

# Secrets (never commit these)
shell/common/secrets
*.secret
.env
35 changes: 2 additions & 33 deletions brew/Brewfile
Original file line number Diff line number Diff line change
@@ -1,59 +1,34 @@
# specify a directory to install
cask_args appdir: '/Applications'

tap "github/gh"
tap "homebrew/bundle"
tap "homebrew/core"
tap "homebrew/services"
tap "teamookla/speedtest"
tap "universal-ctags/universal-ctags"

brew "ack"
brew "bash"
brew "bash-completion"
brew "bat"
brew "pnpm"
brew "bit"
brew "glib"
brew "cloc"
brew "cmake"
brew "cmatrix"
brew "ctags", link: false
brew "fd"
brew "fzf"
brew "git"
brew "gpgme"

brew "gh"
brew "go"
brew "grv"
brew "highlight"
brew "htop"
brew "hub"
brew "imagemagick"
brew "ios-webkit-debug-proxy"
brew "librsvg"
brew "mas"
brew "maven"
brew "mutt"
brew "neovim"
brew "pandoc"
brew "redis"
brew "ripgrep"
brew "shellcheck"
brew "tmux"
brew "tree"
brew "vim"
brew "w3m"
brew "watchman"
brew "watson"
brew "wget"
brew "yarn"
brew "zsh"
brew "zsh-autosuggestions"
brew "zsh-completions"
brew "zsh-syntax-highlighting"
brew "github/gh/gh"
brew "rigellute/tap/spotify-tui"
brew "teamookla/speedtest/speedtest"

# GNU utils
brew "coreutils"
Expand All @@ -64,13 +39,7 @@ brew "gnu-getopt"
brew "gnu-indent"
brew "gnu-sed"
brew "grep"
brew "gnu-tar"
brew "gawk"

cask "alacritty"
cask "firefox"
cask "postman"
cask "skype"
cask "wkhtmltopdf"

mas "Xcode", id: 497799835
22 changes: 22 additions & 0 deletions claude/hooks/notify.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#!/bin/bash
command -v jq >/dev/null || exit 0
command -v notify-send >/dev/null || exit 0

INPUT=$(cat)
TITLE=$(printf '%s' "$INPUT" | jq -r '.title // "Claude Code"')
MESSAGE=$(printf '%s' "$INPUT" | jq -r '.message // "Needs attention"')
TYPE=$(printf '%s' "$INPUT" | jq -r '.notification_type // "unknown"')

Comment on lines +5 to +9
Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

notify.sh hard-depends on jq, notify-send, and pw-play, but none of these are ensured by the macOS Brewfile (and notify-send/pw-play are Linux-specific). Add dependency installation docs or make the script degrade gracefully (e.g., check command -v and no-op / choose a macOS notifier when unavailable) to avoid hook failures.

Copilot uses AI. Check for mistakes.
case "$TYPE" in
permission_prompt)
URGENCY="critical"
SOUND="/usr/share/sounds/freedesktop/stereo/dialog-warning.oga"
;;
*)
URGENCY="normal"
SOUND="/usr/share/sounds/freedesktop/stereo/message.oga"
;;
esac

notify-send -a "Claude Code" -u "$URGENCY" "$TITLE" "$MESSAGE"
command -v pw-play >/dev/null && pw-play "$SOUND" & disown
15 changes: 15 additions & 0 deletions claude/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"hooks": {
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/notify.sh"
}
]
}
]
}
}
6 changes: 3 additions & 3 deletions fzf/fzf.bash
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Setup fzf
# ---------
if [[ ! "$PATH" == */Users/jackson/.fzf/bin* ]]; then
export PATH="${PATH:+${PATH}:}/Users/jackson/.fzf/bin"
if [[ ! "$PATH" == *"$HOME/.fzf/bin"* ]]; then
export PATH="${PATH:+${PATH}:}$HOME/.fzf/bin"
fi

# Auto-completion
# ---------------
[[ $- == *i* ]] && source "/Users/jackson/.fzf/shell/completion.bash" 2> /dev/null
[[ $- == *i* ]] && source "$HOME/.fzf/shell/completion.bash" 2> /dev/null
6 changes: 3 additions & 3 deletions fzf/fzf.zsh
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Setup fzf
# ---------
if [[ ! "$PATH" == */Users/jackson/.fzf/bin* ]]; then
export PATH="${PATH:+${PATH}:}/Users/jackson/.fzf/bin"
if [[ ! "$PATH" == *"$HOME/.fzf/bin"* ]]; then
export PATH="${PATH:+${PATH}:}$HOME/.fzf/bin"
fi

# Auto-completion
# ---------------
[[ $- == *i* ]] && source "/Users/jackson/.fzf/shell/completion.zsh" 2> /dev/null
[[ $- == *i* ]] && source "$HOME/.fzf/shell/completion.zsh" 2> /dev/null
8 changes: 4 additions & 4 deletions git/gitconfig
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,11 @@
[user]
name = Jackson Holiday Wheeler
email = jhwheeler@gmail.com
[credential]
helper = osxkeychain
[pull]
rebase = false
[core]
excludesfile = /Users/jackson/.gitignore_global
editor = nvim
excludesfile = ~/.gitignore_global
editor = nvim
; [url "git@github.com:"]
; insteadOf = https://github.com/
[alias]
Expand Down Expand Up @@ -46,3 +44,5 @@
templatedir = ~/.git_template
[commit]
verbose = true
[include]
path = ~/.gitconfig.local
20 changes: 14 additions & 6 deletions install.conf.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@

- clean: ['~']

- create:
- ~/.config
- ~/.shell
- ~/.claude/hooks

- link:
~/.dotfiles: ''

Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removing the ~/Brewfile link changes the default brew bundle workflow (it looks for ~/Brewfile unless --file is provided). If the intended setup still expects brew bundle to work without extra flags, consider keeping the symlink or documenting the new --file brew/Brewfile usage.

Suggested change
# Homebrew
~/Brewfile: brew/Brewfile

Copilot uses AI. Check for mistakes.
# Package manager
~/Brewfile: brew/Brewfile

# Terminal
~/.config/alacritty: alacritty

Expand All @@ -28,24 +30,30 @@

# Shell
~/.shell/env: shell/common/env
~/.shell/functions: shell/common/functions
~/.shell/login: shell/common/login
~/.bash_aliases: shell/common/aliases
~/.bash_profile: shell/bash/bash_profile
~/.bashrc: shell/bash/bashrc
~/.inputrc: shell/bash/inputrc
~/.zprofile: shell/zsh/zprofile
~/.zshrc: shell/zsh/zshrc

# Git
~/.gitconfig: git/gitconfig
~/.gitignore_global: git/gitignore_global
~/.git_template: git/git_template

# Claude Code
~/.claude/settings.json: claude/settings.json
~/.claude/hooks/notify.sh: claude/hooks/notify.sh

# Fuzzy finder
~/.fzf.bash: fzf/fzf.bash
~/.fzf.zsh: fzf/fzf.zsh

- shell:
- [git submodule update --init --recursive, Installing submodules]
- [mkdir -p ~/.config, Creating config directory]
- [mkdir -p ~/.shell, Creating shell config directory]
- [touch ~/.shell/secrets, Creating local secrets file (not tracked by git)]
# If you haven't already, run prefix-I with tmux open after doing this to reload tmux and install the plugins
- [ if test -d "~/.tmux/plugins/tpm"; then git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm; fi ]
- [ if ! test -d "$HOME/.tmux/plugins/tpm"; then git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm; fi ]
11 changes: 9 additions & 2 deletions shell/bash/bash_profile
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
source ~/.bashrc
#
# ~/.bash_profile
#

export PATH="$HOME/.cargo/bin:$PATH"
[[ -f ~/.bashrc ]] && . ~/.bashrc

# Shared login tasks (atuin, Hyprland auto-start, etc.)
[ -f ~/.shell/login ] && . ~/.shell/login

command -v atuin &>/dev/null && eval "$(atuin init bash)"
9 changes: 2 additions & 7 deletions shell/bash/bashrc
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@ fi
# Activate vim mode
set -o vi

# TODO: Figure out why the cursor isn't changing in insert mode

# Remove mode-switching delay
KEYTIMEOUT=1

Expand Down Expand Up @@ -42,8 +40,5 @@ export PS1="${pathC}\w ${gitC}\$(gitBranch) ${pointerC}\$${normalC} "
# FZF (full config is in ~/.shell/env)
[ -f ~/.fzf.bash ] && source ~/.fzf.bash

## Custom functions

function take() {
mkdir $1 && cd $1
}
## Shared functions (fzf helpers, etc.)
[ -f ~/.shell/functions ] && source ~/.shell/functions
48 changes: 18 additions & 30 deletions shell/common/aliases
Original file line number Diff line number Diff line change
Expand Up @@ -3,34 +3,39 @@
# Always copy recursively & explain what was done
alias cp='cp -rv'
# List contents with colors for file types, (A)lmost all hidden files (without . and ..), in (C)olumns, with class indicators (F)
alias ls='ls -ACFG'
# List contents with colors for file types, (a)ll hidden entries (including . and ..), use (l)ong listing format, with class indicators (F)
alias ll='ls -alFG'
if [ "$DOTFILES_OS" = "macos" ]; then
alias ls='ls -ACFG'
alias ll='ls -alFG'
else
alias ls='ls -ACF --color=auto'
alias ll='ls -alF --color=auto'
fi
# Explain (v) what was done when moving a file
alias mv='mv -v'
# Create any non-existent (p)arent directories and explain (v) what was done
alias mkdir='mkdir -pv'
# Always try to (c)ontinue getting a partially-downloaded file
alias wget='wget -c'

# Copying/pasting to/from clipboard
alias pbcopy='xclip -sel clip'
alias pbpaste='xclip -sel clip -o'
# Copying/pasting to/from clipboard (platform-aware)
if [ "$DOTFILES_OS" = "linux" ]; then
alias pbcopy='xclip -sel clip'
alias pbpaste='xclip -sel clip -o'
fi

# Common typos
alias exti='exit'
alias eit='exit'
alias eitx='exit'
alias eixt='exit'
alias eitx='exit'
alias xit='exit'
alias wxit='exit'
alias wit='exit'
alias :x='exit'
alias :q='exit'

# Config
export DOTFILES="~/Projects/dotfiles"
export DOTFILES="$HOME/.dotfiles"

alias vimrc="vim $DOTFILES/vim/vimrc"
alias bashrc='vim $DOTFILES/shell/bash/bashrc'
Expand All @@ -42,35 +47,18 @@ alias config='nvim $DOTFILES'
alias dotfiles='~/.dotfiles/install'

# Miscellaneous Shortcuts
alias c="clear"
alias cdl="cd $1 && ls"
cdl() { cd "$1" && ls; }
alias ping8='ping 8.8.8.8'
alias brewup='brew update; brew upgrade; brew prune; brew cleanup; brew doctor'

# Open Vim if there is no current background job
alias fg='if [[ $(jobs) ]]; then fg; else nvim; fi'

# Watson Time Tracker
alias t='watson'
alias tst='watson status'
alias tp='watson start pa'

# Quick search w/ Lynx
alias s='lynx_search'

# How Do I?
alias h='function hdi(){ howdoi $* -c -n 5; }; hdi'

# bat is cat with syntax highlighting
alias cat='bat'

# vifm
alias v='vifm'

# NPM
alias n='pnpm run'
alias nd='pnpm run dev'
alias ns='pnpm run start'

# Suppress message telling you to use zsh instead of bash
export BASH_SILENCE_DEPRECATION_WARNING=1
# macOS-only aliases
if [ "$DOTFILES_OS" = "macos" ]; then
alias brewup='brew update; brew upgrade; brew cleanup; brew doctor'
fi
Loading