yadm(1)
Yet Another Dotfiles Manager — a git-based system for managing dotfiles with support for encryption and multiple configurations.
Synopsis
yadm [OPTION]... COMMAND [ARGUMENT]...Description
yadm is a dotfiles manager that uses Git as its underlying storage mechanism. It allows you to version control your dotfiles (configuration files like .bashrc, .vimrc, etc.) and effortlessly manage them across multiple systems. yadm supports encryption via GPG, templating, and conditional includes to handle system-specific configurations.
Unlike traditional dotfiles repositories that require symlinking, yadm stores files in a bare Git repository and manages their locations directly. This approach keeps your home directory clean and avoids complex symlink structures.
Common options
| Flag | What it does |
|---|---|
-Y, --yadm-dir | specify the yadm data directory (default: ~/.config/yadm) |
-R, --repo | specify the path to the repository (default: ~/.local/share/yadm/repo.git) |
--no-verify | bypass git hooks when committing changes |
-v, --verbose | enable verbose output for debugging |
--force | force operations without confirmation |
--pretty | format output with colors and alignment |
-e, --encrypt | encrypt files matching encrypt patterns in .yadmignore |
-d, --decrypt | decrypt encrypted files using GPG |
Examples
initialize a new yadm repository in your home directory
yadm initclone an existing dotfiles repository from a remote URL
yadm clone https://github.com/user/dotfiles.gitstart tracking specific dotfiles in yadm
yadm add ~/.bashrc ~/.vimrccommit tracked dotfile changes to the repository
yadm commit -m 'update shell configuration'encrypt files matching patterns in .yadmignore
yadm encryptdecrypt encrypted dotfiles
yadm decryptshow the status of tracked dotfiles (like git status)
yadm statuspush committed changes to the remote repository
yadm push