Unverified Commit 198106a3 authored by h7x4's avatar h7x4
Browse files

wordlists: refactor



- Remove version tag
- Filter out non-wordlist content from wordlist packages
- Split up the derivation into several logical parts
- Reorder package inputs to be in the order which they are used
- Add h7x4 as maintainer

Co-authored-by: default avatarPeder Bergebakken Sundt <pbsds@hotmail.com>
Co-authored-by: default avatarJanik H. <janik@aq0.de>
parent 3ee9f51e
Loading
Loading
Loading
Loading
+30 −27
Original line number Diff line number Diff line
{ lib
, callPackage
, symlinkJoin
, nmap
, rockyou
, runtimeShell
, seclists
, symlinkJoin
, tree
, wfuzz
, lists ? [
    nmap
@@ -13,33 +10,39 @@
    seclists
    wfuzz
  ]
, writeShellScriptBin
, tree
}:

symlinkJoin rec {
  pname = "wordlists";
  version = "unstable-2023-10-10";

  name = "${pname}-${version}";
let
  wordlistsCollection = symlinkJoin {
    name = "wordlists-collection";
    paths = lists;

    postBuild = ''
    mkdir -p $out/bin

    # Create a command to show the location of the links.
    cat >> $out/bin/wordlists << __EOF__
    #!${runtimeShell}
    ${tree}/bin/tree ${placeholder "out"}/share/wordlists
    __EOF__
    chmod +x $out/bin/wordlists
      shopt -s extglob
      rm -rf $out/!(share)
      rm -rf $out/share/!(wordlists)
      shopt -u extglob
    '';
  };

    # Create a handy command for easy access to the wordlists.
    # e.g.: `cat "$(wordlists_path)/rockyou.txt"`, or `ls "$(wordlists_path)/dirbuster"`
    cat >> $out/bin/wordlists_path << __EOF__
    #!${runtimeShell}
    printf "${placeholder "out"}/share/wordlists\n"
    __EOF__
    chmod +x $out/bin/wordlists_path
  # A command to show the location of the links.
  wordlistsBin = writeShellScriptBin "wordlists" ''
    ${lib.getExe tree} ${wordlistsCollection}/share/wordlists
  '';
  # A command for easy access to the wordlists.
  wordlistsPathBin = writeShellScriptBin "wordlists_path" ''
    printf "${wordlistsCollection}/share/wordlists\n"
  '';

in symlinkJoin {
  name = "wordlists";

  paths = [
    wordlistsCollection
    wordlistsBin
    wordlistsPathBin
  ];

  meta = with lib; {
    description = "A collection of wordlists useful for security testing";
@@ -65,6 +68,6 @@ symlinkJoin rec {
      If you want to add a new package that provides wordlist/s the convention
      is to copy it to {file}`$out/share/wordlists/myNewWordlist`.
    '';
    maintainers = with maintainers; [ janik pamplemousse ];
    maintainers = with maintainers; [ janik pamplemousse h7x4 ];
  };
}