Skip to content

A curated setup for macOS developers that automates package installation, manages dotfiles with GNU Stow, and keeps your configs backed up and tidy.

License

Notifications You must be signed in to change notification settings

achrafAa/MacDotfile

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MacDotfile

macOS License Homebrew GNU Stow ZSH Neovim Tmux

This repository contains scripts and configurations to set up a development environment on macOS.

⚠️ Important Warning

Since this project uses GNU Stow to create symbolic links, DO NOT remove or move the repository folder after installation. Doing so will break all symlinks to your dotfiles. If you need to move the repository:

  1. Run make clean first
  2. Move the folder
  3. Run make dotfiles again

Features

  • 📦 Automated package installation via Homebrew
  • 🔧 Dotfiles management using GNU Stow
  • 🔄 Automatic backup of existing configurations
  • ✨ Modern command-line tools and utilities

Prerequisites

Before you begin, ensure you have:

Homebrew will be automatically installed if not found.

Quick Start

# Clone the repository
git clone https://github.com/achrafAa/macdotfile.git
cd macdotfile

# Install everything (packages and dotfiles)
make

Installation Preview

Installation Preview

This preview shows:

  • 📦 Package installation with version tracking
  • 🔧 Dotfiles installation with backup creation
  • ✨ Clean and informative output formatting

Available Commands

Command Description
make Run the default installation (magic)
make magic Install everything
make install Install packages using Homebrew
make dotfiles Install dotfiles using GNU Stow
make clean Clean up backups directory
make help Show available commands
make clear Clear the screen

Structure

.
├── configs/           # Configuration files and scripts
│   ├── scripts/      # Installation scripts
│   └── utils/        # Utility functions
├── dotfiles/         # Dotfiles managed by GNU Stow
│   ├── zsh/         # ZSH configuration
│   ├── nvim/        # Neovim configuration
│   └── tmux/        # Tmux configuration
├── packages/         # Package management
│   └── Brewfile     # Homebrew packages list
└── backups/         # Backup directory for existing configs

Packages

The Brewfile includes:

Core CLI Tools

  • bat - A cat clone with syntax highlighting
  • eza - Modern replacement for ls
  • fzf - Fuzzy finder
  • fd - Simple, fast alternative to find
  • thefuck - Magnificent app which corrects your previous console command
  • zoxide - Smarter cd command
  • stow - Symlink farm manager

Shell & Terminal

Programming Languages

  • node - Node.js JavaScript runtime
  • python - Python programming language
  • go - Go programming language
  • rust - Rust programming language
  • php - PHP programming language

Applications

  • orbstack - Fast, light, and simple Docker desktop alternative
  • iterm2 - Terminal emulator for macOS

Each package is carefully selected to enhance your development workflow. You can customize the package list by editing the Brewfile.

Dotfiles

Dotfiles are managed using GNU Stow. The configuration includes:

Powerlevel10k Configuration

If you use my .zsh dotfile, you'll need to run the Powerlevel10k configuration wizard to install required fonts and choose your preferred style:

p10k configure

This will guide you through the installation of the necessary fonts and allow you to customize the appearance of your terminal prompt.

Backup

Before installing dotfiles, existing configurations are automatically backed up to the backups directory with a timestamp.

Configuration Files

Brewfile (packages/Brewfile)

The Brewfile is a configuration file that defines all packages to be installed via Homebrew. Think of it as a shopping list for your development tools:

# Core utilities
brew "bat"      # Regular package installation
brew "eza"      # Regular package installation
cask "iterm2"   # macOS application installation

To modify your package list:

  1. Edit packages/Brewfile
  2. Add packages using:
    • brew "package-name" for CLI tools and libraries
    • cask "app-name" for macOS applications
  3. Run make install to install new packages

Dotfiles List (dotfiles/dotfiles_list.conf)

The dotfiles_list.conf tells Stow which dotfile folders to symlink to your home directory:

# Shell Configuration
zsh            # Will symlink dotfiles/zsh/.* to ~/.* 

# Vim Configuration
nvim          # Will symlink dotfiles/nvim/.* to ~/.* 

# tmux Configuration
tmux          # Will symlink dotfiles/tmux/.* to ~/.* 

To manage your dotfiles:

  1. Add your configuration files to the appropriate folder in dotfiles/
  2. Ensure the folder is listed in dotfiles_list.conf
  3. Run make dotfiles to create the symlinks

⚠️ Note: Keep the folder structure in your dotfiles directory matching the structure you want in your home directory. For example:

  • dotfiles/zsh/.zshrc~/.zshrc
  • dotfiles/nvim/.config/nvim/init.lua~/.config/nvim/init.lua

Contributing

Feel free to fork this repository and customize it for your needs. Pull requests are welcome!

About

A curated setup for macOS developers that automates package installation, manages dotfiles with GNU Stow, and keeps your configs backed up and tidy.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •