yadm
Manage dotfiles across multiple computers
TLDR
Override the yadm directory. yadm stores its configurations relative to this directory
Override the yadm data directory: yadm stores its data relative to this directory
Override the location of the yadm repository
Override the location of the yadm configuration file
Override the location of the yadm encryption configuration
Override the location of the yadm encrypted files archive
Override the location of the yadm bootstrap program
SYNOPSIS
yadm [-hVCG] [--yadm-dir DIR] [command [args]]
PARAMETERS
-h, --help
Display help and exit
-V, --version
Display yadm version
-C DIR, --yadm-dir DIR
Use DIR as yadm repo location
-g, --git
Pass remaining args to git
-G, --no-git
Prevent git subcommand execution
DESCRIPTION
Yadm (Yet Another Dotfile Manager) simplifies managing personal configuration files (dotfiles) across multiple machines using Git. It maintains a Git repository in $HOME/.local/share/yadm by default, symlinking tracked files into $HOME. This enables version control, easy syncing, and deployment via yadm clone or pull.
Key features include classes for host-specific configs: define classes in .yadm/classes or via yadm config local.class <hostname>, allowing conditional symlinks based on machine traits. The alt command handles system alternatives (e.g., vim vs neovim configs). Bootstrap runs scripts during setup for automated environment configuration.
Yadm mimics Git's interface, so familiar commands like add, commit, status, push work identically. Global options control repo location and behavior. Ideal for developers maintaining consistent setups on Linux, macOS, and more.
CAVEATS
Requires Git 2.0+ installed.
Repo symlinks may conflict with existing dotfiles.
Classes require explicit config; defaults to no classes.
CLASSES
Host-specific files via .yadm/classes file listing classes (e.g., linux, laptop). Use yadm class to view/add. Symlinks filtered by #class:foo in filenames.
BOOTSTRAP
Runs .yadm-bootstrap during clone/pull for post-clone setup (e.g., package installs).
ALTERNATIVES
yadm alt manages symlinks to variant files (e.g., vimrc.foo as alt for .vimrc). Configure via .yadm/alternatives.
HISTORY
Created by Nick Matthews (TheLocehiliosan) in 2015 as a lightweight Git wrapper for dotfiles. Hosted on GitHub with ongoing releases; version 3.2.3 as of 2024. Gained popularity for simplicity over tools like chezmoi or stow.
SEE ALSO
git(1)


