LinuxCommandLibrary

yadm

Manage dotfiles across multiple computers

TLDR

Override the yadm directory. yadm stores its configurations relative to this directory

$ yadm --yadm-dir
copy

Override the yadm data directory: yadm stores its data relative to this directory
$ yadm --yadm-data
copy

Override the location of the yadm repository
$ yadm --yadm-repo
copy

Override the location of the yadm configuration file
$ yadm --yadm-config
copy

Override the location of the yadm encryption configuration
$ yadm --yadm-encrypt
copy

Override the location of the yadm encrypted files archive
$ yadm --yadm-archive
copy

Override the location of the yadm bootstrap program
$ yadm --yadm-bootstrap
copy

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)

Copied to clipboard