Modular setup scripts for configuring your Mac M2 Pro development environment with dotfiles and applications.
The setup script will install and configure:
- Homebrew - Package manager for macOS
- Git - Version control system
- GitHub CLI - Command-line interface for GitHub
- Oh My Zsh - Zsh configuration framework
- Oh My Zsh Plugins:
- zsh-autosuggestions
- zsh-syntax-highlighting
- web-search
- lsd - Modern
lsreplacement with colors and icons - Exodia Fonts - All fonts from the
exodia-fonts/directory - Zsh Configuration - Custom
.zshrcwith:- Homebrew aliases (replacing Pacman aliases)
- Custom prompt
- Updated ASCII art (ozil instead of Exodia OS)
- macOS-specific aliases
- Applications (configurable via
apps.yaml):- GUI Apps: Kiro, Cursor, Brave Browser, Termius, Discord, OBS Studio, RustDesk, VirtualBox, Docker
- CLI Tools: Podman, Minikube, kubectl, OpenShift CLI (oc), tmux, Azure CLI, Neovim
- Extensions: Azure DevOps CLI extension
- Special: NvChad (Neovim configuration)
- tmux Configuration:
- TPM (tmux plugin manager)
- Catppuccin theme
- Custom tmux configuration
Before running the setup, make all scripts executable:
chmod +x setup.sh modules/*.sh./setup.sh./setup.sh --install-apps apps.yaml./setup.sh --helpYou can also run individual modules if you only need to install specific components:
# Example: Install only fonts
./modules/fonts.sh /path/to/repo
# Example: Install only apps from YAML config
./modules/apps.sh /path/to/repo apps.yamlThe setup is organized into modular scripts:
setup.sh- Main orchestrator scriptmodules/homebrew.sh- Homebrew installationmodules/git.sh- Git and GitHub CLI setupmodules/oh-my-zsh.sh- Oh My Zsh installationmodules/zsh-plugins.sh- Oh My Zsh pluginsmodules/lsd.sh- lsd installationmodules/fonts.sh- Font installationmodules/zshrc.sh- Zsh configuration setupmodules/apps.sh- Application installationsmodules/tmux.sh- tmux configuration setup
Applications are now configured via the apps.yaml file, which provides a structured way to manage installations:
apps:
# GUI Applications (Homebrew Cask)
cask:
- name: cursor
package: cursor
- name: kiro
package: kiro
skip: true # Skip installation
# CLI Tools (Homebrew)
brew:
- name: kubectl
package: kubectl
- name: openshift-cli
package: openshift-cli
# Extensions
extensions:
- name: azure-devops
type: az-extension
# Special installations
special:
- name: nvchad
type: git-clone- Add new application: Add entry to appropriate section in
apps.yaml - Skip installation: Set
skip: truefor any application - Remove application: Either delete the entry or set
skip: true
Use the skip field to temporarily disable installation of specific packages:
- name: virtualbox
package: virtualbox
skip: true # This will be skipped during installationWhen skipped, the installer will show a warning message and continue with other packages.
The zshrc.txt file contains your custom zsh configuration with:
- Homebrew aliases (replacing Pacman commands)
- Custom prompt
- ASCII art (ozil)
- macOS-specific aliases
The setup script copies zshrc.txt directly to ~/.zshrc without modifications, so you can customize zshrc.txt as needed.
The following aliases are created (replacing Pacman commands):
b-sync→brew updateinstall→brew installipkg→brew install --caskupdate→brew update && brew upgradesearch→brew searchsearch-local→brew listpkg-info→brew infoclr-cache→brew cleanupremove→brew uninstallautoremove→brew autoremove
The apps.yaml file controls which applications are installed. It supports:
- Multiple installation types: cask, brew, extensions, special
- Skip functionality: Set
skip: trueto skip any package - Package mapping: Use different package names than display names
- Structured organization: Clear separation of GUI apps, CLI tools, etc.
--install-apps <file>: Install applications from specified YAML file--help: Show usage information
- Backup: The script will backup your existing
.zshrcbefore overwriting it (saved as~/.zshrc.backup.YYYYMMDD_HHMMSS) - Duplicate detection: If applications are already installed, the script will skip them
- Manual installation: Some applications (like Kiro) may not be available in Homebrew and are marked with
skip: trueby default - Font changes: If the font does not change after installation, you must change it manually in your terminal settings
- Selective installation: Applications are only installed when using the
--install-appsflag - Python dependency: The YAML parser uses Python3 with PyYAML when available, falls back to AWK parsing
- Modular design: Each component can be run independently or skipped as needed