Personal configuration files for my development environment.
git clone https://github.com/ronload/dotfiles.git ~/dotfiles
cd ~/dotfiles
./setup.shsetup.sh will automatically install Homebrew, Rust, opencode, and Brewfile packages, then run install.sh to symlink configs, clone fzf-git.sh, and sync Neovim plugins. Each step is guarded so it can be safely re-run.
- nvim: Neovim with lazy.nvim
- ghostty: Ghostty terminal
- zsh: Zsh shell (zshrc, zprofile, zshenv)
- gh: GitHub CLI
- git: Git global config
- fastfetch: Fastfetch system info (with custom colored-bar module)
- brew: Brewfile for Homebrew packages
If you prefer not to run install.sh, the equivalent steps are:
# Base configs
mkdir -p ~/.config
ln -sfn ~/dotfiles/nvim ~/.config/nvim
ln -sfn ~/dotfiles/ghostty ~/.config/ghostty
ln -sfn ~/dotfiles/gh ~/.config/gh
ln -sfn ~/dotfiles/fastfetch ~/.config/fastfetch
ln -sfn ~/dotfiles/git/gitconfig ~/.gitconfig
ln -sfn ~/dotfiles/git/ignore ~/.gitignore_global
ln -sfn ~/dotfiles/zsh/zshrc ~/.zshrc
ln -sfn ~/dotfiles/zsh/zprofile ~/.zprofile
ln -sfn ~/dotfiles/zsh/zshenv ~/.zshenv
# Claude Code (CLAUDE.md, settings, statusline, plus every skill and hook)
mkdir -p ~/.claude/skills ~/.claude/hooks
ln -sfn ~/dotfiles/claude/CLAUDE.md ~/.claude/CLAUDE.md
ln -sfn ~/dotfiles/claude/settings.json ~/.claude/settings.json
ln -sfn ~/dotfiles/claude/statusline.sh ~/.claude/statusline.sh
for d in ~/dotfiles/claude/skills/*/; do
ln -sfn "$d" "$HOME/.claude/skills/$(basename "$d")"
done
for f in ~/dotfiles/claude/hooks/*.sh; do
ln -sfn "$f" "$HOME/.claude/hooks/$(basename "$f")"
done
# fzf-git.sh (sourced by zshrc; no Homebrew formula available)
mkdir -p ~/.local/share
git clone --depth 1 https://github.com/junegunn/fzf-git.sh.git ~/.local/share/fzf-git.sh
# Neovim plugins (downloads tokyonight.nvim used by ghostty and delta)
nvim --headless "+Lazy! sync" +qa
# bat theme for delta (delta calls bat; without this it warns on every git diff)
mkdir -p ~/.config/bat/themes
cp ~/.local/share/nvim/lazy/tokyonight.nvim/extras/sublime/tokyonight_moon.tmTheme \
~/.config/bat/themes/
bat cache --buildBash scripts are checked with shellcheck. A GitHub Actions workflow runs on every push and pull request; locally:
./lint.shzsh files (zshrc, *.zsh, etc.) are not covered — shellcheck does not support zsh.
git/gitconfig conditionally includes a work identity for repos under git@github.com:prinsur/**:
[includeIf "hasconfig:remote.*.url:git@github.com:prinsur/**"]
path = ~/.gitconfig-prinsurThis override file is not tracked in the repo. Create it manually on each machine:
cat > ~/.gitconfig-prinsur <<'EOF'
[user]
email = your-work-email@example.com
EOFWithout it, commits to prinsur/* repos fall back to the global identity.
