Dotdav
A simple dotfile synchronization tool that uses rclone to sync files to a WebDAV server (or any other rclone remote). It supports multiple device profiles and systemd-based auto-sync.
Prerequisites
- •Python 3
- •
rcloneinstalled and configured - •
uv(optional, for dependency management)
Installation
- •Clone the repository.
- •Install dependencies:
bash
uv sync # OR pip install pyyaml watchdog
- •Initialize the repository:
bash
python dotdav.py init --remote myremote --path dotfiles
Usage
Managing Files
- •
Add a file:
bashpython dotdav.py add ~/.bashrc
This copies the file to the repo and adds it to
mappings.yamlfor the current profile. - •
Deploy files:
bashpython dotdav.py deploy
Creates symlinks in your home directory pointing to the repository files.
Profiles
Dotdav allows different versions of files for different devices.
- •Switch profile:
bash
python dotdav.py profile laptop
- •Add specific version:
After switching,
addoperations will save to a profile-specific filename (e.g.,bashrc_laptop) and updatemappings.yaml. - •Deploy:
deploywill choose the file matching the current profile, falling back to 'default'.
Syncing
- •
Manual Sync:
bashpython dotdav.py sync push python dotdav.py sync pull
- •
Auto Sync: Start the daemon directly:
bashpython dotdav.py autosync
- •
Systemd Service: Install and enable the user service for background syncing:
bashpython dotdav.py service install
Check status:
bashsystemctl --user status dotdav.service
Fish Completion
Source the completion script:
fish
source completions.fish