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.1.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.1-py3-none-any.whl (12.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: plowman-0.5.1.tar.gz
  • Upload date:
  • Size: 9.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","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.1.tar.gz
Algorithm Hash digest
SHA256 3fba50ae0620e7dc8c89106eee9c36f1cf3797595eb1e53ffe2d2b968fcc0c4d
MD5 175a4a2d71b3b32c084e57dcf9e550f6
BLAKE2b-256 acc2378375efc2d1485ce7c90446126438176c6f89a3c06a43cd50e0a79cad6b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: plowman-0.5.1-py3-none-any.whl
  • Upload date:
  • Size: 12.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d6f99646418f4beaa832601f14d4390e157b826fd8111c815999378792bb619e
MD5 bbcd65240d096de755f1596b538bb9ee
BLAKE2b-256 7fcffa80a2512cc30bbb815d8739f35c51061f0b9cd9f221a2ee679504ef3ff5

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