dotbot

dotfiles bootstrapping automation tool

TLDR

Install dotfiles with config
$ dotbot -c [install.conf.yaml]
Specify dotfiles directory
$ dotbot -d [~/dotfiles] -c [install.conf.yaml]
Run with verbose output
$ dotbot -v -c [install.conf.yaml]
Use specific plugin
$ dotbot -p [plugin.py] -c [install.conf.yaml]
Run only specific directives
$ dotbot -c [install.conf.yaml] --only [link shell]
Run all directives except specified ones
$ dotbot -c [install.conf.yaml] --except [shell]

SYNOPSIS

dotbot [options] -c config

DESCRIPTION

Dotbot is a tool for bootstrapping dotfiles. It automates the process of setting up a new machine by creating symlinks, running shell commands, and performing other configuration tasks defined in a YAML or JSON file.Configuration files define directives like link (create symlinks), shell (run commands), create (make directories), and clean (remove broken symlinks). Dotbot is typically included as a git submodule in dotfiles repositories.

PARAMETERS

-c, --config-file file

Configuration file (YAML or JSON).
-d, --base-directory dir
Base directory for dotfiles.
-p, --plugin plugin
Load plugin module.
-v, --verbose
Enable verbose output.
-q, --quiet
Suppress most output.
-Q, --super-quiet
Suppress almost all output.
--plugin-dir dir
Load all plugins in a directory.
--only directives
Only run specified directives.
--except directives
Run all directives except those specified.
--no-color
Disable colored output.
--force-color
Force colored output.
--version
Show version.

CONFIGURATION EXAMPLE

$ - link:
    ~/.bashrc: bashrc
    ~/.vimrc: vimrc
    ~/.config/nvim: nvim

- shell:
    - [git submodule update --init, Installing submodules]
    - command: ./install-packages.sh
      description: Installing packages

- create:
    - ~/.local/bin
    - ~/.config

INSTALL

brew install dotbot
nix profile install nixpkgs#dotbot

CAVEATS

Requires Python 3. Symlink creation may require appropriate permissions. Existing files at link destinations are not overwritten by default. Plugin system allows extensions but adds complexity.

HISTORY

Dotbot was created by Anish Athalye in 2014 as a simple, self-contained tool for dotfiles management. It was designed to be included as a git submodule, making dotfiles repositories self-bootstrapping without external dependencies beyond Python.

SEE ALSO

stow(1), chezmoi(1), yadm(1), ln(1)