Getting started

Install in three commands

Every repo follows the same shape: clone, optionally dry-run to preview the symlink plan, then bootstrap. Core is vendored, so a clone is self-contained — no submodule flags. Pick your platform below.

Before you start

  • git installed and your identity ready (name + email).
  • macOS: Command Line Tools (the bootstrap installs Homebrew).
  • Windows: PowerShell 7 (pwsh) and Developer Mode (or run elevated) so symlinks work.
  • Kali: running under WSL2; engagement data is kept out of the repo by design.

Version

Pick a release to pin the commands below. Tagged releases are hermetic — Core is vendored, so an older tag installs exactly what it shipped with. main tracks the latest commit.

macOS

Apple Silicon or Intel. Homebrew does the heavy lifting; Core is vendored, so a clone is ready to go.

dotfiles-MacBook ↗
  1. Clone the repo

    The Core layer is already vendored under core/ — no submodule flags.

    
            $ 
            git clone https://github.com/Gerrrt/dotfiles-MacBook ~/dotfiles-MacBook
            
    
          
            $ 
            cd ~/dotfiles-MacBook
            
          
  2. Preview the plan (optional)

    A dry run prints every symlink it would create and changes nothing.

    
            $ 
            ./bootstrap.sh --links-only --dry-run
            
          
  3. Provision + wire

    Homebrew, brew bundle, then symlinks. Idempotent — re-run any time.

    
            $ 
            ./bootstrap.sh
            
    
          
            $ 
            exec zsh
            
          
  4. Optional system prefs

    Apply the opt-in macOS defaults (may require a logout).

    
            $ 
            ./bootstrap.sh --macos-defaults
            
          

Keeping Core current

Core is authored in dotfiles-core and vendored into every OS repo. To pull the latest Core into a machine repo and re-wire links:


        $ 
        git subtree pull --prefix=core https://github.com/Gerrrt/dotfiles-core main --squash
        

      
        $ 
        ./bootstrap.sh --links-only
        
      

Tracking a pinned release instead? Re-clone the new tag (or git fetch --tags && git checkout vX.Y.Z) — the vendored Core moves with it. Maintainers can fan a Core change out to every OS repo at once with scripts/sync-core.sh from dotfiles-core.