Skip to content

Latest commit

 

History

History
185 lines (132 loc) · 4.21 KB

File metadata and controls

185 lines (132 loc) · 4.21 KB

dotfiles

Personal dotfiles managed with chezmoi, featuring Starship prompt and LazyVim.

What's Included

Packages

macOS (Homebrew):

  • Terminal: wezterm, starship, tmux, neovim, fzf
  • DevOps: awscli, argocd, kubernetes-cli, kubectx, kustomize, kubeseal, stern, docker-desktop
  • Infrastructure: checkov, tfsort, terraform (via mise)
  • Tools: gh, chezmoi, mise, pre-commit, gnupg, 1password-cli
  • Apps: 1password, brave-browser, slack, notion, amethyst, grammarly-desktop, keybase

Linux (apt/snap):

  • Similar toolset adapted for Linux package managers

Configurations

  • Shell: zsh with Starship prompt, aliases, and completions
  • Editor: LazyVim (Neovim) with custom configs
  • Git: Global gitconfig with GPG signing
  • Terminal: WezTerm configuration
  • Window Manager: Amethyst (macOS tiling)
  • Version Manager: mise for runtime versions (Node, Python, Ruby, Go, Terraform, etc.)

macOS Settings

Applies sensible defaults including:

  • Dark mode, keyboard settings, trackpad configuration
  • Finder preferences (show extensions, hidden files)
  • Dock settings (autohide, icon size)
  • Security settings (firewall, screen lock)
  • And 400+ other tweaks

Prerequisites

  • macOS (primary) or Linux (Ubuntu/Debian)
  • Admin/sudo access
  • Internet connection

Installation

Phase 1: Bootstrap

# Install Homebrew (macOS)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Install essentials
brew install gh chezmoi

# Authenticate with GitHub
gh auth login

Phase 2: Initialize chezmoi

# Clone and initialize dotfiles
chezmoi init git@github.com:benniemosher/dotfiles-2024.git

# Preview what will be changed (optional but recommended)
chezmoi diff

# Apply dotfiles
chezmoi apply

Phase 3: Configure 1Password (Required for SSH/GPG)

  1. Open 1Password app
  2. Go to 1Password Menu > Settings > Developer
  3. Enable:
    • "Use the SSH agent"
    • "Integrate with 1Password CLI"
  4. Sign in to CLI:
    op signin

Phase 4: Final Apply

# Re-apply to pick up 1Password-managed secrets
chezmoi apply

# Restart your terminal (or start WezTerm)

Post-Installation

Optional: GPG/Keybase Setup

If you use Keybase for GPG keys, create ~/.profile.local:

export KEYBASE_USERNAME="your-username"
export KEYBASE_PAPERKEY="your-paperkey"
export KEYBASE_KEY_ID="your-key-id"

Then run chezmoi apply again.

Symlink for Development

The repo is cloned to ~/.local/share/chezmoi. A symlink is automatically created at ~/Code/dotfiles.

Usage

Common Commands

# Pull latest changes and apply
chezmoi update

# See what would change
chezmoi diff

# Apply changes
chezmoi apply

# Edit a managed file
chezmoi edit ~/.zshrc

# Add a new file to management
chezmoi add ~/.some-config

# Go to the source directory
chezmoi cd

Adding New Packages

Edit .chezmoidata/packages.yaml:

packages:
  darwin:
    brews:
      - "new-package"
    casks:
      - "new-app"

Then run chezmoi apply.

Troubleshooting

"Permission denied" errors

Ensure you have admin access and try with sudo where appropriate.

1Password SSH agent not working

  1. Verify 1Password settings (Developer > SSH agent enabled)
  2. Check ~/.config/1Password/ssh/agent.toml exists
  3. Restart 1Password and terminal

GPG signing failures

  1. Ensure GPG agent is running: gpgconf --launch gpg-agent
  2. Verify key is available: gpg --list-secret-keys

Homebrew packages failing

brew update && brew upgrade
brew doctor

Structure

.
├── .chezmoidata/          # Data files (packages, settings)
├── dot_config/            # ~/.config files
├── dot_zshrc.tmpl         # Shell configuration
├── dot_gitconfig.tmpl     # Git configuration
├── dot_wezterm.lua        # Terminal configuration
├── private_dot_ssh/       # SSH configuration
├── private_dot_gnupg/     # GPG configuration
└── run_onchange_*.sh.tmpl # Install/setup scripts

License

Personal dotfiles - feel free to use as inspiration for your own setup.