dodot

module
v0.3.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 6, 2025 License: MIT

README

dodot

A dotfile manager that respects your workflow.

What is dodot?

dodot manages your dotfiles through symlinks and simple conventions. Edit your configs as you always have - changes are live, no syncing or rebuilding required.

Key Features

  • No configuration required - File naming conventions handle most cases
  • Live editing - Edit anywhere, changes apply immediately
  • Modular packs - Group related configs, enable/disable together
  • Git-based - Your repo structure is the only state
  • Minimal commands - Just up, down, and status

Installation

brew install arthur-debert/tap/dodot

Or download from releases.

Quick Start

cd ~/dotfiles
dodot status          # See what dodot will do
dodot up              # Deploy all packs
dodot down git         # Remove git pack

How It Works

dodot uses simple conventions to manage your dotfiles:

dotfiles/
├── git/
│   ├── gitconfig     # Symlinked to ~/.gitconfig
│   ├── aliases.sh    # Sourced in shell profile
│   └── bin/          # Added to PATH
└── vim/
    ├── vimrc         # Symlinked to ~/.vimrc
    └── install.sh    # Run once during setup

Each directory is a "pack" that can be enabled or disabled as a unit.

File Conventions

Pattern Action Example
* Symlink to home vimrc~/.vimrc
*.sh Source in shell aliases.sh sourced on login
bin/ Add to PATH bin/ directory in PATH
install.sh Run once Setup scripts
Brewfile Install packages Homebrew dependencies

Commands

  • dodot status [pack...] - Show current state and pending changes
  • dodot on [pack...] - Enable packs
  • dodot off [pack...] - Disable packs
  • dodot init <pack> - Create a new pack
  • dodot adopt <pack> <file> - Move existing dotfiles into a pack

Run dodot --help for all commands.

Documentation

Development

git clone https://github.com/arthur-debert/dodot
cd dodot
scripts/build
./bin/dodot --version

See Development Guide for more.

License

MIT License - see LICENSE file.

Directories

Path Synopsis
cmd
dodot-manpage command
dodot/internal/topics
Package topics provides a pluggable, topic-based help system for Cobra CLI applications.
Package topics provides a pluggable, topic-based help system for Cobra CLI applications.
dodot/main command
Package internal contains non-exported utilities and helpers used internally by dodot.
Package internal contains non-exported utilities and helpers used internally by dodot.
pkg
config
Package config handles configuration management for dodot.
Package config handles configuration management for dodot.
datastore
Package datastore provides a high-level interface for managing dodot's internal state on the filesystem.
Package datastore provides a high-level interface for managing dodot's internal state on the filesystem.
dispatcher
Package dispatcher provides centralized command dispatching for pack operations.
Package dispatcher provides centralized command dispatching for pack operations.
errors
Package errors defines error types and codes for dodot.
Package errors defines error types and codes for dodot.
execution/handlers
Package handlers provides execution of handlers on a single pack.
Package handlers provides execution of handlers on a single pack.
filesystem
Package filesystem provides filesystem implementations for dodot.
Package filesystem provides filesystem implementations for dodot.
handlers
Package handlers implements various handler types that process matched files and generate operations.
Package handlers implements various handler types that process matched files and generate operations.
handlers/lib/homebrew
Package homebrew provides the BrewHandler implementation for dodot.
Package homebrew provides the BrewHandler implementation for dodot.
handlers/lib/install
Package install provides the ProvisionScriptHandler implementation for dodot.
Package install provides the ProvisionScriptHandler implementation for dodot.
handlers/lib/path
Package path provides the PathHandler implementation for dodot.
Package path provides the PathHandler implementation for dodot.
handlers/lib/shell
Package shell provides the ShellProfileHandler implementation for dodot.
Package shell provides the ShellProfileHandler implementation for dodot.
handlers/lib/symlink
Package symlink provides the SymlinkHandler implementation for dodot.
Package symlink provides the SymlinkHandler implementation for dodot.
packs
Package packs provides functionality for discovering, loading, and managing dotfile packs within the dodot system.
Package packs provides functionality for discovering, loading, and managing dotfile packs within the dodot system.
packs/commands
Package commands provides Command implementations for the pack orchestration.
Package commands provides Command implementations for the pack orchestration.
packs/orchestration
Package orchestration provides orchestration for executing commands across multiple packs.
Package orchestration provides orchestration for executing commands across multiple packs.
paths
Package paths provides centralized path handling for dodot.
Package paths provides centralized path handling for dodot.
statustype
Package statustype provides common types and utilities for status operations without importing other dodot packages, preventing circular dependencies.
Package statustype provides common types and utilities for status operations without importing other dodot packages, preventing circular dependencies.
testutil
Package testutil provides utilities for testing dodot components.
Package testutil provides utilities for testing dodot components.
types
Package types defines the core types and interfaces used throughout dodot.
Package types defines the core types and interfaces used throughout dodot.
ui
Package ui provides a unified interface for rendering output in different formats.
Package ui provides a unified interface for rendering output in different formats.
ui/format
Package format provides formatting utilities for UI presentation.
Package format provides formatting utilities for UI presentation.
ui/json
Package json provides machine-readable JSON output
Package json provides machine-readable JSON output
ui/lipbalm
Package lipbalm provides a simple template engine for rich terminal rendering.
Package lipbalm provides a simple template engine for rich terminal rendering.
ui/output
Package output implements a declarative, template-based rendering system for dodot's command-line interface.
Package output implements a declarative, template-based rendering system for dodot's command-line interface.
ui/output/styles
Package styles defines the visual styling for dodot's terminal output.
Package styles defines the visual styling for dodot's terminal output.
ui/terminal
Package terminal provides rich terminal output with colors and styling
Package terminal provides rich terminal output with colors and styling
ui/text
Package text provides plain text output without any styling
Package text provides plain text output without any styling
utils
Package utils provides common utility functions used across dodot.
Package utils provides common utility functions used across dodot.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL