$linuxjunkies
>

yadm(1)

Yet Another Dotfiles Manager — a git-based system for managing dotfiles with support for encryption and multiple configurations.

UbuntuDebianFedoraArch

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

FlagWhat it does
-Y, --yadm-dirspecify the yadm data directory (default: ~/.config/yadm)
-R, --repospecify the path to the repository (default: ~/.local/share/yadm/repo.git)
--no-verifybypass git hooks when committing changes
-v, --verboseenable verbose output for debugging
--forceforce operations without confirmation
--prettyformat output with colors and alignment
-e, --encryptencrypt files matching encrypt patterns in .yadmignore
-d, --decryptdecrypt encrypted files using GPG

Examples

initialize a new yadm repository in your home directory

yadm init

clone an existing dotfiles repository from a remote URL

yadm clone https://github.com/user/dotfiles.git

start tracking specific dotfiles in yadm

yadm add ~/.bashrc ~/.vimrc

commit tracked dotfile changes to the repository

yadm commit -m 'update shell configuration'

encrypt files matching patterns in .yadmignore

yadm encrypt

decrypt encrypted dotfiles

yadm decrypt

show the status of tracked dotfiles (like git status)

yadm status

push committed changes to the remote repository

yadm push

Related commands