- Add pyproject.toml to define package-manager as a Python application
- Declare setuptools build backend (setuptools.build_meta) and wheel
- Expose CLI entrypoint via [project.scripts] as `pkgmgr = pkgmgr.cli:main`
- Define PyYAML as a base runtime dependency
- Update flake.nix to build pkgmgr via python311Packages.buildPythonApplication
- Use format = "pyproject" and src = ./. (current git checkout)
- Add setuptools and wheel to nativeBuildInputs for the backend
- Add pyyaml to propagatedBuildInputs to match pyproject dependencies
- Provide a devShell that includes the built pkgmgr, git, and Ansible
- Expose `nix run .#pkgmgr` and `nix run .#default` as flake apps
- Fix Makefile install target for Nix shells
- Treat install as a no-op when IN_NIX_SHELL is set (skip venv / pip)
- In non-Nix environments, create ~/.venvs/pkgmgr, install deps, and
wire automatic activation into shell rc files
- Keep Arch/Manjaro-specific aur_builder/yay setup behind pacman check
- Adjust PKGBUILD prepare() to correctly copy the full project tree
- Stop excluding the top-level src directory from rsync
- Still exclude .git, .github, pkg, and srcpkg
This unifies the installation workflow across Arch, Nix, and local venvs,
and ensures pkgmgr builds cleanly inside the Docker-based Nix devShell tests.
Reference: ChatGPT-assisted refactor & debugging session on 2025-12-07.
https://chatgpt.com/share/6935ee1f-6c0c-800f-bb32-434c4051bd1e
69 lines
1.9 KiB
Bash
69 lines
1.9 KiB
Bash
# Maintainer: Kevin Veen-Birkenbach <info@veen.world>
|
|
|
|
pkgname=package-manager
|
|
pkgver=0.1.1
|
|
pkgrel=1
|
|
pkgdesc="Local-flake wrapper for Kevin's package-manager (Nix-based)."
|
|
arch=('any')
|
|
url="https://github.com/kevinveenbirkenbach/package-manager"
|
|
license=('MIT')
|
|
|
|
# Nix is the only runtime dependency; Python is provided by the Nix closure.
|
|
depends=('nix')
|
|
makedepends=('rsync')
|
|
|
|
install=${pkgname}.install
|
|
|
|
# Local source checkout — avoids the tarball requirement.
|
|
# This assumes you build the package from inside the main project repository.
|
|
source=()
|
|
sha256sums=()
|
|
|
|
# Local source directory name under $srcdir
|
|
_srcdir_name="source"
|
|
|
|
prepare() {
|
|
mkdir -p "$srcdir/$_srcdir_name"
|
|
rsync -a \
|
|
--exclude=".git" \
|
|
--exclude=".github" \
|
|
--exclude="pkg" \
|
|
--exclude="srcpkg" \
|
|
"$startdir/" "$srcdir/$_srcdir_name/"
|
|
}
|
|
|
|
build() {
|
|
cd "$srcdir/$_srcdir_name"
|
|
:
|
|
}
|
|
|
|
package() {
|
|
cd "$srcdir/$_srcdir_name"
|
|
|
|
# Install the wrapper into /usr/bin
|
|
install -Dm0755 "scripts/pkgmgr-wrapper.sh" \
|
|
"$pkgdir/usr/bin/pkgmgr"
|
|
|
|
# Install Nix init helper
|
|
install -Dm0755 "scripts/init-nix.sh" \
|
|
"$pkgdir/usr/lib/package-manager/init-nix.sh"
|
|
|
|
# Install the full repository into /usr/lib/package-manager
|
|
mkdir -p "$pkgdir/usr/lib/package-manager"
|
|
|
|
# Copy entire project tree from our local source checkout
|
|
cp -a . "$pkgdir/usr/lib/package-manager/"
|
|
|
|
# Remove packaging-only and development artefacts from the installed tree
|
|
rm -rf \
|
|
"$pkgdir/usr/lib/package-manager/.git" \
|
|
"$pkgdir/usr/lib/package-manager/.github" \
|
|
"$pkgdir/usr/lib/package-manager/tests" \
|
|
"$pkgdir/usr/lib/package-manager/PKGBUILD" \
|
|
"$pkgdir/usr/lib/package-manager/Dockerfile" \
|
|
"$pkgdir/usr/lib/package-manager/debian" \
|
|
"$pkgdir/usr/lib/package-manager/.gitignore" \
|
|
"$pkgdir/usr/lib/package-manager/__pycache__" \
|
|
"$pkgdir/usr/lib/package-manager/.gitkeep"
|
|
}
|