summary refs log tree commit diff
path: root/pkgs/applications/networking/cluster/kuma/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/networking/cluster/kuma/default.nix')
-rw-r--r--pkgs/applications/networking/cluster/kuma/default.nix65
1 files changed, 65 insertions, 0 deletions
diff --git a/pkgs/applications/networking/cluster/kuma/default.nix b/pkgs/applications/networking/cluster/kuma/default.nix
new file mode 100644
index 00000000000..d7a58f09b4e
--- /dev/null
+++ b/pkgs/applications/networking/cluster/kuma/default.nix
@@ -0,0 +1,65 @@
+{ lib
+, fetchFromGitHub
+, buildGoModule
+, coredns
+, installShellFiles
+, isFull ? false
+, enableGateway ? false
+, pname ? "kuma"
+, components ? lib.optionals isFull [
+    "kumactl"
+    "kuma-cp"
+    "kuma-prometheus-sd"
+    "kuma-dp"
+  ]
+}:
+
+buildGoModule rec {
+  inherit pname ;
+  version = "1.4.0";
+  tags = lib.optionals enableGateway ["gateway"];
+  vendorSha256 = "1fc5psvbd9bpc6c3y2cpx5dx8cgr2fcp7nln3kwfgbryahq2y8wl";
+
+  src = fetchFromGitHub {
+    owner = "kumahq";
+    repo = "kuma";
+    rev = version;
+    sha256 = "0agib3w5s270n5rhg54m3p4f21s5fhdrhaks374j7l21njs7xhqb";
+  };
+
+  doCheck = false;
+
+  nativeBuildInputs = [installShellFiles] ++ lib.optionals isFull [coredns];
+
+  preBuild = ''
+    export HOME=$TMPDIR
+  '';
+
+  subPackages = map (p: "app/" + p) components;
+
+  postInstall = lib.concatMapStringsSep "\n" (p: ''
+    installShellCompletion --cmd ${p} \
+      --bash <($out/bin/${p} completion bash) \
+      --fish <($out/bin/${p} completion fish) \
+      --zsh <($out/bin/${p} completion zsh)
+  '') components + lib.optionalString isFull ''
+    ln -sLf ${coredns}/bin/coredns $out/bin
+  '';
+
+  ldflags = let
+    prefix = "github.com/kumahq/kuma/pkg/version";
+  in [
+    "-s" "-w"
+    "-X ${prefix}.version=${version}"
+    "-X ${prefix}.gitTag=${version}"
+    "-X ${prefix}.gitCommit=${version}"
+    "-X ${prefix}.buildDate=${version}"
+  ];
+
+  meta = with lib; {
+    description = "Service mesh controller";
+    homepage = "https://kuma.io/";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ zbioe ];
+  };
+}