diff --git a/pkgs/by-name/an/angr-management/package.nix b/pkgs/by-name/an/angr-management/package.nix new file mode 100644 index 0000000000000..f1562a2137f07 --- /dev/null +++ b/pkgs/by-name/an/angr-management/package.nix @@ -0,0 +1,65 @@ +{ + lib, + fetchFromGitHub, + python3, +}: + +python3.pkgs.buildPythonApplication rec { + pname = "angr-management"; + version = "9.2.147"; + pyproject = true; + + src = fetchFromGitHub { + owner = "angr"; + repo = "angr-management"; + tag = "v${version}"; + hash = "sha256-WPnrLgYae8rRwdhciGrc+z+OjYtkGFslODmBZx+3KPU="; + }; + + pythonRelaxDeps = [ "binsync" ]; + + build-system = with python3.pkgs; [ setuptools ]; + + dependencies = + with python3.pkgs; + ( + [ + # requirements from setup.cfg + angr + bidict + binsync + ipython + pyqodeng-angr + pyside6 + pyside6-qtads + qtawesome + qtpy + requests + rpyc + thefuzz + tomlkit + # requirements from setup.cfg -- vendorized qtconsole package + ipykernel + jupyter-client + jupyter-core + packaging + pygments + pyzmq + traitlets + ] + ++ angr.optional-dependencies.AngrDB + ++ requests.optional-dependencies.socks + ++ thefuzz.optional-dependencies.speedup + ); + + pythonImportsCheck = [ "angrmanagement" ]; + + meta = { + description = "The official angr GUI"; + homepage = "https://github.com/angr/angr-management"; + changelog = "https://github.com/angr/angr-management/releases/tag/${src.tag}"; + license = lib.licenses.bsd2; + maintainers = with lib.maintainers; [ scoder12 ]; + mainProgram = "angr-management"; + }; +} diff --git a/pkgs/development/python-modules/binsync/default.nix b/pkgs/development/python-modules/binsync/default.nix new file mode 100644 index 0000000000000..fe6ff5e217970 --- /dev/null +++ b/pkgs/development/python-modules/binsync/default.nix @@ -0,0 +1,68 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + filelock, + gitpython, + libbs, + prompt-toolkit, + pycparser, + pyside6, + pytest-qt, + pytestCheckHook, + setuptools, + sortedcontainers, + toml, + tqdm, +}: + +buildPythonPackage rec { + pname = "binsync"; + version = "5.3.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "binsync"; + repo = "binsync"; + tag = "v${version}"; + hash = "sha256-f0pPuNTrZ5+iuJgtxLXJF89C9hKXwplhBA/olyhfsQ4="; + }; + + build-system = [ setuptools ]; + + dependencies = [ + filelock + gitpython + libbs + prompt-toolkit + pycparser + sortedcontainers + toml + tqdm + ]; + + optional-dependencies = { + ghidra = [ pyside6 ]; + }; + + nativeCheckInputs = [ + pyside6 + pytest-qt + pytestCheckHook + ]; + + disabledTestPaths = [ + # Test tries to import angrmanagement + "tests/test_angr_gui.py" + ]; + + pythonImportsCheck = [ "binsync" ]; + + meta = { + description = "A reversing plugin for cross-decompiler collaboration, built on git"; + homepage = "https://github.com/binsync/binsync"; + changelog = "https://github.com/binsync/binsync/releases/tag/v${version}"; + license = lib.licenses.bsd2; + maintainers = with lib.maintainers; [ scoder12 ]; + }; +} diff --git a/pkgs/development/python-modules/pyqodeng-angr/default.nix b/pkgs/development/python-modules/pyqodeng-angr/default.nix new file mode 100644 index 0000000000000..2724a0c95814a --- /dev/null +++ b/pkgs/development/python-modules/pyqodeng-angr/default.nix @@ -0,0 +1,59 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + future, + pygments, + pyside6, + pytestCheckHook, + pytest-xdist, + qtpy, + setuptools, + wheel, +}: + +buildPythonPackage rec { + pname = "pyqodeng-angr"; + version = "0.0.13"; + pyproject = true; + + src = fetchFromGitHub { + owner = "angr"; + repo = "pyqodeng"; + tag = "v${version}"; + hash = "sha256-t4LcPVQfktAaTqTr9L2VDCEHbSO7qxCvUDz6rj0Zre4="; + }; + + postPatch = '' + substituteInPlace setup.py \ + --replace-quiet 'PySide6-Essentials' 'PySide6' + ''; + + build-system = [ setuptools ]; + + dependencies = [ + pygments + future + qtpy + pyside6 + ]; + + # Tests appear to be broken with pyside6 + doCheck = false; + + nativeCheckInputs = [ + pytest-xdist + pytestCheckHook + pyside6 + ]; + + pythonImportsCheck = [ "pyqodeng" ]; + + meta = { + description = "Angr's fork of pyQode.core, used as part of angr management"; + homepage = "https://github.com/angr/pyqodeng"; + changelog = "https://github.com/angr/pyqodeng/blob/${src.rev}/CHANGELOG.rst"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ scoder12 ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index badafbee14a76..1a07145a6a4fa 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -1711,6 +1711,8 @@ self: super: with self; { binho-host-adapter = callPackage ../development/python-modules/binho-host-adapter { }; + binsync = callPackage ../development/python-modules/binsync { }; + biom-format = callPackage ../development/python-modules/biom-format { }; biopandas = callPackage ../development/python-modules/biopandas { }; @@ -12787,6 +12789,8 @@ self: super: with self; { pyqldb = callPackage ../development/python-modules/pyqldb { }; + pyqodeng-angr = callPackage ../development/python-modules/pyqodeng-angr { }; + pyqrcode = callPackage ../development/python-modules/pyqrcode { }; pyqt-builder = callPackage ../development/python-modules/pyqt-builder { };