A minimal, opinionated zsh environment for macOS.
What's included: zsh with a 10M-line history, Starship prompt, Antidote plugin manager, zoxide smart navigation, fzf fuzzy finder, and a tmux base config.
How it works: files live in the repo. Symlinks point from ~/ into the repo. Existing files are backed up before anything is replaced. Run ./uninstall.sh to undo.
Clone wherever you keep your projects, then run from there:
git clone https://github.com/asakin/dotfiles.git ~/projects/dotfiles
~/projects/dotfiles/setup.sh
~/projects/dotfiles/install.sh
source ~/.zshrcinstall.sh self-detects its own location, so the clone path can be anywhere — adjust the commands accordingly. (Recommended: ~/projects/dotfiles/.)
| File | Symlinked to |
|---|---|
home/.zshrc |
~/.zshrc |
home/.zsh_plugins.txt |
~/.zsh_plugins.txt |
home/.config/starship.toml |
~/.config/starship.toml |
home/.tmux.conf |
~/.tmux.conf |
Tools installed by setup.sh: starship, zoxide, fzf. Antidote is bootstrapped automatically on first source ~/.zshrc.
Add plugins: edit ~/.zsh_plugins.txt (the symlink). Changes apply on next shell start.
Customize the prompt: edit ~/.config/starship.toml. See starship.rs/config.
Personal aliases / overrides: create ~/.zshrc.local. The base .zshrc already sources it on shell start ([ -f ~/.zshrc.local ] && source ~/.zshrc.local). The personal layer in asakin/sakinrc symlinks this file.
cd ~/projects/dotfiles && git pullSymlinks don't need re-creation after pulling. Files update in place.
~/projects/dotfiles/uninstall.shRemoves symlinks and restores any backed-up originals. The repo itself is left in place — rm -rf ~/projects/dotfiles if you want a clean slate.
This repo is the generic base. Personal tools, aliases, hotkeys, AI integrations live in asakin/sakinrc, which builds on top. Install dotfiles first, then sakinrc.
Stripped-down on purpose. No AWS, no cloud CLIs, no AI integrations. Those belong in your own layer on top.
MIT
This repository is designed to be a foundation that can be extended by other configuration layers.
To facilitate this, it exports an environment variable defining an API contract:
export DOTFILES_BASE_API_VERSION="1.0"
If you are building an extension on top of this repository, you should check for this version to ensure the required core infrastructure (Zsh, starship, zoxide, fzf, and the .zshrc.extension hook) is present and compatible.
If you fork this repository and modify these core dependencies, you must advance this version number to protect downstream extensions from breaking.