2020-05-26 05:08:22 +02:00
|
|
|
{ pkgs ? (import ../.. {}).third_party
|
2020-05-24 18:53:42 +02:00
|
|
|
, buildType ? "release", ... }:
|
2020-05-17 21:46:06 +02:00
|
|
|
|
|
|
|
let
|
|
|
|
aws-s3-cpp = pkgs.aws-sdk-cpp.override {
|
|
|
|
apis = ["s3" "transfer"];
|
|
|
|
customMemoryManagement = false;
|
|
|
|
};
|
|
|
|
|
|
|
|
# TODO(tazjin): this is copied from the original derivation, but what
|
|
|
|
# is it for?
|
|
|
|
largeBoehm = pkgs.boehmgc.override {
|
|
|
|
enableLargeConfig = true;
|
|
|
|
};
|
2020-07-05 21:02:10 +02:00
|
|
|
|
|
|
|
src = ./.;
|
|
|
|
|
|
|
|
# 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
|
|
|
|
'';
|
2020-05-27 23:03:36 +02:00
|
|
|
in pkgs.llvmPackages.libcxxStdenv.mkDerivation {
|
2020-07-16 17:18:43 +02:00
|
|
|
pname = "tvix";
|
2020-05-17 22:25:50 +02:00
|
|
|
version = "2.3.4";
|
2020-07-05 21:02:10 +02:00
|
|
|
inherit src;
|
2020-05-17 21:46:06 +02:00
|
|
|
|
|
|
|
nativeBuildInputs = with pkgs; [
|
|
|
|
bison
|
2020-05-19 21:47:23 +02:00
|
|
|
clang-tools
|
2020-05-20 04:03:08 +02:00
|
|
|
cmake
|
2020-05-17 21:46:06 +02:00
|
|
|
pkgconfig
|
|
|
|
libxml2
|
|
|
|
libxslt
|
2020-05-22 23:58:04 +02:00
|
|
|
(import ./clangd.nix pkgs)
|
2020-05-17 21:46:06 +02:00
|
|
|
];
|
|
|
|
|
|
|
|
# TODO(tazjin): Some of these might only be required for native inputs
|
|
|
|
buildInputs = with pkgs; [
|
2020-07-05 18:37:36 +02:00
|
|
|
abseil_cpp
|
2020-05-17 21:46:06 +02:00
|
|
|
aws-s3-cpp
|
|
|
|
brotli
|
|
|
|
bzip2
|
2020-07-05 21:02:10 +02:00
|
|
|
c-ares
|
2020-05-17 21:46:06 +02:00
|
|
|
curl
|
|
|
|
editline
|
|
|
|
flex
|
2020-07-05 18:46:01 +02:00
|
|
|
glog
|
2020-07-05 21:02:10 +02:00
|
|
|
grpc
|
2020-05-17 21:46:06 +02:00
|
|
|
libseccomp
|
|
|
|
libsodium
|
|
|
|
openssl
|
2020-07-05 21:02:10 +02:00
|
|
|
protobuf
|
2020-05-17 21:46:06 +02:00
|
|
|
sqlite
|
|
|
|
xz
|
|
|
|
];
|
|
|
|
|
2020-06-21 22:41:46 +02:00
|
|
|
propagatedBuildInputs = with pkgs; [
|
|
|
|
boost
|
|
|
|
largeBoehm
|
|
|
|
];
|
|
|
|
|
2020-07-05 21:02:10 +02:00
|
|
|
# Forward the location of the generated Protobuf / gRPC files so
|
|
|
|
# that they can be included by CMake.
|
|
|
|
NIX_PROTO_SRCS = protoSrcs;
|
|
|
|
|
2020-05-17 21:46:06 +02:00
|
|
|
# Install the various symlinks to the Nix binary which users expect
|
|
|
|
# to exist.
|
|
|
|
postInstall = ''
|
|
|
|
ln -s $out/bin/nix $out/bin/nix-build
|
|
|
|
ln -s $out/bin/nix $out/bin/nix-channel
|
|
|
|
ln -s $out/bin/nix $out/bin/nix-collect-garbage
|
|
|
|
ln -s $out/bin/nix $out/bin/nix-copy-closure
|
|
|
|
ln -s $out/bin/nix $out/bin/nix-daemon
|
|
|
|
ln -s $out/bin/nix $out/bin/nix-env
|
|
|
|
ln -s $out/bin/nix $out/bin/nix-hash
|
|
|
|
ln -s $out/bin/nix $out/bin/nix-instantiate
|
|
|
|
ln -s $out/bin/nix $out/bin/nix-prefetch-url
|
|
|
|
ln -s $out/bin/nix $out/bin/nix-shell
|
|
|
|
ln -s $out/bin/nix $out/bin/nix-store
|
|
|
|
|
|
|
|
mkdir -p $out/libexec/nix
|
2020-05-17 22:25:50 +02:00
|
|
|
ln -s $out/bin/nix $out/libexec/nix/build-remote
|
2020-05-17 21:46:06 +02:00
|
|
|
'';
|
|
|
|
|
|
|
|
# TODO(tazjin): integration test setup?
|
|
|
|
# TODO(tazjin): docs generation?
|
|
|
|
}
|