A macOS-first personal dotfiles repository for shells, terminals, multiplexers, editors, and daily CLI tools. There is no build output here — the files in this repository are the final configuration.
- Shells:
zshandfishshare a common environment/toolchain setup throughprofile.sh - zsh: Powered by Oh My Zsh, Powerlevel10k,
fzf-git.sh,zoxide, and shell completions - fish: Reuses the shared shell environment via
bass, withtide,fzf, andzoxide - Terminals: Configs for
zellij,wezterm, andghostty - Editors:
helixandzedwith theme auto-switching support - File Tools:
lf,yazi,bat, andzathuraconfigurations - Toolchains: Rust (Cargo), Go, Kubernetes (kubectl/helm/kubebuilder), asdf, pnpm, bun
- Homebrew: Configured to use Tsinghua mirrors by default
| Path | Description |
|---|---|
export.sh |
Environment variables and PATH exports (sourced first by profile.sh) |
profile.sh |
Shared shell entrypoint; loads exports, Homebrew, language env, and aliases |
zshrc / p10k.zsh |
Main zsh config and Powerlevel10k prompt |
fish/ |
Fish config, functions, completions, and plugin list |
zellij/ |
zellij config with tmux-like keybindings and layouts |
wezterm/ / ghostty/ |
Terminal emulator configurations |
helix/ |
Helix editor config, language settings, and theme auto-switch helpers |
lf/ / yazi/ / bat/ / zathura/ |
File manager and reader tool configs |
cargo/ |
Rust Cargo configuration |
legacy/ |
Archived configs no longer in active use |
vendor/fzf-git.sh/ |
Git submodule providing fzf-git.sh |
This repository assumes it lives at ~/.config/dotfiles. If you clone it elsewhere, update the hardcoded source paths accordingly.
git clone --recurse-submodules <your-repo-url> ~/.config/dotfiles
cd ~/.config/dotfiles
git submodule update --init --recursiveCreate symlinks selectively. Do not blindly replace your existing setup.
mkdir -p ~/.config
ln -sfn ~/.config/dotfiles/zshrc ~/.zshrc
ln -sfn ~/.config/dotfiles/helix ~/.config/helix
ln -sfn ~/.config/dotfiles/wezterm ~/.config/wezterm
ln -sfn ~/.config/dotfiles/ghostty ~/.config/ghostty
ln -sfn ~/.config/dotfiles/zellij ~/.config/zellij
ln -sfn ~/.config/dotfiles/yazi ~/.config/yazi
ln -sfn ~/.config/dotfiles/zed ~/.config/zedFor fish, merge or symlink the repository fish/ directory into ~/.config/fish, and ensure bass is installed.
Missing dependencies usually just disable optional completions/prompt integrations; the shell remains functional.
- Homebrew
- Oh My Zsh
- Powerlevel10k
- fzf
- fd
- zoxide
- asdf
- fish (optional)
- zellij (optional)
- helix (optional)
- wezterm or ghostty (optional)
- kubectl, helm, kubebuilder (optional, for completions)
profile.shis the central entrypoint shared by bothzshrcandfish/config.fishhomebrew.shenables Tsinghua mirrors; modify or skip it if not neededfish/fish_pluginsdeclarestide,plugin-docker-compose,plugin-git, andbasszellij/config.kdlfollows a tmux-like keybinding scheme for easier switchingwezterm/wezterm.luaandghostty/configboth use translucent windows and a unified visual style- See
helix/README.md,fish/README.md, andlf/README.mdfor component-specific notes
This is a config repository, so there is no test suite. Syntax checks and manual loading are the appropriate validation methods.
# shell scripts
shellcheck *.sh
# fish syntax
fish -n fish/config.fish
# zellij
zellij --check
# helix
hx --health