diff --git a/pkgs/development/tools/analysis/rizin/cutter.nix b/pkgs/development/tools/analysis/rizin/cutter.nix index a7f8010d996b..bb8ecb6e196a 100644 --- a/pkgs/development/tools/analysis/rizin/cutter.nix +++ b/pkgs/development/tools/analysis/rizin/cutter.nix @@ -40,7 +40,12 @@ let cutter = mkDerivation rec { ''; passthru = rec { - inherit (rizin) plugins; + plugins = rizin.plugins // { + rz-ghidra = rizin.plugins.rz-ghidra.override { + inherit cutter qtbase qtsvg; + enableCutterPlugin = true; + }; + }; withPlugins = filter: pkgs.callPackage ./wrapper.nix { unwrapped = cutter; inherit rizin; diff --git a/pkgs/development/tools/analysis/rizin/default.nix b/pkgs/development/tools/analysis/rizin/default.nix index c7ff81948765..46fe132a463e 100644 --- a/pkgs/development/tools/analysis/rizin/default.nix +++ b/pkgs/development/tools/analysis/rizin/default.nix @@ -109,6 +109,10 @@ let rizin = stdenv.mkDerivation rec { jsdec = pkgs.callPackage ./jsdec.nix { inherit rizin openssl; }; + rz-ghidra = pkgs.libsForQt5.callPackage ./rz-ghidra.nix { + inherit rizin openssl; + enableCutterPlugin = false; + }; # sigdb isn't a real plugin, but it's separated from the main rizin # derivation so that only those who need it will download it sigdb = pkgs.callPackage ./sigdb.nix { }; diff --git a/pkgs/development/tools/analysis/rizin/rz-ghidra.nix b/pkgs/development/tools/analysis/rizin/rz-ghidra.nix new file mode 100644 index 000000000000..d349a33af814 --- /dev/null +++ b/pkgs/development/tools/analysis/rizin/rz-ghidra.nix @@ -0,0 +1,62 @@ +{ lib +, stdenv +, fetchFromGitHub +, fetchpatch +, cmake +# buildInputs +, rizin +, openssl +, pugixml +# optional buildInputs +, enableCutterPlugin ? true +, cutter +, qtbase +, qtsvg +}: + +stdenv.mkDerivation rec { + pname = "rz-ghidra"; + version = "0.6.0"; + + src = fetchFromGitHub { + owner = "rizinorg"; + repo = "rz-ghidra"; + rev = "v${version}"; + hash = "sha256-tQAurouRr6fP1tbIkfd0a9UfeYcwiU1BpjOTcooXkT0="; + fetchSubmodules = true; + }; + + patches = [ + (fetchpatch { + url = "https://github.com/rizinorg/rz-ghidra/pull/327/commits/eba20e2c743ed3dfc5d1be090a5018f7267baa49.patch"; + hash = "sha256-aoXFClXZBcOnHl+6lLYrnui7sRb3cRJQhQfNDLxHtcs="; + }) + ]; + + nativeBuildInputs = [ cmake ]; + buildInputs = [ + openssl + pugixml + rizin + ] ++ lib.optionals enableCutterPlugin [ + cutter + qtbase + qtsvg + ]; + + dontWrapQtApps = true; + + cmakeFlags = [ + "-DUSE_SYSTEM_PUGIXML=ON" + ] ++ lib.optionals enableCutterPlugin [ + "-DBUILD_CUTTER_PLUGIN=ON" + "-DCUTTER_INSTALL_PLUGDIR=share/rizin/cutter/plugins/native" + ]; + + meta = with lib; { + description = "Deep ghidra decompiler and sleigh disassembler integration for rizin"; + homepage = src.meta.homepage; + license = licenses.lgpl3; + maintainers = with maintainers; [ chayleaf ]; + }; +}