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 [ modules = linuxOfflineGuiModules [
./nixos/hosts/komashi ./nixos/hosts/komashi
./nixos/configs/vmware.nix
./nixos/configs/cellular.nix ./nixos/configs/cellular.nix
./nixos/configs/nfc-kernel.nix ./nixos/configs/nfc-kernel.nix
./nixos/configs/power-saving.nix ./nixos/configs/power-saving.nix

View file

@ -4,6 +4,7 @@
# vim: et:ts=2:sw=2: # vim: et:ts=2:sw=2:
# #
{ {
lib,
stdenv, stdenv,
autoPatchelfHook, autoPatchelfHook,
makeWrapper, makeWrapper,
@ -17,7 +18,9 @@
xkeyboard_config, xkeyboard_config,
libxkbcommon, libxkbcommon,
wayland, wayland,
qt6, python3,
svd2py,
qt6
}: }:
let let
desktopFile = writeText "binary-ninja.desktop" '' desktopFile = writeText "binary-ninja.desktop" ''
@ -29,6 +32,17 @@ let
Categories=Development; 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 { binary-ninja = stdenv.mkDerivation {
pname = "binary-ninja"; pname = "binary-ninja";
version = "4.0.5902"; version = "4.0.5902";
@ -53,9 +67,12 @@ let
xorg.xcbutilrenderutil xorg.xcbutilrenderutil
qt6.qtdeclarative qt6.qtdeclarative
wayland wayland
binja-python
dbus dbus
]; ];
propogatedBuildInputs = (additional-python-packages python3.pkgs);
# Use our local zip directly. # Use our local zip directly.
dontBuild = true; dontBuild = true;
src = if stdenv.isAarch64 then src = if stdenv.isAarch64 then
@ -70,8 +87,8 @@ let
chmod +x $out/opt/binaryninja chmod +x $out/opt/binaryninja
# Icons. # Icons.
mkdir -p $out/share/icons mkdir -p $out/share/icons
cp -r docs/img/logo.png $out/share/icons/binary-ninja.png cp -r docs/img/logo.png $out/share/icons/binary-ninja.png
# Application file. # Application file.
mkdir -p $out/share/applications mkdir -p $out/share/applications
@ -80,7 +97,9 @@ let
mkdir -p $out/bin mkdir -p $out/bin
makeWrapper $out/opt/binaryninja \ makeWrapper $out/opt/binaryninja \
$out/bin/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 ln -s $out/bin/binaryninja $out/bin/binary-ninja
''; '';
}; };

View file

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