2025-12-11 20:37:05 +01:00
# Package Manager 🤖📦
2025-12-11 21:01:27 +01:00

2025-03-12 20:40:19 +01:00
[](https://github.com/sponsors/kevinveenbirkenbach)
2025-12-11 20:37:05 +01:00
[](https://www.patreon.com/c/kevinveenbirkenbach)
[](https://buymeacoffee.com/kevinveenbirkenbach)
[](https://s.veen.world/paypaldonate)
2025-03-04 17:28:40 +01:00
[](LICENSE)
[](https://github.com/kevinveenbirkenbach/package-manager)
2025-12-12 21:16:27 +01:00
[](https://github.com/kevinveenbirkenbach/package-manager/actions/workflows/mark-stable.yml)
2025-03-04 17:28:40 +01:00
2025-12-12 21:16:27 +01:00
[**Kevin's Package Manager (PKGMGR)** ](https://s.veen.world/pkgmgr ) is a * multi-distro * package manager and workflow orchestrator.
2025-12-11 20:37:05 +01:00
It helps you **develop, package, release and manage projects across multiple Linux-based
operating systems** (Arch, Debian, Ubuntu, Fedora, CentOS, …).
PKGMGR is implemented in **Python ** and uses **Nix (flakes) ** as a foundation for
distribution-independent builds and tooling. On top of that it provides a rich
CLI that proxies common developer tools (Git, Docker, Make, …) and glues them
together into repeatable development workflows.
---
## Why PKGMGR? 🧠
Traditional distro package managers like `apt` , `pacman` or `dnf` focus on a
single operating system. PKGMGR instead focuses on **your repositories and
development lifecycle**:
* one configuration for all your repos,
* one CLI to interact with them,
* one Nix-based layer to keep tooling reproducible across distros.
You keep using your native package manager where it makes sense – PKGMGR
coordinates the * development and release flow * around it.
---
2025-03-04 17:28:40 +01:00
## Features 🚀
2025-12-11 20:37:05 +01:00
### Multi-distro development & packaging
* Manage **many repositories at once ** from a single `config/config.yaml` .
* Drive full **release pipelines ** across Linux distributions using:
* Nix flakes (`flake.nix` )
* PyPI style builds (`pyproject.toml` )
* OS packages (PKGBUILD, Debian control/changelog, RPM spec)
* Ansible Galaxy metadata and more.
### Rich CLI for daily work
All commands are exposed via the `pkgmgr` CLI and are available on every distro:
* **Repository management**
* `clone` , `update` , `install` , `delete` , `deinstall` , `path` , `list` , `config`
* **Git proxies**
* `pull` , `push` , `status` , `diff` , `add` , `show` , `checkout` ,
`reset` , `revert` , `rebase` , `commit` , `branch`
* **Docker & Compose orchestration**
* `build` , `up` , `down` , `exec` , `ps` , `start` , `stop` , `restart`
* **Release toolchain**
* `version` , `release` , `changelog` , `make`
* **Mirror & workflow helpers**
* `mirror` (list/diff/merge/setup), `shell` , `terminal` , `code` , `explore`
Many of these commands support `--preview` mode so you can inspect the
underlying Git or Docker calls without executing them.
### Full development workflows
PKGMGR is not just a helper around Git commands. Combined with its release and
versioning features it can drive **end-to-end workflows ** :
1. Clone and mirror repositories.
2. Run tests and builds through `make` or Nix.
3. Bump versions, update changelogs and tags.
4. Build distro-specific packages.
5. Keep all mirrors and working copies in sync.
The extensive E2E tests (`tests/e2e/` ) and GitHub Actions workflows (including
“virgin user” and “virgin root” Arch tests) validate these flows across
different Linux environments.
---
2025-03-04 17:28:40 +01:00
2025-12-10 22:51:40 +01:00
## Architecture & Setup Map 🗺️
2025-12-11 20:37:05 +01:00
The following diagram gives a full overview of:
* PKGMGR’ s package structure,
* the layered installers (OS, foundation, Python, Makefile),
* and the setup controller that decides which layer to use on a given system.
2025-12-10 22:51:40 +01:00

2025-12-12 12:15:40 +01:00
**Diagram status:** 12 December 2025
2025-12-11 20:37:05 +01:00
**Always-up-to-date version:** [https://s.veen.world/pkgmgrmp ](https://s.veen.world/pkgmgrmp )
---
2025-04-01 15:37:07 +02:00
2025-12-12 21:16:27 +01:00
Perfekt, dann hier die **noch kompaktere und korrekt differenzierte Version ** , die **nur ** zwischen
**`make setup` ** und * * `make setup-venv` ** unterscheidet und exakt deinem Verhalten entspricht.
README-ready, ohne Over-Engineering.
---
2025-03-04 17:28:40 +01:00
## Installation ⚙️
2025-12-12 21:16:27 +01:00
PKGMGR can be installed using `make` .
The setup mode defines **which runtime layers are prepared ** .
2025-12-11 20:37:05 +01:00
2025-12-12 21:16:27 +01:00
---
### Setup modes
| Command | Prepares | Use case |
| ------------------- | ----------------------- | --------------------- |
| **make setup ** | Python venv **and ** Nix | Full development & CI |
| **make setup-venv ** | Python venv only | Local user setup |
---
### Install & setup
2025-03-04 17:28:40 +01:00
```bash
git clone https://github.com/kevinveenbirkenbach/package-manager.git
cd package-manager
2025-12-12 21:16:27 +01:00
make install
```
2025-12-11 20:37:05 +01:00
2025-12-12 21:16:27 +01:00
#### Full setup (venv + Nix)
```bash
make setup
2025-03-04 17:28:40 +01:00
```
2025-12-12 21:16:27 +01:00
Use this for CI, servers, containers and full development workflows.
2025-12-11 20:37:05 +01:00
2025-12-12 21:16:27 +01:00
#### Venv-only setup
2025-04-01 20:19:21 +02:00
```bash
2025-12-12 21:16:27 +01:00
make setup-venv
source ~/.venvs/pkgmgr/bin/activate
2025-04-01 20:19:21 +02:00
```
2025-12-12 21:16:27 +01:00
Use this if you want PKGMGR isolated without Nix integration.
---
2025-12-11 20:37:05 +01:00
2025-12-12 21:16:27 +01:00
## Run without installation (Nix)
2025-12-11 20:37:05 +01:00
2025-12-12 21:16:27 +01:00
Run PKGMGR directly via Nix Flakes.
2025-03-04 17:28:40 +01:00
```bash
2025-12-12 21:16:27 +01:00
nix run github:kevinveenbirkenbach/package-manager#pkgmgr -- --help
2025-03-04 17:28:40 +01:00
```
2025-12-12 21:16:27 +01:00
Example:
```bash
nix run github:kevinveenbirkenbach/package-manager#pkgmgr -- version pkgmgr
```
Notes:
* full flake URL required
* `--` separates Nix and PKGMGR arguments
* can be used alongside any setup mode
2025-12-11 20:37:05 +01:00
---
## Usage 🧰
After installation, the main entry point is:
```bash
pkgmgr --help
```
2025-12-12 21:16:27 +01:00
This prints a list of all available subcommands.
2025-12-11 20:37:05 +01:00
The help for each command is available via:
---
2025-04-01 15:37:07 +02:00
2025-03-04 17:28:40 +01:00
## License 📄
This project is licensed under the MIT License.
2025-12-11 20:37:05 +01:00
See the [LICENSE ](LICENSE ) file for details.
---
2025-03-04 17:28:40 +01:00
## Author 👤
2025-12-11 20:37:05 +01:00
Kevin Veen-Birkenbach
2025-03-04 17:28:40 +01:00
[https://www.veen.world ](https://www.veen.world )