{ stdenv, fetchzip, makeWrapper, perlPackages, ... }: stdenv.mkDerivation rec { appname = "popfile"; version = "1.1.3"; name = "${appname}-${version}"; src = fetchzip { url = "http://getpopfile.org/downloads/${appname}-${version}.zip"; sha256 = "0gcib9j7zxk8r2vb5dbdz836djnyfza36vi8215nxcdfx1xc7l63"; stripRoot = false; }; buildInputs = [ makeWrapper ] ++ (with perlPackages; [ ## These are all taken from the popfile documentation as applicable to Linux ## http://getpopfile.org/docs/howtos:allplatformsrequireperl perl DBI DBDSQLite Digest DigestMD5 HTMLTagset MIMEBase64 # == MIMEQuotedPrint TimeDate # == DateParse HTMLTemplate # IO::Socket::Socks is not in nixpkgs # IOSocketSocks IOSocketSSL NetSSLeay SOAPLite ]); phases = [ "unpackPhase" "installPhase" "patchPhase" "postInstall" ]; installPhase = '' mkdir -p $out/bin # I user `cd` rather than `cp $out/* ...` b/c the * breaks syntax # highlighting in emacs for me. cd $src cp -r * $out/bin cd $out/bin chmod +x *.pl ''; patchPhase = "patchShebangs $out"; postInstall = '' find $out -name '*.pl' -executable | while read path; do wrapProgram "$path" \ --prefix PERL5LIB : $PERL5LIB:$out/bin \ --set POPFILE_ROOT $out/bin \ --set POPFILE_USER \$\{POPFILE_USER:-\$HOME/.popfile\} \ --run "test -d \$POPFILE_USER || mkdir -m 0700 -p \$POPFILE_USER" done ''; meta = { description = "An email classification system that automatically sorts messages and fights spam"; homepage = http://getpopfile.org; license = stdenv.lib.licenses.gpl2; # Should work on OS X, but havent tested it. # Windows support is more complicated. # http://getpopfile.org/docs/faq:systemrequirements platforms = stdenv.lib.platforms.linux; }; }