yadm
Dotfiles manager built on Git, with per-system alternate and templated files, encryption via GnuPG/OpenSSL/transcrypt/git-crypt, bootstrapping, and hooks.
yadm is a dotfiles manager built on Git. It wraps Git commands so a repository of configuration files can be tracked in place in your home directory, and the full range of Git's features is available. Typical usage mirrors Git: yadm init, yadm clone <url>, yadm add <file>, and yadm commit.
For machines that need different configuration, yadm supports system-specific alternate files and templated files. A file can be added with a suffix such as path/file.cfg##os.Linux or path/file.cfg##os.Darwin so that a different version is used on Linux and macOS.
Private data can be encrypted using GnuPG, OpenSSL, transcrypt, or git-crypt. Paths to protect are listed in ~/.config/yadm/encrypt, then yadm encrypt and yadm decrypt handle them. yadm also provides customizable bootstrapping for initializing a new machine, and customizable hooks that run before and after any operation.
It is aimed at developers and system administrators who keep dotfiles in Git and want to sync them across multiple machines or operating systems. Full documentation is on yadm.io.
Alternatives & related tools
pre-commit
Framework for managing and maintaining multi-language pre-commit hooks in Git repositories.
git absorb
Git subcommand that automatically creates fixup! commits from staged changes by finding the commit each hunk belongs to, with optional autosquash rebase.
soft-serve
Self-hostable Git server with SSH-accessible TUI for command-line repository management and browsing.
forgit
Interactive Git command wrapper using fzf for fuzzy selection of files, commits, branches, and more
hunk
Terminal diff viewer for reviewing Git, GitHub, Jujutsu, and Sapling changesets, with inline agent annotations, split/unified layouts, and watch mode.
add a badge to your README
Maintain yadm? Show that it's featured on trmn. The badge links back to this page.
[](https://www.trmn.sh/tools/yadm?utm_source=badge)<a href="https://www.trmn.sh/tools/yadm?utm_source=badge"><img src="https://www.trmn.sh/badge/yadm.svg" alt="Featured on trmn" height="20"></a>