Kevin Veen-Birkenbach b40787ffc5
Some checks failed
Mark stable commit / test-unit (push) Has been cancelled
Mark stable commit / test-integration (push) Has been cancelled
Mark stable commit / test-env-virtual (push) Has been cancelled
Mark stable commit / test-env-nix (push) Has been cancelled
Mark stable commit / test-e2e (push) Has been cancelled
Mark stable commit / test-virgin-user (push) Has been cancelled
Mark stable commit / test-virgin-root (push) Has been cancelled
Mark stable commit / mark-stable (push) Has been cancelled
ci: publish GHCR images after successful mark-stable workflow
Trigger container publishing via workflow_run on "Mark stable commit", gate on success,
checkout the workflow_run head SHA, force-refresh tags, and derive version from the v* tag
pointing at the tested commit to correctly detect and publish stable images.

https://chatgpt.com/share/693c836b-0b00-800f-9536-9e273abd0fb5
2025-12-12 22:50:33 +01:00
2025-12-12 21:16:27 +01:00
2025-12-12 00:30:17 +01:00
2025-12-12 22:20:07 +01:00
2025-12-12 22:20:07 +01:00
2025-03-04 13:17:09 +01:00
2025-12-12 22:20:07 +01:00
2025-12-12 21:37:50 +01:00

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:

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


Features 🚀

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.


Architecture & Setup Map 🗺️

The following diagram gives a full overview of:

  • PKGMGRs 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


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.


Installation ⚙️

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


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.


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

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

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.


Run without installation (Nix)

Run PKGMGR directly via Nix Flakes.

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

Example:

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

Usage 🧰

After installation, the main entry point is:

pkgmgr --help

This prints a list of all available subcommands. The help for each command is available via:


License 📄

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


Author 👤

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

Description
No description provided
Readme MIT 9 MiB
Languages
Python 91.4%
Shell 7.2%
Makefile 0.7%
Nix 0.4%
Dockerfile 0.2%