about summary refs log tree commit diff
path: root/third_party/nix/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/nix/default.nix')
-rw-r--r--third_party/nix/default.nix30
1 files changed, 23 insertions, 7 deletions
diff --git a/third_party/nix/default.nix b/third_party/nix/default.nix
index e6fa3f1f7d62..b95309ff103d 100644
--- a/third_party/nix/default.nix
+++ b/third_party/nix/default.nix
@@ -12,16 +12,23 @@ let
   largeBoehm = pkgs.boehmgc.override {
     enableLargeConfig = true;
   };
-in pkgs.llvmPackages.libcxxStdenv.mkDerivation {
-  pname = "tazjix";
-  version = "2.3.4";
+
   src = ./.;
 
-  # Abseil's sources need to be symlinked into Nix' sources.
-  postUnpack = ''
-    ln -fs ${pkgs.abseil_cpp.drvAttrs.src} nix/abseil_cpp
-    ln -fs ${pkgs.glog.drvAttrs.src} nix/glog
+  # Proto generation in CMake is theoretically possible, but that is
+  # very theoretical - this does it in Nix instead.
+  protoSrcs = pkgs.runCommand "nix-proto-srcs" {} ''
+    export PROTO_SRCS=${src}/src/proto
+    mkdir -p $out/libproto
+    ${pkgs.protobuf}/bin/protoc -I=$PROTO_SRCS \
+      --cpp_out=$out/libproto \
+      --plugin=protoc-gen-grpc=${pkgs.grpc}/bin/grpc_cpp_plugin --grpc_out=$out/libproto \
+      $PROTO_SRCS/*.proto
   '';
+in pkgs.llvmPackages.libcxxStdenv.mkDerivation {
+  pname = "tazjix";
+  version = "2.3.4";
+  inherit src;
 
   nativeBuildInputs = with pkgs; [
     bison
@@ -35,15 +42,20 @@ in pkgs.llvmPackages.libcxxStdenv.mkDerivation {
 
  # TODO(tazjin): Some of these might only be required for native inputs
   buildInputs = with pkgs; [
+    abseil_cpp
     aws-s3-cpp
     brotli
     bzip2
+    c-ares
     curl
     editline
     flex
+    glog
+    grpc
     libseccomp
     libsodium
     openssl
+    protobuf
     sqlite
     xz
   ];
@@ -53,6 +65,10 @@ in pkgs.llvmPackages.libcxxStdenv.mkDerivation {
     largeBoehm
   ];
 
+  # Forward the location of the generated Protobuf / gRPC files so
+  # that they can be included by CMake.
+  NIX_PROTO_SRCS = protoSrcs;
+
   # Install the various symlinks to the Nix binary which users expect
   # to exist.
   postInstall = ''