python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / pkgs / tools / networking / airgeddon / default.nix
blobb0528a8808e35d70f9b9660f45efaf26914f44ab
1 { lib
2 , stdenv
3 , fetchFromGitHub
4 , makeWrapper
5   # Required
6 , aircrack-ng
7 , bash
8 , coreutils-full
9 , gawk
10 , gnugrep
11 , gnused
12 , iproute2
13 , iw
14 , pciutils
15 , procps
16 , tmux
17   # X11 Front
18 , xterm
19 , xorg
20   # what the author calls "Internals"
21 , usbutils
22 , wget
23 , ethtool
24 , util-linux
25 , ccze
26   # Optionals
27   # Missing in nixpkgs: beef, hostapd-wpe, asleap
28 , bettercap
29 , bully
30 , crunch
31 , dhcp
32 , dnsmasq
33 , ettercap
34 , hashcat
35 , hcxdumptool
36 , hcxtools
37 , hostapd
38 , john
39 , lighttpd
40 , mdk4
41 , nftables
42 , openssl
43 , pixiewps
44 , reaverwps-t6x # Could be the upstream version too
45 , wireshark-cli
46   # Undocumented requirements (there is also ping)
47 , apparmor-bin-utils
48 , curl
49 , glibc
50 , ncurses
51 , networkmanager
52 , systemd
53   # Support groups
54 , supportWpaWps ? true # Most common use-case
55 , supportHashCracking ? false
56 , supportEvilTwin ? false
57 , supportX11 ? false # Allow using xterm instead of tmux, hard to test
59 let
60   deps = [
61     aircrack-ng
62     bash
63     coreutils-full
64     curl
65     gawk
66     glibc
67     gnugrep
68     gnused
69     iproute2
70     iw
71     networkmanager
72     ncurses
73     pciutils
74     procps
75     tmux
76     usbutils
77     wget
78     ethtool
79     util-linux
80     ccze
81     systemd
82   ] ++ lib.optionals supportWpaWps [
83     bully
84     pixiewps
85     reaverwps-t6x
86   ] ++ lib.optionals supportHashCracking [
87     crunch
88     hashcat
89     hcxdumptool
90     hcxtools
91     john
92     wireshark-cli
93   ] ++ lib.optionals supportEvilTwin [
94     bettercap
95     dhcp
96     dnsmasq
97     ettercap
98     hostapd
99     lighttpd
100     openssl
101     mdk4
102     nftables
103     apparmor-bin-utils
104   ] ++ lib.optionals supportX11 [
105     xterm
106     xorg.xset
107     xorg.xdpyinfo
108   ];
110 stdenv.mkDerivation rec {
111   pname = "airgeddon";
112   version = "11.02";
114   src = fetchFromGitHub {
115     owner = "v1s1t0r1sh3r3";
116     repo = "airgeddon";
117     rev = "v${version}";
118     hash = "sha256-k3xQndF1m3fnn7nCb2T/wGxbUPJ83wOV33Ky0FbToVg=";
119   };
121   strictDeps = true;
122   nativeBuildInputs = [ makeWrapper ];
124   # What these replacings do?
125   # - Disable the auto-updates (we'll run from a read-only directory);
126   # - Silence the checks (NixOS will enforce the PATH, it will only see the tools as we listed);
127   # - Use "tmux", we're not patching XTerm commands;
128   # - Remove PWD and $0 references, forcing it to use the paths from store;
129   # - Force our PATH to all tmux sessions.
130   postPatch = ''
131     patchShebangs airgeddon.sh
132     sed -i '
133       s|AIRGEDDON_AUTO_UPDATE=true|AIRGEDDON_AUTO_UPDATE=false|
134       s|AIRGEDDON_SILENT_CHECKS=false|AIRGEDDON_SILENT_CHECKS=true|
135       s|AIRGEDDON_WINDOWS_HANDLING=xterm|AIRGEDDON_WINDOWS_HANDLING=tmux|
136       ' .airgeddonrc
138     sed -Ei '
139       s|\$\(pwd\)|${placeholder "out"}/share/airgeddon;scriptfolder=${placeholder "out"}/share/airgeddon/|
140       s|\$\{0\}|${placeholder "out"}/bin/airgeddon|
141       s|tmux send-keys -t "([^"]+)" "|tmux send-keys -t "\1" "export PATH=\\"$PATH\\"; |
142       ' airgeddon.sh
143   '';
145   # ATTENTION: No need to chdir around, we're removing the occurrences of "$(pwd)"
146   postInstall = ''
147     wrapProgram $out/bin/airgeddon --prefix PATH : ${lib.makeBinPath deps}
148   '';
150   # Install only the interesting files
151   installPhase = ''
152     runHook preInstall
153     install -Dm 755 airgeddon.sh "$out/bin/airgeddon"
154     install -dm 755 "$out/share/airgeddon"
155     cp -dr .airgeddonrc known_pins.db language_strings.sh plugins/ "$out/share/airgeddon/"
156     runHook postInstall
157   '';
159   meta = with lib; {
160     description = "Multi-use TUI to audit wireless networks. ";
161     homepage = "https://github.com/v1s1t0r1sh3r3/airgeddon";
162     license = licenses.gpl3Plus;
163     maintainers = with maintainers; [ pedrohlc ];
164     platforms = platforms.linux;
165   };