dotlinker (doli)
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 viaXDG_CONFIG_HOME) - Backends:
- chezmoi: imports paths via
chezmoi add - cloud: copies data to a destination directory, creates
.bakbackups, and links back with symlinks
- chezmoi: imports paths via
- 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,destis required. -
cloudcreates timestamped backups:- destination backups:
dest.<timestamp>.bak - source backups:
src.<timestamp>.bak
- destination backups:
-
If
srcis already a symlink pointing todest,doli pullis 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)
| File | Size | Uploaded | |
|---|---|---|---|
| docoli-1.0.3.tar.gz | 8.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|