Package manager for your dotfiles
Project description
Dotpkg
A package manager for your dotfiles.
Why Dotpkg?
- Lightweight: Pure Python 3.10 with no dependencies
- JSON-configurable: Easy to write, includes a schema for code completion
- Cross-platform: Runs on Linux, macOS and Windows
- Flexible: Configurable target locations, ignore lists, rename rules and more
Usage
First make sure to have Python 3.10+ installed. To create a dotfile package, set up a folder with the following layout (the top-level folder is assumed to be some folder, e.g. a Git repo, where you store all of your dotfiles):
dotfiles
└─my-package
├─dotpkg.json
├─.some-dotfile-one
├─.some-dotfile-two
...
A minimal dotpkg.json
is structured as follows:
{
"name": "my-package",
"description": "Description of my package"
}
Navigating into dotfiles
and running dotpkg install my-package
will then symlink .some-dotfile-one
and .some-dotfile-two
into your home directory.
Note that when running on Windows, unprivileged users might not be able to create symlinks, a feature that
dotpkg
relies on. EnablingDeveloper Mode
in your Windows Settings (from an administrator account) will permit this. Also, you may need to substitutepython3 [path/to/dotpkg]
fordotpkg
since Windows does not support Unix-style shebangs.
Optionally, you can specify keys such as requiresOnPath
too, which will only install the package if a given binary is found on your PATH
(useful if your config targets some application). Additionally, targetDir
configures the search path to symlink the files into some other directory than your home (dotpkg
will use the first directory that exists, this is useful to cross-platform packages).
For example, a package that manages configurations for Visual Studio Code could look like this:
{
"name": "vscode",
"description": "Visual Studio Code settings and keybindings",
"requiresOnPath": ["code"],
"targetDir": [
"${home}/.config/Code",
"${home}/Library/Application Support/Code",
"${home}/AppData/Roaming/Code"
]
}
A full JSON schema for the dotpkg.json
manifests can be found here.
Note that you can add the schema to your VSCode settings to get autocompletion in
dotpkg.json
files by specifyingjson.schemas
:
{
"json.schemas": [
{
"fileMatch": ["dotpkg.json"],
"url": "https://raw.githubusercontent.com/fwcd/dotpkg/main/dotpkg.schema.json"
}
]
}
Alternatively, you can specify the schema individually in each dotpkg.json
:
{
"$schema": "https://raw.githubusercontent.com/fwcd/dotpkg/main/dotpkg.schema.json"
}
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
File details
Details for the file dotpkg-0.2.1.tar.gz
.
File metadata
- Download URL: dotpkg-0.2.1.tar.gz
- Upload date:
- Size: 18.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.12.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6f0cdcc41cda03857a44b768cd32ebdb21764ebe787e12c30573d98a8a9cf446 |
|
MD5 | 3f2a7f8d3b2978f1a799db336be9a5ca |
|
BLAKE2b-256 | 60eb62232d2f585448c2338b77e5eef15d501fb2892e9f88ed668e1e38ba043f |