This project contains all configuration files and installation scripts to quickly set up a new Mac.
# Clone this repo
git clone git@github.com:<your-username>/dotfiles.git ~/dotfiles
cd ~/dotfiles
# Run complete installation
./install.sh
# After installation, reload your shell
source ~/.zshrc
# Verify everything is installed correctly
./scripts/verify_installation.shImportant: After installation, you MUST reload your shell for all tools (n, pnpm, etc.) to be available:
source ~/.zshrc
# OR restart your terminalTo check that all tools are properly installed:
./scripts/verify_installation.shThis will check:
- Package managers (Homebrew, n, rbenv)
- Node.js ecosystem (node, npm, pnpm, yarn)
- Ruby environment
- Development tools
- Symlink configuration
- Visual Studio Code
- Warp (terminal)
- Slack
- OpenVPN Connect
- Notion
- Notion Calendar
- Xcode Command Line Tools
- Homebrew
- Git
- Oh My Zsh
- Node.js (via n) - versions 20, 22, 24
- EAS CLI (Expo)
- AWS CLI
- rbenv (Ruby version manager)
- Ruby 2.7.3
- PostgreSQL 13
- Redis
- Memcached
- jq
- pnpm
- yarn
- GPG (for signing commits)
dotfiles/
├── README.md # Complete documentation
├── QUICKSTART.md # Quick start guide
├── SKELLO.md # Skello-specific configuration
├── MAINTENANCE.md # Maintenance guide
├── install.sh # Main installation script
├── Brewfile # Homebrew applications list
├── .gitignore # Files to ignore
├── docs/ # Additional documentation
│ └── NPMRC_SETUP.md # NPM/GitHub Packages setup
├── config/ # Configuration files
│ ├── .zshrc # Zsh configuration + aliases
│ ├── .npmrc # npm configuration (GitHub Packages)
│ ├── .gitconfig # Git configuration
│ ├── .env.zsh.example # Environment variables template
│ └── .gitignore_global # Global gitignore
└── scripts/ # Installation scripts
├── 01_install_xcode.sh
├── 02_install_homebrew.sh
├── 03_install_homebrew_packages.sh
├── 04_install_oh_my_zsh.sh
├── 05_install_node.sh
├── 06_install_ruby.sh
├── 07_install_additional_tools.sh
├── 08_setup_symlinks.sh
├── 09_setup_ssh.sh
├── 10_setup_gpg.sh
└── 11_clone_skello_repos.sh
Configuration files are automatically created with symbolic links:
~/.zshrc→~/dotfiles/config/.zshrc~/.npmrc→~/dotfiles/config/.npmrc~/.gitconfig→~/dotfiles/config/.gitconfig~/.env.zsh→~/dotfiles/config/.env.zsh
First time setup: Copy the environment template and configure your credentials:
cp ~/dotfiles/config/.env.zsh.example ~/dotfiles/config/.env.zshThen edit config/.env.zsh to add your actual environment variables:
# GitHub Personal Access Token
# Create at: https://github.com/settings/tokens
# Required scopes: repo, read:packages, write:packages
export GITHUB_TOKEN="your_github_token_here"
export GITHUB_USERNAME="your_github_username"
# Other environment variablesNote: The .env.zsh file is in .gitignore to protect your secrets.
Important for npm: After setting GITHUB_TOKEN, add this line to your ~/.npmrc:
echo "//npm.pkg.github.com/:_authToken=\${GITHUB_TOKEN}" >> ~/.npmrcSee docs/NPMRC_SETUP.md for detailed npm/GitHub Packages configuration.
If you have a Mac with Apple Silicon processor (M1/M2/M3), some tools may require Rosetta:
- Open Terminal/iTerm2 with Rosetta:
Applications → Right click → Get Info → check 'Open using Rosetta' - Verify mode:
arch(should displayi386in Rosetta mode,arm64in native mode)
After automatic installation, you will need to:
-
SSH Key for GitHub
- Key is generated automatically
- Copy public key:
cat ~/.ssh/id_ed25519.pub - Add to GitHub: https://github.com/settings/keys
-
GPG Key for signing commits
- Key is generated automatically
- Display key:
gpg --armor --export <KEY_ID> - Add to GitHub: https://github.com/settings/keys
-
Test GitHub connection
ssh -T git@github.com
-
Environment variables
- Edit
~/dotfiles/config/.env.zsh - Add your tokens and company variables
- Edit
To update configurations:
cd ~/dotfiles
git pull
./scripts/08_setup_symlinks.sh # Recreate links if needed
source ~/.zshrcEdit the Brewfile and add:
# For a GUI application
cask "app-name"
# For a CLI package
brew "package-name"Then run: brew bundle --file=~/dotfiles/Brewfile
You can also run scripts individually:
# Install only Node.js
./scripts/05_install_node.sh
# Recreate only symbolic links
./scripts/08_setup_symlinks.sh