rio: 0.0.36 -> 0.0.37
[NixPkgs.git] / pkgs / tools / networking / airgeddon / default.nix
blob2bfe38203e8ad2e11bcf4aefde2bceae4c43b268
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
28 , asleap
29 , bettercap
30 , bully
31 , crunch
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     asleap
88     crunch
89     hashcat
90     hcxdumptool
91     hcxtools
92     john
93     wireshark-cli
94   ] ++ lib.optionals supportEvilTwin [
95     bettercap
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.11";
114   src = fetchFromGitHub {
115     owner = "v1s1t0r1sh3r3";
116     repo = "airgeddon";
117     rev = "refs/tags/v${version}";
118     hash = "sha256-3Rx1tMRIpSk+IEJGOs+t+kDlvGHYOx1IOSi+663uzrw=";
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     mainProgram = "airgeddon";
162     homepage = "https://github.com/v1s1t0r1sh3r3/airgeddon";
163     changelog = "https://github.com/v1s1t0r1sh3r3/airgeddon/blob/v${version}/CHANGELOG.md";
164     license = licenses.gpl3Plus;
165     maintainers = with maintainers; [ ];
166     platforms = platforms.linux;
167   };