{
  lib,
  stdenv,
  fetchFromGitHub,
  makeWrapper,
  perl,
  perlPackages,
}:

let
  perlDeps = [
    perlPackages.ParseWin32Registry
  ];
in
stdenv.mkDerivation {
  pname = "regripper";
  version = "0-unstable-2024-12-12";

  src = fetchFromGitHub {
    owner = "keydet89";
    repo = "RegRipper3.0";
    rev = "bdf7ac2500a41319479846fe07202b7e8a61ca1f";
    hash = "sha256-JEBwTpDck0w85l0q5WjF1d20NyU+GJ89yAzbkUVOsu0=";
  };

  nativeBuildInputs = [ makeWrapper ];

  propagatedBuildInputs = [
    perl
  ]
  ++ perlDeps;

  installPhase = ''
    runHook preInstall

    mkdir -p $out/{bin,share}

    rm -r *.md *.exe *.bat *.dll *.zip

    cp -aR . "$out/share/regripper/"

    makeWrapper ${perl}/bin/perl $out/bin/regripper \
      --add-flags "$out/share/regripper/rip.pl" \
      --set PERL5LIB ${perlPackages.makeFullPerlPath perlDeps}

    runHook postInstall
  '';

  meta = {
    description = "Open source forensic software used as a Windows Registry data extraction command line";
    mainProgram = "regripper";
    homepage = "https://github.com/keydet89/RegRipper3.0";
    maintainers = [ ];
    platforms = lib.platforms.unix;
    license = lib.licenses.mit;
  };
}
