diff --git a/pkgs/tools/security/sherlock/default.nix b/pkgs/tools/security/sherlock/default.nix new file mode 100644 index 00000000000..7d402fd8f3f --- /dev/null +++ b/pkgs/tools/security/sherlock/default.nix @@ -0,0 +1,56 @@ +{ stdenv, lib, fetchFromGitHub, python3, makeWrapper }: +let + pyenv = python3.withPackages (pp: with pp; [ + beautifulsoup4 + certifi + colorama + lxml + pysocks + requests + requests-futures + soupsieve + stem + torrequest + ]); +in +stdenv.mkDerivation rec { + pname = "sherlock"; + version = "0.14.0"; + + src = fetchFromGitHub { + owner = "sherlock-project"; + repo = pname; + rev = "f8566960d461783558b7bcba5c818d9275de492a"; + sha256 = "sha256-6jG/SmsiEL63EcBrx2fcQDYbmMCA+A7Jsc3E4f5NGts="; + }; + + nativeBuildInputs = [ makeWrapper ]; + + postPatch = '' + substituteInPlace sherlock/sherlock.py \ + --replace "os.path.dirname(__file__)" "\"$out/share\"" + ''; + + installPhase = '' + runHook preInstall + mkdir -p $out/bin $out/share + cp ./sherlock/*.py $out/bin/ + cp --recursive ./sherlock/resources/ $out/share + makeWrapper ${pyenv.interpreter} $out/bin/sherlock --add-flags "$out/bin/sherlock.py" + runHook postInstall + ''; + + checkPhase = '' + runHook preCheck + cd $srcRoot/sherlock + ${pyenv.interpreter} -m unittest tests.all.SherlockSiteCoverageTests --verbose + runHook postCheck + ''; + + meta = with lib; { + homepage = "https://sherlock-project.github.io/"; + description = "Hunt down social media accounts by username across social networks"; + license = licenses.mit; + maintainers = with maintainers; [ applePrincess ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5f605f09da9..3f6ad1e4ed2 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -26553,6 +26553,8 @@ with pkgs; gjay = callPackage ../applications/audio/gjay { }; + sherlock = callPackage ../tools/security/sherlock { }; + rhythmbox = callPackage ../applications/audio/rhythmbox { }; puddletag = libsForQt5.callPackage ../applications/audio/puddletag { };