Skip to content

rockyzhang24/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,299 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

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors