Skip to content

Latest commit

 

History

152 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dotfiles

Config files live in this repo and get symlinked into $HOME. Some files have a macOS and a Linux variant. Everything else is shared.

Install

Shared:

ln -s $HOME/dotfiles/.zshrc $HOME/
ln -s $HOME/dotfiles/.gitconfig $HOME/
ln -s $HOME/dotfiles/.gitignore $HOME/
ln -s $HOME/dotfiles/.config/nvim $HOME/.config/
ln -s $HOME/dotfiles/.config/starship.toml $HOME/.config/

macOS only:

ln -s $HOME/dotfiles/.hushlogin $HOME/
ln -s $HOME/dotfiles/.config/kitty/kitty-osx.conf $HOME/.config/kitty/kitty.conf

Linux only:

ln -s $HOME/dotfiles/.config/kitty/kitty-linux.conf $HOME/.config/kitty/kitty.conf

Zsh

.zshrc uses starship for the prompt and standalone plugins from Homebrew. No oh-my-zsh.

brew install starship fzf zsh-autosuggestions zsh-syntax-highlighting zsh-completions

.zshrc expects Homebrew at /opt/homebrew. On Linux, Homebrew lives under /home/linuxbrew, so an untracked ~/.zprofile puts it on the PATH first:

eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"

asdf 0.16+ has no asdf.sh, so generate its completions once:

mkdir -p ~/.asdf/completions
asdf completion zsh > ~/.asdf/completions/_asdf

Machine-local aliases and secrets go in ~/.zshrc.private, which .zshrc sources if it exists.

Neovim

Everything lives in init.lua. Plugins are managed by the built-in vim.pack (Neovim 0.12 or newer), so the first start installs them without any extra setup. nvim-pack-lock.json pins their revisions. Update with :lua vim.pack.update(), review the diff, then :write to accept.

Treesitter parsers install on the first start and need a C compiler. Files and grep go through fzf-lua, which needs fzf and rg on the PATH.

Language servers are enabled for Elixir (expert), Go (gopls) and TypeScript (typescript-language-server). Each one only runs if its binary is on the PATH.

Kitty

kitty-osx.conf and kitty-linux.conf both include kitty-common.conf by an absolute path. Kitty resolves relative includes against the directory of the kitty.conf symlink, not the real file. Tab shortcuts match across platforms: Cmd+Enter opens a tab in the same directory, Cmd+Left and Cmd+Right switch tabs, Cmd+Comma and Cmd+Period move a tab. On Linux, Toshy turns the Cmd combos into the Ctrl combos that kitty-linux.conf binds.

Reload config in a running kitty with Ctrl+Shift+F5.

Keyboard (Linux)

Toshy gives Linux macOS-style shortcuts. It owns its own config under ~/.config/toshy. Only the customized slice of that config is tracked here. See .config/toshy/README.md for how to restore it and how to check for drift after a Toshy upgrade.

Claude Code

.claude/settings.json and .claude/CLAUDE.md are symlinked into both ~/.claude (work) and ~/.claude-personal (personal):

ln -s $HOME/dotfiles/.claude/settings.json $HOME/.claude/
ln -s $HOME/dotfiles/.claude/CLAUDE.md $HOME/.claude/
ln -s $HOME/dotfiles/.claude/settings.json $HOME/.claude-personal/
ln -s $HOME/dotfiles/.claude/CLAUDE.md $HOME/.claude-personal/

The claude-personal alias in .zshrc starts Claude with CLAUDE_CONFIG_DIR=~/.claude-personal.

The status line script referenced from settings.json comes from the salemove/claude-code-plugins repo:

ln -s $HOME/salemove/claude-code-plugins/scripts/statusline.sh $HOME/.claude/
ln -s $HOME/salemove/claude-code-plugins/scripts/statusline.sh $HOME/.claude-personal/

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages