Kevin Veen-Birkenbach 2385601ed5
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
Persist CA bundle configuration on CentOS for Nix and HTTPS tools
Move CA bundle detection from the Docker entrypoint to CentOS dependencies and persist it system-wide.
This ensures Nix, Git, curl, and Python HTTPS access works in virgin environments by configuring `/etc/profile.d` and `/etc/nix/nix.conf`.
Removes runtime-only CA exports from the container entrypoint and makes the setup reproducible and distro-correct.

https://chatgpt.com/share/693c5ddf-3260-800f-ac94-38c635dba307
2025-12-12 19:24:12 +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 18:07:25 +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%