- Replaced all `X | None` type hints with `Optional[X]` - Adjusted typing imports across modules - Fixed import order and removed invalid future-import placements - Ensured code runs correctly on Python 3.9 https://chatgpt.com/share/693c58e1-ce70-800f-9088-5864571e024a
Package Manager 🤖📦
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.
- Nix flakes (
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:
- Clone and mirror repositories.
- Run tests and builds through
makeor Nix. - Bump versions, update changelogs and tags.
- Build distro-specific packages.
- 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:
- 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.
Diagram status: 12 December 2025 Always-up-to-date version: https://s.veen.world/pkgmgrmp
Installation ⚙️
1. Get the latest stable version
For a stable setup, use the latest tagged release (the tag pointed to by
latest):
git clone https://github.com/kevinveenbirkenbach/package-manager.git
cd package-manager
# Optional but recommended: checkout the latest stable tag
git fetch --tags
git checkout "$(git describe --tags --abbrev=0)"
2. Install via Make
The project ships with a Makefile that encapsulates the typical installation flow. On most systems you only need:
# Ensure make, Python and pip are installed via your distro package manager
# (e.g. pacman -S make python python-pip, apt install make python3-pip, ...)
make install
This will:
- create or reuse a Python virtual environment,
- install PKGMGR (and its Python dependencies) into that environment,
- expose the
pkgmgrexecutable on your PATH (usually via~/.local/bin), - prepare Nix-based integration where available so PKGMGR can build and manage packages distribution-independently.
For development use, you can also run:
make setup
which prepares the environment and leaves you with a fully wired development workspace (including Nix, tests and scripts).
Usage 🧰
After installation, the main entry point is:
pkgmgr --help
This prints a list of all available subcommands, for example:
pkgmgr list --all– show all repositories in the configpkgmgr update --all --clone-mode https– update every repositorypkgmgr release patch --preview– simulate a patch releasepkgmgr version --all– show version information for all repositoriespkgmgr mirror setup --preview --all– prepare Git mirrors (no changes in preview)pkgmgr make install --preview pkgmgr– preview make install for the pkgmgr repo
The help for each command is available via:
pkgmgr <command> --help
License 📄
This project is licensed under the MIT License. See the LICENSE file for details.
Author 👤
Kevin Veen-Birkenbach https://www.veen.world

