107 lines
2.3 KiB
Nix
107 lines
2.3 KiB
Nix
#
|
|
# Binary ninja.
|
|
#
|
|
# vim: et:ts=2:sw=2:
|
|
#
|
|
{
|
|
lib,
|
|
stdenv,
|
|
autoPatchelfHook,
|
|
makeWrapper,
|
|
writeText,
|
|
unzip,
|
|
libGL,
|
|
xorg,
|
|
glib,
|
|
fontconfig,
|
|
dbus,
|
|
xkeyboard_config,
|
|
libxkbcommon,
|
|
wayland,
|
|
python3,
|
|
svd2py,
|
|
qt6
|
|
}:
|
|
let
|
|
desktopFile = writeText "binary-ninja.desktop" ''
|
|
[Desktop Entry]
|
|
Type=Application
|
|
Name=Binary Ninja
|
|
Exec=/run/current-system/sw/bin/binaryninja
|
|
Icon=/run/current-system/sw/share/icons/binary-ninja.png
|
|
Categories=Development;
|
|
'';
|
|
|
|
# Additional packages to put in Binja's python envrioment.
|
|
additional-python-packages = pypkgs: with pypkgs; [
|
|
click
|
|
colorama
|
|
pyyaml
|
|
svd2py
|
|
];
|
|
|
|
# Python specialized for our environment.
|
|
binja-python = python3.withPackages additional-python-packages;
|
|
|
|
binary-ninja = stdenv.mkDerivation {
|
|
pname = "binary-ninja";
|
|
version = "4.0.5902";
|
|
|
|
buildInputs = [
|
|
autoPatchelfHook
|
|
qt6.wrapQtAppsHook
|
|
makeWrapper
|
|
unzip
|
|
libGL
|
|
stdenv.cc.cc.lib
|
|
glib
|
|
libxkbcommon
|
|
fontconfig
|
|
xorg.libXi
|
|
xorg.libXrender
|
|
xorg.libxcb
|
|
xorg.xcbutil
|
|
xorg.xcbutilwm
|
|
xorg.xcbutilimage
|
|
xorg.xcbutilkeysyms
|
|
xorg.xcbutilrenderutil
|
|
qt6.qtdeclarative
|
|
wayland
|
|
binja-python
|
|
dbus
|
|
];
|
|
|
|
propogatedBuildInputs = (additional-python-packages python3.pkgs);
|
|
|
|
# Use our local zip directly.
|
|
dontBuild = true;
|
|
src = if stdenv.isAarch64 then
|
|
../proprietary/binja/binaryninja_personal_linux_aarch64.zip
|
|
else
|
|
../proprietary/binja/binaryninja_personal_linux_x64.zip;
|
|
|
|
|
|
installPhase = ''
|
|
mkdir -p $out/opt
|
|
cp -r * $out/opt
|
|
chmod +x $out/opt/binaryninja
|
|
|
|
# Icons.
|
|
mkdir -p $out/share/icons
|
|
cp -r docs/img/logo.png $out/share/icons/binary-ninja.png
|
|
|
|
# Application file.
|
|
mkdir -p $out/share/applications
|
|
cp ${desktopFile} $out/share/applications/binary-ninja.desktop
|
|
|
|
mkdir -p $out/bin
|
|
makeWrapper $out/opt/binaryninja \
|
|
$out/bin/binaryninja \
|
|
--set "PYTHONHOME" "${binja-python}" \
|
|
--prefix "QT_XKB_CONFIG_ROOT" ":" "${xkeyboard_config}/share/X11/xkb" \
|
|
--prefix "LD_LIBRARY_PATH" ":" "${lib.makeLibraryPath binary-ninja.buildInputs}"
|
|
ln -s $out/bin/binaryninja $out/bin/binary-ninja
|
|
'';
|
|
};
|
|
in
|
|
binary-ninja
|