2024-08-19 13:42:17 +02:00
|
|
|
{ depot, pkgs, lib, ... }:
|
2023-12-09 14:40:57 +01:00
|
|
|
let
|
2024-08-19 13:42:17 +02:00
|
|
|
protos = lib.sourceByRegex depot.path.origSrc [
|
|
|
|
"buf.yaml"
|
|
|
|
"buf.gen.yaml"
|
|
|
|
# We need to include castore.proto (only), as it's referred.
|
|
|
|
"^tvix(/castore(/protos(/castore\.proto)?)?)?$"
|
|
|
|
"^tvix(/store(/protos(/.*\.proto)?)?)?$"
|
|
|
|
];
|
2023-12-09 14:40:57 +01:00
|
|
|
in
|
|
|
|
depot.nix.readTree.drvTargets {
|
|
|
|
inherit protos;
|
|
|
|
|
|
|
|
# Lints and ensures formatting of the proto files.
|
|
|
|
check = pkgs.stdenv.mkDerivation {
|
|
|
|
name = "proto-check";
|
|
|
|
src = protos;
|
|
|
|
|
|
|
|
nativeBuildInputs = [
|
|
|
|
pkgs.buf
|
|
|
|
];
|
|
|
|
|
|
|
|
buildPhase = ''
|
|
|
|
export HOME=$TMPDIR
|
|
|
|
buf lint
|
|
|
|
buf format -d --exit-code
|
|
|
|
touch $out
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
2023-10-17 14:42:58 +02:00
|
|
|
# Produces the golang bindings.
|
|
|
|
go-bindings = pkgs.stdenv.mkDerivation {
|
|
|
|
name = "go-bindings";
|
2023-12-09 14:40:57 +01:00
|
|
|
src = protos;
|
2023-10-17 14:42:58 +02:00
|
|
|
|
|
|
|
nativeBuildInputs = [
|
|
|
|
pkgs.buf
|
|
|
|
pkgs.protoc-gen-go
|
|
|
|
pkgs.protoc-gen-go-grpc
|
|
|
|
];
|
|
|
|
|
|
|
|
buildPhase = ''
|
|
|
|
export HOME=$TMPDIR
|
|
|
|
buf generate
|
|
|
|
|
|
|
|
mkdir -p $out
|
|
|
|
cp tvix/store/protos/*.pb.go $out/
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
}
|