1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
{
autoPatchelfHook,
copyDesktopItems,
curl,
dbus,
fetchurl,
fontconfig,
freetype,
lib,
libdrm,
libGLU,
libxkbcommon,
makeDesktopItem,
stdenv,
unzip,
wayland,
libxcb-image,
libxcb-keysyms,
libxcb-render-util,
libxcb-wm,
}:
let
version = "6.0.10601";
sources = {
x86_64-linux = {
url = "https://github.com/Vector35/binaryninja-api/releases/download/stable/${version}/binaryninja_free_linux.zip";
hash = "sha256-PoucWGGr5umwTIa1+cStLchs7ep5ty17Cu4f3PfOkdY=";
};
aarch64-linux = {
url = "https://github.com/Vector35/binaryninja-api/releases/download/stable/${version}/binaryninja_free_linux-arm.zip";
hash = "sha256-G3gSWFa+Rh9zJMoA9QyH8XiIXsEK0YVXgHDtmR6X11o=";
};
};
in
stdenv.mkDerivation (finalAttrs: {
pname = "binaryninja-free";
inherit version;
src = fetchurl (
sources.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}")
);
icon = fetchurl {
url = "https://raw.githubusercontent.com/Vector35/binaryninja-api/448f40be71dffa86a6581c3696627ccc1bdf74f2/docs/img/logo.png";
hash = "sha256-TzGAAefTknnOBj70IHe64D6VwRKqIDpL4+o9kTw0Mn4=";
};
desktopItems = [
(makeDesktopItem {
name = "com.vector35.binaryninja";
desktopName = "Binary Ninja Free";
comment = "A Reverse Engineering Platform";
exec = "binaryninja";
icon = "binaryninja";
mimeTypes = [
"application/x-binaryninja"
"x-scheme-handler/binaryninja"
];
categories = [ "Utility" ];
})
];
nativeBuildInputs = [
unzip
autoPatchelfHook
copyDesktopItems
];
buildInputs = [
curl
dbus
fontconfig
freetype
libdrm
libGLU
libxkbcommon
stdenv.cc.cc.lib
wayland
libxcb-image
libxcb-keysyms
libxcb-render-util
libxcb-wm
];
installPhase = ''
runHook preInstall
mkdir -p $out/
cp -R . $out/
mkdir $out/bin
ln -s $out/binaryninja $out/bin/binaryninja
install -Dm644 ${finalAttrs.icon} $out/share/icons/hicolor/256x256/apps/binaryninja.png
runHook postInstall
'';
meta = {
changelog = "https://binary.ninja/changelog/#${
lib.replaceStrings [ "." ] [ "-" ] finalAttrs.version
}";
description = "Interactive decompiler, disassembler, debugger";
homepage = "https://binary.ninja/";
license = {
fullName = "Binary Ninja Free Software License";
url = "https://docs.binary.ninja/about/license.html#free-license";
free = false;
};
mainProgram = "binaryninja";
maintainers = with lib.maintainers; [
scoder12
timschumi
];
platforms = [
"x86_64-linux"
"aarch64-linux"
];
};
})
|