diff --git a/home/hacking.nix b/home/hacking.nix index e7d06bb..d3b6cd9 100644 --- a/home/hacking.nix +++ b/home/hacking.nix @@ -31,6 +31,7 @@ in { }) ]) ++ (with mypkgs; [ evil-winrm + binaryninja ]); } diff --git a/packages/all-packages.nix b/packages/all-packages.nix index 7c11d72..35d3f72 100644 --- a/packages/all-packages.nix +++ b/packages/all-packages.nix @@ -1,4 +1,5 @@ { pkgs, lib, config, ... }: rec { tpm = pkgs.callPackage ./tpm {}; evil-winrm = pkgs.callPackage ./evil-winrm {}; + binaryninja = pkgs.callPackage ./binaryninja {}; } diff --git a/packages/binaryninja/default.nix b/packages/binaryninja/default.nix new file mode 100644 index 0000000..97cf5b9 --- /dev/null +++ b/packages/binaryninja/default.nix @@ -0,0 +1,68 @@ +{ + lib, + buildFHSEnv, + writeScript, + pkgs, + python3 +}: +buildFHSEnv rec { + name = "binaryninja"; + + python = python3.withPackages (ps: with ps; [ + torch + pip + ]); + + targetPkgs = pkgs: with pkgs; [ + dbus + fontconfig + freetype + libGL + libxkbcommon + python + xorg.libXi + xorg.libX11 + xorg.libxcb + xorg.libXext + xorg.libXtst + xorg.libXfixes + xorg.libXrandr + xorg.libXcursor + xorg.libXdamage + xorg.libXrender + xorg.libXcomposite + xorg.xcbutilimage + xorg.xcbutilkeysyms + xorg.xcbutilrenderutil + xorg.xcbutilwm + alsaLib + wayland + libxml2 + expat + glib + zlib + krb5 + nspr + nss + ]; + + runScript = writeScript "binaryninja.sh" '' + set -e + # Create a temporary directory for the symlink + mkdir -p "$HOME/.binaryninja/libs" + ln -sf ${python}/lib/libpython3.so "$HOME/.binaryninja/libs/libpython.so" + + # Export environment variables + export PATH="${python}/bin:$PATH" + export PYTHONPATH="${python}/lib/python3.12/site-packages:$PYTHONPATH" + export LD_LIBRARY_PATH="$HOME/.binaryninja/libs:${python}/lib:$LD_LIBRARY_PATH" + + # Run Binary Ninja + exec "$HOME/.binaryninja/binaryninja" "$@" + ''; + + meta = { + description = "BinaryNinja"; + platforms = ["x86_64-linux"]; + }; +}