Baldwin
This is a conversion of my simple scripts to version my home directory with very specific excludes and formatting every file upon commit so that readable diffs can be generated.
Installation
Pip
pip install baldwin
Usage
$ bw -h
Usage: bw [OPTIONS] COMMAND [ARGS]...
Manage a home directory with Git.
Options:
-d, --debug Enable debug logging.
-h, --help Show this message and exit.
Commands:
auto-commit
format
git
info
init
install-units
In addition to the bw command, hgit is a shortcut for bw git.
Start a new repository
bw init
Find out where the Git directory is by running bw info. This can be done even if init has not
been run.
Automation
systemd
bw install-units
This will install a timer that will automatically make a new commit every 6 hours. It does not push.
Keep in mind that systemd units require a full path to the executable, so you must keep the unit
up-to-date if you move where you install this package. Simply run bw install-units again.
Note that user systemd units only run while logged in.
To disable and remove the units, use the following commands:
systemctl disable --now home-vcs.timer
rm ~/.config/systemd/user/home-vcs.*
Pushing
To push, use either of the following:
bw git pushhgit push
The above also demonstrates that bw git/hgit are just frontends to git with the correct
environment applied.
Formatting
If Prettier is installed, it will be used to format files. The configuration used comes with this package. Having consistent formatting allows for nice diffs to be generated.
If you have initialised a repository without having prettier or jq in PATH, you need to run the
following commands to enable readable diffs:
hgit config diff.json.textconv 'jq -MS .'
hgit config diff.json.cachetextconv true
hgit config diff.yaml.textconv 'prettier --no-editorconfig --parser yaml'
hgit config diff.yaml.cachetextconv true
If you have the XML plugin installed:
hgit config diff.xml.textconv 'prettier --no-editorconfig --parser xml --xml-whitespace-sensitivity ignore'
hgit config diff.xml.cachetextconv true
Binary files
Any file that is untracked and detected to be binary will not be added. Use hgit add to add a
binary file manually.
Other details
Default .gitignore and .gitattributes files are installed on initialisation. They are never
modified by this tool. Please customise as necessary.
Metadata
Release files for baldwin 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| baldwin-0.1.0.tar.gz | 14.9 kB | With provenance | Details for baldwin-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| baldwin-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for baldwin-0.1.0-py3-none-any.whl |
Total release size: 27.7 kB
Release files / baldwin-0.1.0.tar.gz
| Download URL | baldwin-0.1.0.tar.gz |
|---|---|
| Size | 14.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4cbef60e67696a4a5f61c58167aeb0f1f698ad8bcfc673153e175fb76157abdc
|
|
BLAKE2b-256 checksum How to use checksums |
173279d82784f4b54cad72a7d4d759362fd97b05e0bd95ae63138ca28668523d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Apr 17, 2026.
Transparency logRelease files / baldwin-0.1.0-py3-none-any.whl
| Download URL | baldwin-0.1.0-py3-none-any.whl |
|---|---|
| Size | 12.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d6117103193e8cf8449a93b40c637712ed3ff008605fc35b79b1018da08269d8
|
|
BLAKE2b-256 checksum How to use checksums |
9f625052dbdf606c8b51235b83681161c15ae80c317b92806486cf7be7606656
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Apr 17, 2026.
Transparency logSecurity for baldwin 0.1.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.
Attestation for baldwin-0.1.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 Apr 17, 2026.
Transparency logA 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.