From 9d42d525a8529d1d56e7eb6b52b6d79071e26a5a Mon Sep 17 00:00:00 2001 From: xenia Date: Sat, 13 Sep 2025 23:45:17 -0400 Subject: [PATCH] fix extension build --- .../ghidra/build-extension.nix | 53 +++++++++++-------- .../ghidra/with-extensions.nix | 6 ++- 2 files changed, 34 insertions(+), 25 deletions(-) diff --git a/pkgs/reverse-engineering/ghidra/build-extension.nix b/pkgs/reverse-engineering/ghidra/build-extension.nix index 7a96610..6905756 100644 --- a/pkgs/reverse-engineering/ghidra/build-extension.nix +++ b/pkgs/reverse-engineering/ghidra/build-extension.nix @@ -21,16 +21,17 @@ let platforms = oldMeta.platforms or ghidra.meta.platforms; }; - buildGhidraExtension = - { - pname, - nativeBuildInputs ? [ ], - meta ? { }, - ... - }@args: - stdenv.mkDerivation ( - args - // { + buildGhidraExtension = lib.extendMkDerivation { + constructDrv = stdenv.mkDerivation; + extendDrvArgs = + finalAttrs: + { + pname, + nativeBuildInputs ? [ ], + meta ? { }, + ... + }@args: + { nativeBuildInputs = nativeBuildInputs ++ [ unzip jdk @@ -58,22 +59,28 @@ let mkdir -p $out/lib/ghidra/Ghidra/Extensions unzip -d $out/lib/ghidra/Ghidra/Extensions dist/*.zip + # Prevent attempted creation of plugin lock files in the Nix store. + for i in $out/lib/ghidra/Ghidra/Extensions/*; do + touch "$i/.dbDirLock" + done + runHook postInstall ''; meta = metaCommon meta; - } - ); + }; + }; - buildGhidraScripts = - { - pname, - meta ? { }, - ... - }@args: - stdenv.mkDerivation ( - args - // { + buildGhidraScripts = lib.extendMkDerivation { + constructDrv = stdenv.mkDerivation; + extendDrvArgs = + finalAttrs: + { + pname, + meta ? { }, + ... + }@args: + { installPhase = '' runHook preInstall @@ -95,8 +102,8 @@ let ''; meta = metaCommon meta; - } - ); + }; + }; in { inherit buildGhidraExtension buildGhidraScripts; diff --git a/pkgs/reverse-engineering/ghidra/with-extensions.nix b/pkgs/reverse-engineering/ghidra/with-extensions.nix index 3ccf642..c4c0bb4 100644 --- a/pkgs/reverse-engineering/ghidra/with-extensions.nix +++ b/pkgs/reverse-engineering/ghidra/with-extensions.nix @@ -29,8 +29,10 @@ let nativeBuildInputs = [ makeBinaryWrapper ] ++ lib.optional stdenv.hostPlatform.isDarwin desktopToDarwinBundle; - postBuild = - '' + postBuild = '' + # Prevent attempted creation of plugin lock files in the Nix store. + touch $out/lib/ghidra/Ghidra/.dbDirLock + makeWrapper '${ghidra}/bin/ghidra' "$out/bin/ghidra" \ --set NIX_GHIDRAHOME "$out/lib/ghidra/Ghidra" makeWrapper '${ghidra}/bin/ghidra-analyzeHeadless' "$out/bin/ghidra-analyzeHeadless" \