@@ -0,0 +1,65 @@
1+{ lib
2+, fetchFromGitHub
3+, buildGoModule
4+, coredns
5+, installShellFiles
6+, isFull ? false
7+, enableGateway ? false
8+, pname ? "kuma"
9+, components ? lib.optionals isFull [
10+ "kumactl"
11+ "kuma-cp"
12+ "kuma-prometheus-sd"
13+ "kuma-dp"
14+ ]
15+}:
16+
17+buildGoModule rec {
18+ inherit pname ;
19+ version = "1.4.0";
20+ tags = lib.optionals enableGateway ["gateway"];
21+ vendorSha256 = "1fc5psvbd9bpc6c3y2cpx5dx8cgr2fcp7nln3kwfgbryahq2y8wl";
22+
23+ src = fetchFromGitHub {
24+ owner = "kumahq";
25+ repo = "kuma";
26+ rev = version;
27+ sha256 = "0agib3w5s270n5rhg54m3p4f21s5fhdrhaks374j7l21njs7xhqb";
28+ };
29+
30+ doCheck = false;
31+
32+ nativeBuildInputs = [installShellFiles] ++ lib.optionals isFull [coredns];
33+
34+ preBuild = ''
35+ export HOME=$TMPDIR
36+ '';
37+
38+ subPackages = map (p: "app/" + p) components;
39+
40+ postInstall = lib.concatMapStringsSep "\n" (p: ''
41+ installShellCompletion --cmd ${p} \
42+ --bash <($out/bin/${p} completion bash) \
43+ --fish <($out/bin/${p} completion fish) \
44+ --zsh <($out/bin/${p} completion zsh)
45+ '') components + lib.optionalString isFull ''
46+ ln -sLf ${coredns}/bin/coredns $out/bin
47+ '';
48+
49+ ldflags = let
50+ prefix = "github.com/kumahq/kuma/pkg/version";
51+ in [
52+ "-s" "-w"
53+ "-X ${prefix}.version=${version}"
54+ "-X ${prefix}.gitTag=${version}"
55+ "-X ${prefix}.gitCommit=${version}"
56+ "-X ${prefix}.buildDate=${version}"
57+ ];
58+
59+ meta = with lib; {
60+ description = "Service mesh controller";
61+ homepage = "https://kuma.io/";
62+ license = licenses.asl20;
63+ maintainers = with maintainers; [ zbioe ];
64+ };
65+}