Merge pull request #307098 from r-ryantm/auto-update/cilium-cli
[NixPkgs.git] / pkgs / development / python-modules / pwntools / default.nix
blobdb91bf50182e579419bea3413dfc7d130d85f900
1 { lib
2 , stdenv
3 , buildPythonPackage
4 , debugger
5 , fetchPypi
6 , mako
7 , packaging
8 , pysocks
9 , pygments
10 , ropgadget
11 , capstone
12 , colored-traceback
13 , paramiko
14 , pip
15 , psutil
16 , pyelftools
17 , pyserial
18 , python-dateutil
19 , requests
20 , rpyc
21 , tox
22 , unicorn
23 , intervaltree
24 , installShellFiles
27 let
28   debuggerName = lib.strings.getName debugger;
30 buildPythonPackage rec {
31   pname = "pwntools";
32   version = "4.12.0";
33   format = "setuptools";
35   src = fetchPypi {
36     inherit pname version;
37     hash = "sha256-MgKFvZJmFS/bo7gd46MeYaJQdmRVB6ONhfNOGxWZjrE=";
38   };
40   postPatch = ''
41     # Upstream hardcoded the check for the command `gdb-multiarch`;
42     # Forcefully use the provided debugger, as `gdb` (hence `pwndbg`) is built with multiarch in `nixpkgs`.
43     sed -i 's/gdb-multiarch/${debuggerName}/' pwnlib/gdb.py
44   '';
46   nativeBuildInputs = [
47     installShellFiles
48   ];
50   propagatedBuildInputs = [
51     mako
52     packaging
53     pysocks
54     pygments
55     ropgadget
56     capstone
57     colored-traceback
58     paramiko
59     pip
60     psutil
61     pyelftools
62     pyserial
63     python-dateutil
64     requests
65     rpyc
66     tox
67     unicorn
68     intervaltree
69   ];
71   doCheck = false; # no setuptools tests for the package
73   postInstall = ''
74     installShellCompletion --bash extra/bash_completion.d/shellcraft
75   '';
77   postFixup = lib.optionalString (!stdenv.isDarwin) ''
78     mkdir -p "$out/bin"
79     makeWrapper "${debugger}/bin/${debuggerName}" "$out/bin/pwntools-gdb"
80   '';
82   meta = with lib; {
83     description = "CTF framework and exploit development library";
84     homepage = "https://pwntools.com";
85     changelog = "https://github.com/Gallopsled/pwntools/releases/tag/${version}";
86     license = licenses.mit;
87     maintainers = with maintainers; [ bennofs kristoff3r pamplemousse ];
88   };