Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,439 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

.dotfiles

My development environment for macOS and Linux.

Built around a highly customized Neovim setup, terminal-first workflows, and a carefully crafted macOS environment.

Highlights:

  • Neovim: A highly customized setup focused on stability, simplicity, and full control. Most functionality is implemented from scratch rather than delegated to plugins
  • FZF: A heavily customized terminal workflow built around fzf for fast navigation, searching, and command execution
  • Terminal: Kitty / Ghostty, Tmux, and Zsh (Zimfw + Starship) form the foundation of a productive terminal environment
  • File Management: A carefully crafted lf setup for efficient keyboard-driven file navigation and manipulation
  • macOS Workflow: Karabiner-Element, SketchyBar, and Yabai provide a fully keyboard-driven desktop experience

📖 Neovim Documentation

For a detailed walkthrough of my Neovim configuration and custom modules: Nvim README

demo

Configurations

Neovim

Terminal

Shell

File Management

macOS

Misc

  • My scripts: bin

Dotfile Management

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
dot 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"

About

🔧 My dotfiles on  macOS for Neovim, Zsh, Fzf, Ghostty, Kitty, lf, Sketchybar, etc

Topics

Resources

Stars

239 stars

Watchers

6 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages