87 lines
2.1 KiB
Nix
87 lines
2.1 KiB
Nix
|
{
|
||
|
pkgs,
|
||
|
buildSystem,
|
||
|
releaseName,
|
||
|
appImage,
|
||
|
}: let
|
||
|
|
||
|
cpuArch = (pkgs.lib.systems.parse.mkSystemFromString buildSystem).cpu.name;
|
||
|
|
||
|
pkgbuild = pkgs.writeText "isle-arch-PKGBUILD-${releaseName}-${cpuArch}" ''
|
||
|
pkgname=isle
|
||
|
pkgver=${releaseName}
|
||
|
pkgrel=0
|
||
|
pkgdesc="The foundation for an autonomous community cloud infrastructure."
|
||
|
arch=('${cpuArch}')
|
||
|
url="https://code.betamike.com/micropelago/isle"
|
||
|
license=('AGPL-3.0-or-later')
|
||
|
|
||
|
depends=(
|
||
|
'fuse2'
|
||
|
)
|
||
|
|
||
|
# The appImage is deliberately kept separate from the src.tar.zst. For some
|
||
|
# reason including the appImage within the archive results in a large part
|
||
|
# of the binary being stripped away and some weird skeleton appImage comes
|
||
|
# out the other end.
|
||
|
source=('isle' 'src.tar.zst')
|
||
|
md5sums=('SKIP' 'SKIP')
|
||
|
noextract=('isle')
|
||
|
|
||
|
package() {
|
||
|
cp -r etc "$pkgdir"/etc
|
||
|
cp -r usr "$pkgdir"/usr
|
||
|
|
||
|
mkdir -p "$pkgdir"/usr/bin/
|
||
|
cp isle "$pkgdir"/usr/bin/
|
||
|
}
|
||
|
'';
|
||
|
|
||
|
in
|
||
|
pkgs.stdenv.mkDerivation {
|
||
|
name = "isle-arch-pkg-${releaseName}-${cpuArch}";
|
||
|
|
||
|
nativeBuildInputs = [
|
||
|
pkgs.zstd
|
||
|
pkgs.pacman
|
||
|
pkgs.fakeroot
|
||
|
pkgs.libarchive
|
||
|
];
|
||
|
|
||
|
inherit pkgbuild;
|
||
|
src = appImage;
|
||
|
appDir = ../../../AppDir;
|
||
|
systemdService = ../isle.service;
|
||
|
dontUnpack = true;
|
||
|
|
||
|
buildPhase = ''
|
||
|
mkdir -p root/etc/isle/
|
||
|
cp "$appDir"/etc/daemon.yml root/etc/isle/daemon.yml
|
||
|
|
||
|
mkdir -p root/usr/lib/sysusers.d/
|
||
|
cat >root/usr/lib/sysusers.d/isle.conf <<EOF
|
||
|
u isle - "isle Daemon"
|
||
|
EOF
|
||
|
|
||
|
mkdir -p root/usr/lib/systemd/system
|
||
|
cp "$systemdService" root/usr/lib/systemd/system/isle.service
|
||
|
|
||
|
cp $pkgbuild PKGBUILD
|
||
|
|
||
|
tar -cf src.tar.zst --zstd --mode=a+rX,u+w -C root .
|
||
|
cp "$src" isle
|
||
|
|
||
|
PKGEXT=".pkg.tar.zst" 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.
|
||
|
}
|