Switching from chezmoi to ConfigSync: A Migration Guide
Everything you need to migrate your dotfiles, templates, and secrets from chezmoi to ConfigSync — with zero data loss and a smoother workflow on the other side.
Why Developers Are Switching
chezmoi is an excellent dotfile manager. Its Go template system is powerful, its secret manager integrations are extensive, and it has earned a loyal following for good reason. But as development workflows have evolved, many developers find themselves wanting more.
Cloud sync without git. chezmoi requires you to maintain a git repository, configure SSH keys, and deal with merge conflicts. ConfigSync provides built-in encrypted cloud sync with a single configsync push command. No repository to manage, no merge conflicts to resolve.
Package tracking. chezmoi tracks dotfiles but not installed packages. ConfigSync tracks packages across 10+ package managers (Homebrew, apt, npm, pip, cargo, and more) and can install missing packages automatically on a new machine.
Watch mode. With configsync watch, changes to your tracked files are synced automatically. No more forgetting to run chezmoi add after editing your .zshrc.
Simpler templates. If you are only using chezmoi templates for basic variable substitution and OS detection, ConfigSync’s template system covers those use cases with far less syntax overhead.
Team features. ConfigSync includes shared configurations, team onboarding profiles, and a web dashboard — features that simply do not exist in chezmoi.
What You Keep, What Changes
The good news: you keep all of your configuration files. Your .zshrc, your git config, your SSH config, your VS Code settings — every file chezmoi manages today will be managed by ConfigSync tomorrow. What changes is the tool that manages them.
chezmoi stores copies of your files in a source directory (~/.local/share/chezmoi) and applies them to your home directory. ConfigSync tracks files in their original locations and syncs encrypted snapshots to the cloud. There is no source directory to maintain.
Step-by-Step Migration
Step 1: Install ConfigSync. If you have Node.js installed, this takes about 30 seconds.
Step 2: Export your chezmoi file list. Run chezmoi managed to see every file chezmoi currently tracks. This is your migration checklist.
Step 3: Add files to ConfigSync. For each file in the list, add it to ConfigSync. For common tools like SSH, Git, Zsh, and VS Code, use the module system instead of tracking individual files — modules know which files belong together.
Step 4: Convert templates. If you use chezmoi templates, convert the Go template syntax to ConfigSync’s format. Simple variable substitutions and OS conditionals translate directly.
Step 5: Migrate secrets. chezmoi secrets stored via chezmoi secret or external providers need to be added to ConfigSync’s secret store.
Step 6: Push to ConfigSync cloud. Once everything is added, push your entire environment to ConfigSync’s encrypted cloud storage.
Template Conversion Reference
Here is a quick reference for converting the most common chezmoi template patterns to ConfigSync equivalents.
| chezmoi (Go Template) | ConfigSync |
|---|---|
| {{ .chezmoi.os }} | {{platform}} |
| {{ .chezmoi.hostname }} | {{hostname}} |
| {{ .chezmoi.username }} | {{username}} |
| {{ .chezmoi.homeDir }} | {{home}} |
| {{ if eq .chezmoi.os "darwin" }} | {{#if platform == "darwin"}} |
| {{ else if eq .chezmoi.os "linux" }} | {{#elif platform == "linux"}} |
| {{ end }} | {{/if}} |
| {{ .email }} | {{vars.email}} |
| {{ .editor }} | {{vars.editor}} |
| {{ include "file.txt" }} | {{include "file.txt"}} |
What You Gain After Migrating
Once you have migrated, you unlock several capabilities that chezmoi does not offer:
Cloud sync without git. Push and pull with a single command. No repository to maintain, no merge conflicts, no SSH keys to configure on each machine.
Package tracking. Run configsync scan to snapshot your installed packages. On a new machine, configsync pull --install installs everything automatically.
Watch mode. Run configsync watch and never think about syncing again. Changes are detected and pushed automatically.
Hooks and bootstrap scripts. Run commands before or after sync operations. Set up a bootstrap script at ~/.configsync/bootstrap.sh for first-time machine setup.
Web dashboard. View all your machines, their sync status, and configuration differences from a single browser tab.
Ready to try ConfigSync?
Sync your entire dev environment across machines in minutes. Free forever for up to 3 devices.