Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dotfiles

Bash-only macOS dotfiles: shell, git, vim, and OS settings. Symlinked into ~, so every local edit is immediately visible as an uncommitted change in this repo — new terminals print ≡ dotfiles: uncommitted changes until it's committed. That one line is the entire sync mechanism.

Principles:

  • bash only — login shell is brew bash; zsh is deliberately unmanaged.
  • no install lists — setup installs only what the shell itself needs (bash, bash-completion, git, anyenv). Languages and apps are installed by hand when actually needed.
  • no surprises — every tool init in .bash_profile is guarded, so a machine without anyenv/cargo/atuin gets a working shell, not errors.
  • no secrets — tokens, .netrc, ssh keys never live here.

Layout

Dir Contents
shell/ .bash_profile .bashrc .aliases .bash_prompt .exports .path .inputrc .hushlogin
git/ .gitconfig (incl. identity) .gitignore (global excludes) .gitattributes
editors/ .vimrc .gvimrc .vim/ .editorconfig
misc/ .curlrc .finicky.js
assets/ Terminal profile, Rectangle config — imported manually
setup/ setup.sh macos.sh sudo.sh

New machine setup

git clone git@github.com:kessl/dotfiles.git ~/dev/dotfiles
~/dev/dotfiles/setup/setup.sh

setup.sh is idempotent and does: Command Line Tools → Homebrew → brew install bash bash-completion@2 git anyenv → registers brew bash in /etc/shells and makes it the login shell (chsh prompts for your password) → anyenv install --force-init → Atuin installer → link.sh (symlinks all dotfiles into ~, replacing whatever is there). Open a new terminal afterwards.

Then, in any order:

~/dev/dotfiles/setup/macos.sh    # OS settings (Finder, Dock, input, screenshots…); log out/in for all to apply
~/dev/dotfiles/setup/sudo.sh     # Touch ID for sudo (writes /etc/pam.d/sudo_local, survives OS updates)

Remaining manual steps — everything the scripts don't do:

  1. SSH: restore or generate keys into ~/.ssh, write ~/.ssh/config (not in this repo), add the public key to GitHub.
  2. Languages (as needed): anyenv install rbenv / nodenv / pyenv, restart the shell, then e.g. rbenv install <version> && rbenv global <version>.
  3. Atuin sync (optional): atuin login to pull shell history.
  4. Terminal profile: Terminal → Settings → Profiles → gear → Import → assets/Basic.terminal, then set it as default.
  5. Rectangle: install (brew install --cask rectangle), then Preferences → import assets/RectangleConfig.json.
  6. Finicky: .finicky.js (default browser routing) takes effect once the app is installed: brew install --cask finicky.
  7. Secrets: never on disk or in this repo — recreate ~/.netrc etc. only if something actually needs them.

Day-to-day

Edit dotfiles in place (they're symlinks into this repo), then commit here. If a tool appends to a profile file, the drift alert catches it in the next terminal.

About

Bash-only dotfiles, symlinked & drift-proof

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages