Skip to main content

Kevin's package-manager tool (pkgmgr)

Project description

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 types

Two container types are available.

Image type Contains Typical use
Virgin Base OS + system dependencies Clean test environments
Stable PKGMGR + Nix (flakes enabled) Ready-to-use workflows

Example images:

  • Virgin: pkgmgr-arch-virgin
  • Stable: ghcr.io/kevinveenbirkenbach/pkgmgr:stable

Use virgin images for isolated test runs, use the stable image for fast, reproducible execution.


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

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

kpmx-1.12.5.tar.gz (122.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kpmx-1.12.5-py3-none-any.whl (198.2 kB view details)

Uploaded Python 3

File details

Details for the file kpmx-1.12.5.tar.gz.

File metadata

  • Download URL: kpmx-1.12.5.tar.gz
  • Upload date:
  • Size: 122.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for kpmx-1.12.5.tar.gz
Algorithm Hash digest
SHA256 4e53d0c62d33cdcd6b2255f26cba2f39bd7f8660b7d3c0fe2e3f5fcff3cd4849
MD5 eed159e9d97092440cb973d6155db57b
BLAKE2b-256 29b2cffd2e62ecbe7abcb011d50667c57e8220fcf0c698f9d302f32f45ecba4b

See more details on using hashes here.

File details

Details for the file kpmx-1.12.5-py3-none-any.whl.

File metadata

  • Download URL: kpmx-1.12.5-py3-none-any.whl
  • Upload date:
  • Size: 198.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for kpmx-1.12.5-py3-none-any.whl
Algorithm Hash digest
SHA256 69c456332cea9d1817af7fb11dc3b9a5e7fa766ee8f5dc8d5b5d0d49cffbacd2
MD5 11e6045fb19dc2e5d537d84cb737eb29
BLAKE2b-256 3ba64676d099d0d5054fc33d804a6cbab55986eaf57c241e2185e4fcdaf621fe

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page