My terminal setup. One command to go from a fresh Mac to a fully configured dev environment.
Author: Muhammad Ilham — muhammadilham.xyz · hi@muhammadilham.xyz · @mhdiiilham
curl -fsSL https://raw.githubusercontent.com/mhdiiilham/sebash-duls/main/install.sh | bashNo need to clone — the script fetches everything it needs from GitHub automatically.
Or run locally if you've already cloned:
git clone https://github.com/mhdiiilham/sebash-duls && cd sebash-duls && bash install.shAlready installed tools are automatically skipped — safe to run multiple times.
The installer opens an interactive menu with two modes:
Basic — installs the original curated set (shell tools, Go, apps, dotfiles) in one shot.
Custom — steps through each category one page at a time. Toggle individual tools with space, then press → to move to the next category.
┌─────────────────────────────────────┐
│ Terminal config installer │
└─────────────────────────────────────┘
[b] Basic — original set (shell, go, apps, dotfiles)
[c] Custom — pick tool by tool, category by category
[q] Quit
| Tool | What it does |
|---|---|
| fzf | Fuzzy finder — Ctrl+R history, Ctrl+T file picker |
| zoxide | Smart cd that learns your frequent directories |
| zsh-autosuggestions | Fish-like grey suggestions as you type |
| zsh-syntax-highlighting | Commands turn green (valid) or red (invalid) live |
| direnv | Auto-loads .envrc files per project directory |
| btop | Real-time system monitor |
| gh | GitHub CLI — PRs, issues, cloning from terminal |
| jq | JSON processor |
| eza | Modern ls with colors, icons, git status |
| bat | cat with syntax highlighting |
| ripgrep | Faster grep — rg |
| lazygit | Terminal UI for git |
| httpie | Human-friendly HTTP client — http GET localhost:8080/ |
| mkcert | Local HTTPS certificates in one command |
| ffmpeg | Audio/video processing |
| imagemagick | Image manipulation |
| Tool | What it does |
|---|---|
| kubectl | Kubernetes CLI |
| helm | Kubernetes package manager |
| k9s | Terminal UI for Kubernetes clusters |
| terraform | Infrastructure as code |
| Tool | What it does |
|---|---|
| awscli | AWS command line interface |
| gcloud | Google Cloud CLI |
| Tool | What it does |
|---|---|
| postgresql | PostgreSQL database server |
| redis | Redis in-memory data store |
| Tool | What it does |
|---|---|
| goenv | Go version manager |
| nvm + Node LTS + pnpm | Node version manager, LTS Node, fast package manager |
| uv | Fast Python package manager |
| Tool | What it does |
|---|---|
| golangci-lint | Runs 50+ Go linters at once |
| gopls | Official Go language server (LSP) |
| delve | Go debugger |
| air | Live reload for Go apps |
| mockgen | Go mock generator |
| goose | Database migration tool |
| evans | Interactive gRPC client |
| App | What it does |
|---|---|
| Ghostty | Terminal emulator |
| Zed | Editor |
| Raycast | App launcher, clipboard history, snippets |
| Rectangle | Snap and resize windows with keyboard shortcuts |
| OrbStack | Lightweight Docker Desktop replacement |
| JetBrains Mono Nerd Font | Font used in Ghostty (includes icons for eza) |
| Postman | API testing GUI |
| TablePlus | DB GUI — Postgres, MySQL, Redis, and more |
| Insomnia | REST/GraphQL client |
| Figma | Design tool |
| Slack | Team messaging |
| Discord | Community chat |
| 1Password | Password manager |
| Notion | Notes and docs |
| Item | What it does |
|---|---|
| Oh My Zsh | zsh framework |
Config: .zshrc |
Shell config |
Config: .zprofile |
Login shell config |
Config: .zshenv |
Environment variables |
Config: ghostty |
Ghostty terminal config |
| Claude CLI | Claude AI in the terminal |
| Shortcut | Action |
|---|---|
→ or Alt+Enter |
Accept autocomplete suggestion |
Ctrl+R |
Fuzzy search command history |
Ctrl+T |
Fuzzy pick a file (inserts path) |
Ctrl+Right / Left |
Jump word by word |
Ctrl+Backspace |
Delete previous word |
Home / End |
Jump to start/end of line |
Ctrl+P / N |
Search history up/down |
| Alias | Expands to |
|---|---|
ls |
eza --icons |
ll |
eza -lAF --icons --git |
la |
eza -A --icons |
cat |
bat |
lg |
lazygit |
.. |
cd .. |
... |
cd ../.. |
# 1. Reload shell
source ~/.zshrc
# 2. Pick a Go version
goenv install 1.23.0
goenv global 1.23.0
# 3. Log in to GitHub CLI
gh auth login
# 4. Log in to Claude
claude
# 5. Launch Raycast and set it as your default launcher
open /Applications/Raycast.appAdd a .envrc to any project and it auto-loads when you cd in:
# .envrc
export DATABASE_URL="postgres://localhost/mydb"
export API_KEY="dev-key-123"direnv allow # approve onceNamed after @dmtrxw's sebats-duls. In his memory.