Skip to content

Machine configuration

~/.config/dotsync/config.json holds the settings for one machine. It’s never synced. dotsync init creates it, and init, exclude and include change it; you can also edit it by hand. It’s under $XDG_CONFIG_HOME if you’ve set that.

~/.config/dotsync/config.json, as init writes it
{
"remote": "git@github.com:you/dotfiles.git",
"branch": "main",
"interval": 300,
"exclude": []
}
with every field
{
"remote": "git@github.com:you/dotfiles.git",
"branch": "main",
"interval": 600,
"exclude": ["karabiner/karabiner.json"],
"on_existing": "conflict",
"backup_retention_days": 30,
"notifications": false
}
Field Default Description
remote URL of the shared repository, as you’d pass it to git clone
branch main branch to sync. Set with init --branch
interval {ref.defaults.interval} seconds between background syncs. Set with init --interval; after editing it by hand, run dotsync agent install
exclude [] sources of manifest entries this machine doesn’t manage. Their local files are left alone. Change with dotsync exclude and include
on_existing "remote" what happens the first time an entry syncs here and a different local file already exists. "remote" backs it up and installs the shared version; "conflict" leaves it untouched and reports a conflict. init --keep-existing sets "conflict"; to go back, remove the field
backup_retention_days {ref.defaults.backup_retention_days} backups older than this many days are deleted, once a day, except the most recent backup of each file, which is always kept. 0 keeps everything
notifications true false turns off the background agent’s desktop notifications on this machine

The file is only readable by you (mode 0600). If it isn’t valid JSON, every command stops with an error naming the file.