{ pkgs, hostSystem, releaseName, buildNumber ? "1", appDir, }: let cpuArch = (pkgs.lib.systems.parse.mkSystemFromString hostSystem).cpu.name; pkgbuild = pkgs.writeText "isle-arch-PKGBUILD-${releaseName}-${cpuArch}" '' pkgname=isle pkgver=${builtins.replaceStrings ["-"] ["_"] releaseName} pkgrel=${buildNumber} pkgdesc="The foundation for an autonomous community cloud infrastructure" arch=('${cpuArch}') url="https://code.betamike.com/micropelago/isle" license=('AGPL-3.0-or-later') source=('src.tar.zst') md5sums=('SKIP') package() { cp -r etc "$pkgdir"/etc cp -r usr "$pkgdir"/usr } ''; linuxRoot = (import ../default.nix).buildRoot { inherit pkgs appDir; }; in pkgs.stdenv.mkDerivation { name = "isle-arch-pkg-${releaseName}-${cpuArch}"; nativeBuildInputs = [ pkgs.zstd pkgs.pacman pkgs.fakeroot pkgs.libarchive ]; inherit pkgbuild; src = linuxRoot; dontUnpack = true; buildPhase = '' tar -cf src.tar.zst --zstd --mode=a+rX,u+w -C "$src" . cp $pkgbuild PKGBUILD PKGEXT=".pkg.tar.zst" CARCH="${cpuArch}" makepkg \ --nodeps \ --config ${pkgs.pacman}/etc/makepkg.conf ''; installPhase = '' mkdir -p $out cp *.pkg.tar.zst $out/ ''; # NOTE if https://github.com/NixOS/nixpkgs/issues/241911 is ever addressed # it'd be nice to add an automatic check using namcap here. }