{ lib, stdenv , fetchFromGitHub , python3 , par2cmdline , unzip , unrar , p7zip , makeWrapper , nixosTests }: let python = python3.override { packageOverrides = final: prev: { sabyenc3 = prev.sabyenc3.overridePythonAttrs (oldAttrs: rec { version = "4.0.0"; src = oldAttrs.src.override { inherit version; hash = "sha256-PwwQ2jChKIqh7jJ6E2hkqPquTDSN4MklghfJ+MkM0n0="; }; }); }; self = python; }; pythonEnv = python.withPackages(ps: with ps; [ chardet cheetah3 cherrypy cryptography configobj feedparser sabyenc3 puremagic guessit pysocks ]); path = lib.makeBinPath [ par2cmdline unrar unzip p7zip ]; in stdenv.mkDerivation rec { version = "3.5.3"; pname = "sabnzbd"; src = fetchFromGitHub { owner = pname; repo = pname; rev = version; sha256 = "sha256-pdYTTahdn9YVFreU5KhMGlUzQxHviN5G4TxWKKRBxOc="; }; nativeBuildInputs = [ makeWrapper ]; buildInputs = [ pythonEnv ]; installPhase = '' runHook preInstall mkdir -p $out cp -R * $out/ mkdir $out/bin echo "${pythonEnv}/bin/python $out/SABnzbd.py \$*" > $out/bin/sabnzbd chmod +x $out/bin/sabnzbd wrapProgram $out/bin/sabnzbd --set PATH ${path} runHook postInstall ''; passthru.tests = { smoke-test = nixosTests.sabnzbd; }; meta = with lib; { description = "Usenet NZB downloader, par2 repairer and auto extracting server"; homepage = "https://sabnzbd.org"; license = licenses.gpl2Plus; platforms = platforms.linux; maintainers = with lib.maintainers; [ fridh jojosch ]; }; }