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

Uploaded Python 3

File details

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

File metadata

  • Download URL: plowman-0.5.2.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.2.tar.gz
Algorithm Hash digest
SHA256 5cdd8076fba67554982ae2f190de135363f360b0e35b4ae30fa8e3b22b04a7c4
MD5 b8cd76d37ba6aef220029ccb5fb66287
BLAKE2b-256 92185115dc07e49472b9c8cab69e8e85a161ff3c272eb5e749161488477ac33c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: plowman-0.5.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9b98f1e9a1a8bd3140452f34710b61de13fd35d1447f12e41caf8547f31bc333
MD5 7b7c30115831085cd54aab03cb100909
BLAKE2b-256 899dca66f7f272abb71ef7c58d6abd024b8842ce89002692455b4d58e28d02c3

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