Skip to main content

dotlinker (doli)

GitHub Sponsors Patreon Buy Me a Coffee PayPal

dotlinker (CLI: doli) helps you persist and synchronize configuration across multiple systems by linking local config paths to either:

  • chezmoi (Git-based dotfiles management)
  • Nextcloud (file-sync based persistence)

It is designed to be simple, deterministic, and safe by default (with timestamped backups).

Features

  • Default config path: ~/.config/dotlinker/config.yaml (XDG-aware via XDG_CONFIG_HOME)
  • Backends:
    • chezmoi: imports paths via chezmoi add
    • cloud: copies data to a destination directory, creates .bak backups, and links back with symlinks
  • Unit tests via unittest
  • Makefile target: make test

Installation

pip install .

Or editable install for development:

pip install -e .

Usage

Show help:

doli --help
doli

Add a mapping (non-interactive):

doli add -N zshrc -b chezmoi -s ~/.zshrc
doli add -N nvim  -b cloud   -s ~/.config/nvim -d ~/Nextcloud/dotfiles/.config/nvim

Run the linking/import process:

doli pull

Use a custom config path:

doli -c ./my-config.yaml add -N nvim -b cloud -s ~/.config/nvim -d ~/Nextcloud/dotfiles/.config/nvim
doli -c ./my-config.yaml pull

Configuration format

~/.config/dotlinker/config.yaml

mappings:
  - name: zshrc
    backend: chezmoi
    src: ~/.zshrc

  - name: nvim
    backend: cloud
    src: ~/.config/nvim
    dest: ~/Nextcloud/dotfiles/.config/nvim

Notes

  • For backend: cloud, dest is required.

  • cloud creates timestamped backups:

    • destination backups: dest.<timestamp>.bak
    • source backups: src.<timestamp>.bak
  • If src is already a symlink pointing to dest, doli pull is a NOOP.

Development

Run tests:

make test

Run tests verbosely:

make test-verbose

License

MIT License. See LICENSE.

Author

Kevin Veen-Birkenbach https://www.veen.world/

Metadata

Release files for docoli 1.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for docoli 1.0.3
File Size Uploaded
docoli-1.0.3.tar.gz 8.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for docoli 1.0.3
File Interpreter ABI Platform
docoli-1.0.3-py3-none-any.whl Python 3 none any Details

Total release size: 16.4 kB

Release files / docoli-1.0.3.tar.gz

Download URL docoli-1.0.3.tar.gz
Size 8.4 kB
Tags Source
SHA-256 checksum
How to use checksums
a6070ffdf8c4747938fc8b0cc994fff7654ec1242aea62bdb54d4a2a79eeed42
BLAKE2b-256 checksum
How to use checksums
73d7a48d55edcad3841a60494054006829e104014de7b9f353be842f5c3fc176
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release files / docoli-1.0.3-py3-none-any.whl

Download URL docoli-1.0.3-py3-none-any.whl
Size 8.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d684827d5faa3f8af8537409bc980448739ba7a47ea0734f08be5b2a00dd73a3
BLAKE2b-256 checksum
How to use checksums
b6f37c5ca819904a8066b144df47a7bfaad7c585874cb0cbb45f136445373315
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

1.0.3 This release

2 release files

1.0.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page