binja: get python plugins working~

This commit is contained in:
Kate 2025-04-03 23:30:10 +02:00
parent 7b9ef8fde4
commit 9af99b6de4
4 changed files with 52 additions and 6 deletions

View file

@ -335,7 +335,6 @@
modules = linuxOfflineGuiModules [
./nixos/hosts/komashi
./nixos/configs/vmware.nix
./nixos/configs/cellular.nix
./nixos/configs/nfc-kernel.nix
./nixos/configs/power-saving.nix

View file

@ -4,6 +4,7 @@
# vim: et:ts=2:sw=2:
#
{
lib,
stdenv,
autoPatchelfHook,
makeWrapper,
@ -17,7 +18,9 @@
xkeyboard_config,
libxkbcommon,
wayland,
qt6,
python3,
svd2py,
qt6
}:
let
desktopFile = writeText "binary-ninja.desktop" ''
@ -29,6 +32,17 @@ let
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";
@ -53,9 +67,12 @@ let
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
@ -70,8 +87,8 @@ let
chmod +x $out/opt/binaryninja
# Icons.
mkdir -p $out/share/icons
cp -r docs/img/logo.png $out/share/icons/binary-ninja.png
mkdir -p $out/share/icons
cp -r docs/img/logo.png $out/share/icons/binary-ninja.png
# Application file.
mkdir -p $out/share/applications
@ -80,7 +97,9 @@ let
mkdir -p $out/bin
makeWrapper $out/opt/binaryninja \
$out/bin/binaryninja \
--prefix "QT_XKB_CONFIG_ROOT" ":" "${xkeyboard_config}/share/X11/xkb"
--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
'';
};

View file

@ -38,7 +38,7 @@ flake-utils.lib.eachDefaultSystem (
# apps
navit = callPackage ./navit.nix { };
navit-with-maps = callPackage ./navit.nix { with_maps = true; };
binary-ninja = callPackage ./binary-ninja.nix { };
binary-ninja = callPackage ./binary-ninja.nix { inherit svd2py; };
argos = callPackage ./argos.nix { };
todoist-electron = callPackage ./todoist-electron.nix { };
home-assistant-desktop = callPackage ./home-assistant-desktop/x86_64-linux.nix { };
@ -80,6 +80,9 @@ flake-utils.lib.eachDefaultSystem (
jdk = jetbrains-jdk;
};
# pytho modules
svd2py = callPackage ./svd2py.nix { };
# kernel modules
linuxPackages_i915-sriov = callPackage ./i915-sriov/kernel.nix { };
i915-sriov = callPackage ./i915-sriov { linuxPackages = linuxPackages_i915-sriov; };

25
packages/svd2py.nix Normal file
View file

@ -0,0 +1,25 @@
{
python3Packages,
fetchPypi,
xonsh
}:
python3Packages.buildPythonPackage rec {
pname = "svd2py";
version = "1.0.2";
format = "pyproject";
src = fetchPypi {
inherit pname version;
hash = "sha256-V90CD13Fb9kPqZ3mZn3+zzCAgaMR2kX/pBg+dOMMhK0=";
};
nativeBuildInputs = with python3Packages; [
setuptools
poetry-core
];
buildInputs = with python3Packages; [
click
pyyaml
];
}