Skip to content
PatrickTulskiePublic

About

These are my dotfiles. I love them.

Resources

Stars

4 stars

Watchers

3 watching

Forks

Latest commit

 

History

139 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Patrick's dotfiles

These are my dotfiles. There are many like them, but these are mine.

They are mostly for ZSH and Mac, but I use them on Linux too. No framework, just zsh and a starship prompt.

Installation and Usage

Clone this repo to ~/dotfiles (the shell configs expect it there), then run script/install:

git clone git@github.com:PatrickTulskie/dotfiles.git ~/dotfiles
~/dotfiles/script/install

script/install is idempotent and safe to re-run on any machine. It symlinks everything into place (backing up anything real it would clobber), installs vim-plug and the Meslo Nerd Font if they're missing, and seeds Rectangle's prefs on a machine that has none yet.

~/.zshrc and ~/.gitconfig are the two files other tools like to edit in place (guise, ltv-agent), so the installer asks how to wire each one:

  • Symlink — the repo file itself. Edits by those tools land in the repo.
  • Stub — a real file whose first lines load the repo copy. Tools append below and the repo stays clean. An existing file keeps its contents.
  • Leave it — hands off.

It only asks when the file isn't already wired one of those ways, and DOTFILES_RC_MODE=link|stub|skip answers for both without a prompt.

A machine that was on the old layout (resources/_zshrc, _universal_*, Vundle, thefuck) should run script/migrate once instead. It clears out what the installer doesn't know about, swaps thefuck for pay-respects, then runs script/install. Anything local it won't delete on its own, it prints.

Layout

zsh/zshrc         symlinked to ~/.zshrc
zsh/path.zsh      the only place PATH is assembled
zsh/shell.zsh     history, completion, key bindings
zsh/env.zsh       exports
zsh/aliases.zsh   aliases
zsh/linux.zsh     Linux-only bits
script/           install, migrate, and the terminal UI they share
bin/              scripts, on PATH via path.zsh
config/           app configs symlinked into ~/.config (git, ghostty, ...)
private/_*        gitignored; anything matching is sourced after the rest

If you'd rather not run the installer, source zsh/path.zsh first and the other zsh/*.zsh files after it, as zsh/zshrc does.

Notes

config/git/config is linked to ~/.gitconfig, so git config --global writes land in the repo. config/git/ignore goes to ~/.config/git/ignore, git's default global excludes path.

config/hunk/config.toml defines a "Monokai Soda" custom theme for hunk that matches the Ghostty terminal theme (hunk ships plain Monokai but no Soda variant).

config/herdr/config.toml does the same for herdr via its [theme.custom] token overrides, using the same palette.

zsh/zshrc binds ctrl+r to atuin via --disable-up-arrow, so history search is atuin's but up-arrow stays zsh's. The binary comes from Homebrew (see the iac repo); the hook is guarded on command -v atuin, so a box without it just falls back to zsh's own ctrl+r. config/atuin/config.toml keeps it local-only — no account, no sync, no network.

fuck is pay-respects, also from Homebrew and also guarded, so it's simply absent where it isn't installed.

mise, direnv and zoxide (z, zi) are hooked in the same way, straight from the binaries.

The prompt is starship, pointed straight at config/starship/ by STARSHIP_CONFIG. soda.toml (the default) is the Pastel Powerline preset in the Monokai Soda palette; jived.toml is the old oh-my-zsh theme. Set STARSHIP_THEME=jived (a private/_* file works) to switch. Without starship installed there's a plain fallback prompt.

fzf is deliberately not wired into the shell. It's installed for vim's <C-P> (:FZF), which only needs the binary on PATH, and atuin owns ctrl+r.

cmd+k clears the screen inside herdr panes (and any other TUI) because config/ghostty/config remaps it to send ctrl+l rather than firing Ghostty's own clear_screen. Ghostty's scrollback-wiping clear moved to cmd+shift+k.

config/rectangle/RectangleConfig.json only seeds a fresh machine. To update it, export from Rectangle's settings and overwrite the file.

config/iterm and resources/themes/macos-terminal are kept for reference but nothing installs them; Ghostty is the terminal.

About

These are my dotfiles. I love them.

Resources

Stars

4 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages