Quick Start
Quick Start
Section titled “Quick Start”Get up and running with the dotfiles management system in minutes.
Installation
Section titled “Installation”curl -sfL https://raw.githubusercontent.com/garygentry/dotfiles/main/bootstrap.sh | bashCommon Tasks
Section titled “Common Tasks”List Available Modules
Section titled “List Available Modules”dotfiles listExample output:
Name Description OS Status----------- ----------------------------------- ----------------- -------------1password Install and configure 1Password CLI macos,ubuntu,arch not installedssh Configure SSH keys and settings macos,ubuntu,arch installedgit Configure git with SSH signing macos,ubuntu,arch installedzsh Install and configure Zsh macos,ubuntu,arch installedneovim Install Neovim and symlink config macos,ubuntu,arch not installedThe listing above is truncated —
dotfiles listshows all ~30 modules. When a content overlay contributes modules, an extra Source column appears tagging each asbuilt-in,override, orcustom.
Install All Modules
Section titled “Install All Modules”dotfiles installWhen you run this command, you’ll see a grid-based module selector where you can:
- Use arrow keys (↑↓←→) to navigate between modules
- Press Space to toggle module selection
- Press A to select all modules, N to select none
- See a live preview of the currently highlighted module
- Press Enter to start installation
During installation, a progress bar shows:
- How many modules have been installed (e.g., “3/10 60%”)
- Current module being installed
- Elapsed time and estimated time remaining
Install Specific Modules
Section titled “Install Specific Modules”dotfiles install git zsh neovimThis skips the interactive selector and directly installs the specified modules.
Install with a Profile
Section titled “Install with a Profile”dotfiles install --profile minimalDry Run (Preview Changes)
Section titled “Dry Run (Preview Changes)”dotfiles install --dry-runThis shows what would be installed without making any changes.
Unattended Installation
Section titled “Unattended Installation”dotfiles install --unattendedUses default answers for all prompts. Useful for automation.
Verbose Output
Section titled “Verbose Output”dotfiles install -vVerbose mode streams all script output in real-time, showing:
- Detailed execution logs
- All script output (stdout/stderr)
- Debug information
Use verbose mode when:
- Troubleshooting module failures
- Understanding what scripts are doing
- Debugging configuration issues
Note: In compact mode (default), script output is buffered and only shown on errors. Verbose mode disables this buffering and streams everything live.
Understanding the Installation Flow
Section titled “Understanding the Installation Flow”1. Module Selection (Interactive Mode)
Section titled “1. Module Selection (Interactive Mode)”When you run dotfiles install without specifying modules, you’ll see a grid selector:
┌─ Select modules to install ──────────────────────────────────┐│ ││ [x] 1password [x] git [ ] neovim ││ [ ] golang [x] docker [ ] python ││ [x] fish [ ] tmux [ ] zsh ││ ││ Navigate: ↑/↓/←/→ Toggle: Space Select All: A Continue: Enter│ Preview: git - Configure git with SSH signing and defaults │└───────────────────────────────────────────────────────────────┘2. Execution Plan
Section titled “2. Execution Plan”After selection, you’ll see the execution plan:
Execution Plan: Install (3): 1. 1password - Install and configure 1Password CLI 2. git - Configure Git with SSH signing 3. docker - Install Docker and Docker Compose
OS: ubuntu 22.04 (amd64)Package Manager: aptModules are listed in dependency order. For example, git depends on ssh, so ssh runs first.
3. Progress Tracking
Section titled “3. Progress Tracking”During installation, a progress bar shows overall status:
┌─────────────────────────────────────────────────────────────┐│ Installing 3 modules ████████░░░░ 2/3 (67%) ││ Current: git • Elapsed: 1m15s • Est. remaining: ~38s │└─────────────────────────────────────────────────────────────┘
⠋ Installing git...4. Completion Summary
Section titled “4. Completion Summary”After all modules complete:
┌─────────────────────────────────────────────────────────────┐│ ✓ Installation complete ██████████████ 3/3 (100%) ││ Success: 3 • Failed: 0 • Skipped: 0 • Time: 2m5s │└─────────────────────────────────────────────────────────────┘Working with Profiles
Section titled “Working with Profiles”Profiles let you install predefined sets of modules.
Available Profiles
Section titled “Available Profiles”- developer - Full development environment (a curated module set)
- minimal - Lightweight setup (git, zsh)
- test - Testing configuration
Set Default Profile
Section titled “Set Default Profile”Edit config.yml:
profile: minimalCreate Custom Profile
Section titled “Create Custom Profile”Create profiles/custom.yml:
modules: - git - neovimThen install:
dotfiles install --profile customConfiguration
Section titled “Configuration”The committed config.yml ships generic engine defaults (secrets.provider: noop, empty
user.*). To personalize, prefer a content overlay — an optional directory
($DOTFILES_CONTENT_DIR) holding your own config.yml/profiles//modules/ that is
deep-merged over the repo, so the engine stays generic and your identity/secrets live in
your own repo. See the Content Overlay guide and
config.overlay.example.yml.
Editing ~/.dotfiles/config.yml directly still works for a single machine:
vim ~/.dotfiles/config.ymlThe config shape (defaults shown):
profile: minimal # conservative default (git, zsh); developer is opt-in
secrets: provider: noop # opt into "1password" from your overlay
user: name: "" email: "" github_user: ""
modules: ssh: key_type: ed25519 key_source: generate # generate | agent | 1password | none git: default_branch: mainModule-Specific Settings
Section titled “Module-Specific Settings”Each module can have custom settings under the modules key. These are available in module scripts and templates.
Interactive Prompts
Section titled “Interactive Prompts”During installation, modules may ask questions:
? Which SSH key type would you like to use? > ed25519 (recommended) rsaUse arrow keys to select and press Enter. In --unattended mode, defaults are used automatically.
Checking Installation Status
Section titled “Checking Installation Status”View the status of installed modules:
dotfiles listThe Status column shows:
installed- Module is installednot installed- Module not yet installedfailed- Last installation failed
Troubleshooting
Section titled “Troubleshooting”View Verbose Output
Section titled “View Verbose Output”dotfiles install -vCheck State Files
Section titled “Check State Files”State is stored in ~/.dotfiles/.state/:
cat ~/.dotfiles/.state/git.jsonExample:
{ "name": "git", "version": "1.0.0", "status": "installed", "installed_at": "2024-02-09T10:30:00Z", "os": "ubuntu"}Reset a Module
Section titled “Reset a Module”To reinstall a module, remove its state file:
rm ~/.dotfiles/.state/git.jsondotfiles install gitNext Steps
Section titled “Next Steps”- Creating Modules - Build your own modules
- CLI Reference - Complete command documentation
- Idempotence - How re-runs are handled safely