Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / development / tools / analysis / rizin / cutter.nix
blobf274bff6cca7a5f737d63a46cf1abe16499fd30e
1 { fetchFromGitHub, lib, mkDerivation
2 # for passthru.plugins
3 , pkgs
4 # nativeBuildInputs
5 , qmake, pkg-config, cmake
6 # Qt
7 , qtbase, qtsvg, qtwebengine, qttools
8 # buildInputs
9 , graphviz
10 , rizin
11 , python3
12 , wrapQtAppsHook
15 let cutter = mkDerivation rec {
16   pname = "cutter";
17   version = "2.3.2";
19   src = fetchFromGitHub {
20     owner = "rizinorg";
21     repo = "cutter";
22     rev = "v${version}";
23     hash = "sha256-88yIqFYIv7o6aC2YSJwWJ46fZJBnOmifv+SirsfS4tw=";
24     fetchSubmodules = true;
25   };
27   nativeBuildInputs = [ cmake qmake pkg-config python3 wrapQtAppsHook ];
28   propagatedBuildInputs = [ python3.pkgs.pyside2 ];
29   buildInputs = [ graphviz qtbase qttools qtsvg qtwebengine rizin python3 ];
31   cmakeFlags = [
32     "-DCUTTER_USE_BUNDLED_RIZIN=OFF"
33     "-DCUTTER_ENABLE_PYTHON=ON"
34     "-DCUTTER_ENABLE_PYTHON_BINDINGS=ON"
35     "-DCUTTER_ENABLE_GRAPHVIZ=ON"
36   ];
38   preBuild = ''
39     qtWrapperArgs+=(--prefix PYTHONPATH : "$PYTHONPATH")
40   '';
42   passthru = rec {
43     plugins = rizin.plugins // {
44       rz-ghidra = rizin.plugins.rz-ghidra.override {
45         inherit cutter qtbase qtsvg;
46         enableCutterPlugin = true;
47       };
48     };
49     withPlugins = filter: pkgs.callPackage ./wrapper.nix {
50       inherit rizin cutter;
51       isCutter = true;
52       plugins = filter plugins;
53     };
54   };
56   meta = with lib; {
57     description = "Free and Open Source Reverse Engineering Platform powered by rizin";
58     homepage = src.meta.homepage;
59     license = licenses.gpl3;
60     mainProgram = "cutter";
61     maintainers = with maintainers; [ mic92 dtzWill ];
62   };
63 }; in cutter