Something went wrong. Try again.
What happens if I push all of nixpkgs
Something went wrong. Try again.
4.1 kB · 169 lines
Nix
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170{ lib, stdenv, fetchurl, pkgsStatic, python3, docutils, bzip2, zlib, jitterentropy, darwin, esdm, tpm2-tss, static ? stdenv.hostPlatform.isStatic, # generates static libraries *only*
# build ESDM RNG plugin withEsdm ? false, # useful, but have to disable tests for now, as /dev/tpmrm0 is not accessible withTpm2 ? false, policy ? null,}:
assert lib.assertOneOf "policy" policy [ # no explicit policy is given. The defaults by the library are used null # only allow BSI approved algorithms, FFI and SHAKE for XMSS "bsi" # only allow NIST approved algorithms in FIPS 140 "fips140" # only allow "modern" algorithms "modern"];
let common = { version, hash, patches ? [ ], }: stdenv.mkDerivation (finalAttrs: { pname = "botan"; inherit version;
__structuredAttrs = true; enableParallelBuilding = true; strictDeps = true;
outputs = [ "bin" "out" "dev" "doc" "man" ];
src = fetchurl { url = "http://botan.randombit.net/releases/Botan-${finalAttrs.version}.tar.xz"; inherit hash; };
inherit patches;
nativeBuildInputs = [ python3 docutils ];
buildInputs = [ bzip2 zlib ] ++ lib.optionals (stdenv.hostPlatform.isLinux && withTpm2) [ tpm2-tss ] ++ lib.optionals (lib.versionAtLeast version "3.6.0") [ jitterentropy ] ++ lib.optionals (lib.versionAtLeast version "3.7.0" && withEsdm) [ esdm ];
buildTargets = [ "cli" ] ++ lib.optionals finalAttrs.finalPackage.doCheck [ "tests" ] ++ lib.optionals static [ "static" ] ++ lib.optionals (!static) [ "shared" ];
botanConfigureFlags = [ "--prefix=${placeholder "out"}" "--bindir=${placeholder "bin"}/bin" "--docdir=${placeholder "doc"}/share/doc" "--mandir=${placeholder "man"}/share/man" "--no-install-python-module" "--build-targets=${lib.concatStringsSep "," finalAttrs.buildTargets}" "--with-bzip2" "--with-zlib" "--with-rst2man" "--cpu=${stdenv.hostPlatform.parsed.cpu.name}" ] ++ lib.optionals stdenv.cc.isClang [ "--cc=clang" ] ++ lib.optionals (stdenv.hostPlatform.isLinux && withTpm2) [ "--with-tpm2" ] ++ lib.optionals (lib.versionAtLeast version "3.6.0") [ "--enable-modules=jitter_rng" ] ++ lib.optionals (lib.versionAtLeast version "3.7.0" && withEsdm) [ "--enable-modules=esdm_rng" ] ++ lib.optionals (lib.versionAtLeast version "3.8.0" && policy != null) [ "--module-policy=${policy}" ] ++ lib.optionals (lib.versionAtLeast version "3.8.0" && policy == "bsi") [ "--enable-module=ffi" "--enable-module=shake" ];
configurePhase = '' runHook preConfigure python configure.py ''${botanConfigureFlags[@]} runHook postConfigure '';
preInstall = '' if [ -d src/scripts ]; then patchShebangs src/scripts fi '';
postInstall = '' cd "$out"/lib/pkgconfig ln -s botan-*.pc botan.pc || true '';
doCheck = true;
passthru.tests = lib.optionalAttrs (lib.versionAtLeast version "3") { static = pkgsStatic.botan3; };
meta = with lib; { description = "Cryptographic algorithms library"; homepage = "https://botan.randombit.net"; mainProgram = "botan"; maintainers = with maintainers; [ raskin thillux nikstur ]; platforms = platforms.unix; license = licenses.bsd2; }; });in{ botan3 = common { version = "3.8.1"; hash = "sha256-sDloHUuGGi9YU3Rti6gG9VPiOGntctie2/o8Pb+hfmg="; };
botan2 = common { version = "2.19.5"; hash = "sha256-3+6g4KbybWckxK8B2pp7iEh62y2Bunxy/K9S21IsmtQ="; };}