This repository contains my personal dotfiles for setting up a new macOS machine. It includes configurations for development tools, system preferences, and a streamlined setup process.
-
Shell & Package Management
- Oh My Zsh for enhanced shell experience
- Homebrew for package management with Brewfile for all apps and binaries
- zsh-autosuggestions for shell suggestions
-
Development Environment
- Latest Node.js LTS version via nvm
- PHP development tools:
phpcs&phpcbfconfigured for Drupal coding standardscomposer-difffor comparing Composer dependencies
- DDEV development environment setup with mkcert
- Git configuration with global settings and gitignore
- Neovim as terminal editor
- Lazygit for terminal git UI
- pnpm for fast Node.js package management
-
Apps & Tools
- Ghostty terminal
- Bruno API client
- Claude Code AI CLI
- DDEV local development environment
- Ollama for running local LLMs
-
System Configuration
- Custom macOS defaults for optimal development experience
- Project directory structure setup
- Automatic repository cloning for personal projects
-
Prerequisites
- Ensure you have SSH keys set up and added to GitHub
- Have a fresh macOS installation ready
-
Setup Process
# Clone the repository git clone --recursive git@github.com:abhisekmazumdar/dotfiles.git ~/.dotfiles # Run the installation script cd ~/.dotfiles && ./fresh.sh
The installation script will:
- Install and configure Oh My Zsh
- Set up Homebrew and install all specified packages
- Create symbolic links for configuration files
- Set up development tools and environments
- Configure system preferences
- Optionally clone your GitHub repositories
brew/- Homebrew bundle configuration (Brewfile)git/- Git configuration files (.gitconfig,.gitignore_global)macos/- macOS system preferenceszsh/- Zsh configuration files (.zshrc,aliases.zsh,path.zsh)fresh.sh- Main installation scriptclone.sh- Repository cloning script
The CI pipeline runs on every push and pull request against a fresh macOS (Apple Silicon) GitHub Actions runner. It calls fresh.sh directly — the same script you'd run on a new Mac — with two CI-specific adjustments:
| What CI skips | Why |
|---|---|
| GUI cask apps (Arc, PhpStorm, Slack…) | No display server on headless runners |
macOS system preferences (.macos) |
No need to set hostname/Dock/Finder on a runner |
| Interactive clone prompt | No user to answer y/n |
source ~/.zshrc |
Runner uses bash; sourcing a zsh config would fail |
Everything else runs identically to a real Mac: Homebrew, Oh My Zsh, symlinks, nvm + Node LTS, phpcs, phpcbf, composer-diff.
| Date | macOS | Chip | Result |
|---|---|---|---|
| — | — | — | Update after each full local run |
After running
./fresh.shon your Mac, update the table above and open a PR.
After setting up your new Mac, you may want to clean install your old machine. Follow Apple's official guide for erasing and reinstalling macOS. Remember to backup your data first!
This project is open source and available under the MIT License.