archipelago: avoid bwrap (#441078)

This commit is contained in:
dish
2025-10-20 13:32:40 +00:00
committed by GitHub
+72 -20
View File
@@ -1,35 +1,87 @@
{
lib,
pkgs,
stdenvNoCC,
appimageTools,
autoPatchelfHook,
makeWrapper,
gobject-introspection,
openssl,
lttng-ust,
mtdev,
xsel,
xclip,
zenity,
fetchurl,
nix-update-script,
extraPackages ? [ ],
}:
let
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "archipelago";
version = "0.6.3";
src = fetchurl {
url = "https://github.com/ArchipelagoMW/Archipelago/releases/download/${version}/Archipelago_${version}_linux-x86_64.AppImage";
url = "https://github.com/ArchipelagoMW/Archipelago/releases/download/${finalAttrs.version}/Archipelago_${finalAttrs.version}_linux-x86_64.AppImage";
hash = "sha256-PetlGYsdhyvThIFqy+7wbPLAXDcgN2Kcl2WF3rta8PA=";
};
appimageContents = appimageTools.extractType2 { inherit pname version src; };
in
appimageTools.wrapType2 {
inherit pname version src;
extraPkgs =
pkgs:
[
pkgs.xsel
pkgs.xclip
pkgs.mtdev
]
++ extraPackages;
extraInstallCommands = ''
install -Dm444 ${appimageContents}/archipelago.desktop -t $out/share/applications
dontUnpack = true;
nativeBuildInputs = [
autoPatchelfHook
makeWrapper
];
buildInputs = finalAttrs.runtimeDependencies;
runtimeDependencies = [
gobject-introspection
lttng-ust
openssl
]
++ appimageTools.defaultFhsEnvArgs.targetPkgs pkgs
++ appimageTools.defaultFhsEnvArgs.multiPkgs pkgs;
libraryPath = lib.makeLibraryPath [
mtdev
];
binPath = lib.makeBinPath [
xsel
xclip
zenity
];
appimageContents = appimageTools.extractType2 { inherit (finalAttrs) pname version src; };
installPhase = ''
runHook preInstall
mkdir -p $out/bin
cp ${finalAttrs.appimageContents}/AppRun $out/bin/archipelago
mkdir -p $out/lib/opt
cp -r ${finalAttrs.appimageContents}/opt/* $out/lib/opt
wrapProgram $out/bin/archipelago \
--set APPDIR $out/lib \
--prefix LD_LIBRARY_PATH : "${finalAttrs.libraryPath}" \
--prefix PATH : "${finalAttrs.binPath}"
install -Dm444 ${finalAttrs.appimageContents}/archipelago.desktop -t $out/share/applications
substituteInPlace $out/share/applications/archipelago.desktop \
--replace-fail 'opt/Archipelago/ArchipelagoLauncher' "archipelago"
cp -r ${appimageContents}/usr/share/icons $out/share
cp -r ${finalAttrs.appimageContents}/usr/share/icons $out/share
runHook postInstall
'';
preFixup = ''
patchelf \
--replace-needed libcrypto.so.1.0.0 libcrypto.so \
--replace-needed libssl.so.1.0.0 libssl.so \
$out/lib/opt/Archipelago/EnemizerCLI/System.Security.Cryptography.Native.OpenSsl.so
patchelf --replace-needed liblttng-ust.so.0 liblttng-ust.so \
$out/lib/opt/Archipelago/EnemizerCLI/libcoreclrtraceptprovider.so
'';
passthru.updateScript = nix-update-script { };
@@ -37,7 +89,7 @@ appimageTools.wrapType2 {
meta = {
description = "Multi-Game Randomizer and Server";
homepage = "https://archipelago.gg";
changelog = "https://github.com/ArchipelagoMW/Archipelago/releases/tag/${version}";
changelog = "https://github.com/ArchipelagoMW/Archipelago/releases/tag/${finalAttrs.version}";
license = lib.licenses.mit;
mainProgram = "archipelago";
maintainers = with lib.maintainers; [
@@ -46,4 +98,4 @@ appimageTools.wrapType2 {
];
platforms = lib.platforms.linux;
};
}
})