{ stdenv, fetchFromGitLab, lib, darwin , git, nettle, llvmPackages, cargo, rustc , rustPlatform, pkgconfig, glib , openssl, sqlite, capnproto , ensureNewerSourcesForZipFilesHook, pythonSupport ? true, pythonPackages ? null }: assert pythonSupport -> pythonPackages != null; rustPlatform.buildRustPackage rec { pname = "sequoia"; version = "0.17.0"; src = fetchFromGitLab { owner = "sequoia-pgp"; repo = pname; rev = "v${version}"; sha256 = "1rf9q67qmjfkgy6r3mz1h9ibfmc04r4j8nzacqv2l75x4mwvf6xb"; }; cargoSha256 = "074bbr7dfk8cqdarrjy4sm37f5jmv2l5gwwh3zcmy2wrfg7vi1h6"; nativeBuildInputs = [ pkgconfig cargo rustc git llvmPackages.libclang llvmPackages.clang ensureNewerSourcesForZipFilesHook capnproto ] ++ lib.optionals pythonSupport [ pythonPackages.setuptools ] ; checkInputs = lib.optionals pythonSupport [ pythonPackages.pytest pythonPackages.pytestrunner ]; buildInputs = [ openssl sqlite nettle ] ++ lib.optionals pythonSupport [ pythonPackages.python pythonPackages.cffi ] ++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Security ] ; makeFlags = [ "PREFIX=${placeholder "out"}" ]; buildFlags = [ "build-release" ]; LIBCLANG_PATH = "${llvmPackages.libclang}/lib"; # Please check if this is still needed when updating. # Exlude tests for sequoia-store, they often error with 'Too many open files' Hydra. CARGO_TEST_ARGS = " --all --exclude sequoia-store"; postPatch = '' # otherwise, the check fails because we delete the `.git` in the unpack phase substituteInPlace openpgp-ffi/Makefile \ --replace 'git grep' 'grep -R' # Without this, the check fails substituteInPlace openpgp-ffi/examples/Makefile \ --replace '-O0 -g -Wall -Werror' '-g' substituteInPlace ffi/examples/Makefile \ --replace '-O0 -g -Wall -Werror' '-g' ''; preInstall = lib.optionalString pythonSupport '' export installFlags="PYTHONPATH=$PYTHONPATH:$out/${pythonPackages.python.sitePackages}" '' + lib.optionalString (!pythonSupport) '' export installFlags="PYTHON=disable" ''; # Don't use buildRustPackage phases, only use it for rust deps setup configurePhase = null; buildPhase = null; doCheck = true; checkPhase = null; installPhase = null; meta = with stdenv.lib; { description = "A cool new OpenPGP implementation"; homepage = "https://sequoia-pgp.org/"; license = licenses.gpl3; maintainers = with maintainers; [ minijackson doronbehar ]; platforms = platforms.all; broken = stdenv.targetPlatform.isDarwin; }; }