Skip to main content

Dotfile farm manager

Project description

plowman: Dotfile farm manager

build lint tests license codecov readthedocs pypi downloads

plowman is a dotfile management tool that uses an agricultural metaphor to manage your configuration files. It deploys dotfiles from central repositories (called "granaries") to your home directory (where they become "crops"), tracking them in an "estate" file to manage their lifecycle.

Features

  • Template rendering: Use Jinja2 templates with custom variables for dynamic configurations
  • State tracking: Automatically track which files are managed via estate files
  • Smart updates: Skip unchanged files using SHA256 hashing for efficient deployments
  • Automatic cleanup: Remove orphaned files that are no longer in your configuration
  • Bidirectional sync: Deploy with sow, collect changes back with harvest
  • Dry-run mode: Preview changes before applying them with --dry-run
  • Colored diffs: See exactly what changed with syntax-highlighted diff output
  • Multiple granaries: Manage dotfiles from multiple source directories with different variables

Quick Start

Install plowman using uv:

$ uv tool install plowman

Create a basic configuration at ~/.config/plowman/config.yaml:

estates:
  ~/dotfiles:
    granaries: ["bash", "nvim"]
    variables:
      username: myuser
      hostname: myhost

Deploy your dotfiles:

$ plm sow

Collect changes back from your home directory:

$ plm harvest -v

The Agricultural Metaphor

plowman uses an agricultural metaphor for managing dotfiles:

  • Granaries: Source directories containing your dotfile templates and files
  • Seeds: Individual source files in granaries (templates or plain files)
  • Crops: Deployed files in your home directory
  • Estate: State tracking file that records which crops are managed
  • Harvest: Collecting changed crops back to the granary

This metaphor represents the full lifecycle: planting (deploying with sow) configuration files from source granaries to your home directory where they grow into usable configuration files, and harvesting (collecting with harvest) changes back when you edit them manually.

Next Steps

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

plowman-0.5.0.tar.gz (9.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

plowman-0.5.0-py3-none-any.whl (12.4 kB view details)

Uploaded Python 3

File details

Details for the file plowman-0.5.0.tar.gz.

File metadata

  • Download URL: plowman-0.5.0.tar.gz
  • Upload date:
  • Size: 9.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.24 {"installer":{"name":"uv","version":"0.11.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for plowman-0.5.0.tar.gz
Algorithm Hash digest
SHA256 b003a1720f9b430aeda7f357e649e870476a130705f2614d24a3dd0a8a2e25b5
MD5 c8447aa3f9b407c44c340e2248b04e9b
BLAKE2b-256 cca382486ce972522a3e326cf61a8e44f6e4baf671275e37757a749f6c0745f1

See more details on using hashes here.

File details

Details for the file plowman-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: plowman-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 12.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.24 {"installer":{"name":"uv","version":"0.11.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for plowman-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 271293d19f233c9bfda9fd1e350bce08501e9b2ae525ca19d0405e95990c8291
MD5 d6a1e84fe15bae94834ca1ce824856c8
BLAKE2b-256 a5ee5bdda27dd81291a8a49eeaa20a7ee5043648ee87fa85ea3c44fb63330ecb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page