Skip to content

Latest commit

 

History

History
96 lines (71 loc) · 3.89 KB

File metadata and controls

96 lines (71 loc) · 3.89 KB

Introduction

CI

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.

Features

  • Shell & Package Management

  • Development Environment

    • Latest Node.js LTS version via nvm
    • PHP development tools:
      • phpcs & phpcbf configured for Drupal coding standards
      • composer-diff for 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

  • System Configuration

    • Custom macOS defaults for optimal development experience
    • Project directory structure setup
    • Automatic repository cloning for personal projects

Installation

  1. Prerequisites

    • Ensure you have SSH keys set up and added to GitHub
    • Have a fresh macOS installation ready
  2. 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

Directory Structure

  • brew/ - Homebrew bundle configuration (Brewfile)
  • git/ - Git configuration files (.gitconfig, .gitignore_global)
  • macos/ - macOS system preferences
  • zsh/ - Zsh configuration files (.zshrc, aliases.zsh, path.zsh)
  • fresh.sh - Main installation script
  • clone.sh - Repository cloning script

CI & Verification

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.

Last tested locally

Date macOS Chip Result
Update after each full local run

After running ./fresh.sh on your Mac, update the table above and open a PR.

Optional: Cleaning Your Old Mac

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!

License

This project is open source and available under the MIT License.