Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / by-name / wo / wordlists / package.nix
blob5edd1f5ece4e593847cbfc8f9c85dd301d6fd290
1 { lib
2 , symlinkJoin
3 , nmap
4 , rockyou
5 , seclists
6 , wfuzz
7 , lists ? [
8     nmap
9     rockyou
10     seclists
11     wfuzz
12   ]
13 , writeShellScriptBin
14 , tree
16 let
17   wordlistsCollection = symlinkJoin {
18     name = "wordlists-collection";
19     paths = lists;
21     postBuild = ''
22       shopt -s extglob
23       rm -rf $out/!(share)
24       rm -rf $out/share/!(wordlists)
25       shopt -u extglob
26     '';
27   };
29   # A command to show the location of the links.
30   wordlistsBin = writeShellScriptBin "wordlists" ''
31     ${lib.getExe tree} ${wordlistsCollection}/share/wordlists
32   '';
33   # A command for easy access to the wordlists.
34   wordlistsPathBin = writeShellScriptBin "wordlists_path" ''
35     printf "${wordlistsCollection}/share/wordlists\n"
36   '';
38 in symlinkJoin {
39   name = "wordlists";
41   paths = [
42     wordlistsCollection
43     wordlistsBin
44     wordlistsPathBin
45   ];
47   meta = with lib; {
48     description = "A collection of wordlists useful for security testing";
49     longDescription = ''
50       The `wordlists` package provides two scripts. One is called {command}`wordlists`,
51       and it will list a tree of all the wordlists installed. The other one is
52       called {command}`wordlists_path` which will print the path to the nix store
53       location of the lists. You can for example do
54       {command}`$(wordlists_path)/rockyou.txt` to get the location of the
55       [rockyou](https://en.wikipedia.org/wiki/RockYou#Data_breach)
56       wordlist. If you want to modify the available wordlists you can override
57       the `lists` attribute`. In your nixos configuration this would look
58       similiar to this:
60       ```nix
61       environment.systemPackages = [
62         (pkgs.wordlists.override { lists = with pkgs; [ rockyou ] })
63       ]
64       ```
66       you can use this with nix-shell by doing:
67       {command}`nix-shell -p 'wordlists.override { lists = with (import <nixpkgs> {}); [ nmap ]; }'
68       If you want to add a new package that provides wordlist/s the convention
69       is to copy it to {file}`$out/share/wordlists/myNewWordlist`.
70     '';
71     maintainers = with maintainers; [ janik pamplemousse h7x4 ];
72   };