Switching from yadm to ConfigSync
yadm made dotfile management approachable with its git-based workflow. ConfigSync takes that simplicity further with encrypted cloud sync, package tracking, and no git repo to manage.
Why Switch from yadm?
yadm (Yet Another Dotfiles Manager) takes a clever approach: it wraps git to create a bare repository that tracks files directly in your home directory. No symlinks, no copying files around. It feels natural because it is just git under the hood.
But that git-centric design also creates friction. You need a git hosting account, SSH keys configured on every machine, and you must remember to commit and push after every change. Merge conflicts happen when you edit the same file on two machines. And yadm’s alternate file system — while functional — uses a filename-based convention that can be difficult to read and maintain.
ConfigSync removes the git layer entirely. Your files are encrypted and synced to the cloud with configsync push. No repository to maintain, no commits to remember, no merge conflicts. And with watch mode, you can automate the entire process.
Beyond sync, ConfigSync adds capabilities yadm does not have: package tracking across 10+ package managers, a built-in secret store, modules that group related files together, and a web dashboard for managing multiple machines.
How yadm and ConfigSync Differ
yadm stores your dotfiles in a bare git repository at ~/.local/share/yadm/repo.git. Files are tracked in place (no symlinks), but every change requires a git commit and push.
ConfigSync also tracks files in place but syncs encrypted snapshots to Cloudflare R2 instead of a git remote. There is no commit history in the git sense — instead, ConfigSync maintains its own snapshot history that you can browse and roll back with configsync history.
Step-by-Step Migration
Step 1: List everything yadm tracks. This gives you the complete inventory of files to migrate.
Step 2: Install ConfigSync.
Step 3: Add modules for common tools. Instead of tracking individual files, use ConfigSync modules for tools that have multiple config files. Modules automatically know which files belong to each tool.
Step 4: Add remaining files. For files that do not belong to a built-in module, add them individually.
Step 5: Convert alternate files to templates. yadm uses a filename convention for per-OS or per-host files. ConfigSync uses inline template conditionals instead, keeping everything in a single file.
Step 6: Migrate encrypted files. yadm uses GPG to encrypt files listed in ~/.config/yadm/encrypt. ConfigSync encrypts everything by default, so you simply add the files normally.
Step 7: Convert your bootstrap script. If you use ~/.config/yadm/bootstrap, move its contents to ConfigSync’s bootstrap script location.
Step 8: Push to ConfigSync.
Alternate File Conversion Reference
yadm’s alternate file naming convention maps to ConfigSync template conditionals as follows.
| yadm Alternate Syntax | ConfigSync Template |
|---|---|
| ##os.Darwin | {{#if platform == "darwin"}} |
| ##os.Linux | {{#if platform == "linux"}} |
| ##hostname.work-laptop | {{#if hostname == "work-laptop"}} |
| ##user.sean | {{#if username == "sean"}} |
| ##class.personal | {{#if profile == "personal"}} |
| ##distro.Ubuntu | {{#if distro == "ubuntu"}} |
What You Gain After Migrating
No git repo to manage. No commits, no push/pull to a remote, no merge conflicts when you edit the same file on two machines. ConfigSync handles sync with a single command.
Encrypted cloud sync. Everything is encrypted with AES-256-GCM before leaving your machine. yadm’s GPG encryption only covers files you explicitly list — everything else in your git repo is plaintext.
Package tracking. Run configsync scan to capture your installed packages. Pull on a new machine with --install to automatically install everything you need.
Watch mode. Enable configsync watch to automatically sync changes as you make them. No more forgetting to yadm add and yadm push.
Modules over files. Instead of tracking dozens of individual files, ConfigSync modules group related configurations together. Add one module and all associated files are tracked automatically.
yadm’s git-based approach was a smart starting point. ConfigSync takes the same track-in-place philosophy and adds encryption, cloud sync, packages, and automation on top.
Ready to try ConfigSync?
Sync your entire dev environment across machines in minutes. Free forever for up to 3 devices.