This repository contains scripts and configurations to set up a development environment on macOS.
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:
- Run
make cleanfirst- Move the folder
- Run
make dotfilesagain
- 📦 Automated package installation via Homebrew
- 🔧 Dotfiles management using GNU Stow
- 🔄 Automatic backup of existing configurations
- ✨ Modern command-line tools and utilities
Before you begin, ensure you have:
- macOS
- Git
Homebrew will be automatically installed if not found.
# Clone the repository
git clone https://github.com/achrafAa/macdotfile.git
cd macdotfile
# Install everything (packages and dotfiles)
makeThis preview shows:
- 📦 Package installation with version tracking
- 🔧 Dotfiles installation with backup creation
- ✨ Clean and informative output formatting
| 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 |
.
├── 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
The Brewfile includes:
- 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
- zsh - Z shell
- zsh-autosuggestions - Fish-like autosuggestions for zsh
- zsh-syntax-highlighting - Fish shell-like syntax highlighting
- nvm - Node Version Manager
- node - Node.js JavaScript runtime
- python - Python programming language
- go - Go programming language
- rust - Rust programming language
- php - PHP programming language
Each package is carefully selected to enhance your development workflow. You can customize the package list by editing the Brewfile.
Dotfiles are managed using GNU Stow. The configuration includes:
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 configureThis will guide you through the installation of the necessary fonts and allow you to customize the appearance of your terminal prompt.
Before installing dotfiles, existing configurations are automatically backed up to the backups directory with a timestamp.
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:
- Edit
packages/Brewfile - Add packages using:
brew "package-name"for CLI tools and librariescask "app-name"for macOS applications
- Run
make installto install new packages
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:
- Add your configuration files to the appropriate folder in
dotfiles/ - Ensure the folder is listed in
dotfiles_list.conf - Run
make dotfilesto create the symlinks
dotfiles/zsh/.zshrc→~/.zshrcdotfiles/nvim/.config/nvim/init.lua→~/.config/nvim/init.lua
Feel free to fork this repository and customize it for your needs. Pull requests are welcome!
