{ pkgs ? import { } }: with pkgs; let jasmin-src = fetchFromGitHub { owner = "jasmin-lang"; repo = "jasmin"; rev = "4d42c212b924ad7553c2eab49d337fd128ad629b"; hash = "sha256-Ve9Eezpvi1wynlqQxO4KDSqw13MDXQmR8NjOS3PHWzg="; }; jasmin-drv = callPackage "${jasmin-src}/default.nix" { inherit pkgs; }; jasmin = jasmin-drv.overrideAttrs { name = "jasmin with syscalls"; buildPhase = '' make -C compiler/ CIL make -C compiler/ ''; }; libjade = stdenvNoCC.mkDerivation rec { name = "libjade-src"; version = "2023.05-2"; src = fetchzip { url = "https://github.com/formosa-crypto/libjade/releases/download/release%2F${version}/libjade-dist-src-amd64.tar.gz"; hash = "sha256-IWLMWExvdZ++V3a9zX0a9xjSDgOA98h3sSmLOj8hKPE="; }; buildPhase = '' mkdir -p $out cp -r $src/libjade $out chmod -R u+w $out sed -i '/#randombytes/c\' $out/libjade/crypto_kem/kyber_kyber768_avx2/kyber_kyber768_avx2.jazz sed -i 's/#\[returnaddress="stack"\]/#\[returnaddress="mmx"\]/g' $out/libjade/crypto_kem/kyber_kyber768_avx2/kyber_kyber768_avx2.jazz ''; }; in stdenv.mkDerivation { name = "mlkem-agent"; src = nix-gitignore.gitignoreSource [ ] ./.; nativeBuildInputs = [ gnumake gcc jasmin ]; configurePhase = '' mkdir build ''; installPhase = '' mkdir -p $out/lib cp build/libagent.a $out/lib ''; JASMINPATH = "Jade=${libjade}/libjade/"; }