dotfiles
π§ My dotfiles on ο£Ώ macOS for Neovim, Zsh, Fzf, Ghostty, Kitty, lf, Sketchybar, etc
git clone https://github.com/rockyzhang24/dotfiles.gitrockyzhang24/dotfiles.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
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"
more like this
term-dmenu
Replace dmenu with a floating terminal and FZF! Comes with helper scripts for program/app launching, window switching,β¦
