From 6fd417b9257b4968c6a0592d9d513f23b25d52d7 Mon Sep 17 00:00:00 2001 From: Brian Picciano Date: Sun, 16 Jun 2024 23:25:23 +0200 Subject: [PATCH] WIP --- default.nix | 9 ++++--- dist/linux/arch.nix | 65 +++++++++++++++++++++++++++++++++++++++++++++ release.nix | 12 ++++++--- 3 files changed, 79 insertions(+), 7 deletions(-) create mode 100644 dist/linux/arch.nix diff --git a/default.nix b/default.nix index c595ae9..08900c9 100644 --- a/default.nix +++ b/default.nix @@ -157,13 +157,14 @@ in rec { unset SOURCE_DATE_EPOCH appimagetool ./isle.AppDir - - mkdir -p "$out"/bin - chmod +w "$out" -R - mv Isle-* "$out"/bin/isle + mv Isle-* "$out" ''; }; + archPkg = ((import ./dist/linux/arch.nix) { + inherit pkgs buildSystem releaseName appImage; + }); + tests = pkgs.writeScript "isle-tests" '' export PATH=${pkgs.lib.makeBinPath [ appImage diff --git a/dist/linux/arch.nix b/dist/linux/arch.nix new file mode 100644 index 0000000..378d206 --- /dev/null +++ b/dist/linux/arch.nix @@ -0,0 +1,65 @@ +{ + 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 Isle project provides the foundation for an autonomous community cloud infrastructure." + arch=('${cpuArch}') + url="https://code.betamike.com/micropelago/isle" + license=('AGPLv3') + source=("src.tar.zst") + md5sums=('SKIP') + + package() { + cp -r etc "$pkgdir"/etc + cp -r usr "$pkgdir"/usr + } + ''; + +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; + dontUnpack = true; + + buildPhase = '' + mkdir -p root/usr/bin/ + cp "$src" root/usr/bin/isle + + mkdir -p root/etc/isle/ + cp "$appDir"/etc/daemon.yml root/etc/isle/daemon.yml + + cp $pkgbuild PKGBUILD + + tar -cf src.tar.zst --zstd --mode=a+rX,u+w -C root . + ls -lh ./root/usr/bin + + PKGEXT=".pkg.tar.zst" makepkg --config ${pkgs.pacman}/etc/makepkg.conf + ls -lh ./ + ''; + + installPhase = '' + mkdir -p $out + cp *.pkg.tar.zst $out/ + ''; + + fixupPhase = ""; + } diff --git a/release.nix b/release.nix index 7dd99e2..6ea91d5 100644 --- a/release.nix +++ b/release.nix @@ -16,15 +16,21 @@ inherit buildSystem hostSystem releaseName revision; }).appImage; + archPkg = ((import ./dist/linux/arch.nix) { + inherit pkgs buildSystem releaseName appImage; + }); + in pkgs.stdenv.mkDerivation { name = "isle-release-${hostSystem}"; - inherit releaseName appImage hostSystem; + inherit releaseName hostSystem; + inherit appImage archPkg; builder = builtins.toFile "build.sh" '' source $stdenv/setup mkdir -p "$out"/ - cp "$appImage"/bin/isle "$out"/isle-$releaseName-$hostSystem + cp "$appImage" "$out"/isle-$releaseName-$hostSystem.AppImage + cp "$archPkg"/*.tar.zst "$out"/isle-$releaseName-$hostSystem.pkg.tar.zst ''; }; @@ -43,7 +49,7 @@ in mkdir -p "$out" for p in $releases; do - cp "$p"/isle-* "$out"/ + cp "$p"/* "$out"/ done (cd "$out" && sha256sum * > sha256.txt)