Use git
(and Sublime Merge) to manage dotfiles without using symlinks. Uses brew to install software and rtx to manage runtimes.
If you've already got your dotfiles setup you can use the following commands to manage your dotfiles.
dotfiles add -f .somefile
dotfiles rm --cached .somefile
brew bundle dump --force
If you want to (fork and) clone this repo and use it for your own dotfiles, follow these steps.
-
Clone repo
DOTFILES_REPO=https://github.com/connorads/dotfiles/ DOTFILES_DIR=$HOME/git/dotfiles git clone --bare $DOTFILES_REPO $DOTFILES_DIR
-
Change worktree to home directory
cd $DOTFILES_DIR git config --unset core.bare git config core.worktree $HOME
-
Put dotfiles from git into home directory (
⚠️ this will overwrite existing dotfiles in home directory)cd $HOME git --git-dir=$DOTFILES_DIR/ checkout -f
-
Setup brew and install packages
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" eval "$(/opt/homebrew/bin/brew shellenv)" brew bundle install
-
You can now reload your shell and open Sublime Merge
smerge $DOTFILES_DIR
Follow these steps to recreate the setup for this repo from scratch.
-
Create repository to store dotfiles
DOTFILES_DIR=$HOME/git/dotfiles git init --bare $DOTFILES_DIR
-
Change worktree to home directory
cd $DOTFILES_DIR git config --unset core.bare git config core.worktree $HOME
-
Ignore all files except
.gitignore
(Sublime merge doesn't support status.showUntrackedFiles=no)cd $HOME echo "/*" >> .gitignore echo "!.gitignore" >> .gitignore
-
Add alias to
.zshrc
echo "alias dotfiles='git --git-dir=$HOME/git/dotfiles/'" >> $HOME/.zshrc
-
You can now start tracking files
Inspired by