_ _ _____ _
/ \__ _____ ___ ___ _ __ ___ ___ | | __ _ _____ _ |__ /___| |__
/ _ \ \ /\ / / _ \/ __|/ _ \| '_ ` _ \ / _ \_____| | / _` |_ / | | |_____ / // __| '_ \
/ ___ \ V V / __/\__ \ (_) | | | | | | __/_____| |__| (_| |/ /| |_| |_____/ /_\__ \ | | |
/_/ \_\_/\_/ \___||___/\___/|_| |_| |_|\___| |_____\__,_/___|\__, | /____|___/_| |_|
|___/
The easiest way to set up and manage your Zsh environment
Awesome-Lazy-Zsh automates your Zsh setup with 42 plugins, 5 themes, configuration profiles, and service installation. It installs dependencies, manages Oh My Zsh, and gives you a beautiful interactive CLI to build the terminal environment you want.
- 42 Plugins β databases, cloud CLIs, DevOps tools, languages, and productivity shortcuts
- 5 Themes β Spaceship, Powerlevel10k, Starship, Agnoster, Robbyrussell
- Backup & Restore β automatic
.zshrcbackups before any changes - Interactive CLI β guided setup wizard with multi-select menus
- Verified Dependencies β uses declared Homebrew dependencies and reproducible npm installs
- Configuration Profiles β save, switch, and manage different setups
- Custom Plugins β add plugins from any Git repository
- Stay current β checks for new versions on startup (once per 24 hours)
- Interactive prompt: "Yes, update now / No / Skip this version"
- Auto-detects install method (git pull or brew upgrade)
- 5-second timeout with graceful degradation on network failure
- Never lose progress β checkpoint-based state persistence
- Automatic saves at each major step (plugin selection, installation, services, theme)
- "Resume previous setup" or "Start fresh" prompt on re-launch
- Per-plugin/service progress tracking β skips what already succeeded
- 24-hour auto-expiry for stale state files
- Install real service servers (MongoDB, MySQL, PostgreSQL, Redis, RabbitMQ, Elasticsearch, Memcached)
- Install cloud CLIs (AWS CLI, Google Cloud SDK, Azure CLI)
- Install DevOps tools (kubectl, Terraform, Ansible, Docker Compose)
- Install language runtimes (Python, Go, Rust, Java/OpenJDK)
- Platform auto-detection β Homebrew (macOS), apt (Debian/Ubuntu), yum (RHEL/CentOS)
- Pre-installation checks β skips already-installed tools
- Optionally start services immediately after installation
- External plugins pinned to specific release tags or commit SHAs
- GitHub Actions pinned to full commit SHAs
- Managed-block approach for
.zshrcβ preserves your customizations - Atomic file writes prevent corruption
- Restrictive file permissions (0o600/0o700)
- Input validation for custom plugin URLs and names
- Quick Start
- Installation Options
- Available Plugins
- Available Themes
- Resume Setup
- Profile Management
- System Requirements
- Security
- Contributing
- License
brew tap amjaradat01/awesome-lazy-zsh
brew install awesome-lazy-zsh
awesome-lazy-zshgit clone https://github.com/AmJaradat01/awesome-lazy-zsh.git
cd awesome-lazy-zsh
./setup.shThe setup script installs Git, Node.js, Homebrew, and fzf if missing, then launches the interactive CLI.
# Via Homebrew
brew update && brew upgrade awesome-lazy-zsh
# Via Git
cd awesome-lazy-zsh && git pull --ff-only && npm ci --ignore-scripts| Option | Description |
|---|---|
| Fresh Installation | Choose plugins and theme interactively |
| Default Installation | Pre-configured developer setup (18 plugins + Spaceship theme) |
| Update Plugins | Update all installed plugins to latest |
| Manage Profiles | Save, switch, or list configuration profiles |
| Custom Plugins | Add any plugin from a Git repository URL |
| Backup/Restore | Manage .zshrc backups |
If a previous setup was interrupted, you'll also see a Resume option to continue from where you left off.
| Plugin | Aliases |
|---|---|
mongodb |
mongo-start, mongo-stop, mongo-local |
postgresql |
pg-start, pg-stop, pg-local, pg-list |
mysql |
mysql-start, mysql-stop, mysql-local |
redis |
redis-start, redis-stop, redis-ping |
rabbitmq |
rabbitmq-start, rabbitmq-queues |
elasticsearch |
es-start, es-health, es-indices |
memcached |
memcached-start, mc-stats |
| Plugin | Aliases |
|---|---|
aws |
aws-whoami, aws-profile, ec2-list, s3-ls |
gcloud |
gc-auth, gc-vms, gc-buckets |
azure |
az-login, az-vms, az-aks |
| Plugin | Aliases |
|---|---|
kubernetes |
kgp, kgs, kctx, kns, klogs |
docker-compose-extended |
dcu, dcd, dcl, dcps |
terraform-extended |
tfi, tfp, tfa, tfw |
ansible |
ap, av, ag, aping |
| Plugin | Aliases |
|---|---|
python |
venv-create, va, vd, pip-freeze |
golang |
gob, gor, got, gomod |
rust |
cb, cr, ct, cf |
node |
ni, nr, yi, pi |
java |
mci, gwb, java11, java17 |
| Plugin | Aliases |
|---|---|
git-extras |
gst, grbi, gcp, gundo, gsync |
ssh |
ssh-keygen-ed, ssh-copy-key, ssh-agent-start |
dotenv |
dotenv, env-load, env-show |
directories |
.., ..., mkcd, bookmark, goto |
history-search |
hg, fh, htop10 |
extract |
extract, mktar, mkzip |
git Β· git-flow Β· npm Β· nvm Β· docker Β· docker-compose Β· kubectl Β· terraform Β· vscode Β· extract Β· dotenv Β· ssh-agent Β· node Β· gitfast
| Plugin | Source |
|---|---|
zsh-autosuggestions |
Fish-like command suggestions |
zsh-syntax-highlighting |
Real-time syntax highlighting |
zsh-autocomplete |
IDE-style auto-completion |
fzf |
Fuzzy finder integration |
z |
Smart directory jumping |
thefuck |
Corrects previous console commands |
| Theme | Type | Description |
|---|---|---|
spaceship |
External | Modern, feature-rich prompt with git info |
powerlevel10k |
External | Highly customizable, very fast |
starship |
External | Cross-shell, written in Rust |
agnoster |
Built-in | Clean, git-aware segments |
robbyrussell |
Built-in | Simple and fast (Oh My Zsh default) |
If your setup is interrupted (Ctrl+C, terminal crash, network issue), your progress is saved automatically. On re-launch, you'll see:
? A previous setup was interrupted. What would you like to do?
> Resume previous setup
Start fresh
Checkpoints are saved after:
- Plugin selection
- Each plugin installation
- Service installation
- Theme selection
State is stored at ~/.awesome-lazy-zsh-state.json and expires after 24 hours.
Save and switch between different plugin/theme configurations:
? Profile management:
> Switch profile
Save current as profile
List profiles
Example setups:
- Work: docker, kubernetes, aws, terraform, git-extras
- Personal: git, node, python, fzf, z
- Minimal: git, zsh-autosuggestions, z
Profiles are stored at ~/.awesome-lazy-zsh/profiles/.
| Platform | Service Installation | Aliases |
|---|---|---|
| macOS (Intel & Apple Silicon) | Via Homebrew | Yes |
| Linux (Debian/Ubuntu) | Via apt | Yes |
| Linux (RHEL/CentOS/Fedora) | Via yum | Yes |
| Windows (WSL2) | Via apt (inside WSL) | Yes |
Service installation requires macOS or Linux with a supported package manager. Aliases work on any system running Zsh.
| Tool | Purpose |
|---|---|
| Homebrew | Package manager (macOS/Linux) |
| Git | Plugin management and cloning |
| Node.js 18+ | Powers the interactive CLI |
| fzf | Fuzzy finder functionality |
| Oh My Zsh | Zsh plugin framework |
Works in any terminal that supports Zsh: iTerm2, Terminal.app, GNOME Terminal, Windows Terminal (WSL), VS Code terminal, Alacritty, Kitty, WezTerm.
Awesome-Lazy-Zsh takes security seriously:
- Supply Chain: External plugins/themes pinned to specific tags or commit SHAs
- File Safety: Atomic writes, restrictive permissions (0o600/0o700)
- Configuration: Managed-block approach preserves your
.zshrccustomizations - Validation: URL and name validation for custom plugins
- Backups: Unified backup directory at
~/.awesome-lazy-zsh/backups/
See SECURITY.md for vulnerability reporting.
See CONTRIBUTING for details on development setup, git-flow workflow, and pull request guidelines.
MIT License β free to use in personal and commercial projects.
Made with care for developers who want a powerful terminal without the setup hassle