summary refs log tree commit diff
path: root/pkgs/applications/networking/cluster/linkerd/default.nix
blob: 9bd9a8e7a18712e63175780741ec1b2013a8a56b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
{ lib, fetchFromGitHub, buildGoModule, installShellFiles }:

let generic = { channel, version, sha256, vendorSha256 }:
  buildGoModule rec {
    pname = "linkerd-${channel}";
    inherit version vendorSha256;

    src = fetchFromGitHub {
      owner = "linkerd";
      repo = "linkerd2";
      rev = "${channel}-${version}";
      inherit sha256;
    };

    subPackages = [ "cli" ];
    runVend = true;

    preBuild = ''
      env GOFLAGS="" go generate ./pkg/charts/static
      env GOFLAGS="" go generate ./jaeger/static
      env GOFLAGS="" go generate ./multicluster/static
      env GOFLAGS="" go generate ./viz/static
    '';

    buildFlagsArray = [
      "-tags=prod"
    ];

    ldflags = [
      "-s" "-w"
      "-X github.com/linkerd/linkerd2/pkg/version.Version=${src.rev}"
    ];

    nativeBuildInputs = [ installShellFiles ];

    postInstall = ''
      mv $out/bin/cli $out/bin/linkerd
      installShellCompletion --cmd linkerd \
        --bash <($out/bin/linkerd completion bash) \
        --zsh <($out/bin/linkerd completion zsh) \
        --fish <($out/bin/linkerd completion fish)
    '';

    doInstallCheck = true;
    installCheckPhase = ''
      $out/bin/linkerd version --client | grep ${src.rev} > /dev/null
    '';

    meta = with lib; {
      description = "A simple Kubernetes service mesh that improves security, observability and reliability";
      downloadPage = "https://github.com/linkerd/linkerd2/";
      homepage = "https://linkerd.io/";
      license = licenses.asl20;
      maintainers = with maintainers; [ Gonzih bryanasdev000 superherointj ];
    };
  };
in
  {
    stable = generic {
      channel = "stable";
      version = "2.10.2";
      sha256 = "sha256-dOD0S4FJ2lXE+1VZooi8tKvC8ndGEHAxmAvSqoWI/m0=";
      vendorSha256 = "sha256-Qb0FZOvKL9GgncfUl538PynkYbm3V8Q6lUpApUoIp5s=";
    };
    edge = generic {
      channel = "edge";
      version = "21.7.2";
      sha256 = "sha256-rEO84t6znNb59a9i+SHgT4r0xzja6eMYi9lWmdU24Cc=";
      vendorSha256 = "sha256-esVy+oIZa/ucvucdNV7MfUGFkIql9T2zl0+eu3hZAt8=";
    };
  }