A dependency-aware, interactive, and explainable setup system for Zsh-based developer environments.
This project lets you:
- Install tools safely with dependency resolution
- Select only the modules you need
- Preview changes with dry-run
- Understand why something is installed
- Visualize the dependency graph
Built for power users, senior engineers, and dotfile minimalists.
- ✅ Dependency graph with automatic skipping
- ✅ Interactive module selection
- ✅ Install specific modules only
- ✅
--dry-runfor safe previews - ✅
--yesfor CI / automation - ✅
--graphto visualize dependencies - ✅
--explain <module>for clarity - ✅ Idempotent & re-runnable
- ✅ Modular & extensible architecture
- ✅ Explicit
--set-shellflag to safely set Zsh as the default shell - ✅ Automatic CI detection to skip shell changes in CI/CD environments
setup/
├── setup.sh
├── lib/ # Core engine & utilities
├── modules/ # Installable modules
├── zshrc
├── tmux.conf
└── README.md
# 1. Clone & Install
git clone <your-repo-url>
cd setup
./install.sh
# 2. Run Setup
zsh-setupThis will clone the configuration to ~/.zshrc-config and create the zsh-setup command.
- Run the installer:
./install.sh
- Configure your shell:
zsh-setup
zsh-setupzsh-setup tmux fzf configzsh-setup --listzsh-setup --dry-run tmuxzsh-setup --yes zsh ohmyzsh p10kBy default, this setup does not change your login shell for safety reasons.
If you explicitly want to make Zsh your default shell, use the --set-shell flag.
zsh-setup --set-shellThis will:
Verify zsh is installed
Ensure it exists in /etc/shells
Change your default login shell using chsh
⚠️ You may be prompted for your system password.
zsh-setup --graphExample output:
zsh
├── ohmyzsh
│ ├── p10k
│ └── zsh-autosuggestions
├── brew
│ ├── tmux
│ └── fzf
zsh-setup --explain tmuxOutput:
Module: tmux
Description : Terminal multiplexer
Depends on : brew
Required by : none
zshbrew(macOS)tmuxohmyzshp10kzsh-autosuggestionszsh-syntax-highlightingfzftreeneofetchffmpegconfig(zshrc, tmux.conf, directories)
- Powerlevel10k requires a Nerd Font 👉 https://www.nerdfonts.com
- Linux users may need
sudoprivileges - Safe to re-run anytime
Contributions are welcome!
See CONTRIBUTING.md.
This configuration is provided as-is. Feel free to customize it for your needs.
Simple. Fast. Safe. Enjoy your Zsh ⚡



