Dotfile farm manager
Project description
plowman: Dotfile farm manager
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 withharvest - 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
- Installation Guide - How to install plowman
- Tutorial - Step-by-step getting started guide
- Usage Guide - Complete usage instructions
- Configuration Reference - How to configure plowman
- Changelog - Release history
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3fba50ae0620e7dc8c89106eee9c36f1cf3797595eb1e53ffe2d2b968fcc0c4d
|
|
| MD5 |
175a4a2d71b3b32c084e57dcf9e550f6
|
|
| BLAKE2b-256 |
acc2378375efc2d1485ce7c90446126438176c6f89a3c06a43cd50e0a79cad6b
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d6f99646418f4beaa832601f14d4390e157b826fd8111c815999378792bb619e
|
|
| MD5 |
bbcd65240d096de755f1596b538bb9ee
|
|
| BLAKE2b-256 |
7fcffa80a2512cc30bbb815d8739f35c51061f0b9cd9f221a2ee679504ef3ff5
|