diff --git a/flake.nix b/flake.nix index 0d47d6b..cb17246 100644 --- a/flake.nix +++ b/flake.nix @@ -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 diff --git a/packages/binary-ninja.nix b/packages/binary-ninja.nix index dcde165..9a58ba7 100644 --- a/packages/binary-ninja.nix +++ b/packages/binary-ninja.nix @@ -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 ''; }; diff --git a/packages/default.nix b/packages/default.nix index 2aa8ac9..3d4068f 100644 --- a/packages/default.nix +++ b/packages/default.nix @@ -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; }; diff --git a/packages/svd2py.nix b/packages/svd2py.nix new file mode 100644 index 0000000..c046226 --- /dev/null +++ b/packages/svd2py.nix @@ -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 + ]; +}