87 lines
2.2 KiB
Nix
87 lines
2.2 KiB
Nix
{
|
|
pkgs,
|
|
hostSystem,
|
|
releaseName,
|
|
appImage,
|
|
}: 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=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;
|
|
defaultDaemonYml = ../../../go/daemon/daecommon/daemon.yml;
|
|
systemdService = ../isle.service;
|
|
dontUnpack = true;
|
|
|
|
buildPhase = ''
|
|
mkdir -p root/etc/isle/
|
|
cp "$defaultDaemonYml" 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"/bin/isle isle
|
|
|
|
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.
|
|
}
|