Mike's Dotfiles

Personal dotfiles managed with a Bash Script and GNU Stow. Optimized for both macOS and Linux environments.

Features

  • 🐚 Zsh with Starship - Fast, customizable prompt with oh-my-zsh
  • 📦 Simple Setup - Idempotent, pure bash installation script
  • 🔧 Essential Dev Tools - btop, gh, fzf, direnv, git-delta, bat, fd, jq, etc. (tmux on Linux only)
  • 🎨 Modern Experience - Autosuggestions, syntax highlighting, history search
  • 🤖 AI Ready - Shared rules for Claude Code and Cursor IDE

Quick Start

To set up a new Mac or Linux computer, manually run the installation script from the root of this repository:

./install.sh

The script is idempotent and safe to run multiple times. It will:

  1. Install Homebrew (if missing)
  2. Install core packages and tools
  3. Configure Zsh and Starship
  4. Symlink configurations to your home directory using GNU Stow
  5. Set up AI rules for development tools

Structure

.
├── install.sh              # Main installation script
├── zsh/                    # Zsh configuration (.zshrc)
├── starship/               # Starship configuration (.config/starship.toml)
├── ai-instructions/        # General AI Assistant rules
├── claude/                 # Claude Code configuration
├── cursor/                 # Cursor IDE configuration
├── editorconfig/           # EditorConfig settings
├── gh/                     # GitHub CLI configuration
└── git/                    # Git configuration

Installation Options

The install.sh script supports environment variables to customize which runtimes are installed:

INSTALL_NODE=true \
INSTALL_PYTHON=true \
INSTALL_GO=true \
INSTALL_JAVA=true \
./install.sh

AI Rules System

This repository implements a shared rules system for AI coding assistants. Markdown files in ai-instructions/ are automatically symlinked into both ~/.claude/rules/ and ~/.cursor/rules/, ensuring consistent behavior across tools like Claude Code and Cursor.

Making Changes

Since dotfiles are symlinked, you can edit them in place and they will be reflected in your home directory:

nano ~/.zshrc              # Edit zsh config
source ~/.zshrc            # Reload changes

Commit changes back to the repository:

git add -A
git commit -m "Update zsh config"
git push
Description
Dotfiles and setup scripts for my computers
Readme 43 KiB
Languages
Shell 100%