Kevin Veen-Birkenbach 08ab9fb142
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
feat(ci): stabilize virgin Arch tests with Makefile install/setup and Nix Git safety
* Switch virgin root/user workflows to use *make install* + *make setup/setup-venv*
* Add Git *safe.directory /src* to avoid flake evaluation failures on mounted repos
* Enable Nix flake run in workflows and prepare */nix* for non-root execution
* Refactor Arch packaging to build in an isolated */tmp* directory via *aur_builder*
* Rename installer scripts (*run-** → *dependencies.sh* / *package.sh*) and adjust Docker entry + env var to *REINSTALL_PKGMGR*

https://chatgpt.com/share/693c29d9-9b28-800f-a549-5661c783d968
2025-12-12 15:42:25 +01:00
2025-12-12 00:30:17 +01:00
2025-12-12 12:32:33 +01:00
2025-12-12 12:32:33 +01:00
2025-03-04 13:17:09 +01:00
2025-12-12 12:32:33 +01:00

Package Manager 🤖📦

PKGMGR Banner

GitHub Sponsors Patreon Buy Me a Coffee PayPal GitHub license GitHub repo size

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


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 pkgmgr executable 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 config
  • pkgmgr update --all --clone-mode https update every repository
  • pkgmgr release patch --preview simulate a patch release
  • pkgmgr version --all show version information for all repositories
  • pkgmgr 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

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