Configuration Overview
dottie uses a single YAML configuration file (dottie.yaml) to define your dotfiles and software installation.
Configuration File
By default, dottie looks for dottie.yaml in the current directory. You can specify a different path with the --config flag.
profiles:
default:
dotfiles:
- source: dotfiles/.bashrc
target: ~/.bashrc
install:
apt:
- git
- curl
Structure
A configuration file contains one or more profiles. Each profile defines:
- dotfiles - Symlink mappings from your repository to target locations
- install - Software packages to install from various sources
profiles:
<profile-name>:
extends: <parent-profile> # Optional
dotfiles:
- source: <path>
target: <path>
install:
apt: [...]
github: [...]
scripts: [...]
fonts: [...]
snaps: [...]
aptRepos: [...]
Profiles
Profiles let you organize configurations for different contexts:
profiles:
default:
# Base configuration for all machines
work:
extends: default
# Work-specific additions
server:
# Minimal server setup
See Profiles for details on profile inheritance.
Dotfiles
Dotfile entries define symbolic links:
dotfiles:
- source: dotfiles/.bashrc
target: ~/.bashrc
See Dotfiles for field reference and best practices.
Install Blocks
Install blocks define software to install:
install:
apt:
- git
- curl
github:
- repo: BurntSushi/ripgrep
asset: ripgrep-{arch}.tar.gz
binary: rg
See Install Blocks for all available install types.
Validation
Always validate your configuration before applying:
> dottie validate default
This catches common errors like:
- Invalid YAML syntax
- Missing required fields
- Non-existent source files
- Circular profile inheritance
Best Practices
- Start simple - Begin with a minimal configuration and expand
- Use profiles - Separate configurations by context (work, home, server)
- Validate often - Run
validateafter every change - Preview first - Use
--dry-runbefore applying - Version control - Keep your
dottie.yamlin git