rockyzhang24/dotfiles

github github
alacrittyconfigdotfilesfzfkarabiner-elementskittylflinuxmacosneovimrangertmuxvifmvimweztermyabaizsh
stars 194
issues 0
subscribers 6
forks 11
CREATED

2020-04-29

UPDATED

42 minutes ago


.dotfiles

My dotfiles for macOS and Linux. Just cherry pick the piece of code you totally understand.

platform last commit

Like the color theme? Please check arctic

✨ Contents

🔥 Text Editor

Neovim (config)

🐚 Shell

Zsh (config)

🛠️ Terminal Emulator

Kitty (config)

Wezterm (config)

Alacritty (config)

🪄 Tiling Window Manager

yabai (config)

skhd (config)

🗃️ Console File Manager

lf (config)

vifm (config)

ranger (config)

⌨️ Keyboard Customizer

Karabiner-Elements (config)

🧶 Others

Tmux (config)

fzf (config)

My scripts: bin

💡 How I am managing the dotfiles

Using a bare repository. The dotfiles can reside where they are. No symlinks needed.

Initial setup

Create a bare repository to store the history:

git init --bare $HOME/dotfiles

Create an alias in zshrc, tell Git where the history and the working tree live:

alias dot='git --git-dir=$HOME/dotfiles/ --work-tree=$HOME'

Tell Git not to show all the untracked files, otherwise all files under $HOME will be shown when running git status:

dot config status.showUntrackedFiles no

Set up the remote repository for syncing:

dot remote add origin https://github.com/rockyzhang24/dotfiles.git

Done! Now we can manage our dotfiles.

dot status
dot add ~/.config/zsh
dot commit -m "update zsh config"
dot push origin master

Clone to another machine

Clone the dotfiles into a bare repository:

git clone --bare https://github.com/rockyzhang24/dotfiles.git $HOME/dotfiles

Define the alias in the current shell scope:

alias dot='git --git-dir=$HOME/dotfiles/ --work-tree=$HOME'

Backup the stock configuration files that will be overwritten:

mkdir -p .config-backup
config checkout 2>&1 | egrep "\s+\." | awk {'print $1'} | xargs -I{} mv {} .config-backup/{}

Checkout the actual content from the bare repository to $HOME:

dot checkout

Don't show untracked files and directories:

dot config status.showUntrackedFiles no

Done!

Notes

In order for vim-fugitive to recognize this bare repo, the following additional configurations are required:

dot config core.bare 'false'
dot config core.worktree "$HOME"