Skip to main content

Package Manager 🤖📦

PKGMGR Banner

GitHub Sponsors Patreon Buy Me a Coffee PayPal GitHub license GitHub repo size Mark stable commit

Kevin's Package Manager (PKGMGR) is a multi-distro package manager and workflow orchestrator. 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. It provides one configuration for all repositories, one unified CLI to interact with them, and a Nix-based foundation that keeps tooling reproducible across distributions.

Native package managers are still used where they make sense. PKGMGR coordinates the surrounding development, build and release workflows in a consistent way.

In addition, PKGMGR provides Docker images that can serve as a reproducible system baseline. These images bundle the complete PKGMGR toolchain and are designed to be reused as a stable execution environment across machines, pipelines and teams. This approach is specifically used within Infinito.Nexus to make complex systems distribution-independent while remaining fully reproducible.


Features 🚀

PKGMGR enables multi-distro development and packaging by managing multiple repositories from a single configuration file. It drives complete release pipelines across Linux distributions using Nix flakes, Python build metadata, native OS packages such as Arch, Debian and RPM formats, and additional ecosystem integrations like Ansible.

All functionality is exposed through a unified pkgmgr command-line interface that works identically on every supported distribution. It combines repository management, Git operations, Docker and Compose orchestration, as well as versioning, release and changelog workflows. Many commands support a preview mode, allowing you to inspect the underlying actions before they are executed.


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.

Architecture & Setup Map 🗺️

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.

PKGMGR Architecture

Diagram status: 12 December 2025

Always-up-to-date version: https://s.veen.world/pkgmgrmp


Installation ⚙️

PKGMGR can be installed using make. The setup mode defines which runtime layers are prepared.

Download

git clone https://github.com/kevinveenbirkenbach/package-manager.git
cd package-manager

Dependency installation (optional)

System dependencies required before running any make commands are installed via:

scripts/installation/dependencies.sh

The script detects and normalizes the OS and installs the required system-level dependencies accordingly.

Install

git clone https://github.com/kevinveenbirkenbach/package-manager.git
cd package-manager
make install

Setup modes

Command Prepares Use case
make setup Python venv and Nix Full development & CI
make setup-venv Python venv only Local user setup
Full setup (venv + Nix)
make setup

Use this for CI, servers, containers and full development workflows.

Venv-only setup
make setup-venv
source ~/.venvs/pkgmgr/bin/activate

Use this if you want PKGMGR isolated without Nix integration.


Alles klar 🙂 Hier ist der RUN-Abschnitt ohne Gedankenstriche, klar nach Nix, Docker und venv getrennt:


Run PKGMGR 🧰

PKGMGR can be executed in different environments. All modes expose the same CLI and commands.


Run via Nix (no installation)

nix run github:kevinveenbirkenbach/package-manager#pkgmgr -- --help

Run via Docker 🐳

PKGMGR can be executed inside Docker containers for CI, testing and isolated workflows.


Container images

One image per distribution, each installing PKGMGR as a distro-native package on top of the matching base image from base-images. Every image is a manifest list covering linux/amd64 and linux/arm64.

All images live under ghcr.io/kevinveenbirkenbach/:

Tag Contains
pkgmgr-<distro>:latest newest build for that distribution
pkgmgr-<distro>:<version> one release
pkgmgr-<distro>:stable newest release marked stable

<distro> is one of arch, debian, ubuntu, fedora, centos. The Arch image is published without the suffix as well, so pkgmgr:stable and pkgmgr-arch:stable are the same image.

For a clean environment that carries the system dependencies but no PKGMGR, pull base-<distro> from base-images directly.


Run examples

docker run --rm -it \
  -v "$PWD":/src \
  -w /src \
  ghcr.io/kevinveenbirkenbach/pkgmgr:stable \
  pkgmgr --help

Run via virtual environment (venv)

After activating the venv:

pkgmgr --help

This allows you to choose between zero install execution using Nix, fully prebuilt Docker environments or local isolated venv setups with identical command behavior.


License 📄

This project is licensed under the MIT License. See the LICENSE file for details.


Author 👤

Kevin Veen-Birkenbach https://www.veen.world

Metadata

Release files for kpmx 2.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for kpmx 2.0.4
File Size Uploaded Provenance
kpmx-2.0.4.tar.gz 139.2 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for kpmx 2.0.4
File Interpreter ABI Platform
kpmx-2.0.4-py3-none-any.whl Python 3 none any Details

Total release size: 357.2 kB

Release files / kpmx-2.0.4.tar.gz

Download URL kpmx-2.0.4.tar.gz
Size 139.2 kB
Tags Source
SHA-256 checksum
How to use checksums
5f18e36ce2a0fb8d68c6e5b5d4723245fb2da57227bd968f38f112ec64457718
BLAKE2b-256 checksum
How to use checksums
2dcc5ce40d6f59b6bfacc317835e17defe8756d2339abe5462fdc264a66f5ac6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / kpmx-2.0.4-py3-none-any.whl

Download URL kpmx-2.0.4-py3-none-any.whl
Size 218.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bb187f69d7fa59f7ec6a9c4f29a7d19bb47e4f4a72ba173e5c4f1db51c443823
BLAKE2b-256 checksum
How to use checksums
6ebfdef203ea3a616addede02dac01f74553781cf5789a45e212618a6a232925
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Security for kpmx 2.0.4

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A 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.

Release history Release notifications | RSS feed

This release

2.0.4 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page