Personal configuration files and setup automation for macOS, optimized for data science workflows with Databricks, Azure, and Python development.
Personal configuration files and setup automation for macOS.
# 1. Clone this repository
git clone https://github.com/serin-varghese/dotfiles.git ~/dotfiles
cd ~/dotfiles
# 2. Run the setup script
./setup.sh
# 3. Edit your local secrets
vim ~/.zshrc_local
# 4. Restart your shell
exec zsh
### Homebrew / Brewfile notes
- The `Brewfile` no longer includes explicit taps for `homebrew/bundle`, `homebrew/cask`, or `homebrew/core` β modern Homebrew provides bundle and cask functionality from core. This prevents tap-related errors you may see on newer Homebrew installations.
- The `setup.sh` script runs `brew bundle --file="$DOTFILES_DIR/Brewfile" --verbose` and captures output for easier diagnostics. If `brew bundle` fails, the script prints a helpful excerpt and exits with instructions.
- Some casks require user interaction or post-install setup (for example, Docker often needs you to open Docker.app and grant permissions). To skip such casks during an automated run, set `SKIP_CASKS` when running the script. Example:
```zsh
# Skip Docker during an automated run to avoid interactive prompts
SKIP_CASKS="docker" ./setup.sh- To debug failures manually, run:
cd ~/dotfiles
brew update
brew bundle --file="$PWD/Brewfile" --verboseInspect the verbose output for missing taps, permission prompts, or license acceptance steps and share it if you want help fixing a specific failing item.
### Manual Setup
If you prefer to set things up manually:
#### 1. Install Xcode Command Line Tools
```bash
xcode-select --install
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"For Apple Silicon Macs, add Homebrew to PATH:
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"brew bundlemkdir -p ~/.zsh
git clone https://github.com/zsh-users/zsh-autosuggestions ~/.zsh/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting ~/.zsh/zsh-syntax-highlighting# Zsh
ln -sf ~/dotfiles/zsh/.zshrc ~/.zshrc
cp ~/dotfiles/zsh/.zshrc_local.template ~/.zshrc_local
# Git
ln -sf ~/dotfiles/git/.gitconfig ~/.gitconfig
ln -sf ~/dotfiles/git/.gitconfig_mac ~/.gitconfig_mac
ln -sf ~/dotfiles/git/.gitignore_global ~/.gitignore_global
# VSCode
ln -sf ~/dotfiles/vscode/settings.json ~/Library/Application\ Support/Code/User/settings.json# Create pip config directory
mkdir -p ~/.config/pip
# Copy pip template and edit with your credentials
cp ~/dotfiles/pip/pip.conf.template ~/.config/pip/pip.conf
vim ~/.config/pip/pip.conf
# Replace placeholders:
# <JFROG_USERNAME> - Your JFrog/Artifactory username
# <JFROG_TOKEN> - Your JFrog/Artifactory API tokenEdit ~/.zshrc_local to add your:
- Proxy credentials (if needed)
- API keys
- Machine-specific configurations
.
βββ git/ # Git configuration
β βββ .gitconfig # Main Git config
β βββ .gitconfig_mac # Mac-specific Git config
β βββ .gitignore_global # Global gitignore
βββ vscode/ # VSCode settings
β βββ settings.json # Editor settings
β βββ extensions.json # Recommended extensions
βββ zsh/ # Zsh configuration
β βββ .zshrc # Main Zsh config
β βββ .zshrc_local.template # Template for local secrets
βββ pip/ # Python pip configuration
β βββ pip.conf.template # Template for pip settings (JFrog, proxies)
βββ databricks/ # Databricks configuration
β βββ .databrickscfg.template # Databricks CLI profiles
βββ templates/ # Project templates
β βββ .env.template # Environment variables (Azure, Databricks)
β βββ pyproject.toml # Python project configuration
βββ ubuntu/ # Ubuntu-specific configs
β βββ .inputrc
βββ .gitignore # Excludes secrets from git
βββ .gitattributes # Git attributes for data science files
βββ .editorconfig # Cross-editor coding style
βββ .pre-commit-config.yaml # Pre-commit hooks for code quality
βββ Brewfile # Homebrew packages for data science
βββ setup.sh # Automated setup script
βββ README.md
- Zsh - Default shell
- Starship - Cross-shell prompt
- zsh-autosuggestions - Fish-like autosuggestions
- zsh-syntax-highlighting - Fish-like syntax highlighting
- eza - Modern replacement for
lswith colors and icons - bat -
catclone with syntax highlighting - fd - Modern replacement for
find - ripgrep - Fast grep alternative
- fzf - Fuzzy finder
- Git - Version control
- VSCode - Code editor
- Docker - Containerization
- Azure CLI - Azure command-line interface
- Rectangle - Window management
- 1Password - Password manager
- iTerm2 - Terminal emulator
- β¨ Modern prompt with Starship
- π History search with arrow keys
- οΏ½ Fish-like autosuggestions
- π¨ Syntax highlighting
- π Persistent history across sessions
ll # Detailed list (eza -la)
cc # Go up one directory (cd ..)
alert # Play sound when command finishesImportant: Never commit secrets to this repository!
.zshrc_localis gitignored (contains secrets)pip/pip.confis gitignored (contains JFrog credentials)- Use
.zshrc_local.templateandpip/pip.conf.templateas references - Sensitive data should only exist in your local config files
- Always replace
<PLACEHOLDERS>with actual values locally
cd ~/dotfiles
brew bundle dump --forcecd ~/dotfiles
git pull# Re-run setup if needed
./setup.sh
# Or manually update specific configs
source ~/.zshrc- Add more Homebrew packages: Edit
Brewfile - Modify Zsh config: Edit
zsh/.zshrc - Add local customizations: Edit
~/.zshrc_local - Update VSCode settings: Edit
vscode/settings.json
# Reinstall plugins
rm -rf ~/.zsh/zsh-autosuggestions ~/.zsh/zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-autosuggestions ~/.zsh/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting ~/.zsh/zsh-syntax-highlighting
exec zsh# Update Homebrew
brew update
brew doctorThe setup.sh script automatically backs up existing files with a timestamp. Check for .backup.* files in your home directory.
Happy configuring! π