Skip to main content

dotfiles-drift

Detect drift between your dotfiles repo and $HOME.

Answer the question: "What changed on my machine that's not in my dotfiles repo, and vice versa?"

License CI Stars Python Release

Why

You keep your dotfiles in a git repo. You clone it onto a new machine. But which files did you forget to add? Which files exist in $HOME but not in the repo? Which files have been modified locally without being committed?

dotfiles-drift tells you:

Status Meaning
synced Repo and home have identical content
missing File exists in repo but not in home (need to symlink/copy)
modified File exists in both but content differs
orphaned File exists in home but not in repo

Install

pip install git+https://github.com/yunaremaia/dotfiles-drift.git

Not yet on PyPI. Install from git with the line above. A PyPI release is pending; the distribution name dotfiles-drift is currently free.

Usage

# Check drift status
dotfiles-drift status ~/dotfiles

# Export as JSON
dotfiles-drift status ~/dotfiles --format json

# Sync missing/modified files from repo to home (dry run)
dotfiles-drift sync ~/dotfiles --dry-run

# Actually sync
dotfiles-drift sync ~/dotfiles --force

# Only check git-tracked files
dotfiles-drift status ~/dotfiles --only-tracked

Example Output

Dotfiles Drift — /root/dotfiles
┏━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ File          ┃ Status       ┃ Details                            ┃
┡━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ .bashrc      │ synced       │                                   │
│ .gitconfig   │ modified     │ repo=2026-09-12 home=2026-08-30   │
│ .vimrc       │ missing      │ exists in repo, not in $HOME       │
│ .zshrc       │ orphaned     │ exists in $HOME, not in repo       │
└──────────────┴──────────────┴────────────────────────────────────┘

Summary: 1 synced | 1 missing | 1 modified | 1 orphaned

Features

  • SHA256 content comparison (not just size/mtime)
  • Detects orphaned files (exist in $HOME but not in repo)
  • Git-tracked-only mode
  • JSON output for scripting
  • Dry-run sync mode
  • Ignores .git, README.md, LICENSE, Makefile, *.bak, *.swp by default

Alternatives

  • GNU Stow — symlink manager, not drift detector
  • yadm — dotfiles manager with git, but no drift reporting
  • chezmoi — has chezmoi diff but heavier tool
  • rcm — rc file management, no content diff

dotfiles-drift is a read-only detector — it reports what's out of sync. You decide whether to symlink, copy, or use a full dotfiles manager.

Sponsoring

dotfiles-drift is MIT licensed and free to use. If it earns a permanent place in your setup, you can support continued maintenance via GitHub Sponsors or by sending SOL to the project treasury wallet:

Eeztv1nCYUt1fwGWpzKC948gaWfjejYCAuLtUMgzDWbW

Funding platforms are configured in .github/FUNDING.yml.

If this tool is useful to you, a star helps other people find it.

  • driftcheck — detect version drift between docs and toolchain files
  • license-drift — detect license drift across a monorepo
  • cli-shim — shim CLI flags across tools with different syntax
  • sandbox-ffi-layers — layer FFI calls behind a sandbox boundary

Part of a family of focused, single-purpose developer tools — each one does one thing and does it well.

License

MIT

Metadata

Release files for dotfiles-drift 0.2.0

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

Source distribution (sdist)

Source distribution for dotfiles-drift 0.2.0
File Size Uploaded Provenance
dotfiles_drift-0.2.0.tar.gz 14.9 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for dotfiles-drift 0.2.0
File Interpreter ABI Platform
dotfiles_drift-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 24.4 kB

Release files / dotfiles_drift-0.2.0.tar.gz

Download URL dotfiles_drift-0.2.0.tar.gz
Size 14.9 kB
Tags Source
SHA-256 checksum
How to use checksums
f6b2735d94325f6beb7e4729178bcf84f186e6e34c1695a5d6234e15db857148
BLAKE2b-256 checksum
How to use checksums
e467c8722e048158859a84b46d3aab965f1472fdb4bb4a9bb3821bd2f573411e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Release files / dotfiles_drift-0.2.0-py3-none-any.whl

Download URL dotfiles_drift-0.2.0-py3-none-any.whl
Size 9.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
23d9318df41559078a9b68c147059cd169a730a88f0f0fdf373c638305854939
BLAKE2b-256 checksum
How to use checksums
a871e074774ec703308c81244af8399e473986397abf9fb0c051085a81235c67
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Security for dotfiles-drift 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for dotfiles_drift-0.2.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files Full provenance

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