Skip to content
Shreyas V edited this page Nov 22, 2025 · 2 revisions

Initialize

dotpush init

Creates config.ini at ~/.config/dotpush/config.ini If the file already exists, reinitialize with

dotpush init --force

to overwrite/reset it.

Initialize GitHub

dotpush init github

Prompts for a Personal Access Token (PAT) and stores it securely using keyring. If config/GitHub settings already exist:

dotpush init github --force

Add a file/folder to backup

dotpush add <path>

Example:

dotpush add ~/.bashrc
dotpush add ~/.config/fish/

Remove a path

dotpush remove <path>

List tracked paths

dotpush list

Displays everything currently inside [Files] section of config.ini.

Backup dotfiles manually

dotpush backup
  • Creates backup directory (if not present)
  • Copies every file/dir listed in config.ini
  • Preserves permissions and symlinks
  • Does not push to GitHub

Backup + Push to GitHub

dotpush push

Automated backup/push (systemd timer)

dotpush schedule --interval 30m

Creates:

  • ~/.config/systemd/user/dotpush.service
  • ~/.config/systemd/user/dotpush.timer

Verify timer is running:

systemctl --user list-timers | grep dotpush
systemctl --user status dotpush.timer
journalctl --user -u dotpush.service -f

Valid Intervals:

10m 2h 1d 45s

Stop automated backup:

systemctl --user disable --now dotpush.timer

Example workflow

dotpush init
dotpush add ~/.bashrc
dotpush backup
dotpush push
dotpush schedule --interval 1h