Skip to content
sarinkPublic

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Latest commit

 

History

100 Commits

Folders and files

Repository files navigation

dotfiles

The repo is the source of truth. Edit files here, then run ./install.sh to copy them into ~. (No symlinks — install.sh copies, skips identical files, and shows a diff before asking to replace a changed file. Removed lines are from the installed copy; added lines are from the repo.)

Install

Clone the repo and run the install script:

git clone https://github.com/sarink/dotfiles.git ~/dotfiles
cd ~/dotfiles
./install.sh

This copies the shell, vim, and tmux dotfiles into ~, the Claude Code config into ~/.claude, and the Codex config into ~/.codex. To update your home copies after editing anything in the repo, just run ./install.sh again.

Zsh

.zprofile (login shells) sets up Homebrew; .zshrc (interactive shells) loads the shared fragments, initializes native zsh completion, activates mise for Node/Ruby/Python, and sets the prompt.

Machine-local config

Everything in this repo is meant to be portable across machines. Anything specific to one Mac (extra PATH entries for locally installed tools, work env vars, one-off aliases) goes in ~/.zshrc.local, which .zshrc sources at the very end if the file exists. It is not tracked here and not touched by install.sh — create it by hand on each machine that needs it:

echo 'export PATH="$HOME/go/bin:$PATH"' >> ~/.zshrc.local

.zshrc.local is not a zsh built-in, just a common convention; it only works because of the source line at the bottom of .zshrc.

Notes

  • Completion is native zsh (compinit). The old vendored bash completion files (git, tmux, brew) were removed — zsh ships better ones. Homebrew's zsh completions are picked up via $fpath.
  • Version management uses mise instead of nvm. To make it honor existing .nvmrc files (in addition to .tool-versions / mise.toml), run once:
    mise settings add idiomatic_version_file_enable_tools node
    
  • The shared fragments are POSIX-ish and also work if sourced from bash; only the prompt and completion are zsh-specific.

Vim

install.sh copies .vimrc. Then clone vundle:

git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

Open vim, run :VundleInstall to install vim plugins (official vundle docs).

Tmux

install.sh copies .tmux.conf. Then clone the tmux plugin manager:

git clone [email protected]:tmux-plugins/tpm ~/.tmux/plugins/tpm

Open tmux, run <prefix>I (probably ctrl-aI) to install tmux plugins (official tpm docs).

Claude Code

claude/ mirrors ~/.claude/ — install.sh copies every file in it:

  • settings.json — Claude Code settings
  • statusline.sh — status line script
  • skills/ — personal skills (/eli5, /id, /qq, /screenshot, and /ponytail with its -review, -audit, -debt, -help: MIT, from DietrichGebert/ponytail, changed to run only when invoked and only for that request)

Claude Code separates settings from instructions: ~/.claude/settings.json controls settings and hooks, while ~/.claude/CLAUDE.md holds user-level instructions for all projects. To carry standing instructions across machines, add claude/CLAUDE.md here; the installer will copy it automatically. Project settings live in .claude/settings.json; personal project overrides live in .claude/settings.local.json.

Paths in settings.json use ~/.claude/..., never an absolute home dir, so they work on any machine.

Claude Code also writes to ~/.claude/settings.json itself (most /config options, the /model default). Copy anything you want to keep back into the repo before running install.sh — answering y replaces the file:

diff ~/.claude/settings.json claude/settings.json
cp ~/.claude/settings.json claude/settings.json

Codex

codex/ mirrors ~/.codex/ — install.sh copies every file in it:

  • AGENTS.md — user-level instructions, including creating Git worktrees in <repo folder>/.codex/worktrees/<worktree-name> under the primary checkout.
  • config.toml — portable settings: no approval prompts and no alternate screen.
  • skills/ — Codex versions of all nine Claude skills: $eli5, $id, $qq, $screenshot, $ponytail, $ponytail-review, $ponytail-audit, $ponytail-debt, and $ponytail-help. The first four require explicit invocation; $qq stays read-only until explicitly released. Ponytail applies only to the request where it is invoked.

Edit the files in codex/ here and run ./install.sh on each machine after pulling the repo. Start a new Codex session to load updated settings and instructions. The installer currently targets the default ~/.codex location; a custom CODEX_HOME needs the instructions installed there instead.

AGENTS.md guides agent behavior; it does not configure the desktop app's managed worktree location. config.toml sets approval_policy = "never" and tui.alternate_screen = "never"; sandbox permissions are configured separately.

The installer asks before replacing an existing ~/.codex/config.toml and copies the whole file, without merging. Review any local settings you want to retain before accepting the replacement. Keep credentials, session history, and machine-specific project trust entries out of this repo.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages