{
  config,
  lib,
  pkgs,
  ...
}: let
  # Define a list of all cybersec tools
  cybersecTools = with pkgs; [
    # Nmap and related tools
    nmap
    rustscan
    gobuster
    hydra
    ffuf
    #metasploit-framework
    aircrack-ng
    netcat
    powershell
    theharvester
    sqlmap
    #rkhunter
    #legion
    dirb
    steghide
    hashcat
    responder
    cewl
    snort
    nuclei
    wpscan
    #wifite
    #sqlsus
    netdiscover
    chkrootkit
    maltego
    burpsuite
    nikto
    john
    autopsy
    dirbuster
    bloodhound
    sherlock
    wordlists
    wfuzz
    #impacket-scripts
    havoc
    foremost
    ettercap
    #dirsearch
    crunch
    bettercap
    mimikatz
    gophish
    tcpdump
    #recon-ng
    #hping3
    #email2phonenumber
    #cisco-torch
    #beef-xss
    whatweb
    #veil
    subfinder
    macchanger
    dnsrecon
    dnsenum
    armitage
    yersinia
    parsero
    #metagoofil
    #maryam
    evil-winrm
    #dvwa
    dmitry
    amass
    #wifiphisher
    weevely
    #sublist3r
    #sslyze
    #spiderfoot
    #scapy
    #reaver
    #mdk3
    massdns
    masscan
    lynis
    #linkedin2username
    ligolo-ng
    #jsql
    ghidra
    fierce
    #fern-wifi-cracker
    fcrackzip
    crowbar
    netexec
    commix
    #arpwatch
    yara
    trufflehog
    terraform
    #subjack
    #pspy
    #powershell-empire
    #pompem
    #p0f
    nbtscan
    medusa
    #finalrecon
    driftnet
    # ### ones need to be added soon
  ];

  # Additional dependencies for specific tools
  wiresharkExtras = with pkgs; [
    wireshark
    #wireshark-common
    #wireshark-dev
    #wireshark-doc
    #libwireshark-data
    #libwireshark-dev
  ];

  johnExtras = with pkgs; [
    john
    #john-data
  ];
in {
  options.cybersec.enable = lib.mkOption {
    type = lib.types.bool;
    default = false;
    description = "Install cybersec tools for penetration testing and security analysis.";
  };

  config = lib.mkIf config.cybersec.enable {
    home.packages =
      cybersecTools
      ++ wiresharkExtras
      ++ johnExtras;
  };
}
