diff --git a/overlay.nix b/overlay.nix index eb9fd2b4..df6aa8d2 100644 --- a/overlay.nix +++ b/overlay.nix @@ -36,6 +36,8 @@ _finalNixpkgs: prevNixpkgs: let erdpy = prevNixpkgs.callPackage ./packages/erdpy/default.nix {}; elrond-go = prevNixpkgs.callPackage ./packages/elrond-go/default.nix {}; elrond-proxy-go = prevNixpkgs.callPackage ./packages/elrond-proxy-go/default.nix {}; + + zkllvm = prevNixpkgs.callPackage ./packages/zkllvm/default.nix {}; in { metacraft-labs = rec { solana = solana-full-sdk; @@ -50,5 +52,6 @@ in { inherit cattrs22-2; inherit elrond-go; inherit elrond-proxy-go; + inherit zkllvm; }; } diff --git a/packages/zkllvm/default.nix b/packages/zkllvm/default.nix new file mode 100644 index 00000000..2353cb7f --- /dev/null +++ b/packages/zkllvm/default.nix @@ -0,0 +1,48 @@ +{ + lib, + fetchgit, + pkgs, + clang13Stdenv, +}: let + boost-custom = pkgs.boost.override { + enableShared = false; + enableStatic = true; + enableIcu = true; + }; +in + clang13Stdenv.mkDerivation rec { + pname = "zkllvm"; + version = "0.1.3"; + src = + (fetchgit { + url = "https://github.com/nilfoundation/zkllvm.git"; + rev = "v${version}"; + sha256 = "sha256-rPbG2xRQAIJv4YSTXMxLWUhG3EKT62X3zOMeVsgic6Q="; + fetchSubmodules = true; + deepClone = true; + leaveDotGit = true; + }) + .overrideAttrs (_: { + GIT_CONFIG_COUNT = 1; + GIT_CONFIG_KEY_0 = "url.https://github.com/.insteadOf"; + GIT_CONFIG_VALUE_0 = "git@github.com:"; + }); + + postPatch = '' + sed -i 's#set(ZKLLVM_DEV_ENVIRONMENT TRUE)#set(ZKLLVM_DEV_ENVIRONMENT TRUE)\nset(ZKLLVM_VERSION \"${version}\")#' CMakeLists.txt + ''; + + buildPhase = '' + mkdir build + cmake -G "Unix Makefiles" -B build -DCMAKE_BUILD_TYPE=Release -DCIRCUIT_ASSEMBLY_OUTPUT=TRUE . + + make -j$(nproc) + make assigner clang -j$(nproc) + # make rslang -j$(nproc) + ls bbuild + ''; + + nativeBuildInputs = with pkgs; [pkgconfig cmake python3 git]; + + buildInputs = with pkgs; [boost-custom spdlog icu openssl llvmPackages_13.llvm git]; + } diff --git a/shell.nix b/shell.nix index a8046f2f..847ab6d5 100644 --- a/shell.nix +++ b/shell.nix @@ -13,6 +13,8 @@ with pkgs; metacraft-labs.cosmos-theta-testnet metacraft-labs.circom metacraft-labs.circ + + metacraft-labs.zkllvm ] ++ lib.optionals (!stdenv.isDarwin) [ # Solana is still not compatible with macOS on M1