No description
  • Shell 64.9%
  • Lua 35.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
James Oppel 71e642e11c
add zsh, atuin, yazi configs; nvim rust-analyzer, dap, odin/yazi tweaks
- zsh: fish-parity config (ZDOTDIR via ~/.zshenv), doas/ll/y functions
- atuin: local-only history config with catppuccin mocha theme
- yazi: config, keymap, theme, pinned plugins, ghostty desktop entry
- fish: task completions, doas wrapper, y function
- nvim: install rust-analyzer via mason, add dap keys/lldb configs,
  odin and yazi plugin updates, lockfile bump
- install.sh/README: cover the new apps
- sway, ghostty: minor tweaks

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
2026-11-12 18:25:11 -08:00
applications add zsh, atuin, yazi configs; nvim rust-analyzer, dap, odin/yazi tweaks 2026-11-12 18:25:11 -08:00
atuin add zsh, atuin, yazi configs; nvim rust-analyzer, dap, odin/yazi tweaks 2026-11-12 18:25:11 -08:00
bin enable claude code sounds 2026-08-24 21:44:12 -07:00
fish add zsh, atuin, yazi configs; nvim rust-analyzer, dap, odin/yazi tweaks 2026-11-12 18:25:11 -08:00
ghostty add zsh, atuin, yazi configs; nvim rust-analyzer, dap, odin/yazi tweaks 2026-11-12 18:25:11 -08:00
noctalia update stuff 2026-09-03 12:52:36 -07:00
nvim add zsh, atuin, yazi configs; nvim rust-analyzer, dap, odin/yazi tweaks 2026-11-12 18:25:11 -08:00
sounds enable claude code sounds 2026-08-24 21:44:12 -07:00
sway add zsh, atuin, yazi configs; nvim rust-analyzer, dap, odin/yazi tweaks 2026-11-12 18:25:11 -08:00
tmux update stuff 2026-09-03 12:52:36 -07:00
yazi add zsh, atuin, yazi configs; nvim rust-analyzer, dap, odin/yazi tweaks 2026-11-12 18:25:11 -08:00
zsh add zsh, atuin, yazi configs; nvim rust-analyzer, dap, odin/yazi tweaks 2026-11-12 18:25:11 -08:00
.gitignore add zsh, atuin, yazi configs; nvim rust-analyzer, dap, odin/yazi tweaks 2026-11-12 18:25:11 -08:00
install.sh add zsh, atuin, yazi configs; nvim rust-analyzer, dap, odin/yazi tweaks 2026-11-12 18:25:11 -08:00
README.md add zsh, atuin, yazi configs; nvim rust-analyzer, dap, odin/yazi tweaks 2026-11-12 18:25:11 -08:00

dotfiles

Portable config for the tools I use everywhere. Each top-level directory mirrors ~/.config/<name> and is symlinked into place by install.sh.

dir platform notes
fish linux, macos shell; conf.d/local.fish for per-machine bits
zsh linux, macos fish-parity zsh; ~/.zshenv sets ZDOTDIR
atuin linux, macos ctrl-r history search, local-only, mocha theme
tmux linux, macos local.conf for per-machine bits
ghostty linux, macos catppuccin mocha; local for per-machine bits
nvim linux, macos LazyVim
yazi linux, macos file manager; plugins pinned in package.toml
sway linux SwayFX; host overrides in config.d/local.conf
noctalia linux shell/bar settings

Install

git clone <remote> ~/code/dotfiles
~/code/dotfiles/install.sh

The installer is idempotent. Anything already at ~/.config/<name> that is not a symlink into this repo is moved to <name>.bak, never deleted. On macOS the Linux-only dirs are skipped.

Prerequisites

fish, zsh (+ zsh-autosuggestions, zsh-syntax-highlighting, zsh-history-substring-search, zsh-completions), tmux ≥ 3.1, ghostty, neovim ≥ 0.10, JetBrains Mono, starship, atuin, direnv, ripgrep, lazygit, yazi (plus fd, fzf, zoxide, jq, 7zip, ffmpeg, ImageMagick, poppler-utils, resvg for search and previews). Linux desktop additionally: swayfx, noctalia, wl-clipboard, ripdrag.

Secrets and machine-local state

Nothing secret is committed. config.fish reads HF_TOKEN from ~/.secret/hf_token at runtime — create that file by hand on each machine.

These files are gitignored and safe to edit per host:

  • sway/config.d/local.conf — monitor, wallpaper, host daemons, personal webapp bindings (template: local.conf.example, seeded on first install)
  • fish/fish_variables — fish's own universal-variable store
  • zsh/env.local.zsh (env/PATH, see .example), zsh/local.zsh (interactive)
  • fish/conf.d/local.fish, tmux/local.conf, ghostty/local — free-form per-machine overrides, all sourced automatically if present

Agent completion chime

bin/chime (linked to ~/.local/bin/chime by the installer) plays sounds/done.wav or sounds/attn.wav — afplay on macOS, PipeWire/Pulse on Linux. Claude Code triggers it via hooks in ~/.claude/settings.json, which is not in this repo; add this block on each machine:

"hooks": {
  "Stop": [{ "hooks": [{ "type": "command", "command": "$HOME/.local/bin/chime done", "async": true, "timeout": 5 }] }],
  "Notification": [{ "matcher": "permission_prompt|elicitation_dialog",
    "hooks": [{ "type": "command", "command": "$HOME/.local/bin/chime attn", "async": true, "timeout": 5 }] }]
}

chime done fires when Claude finishes a turn; chime attn when it is waiting on a permission prompt or a question.