1{
2 lib,
3 buildGoModule,
4 fetchFromGitHub,
5 installShellFiles,
6}:
7let
8 generic =
9 {
10 version,
11 sha256,
12 rev ? version,
13 ...
14 }@attrs:
15 let
16 attrs' = builtins.removeAttrs attrs [
17 "version"
18 "sha256"
19 "rev"
20 ];
21 in
22 buildGoModule {
23 pname = "kops";
24 inherit version;
25
26 src = fetchFromGitHub {
27 rev = rev;
28 owner = "kubernetes";
29 repo = "kops";
30 inherit sha256;
31 };
32
33 vendorHash = null;
34
35 nativeBuildInputs = [ installShellFiles ];
36
37 subPackages = [ "cmd/kops" ];
38
39 ldflags = [
40 "-s"
41 "-w"
42 "-X k8s.io/kops.Version=${version}"
43 "-X k8s.io/kops.GitVersion=${version}"
44 ];
45
46 doCheck = false;
47
48 postInstall = ''
49 installShellCompletion --cmd kops \
50 --bash <($GOPATH/bin/kops completion bash) \
51 --fish <($GOPATH/bin/kops completion fish) \
52 --zsh <($GOPATH/bin/kops completion zsh)
53 '';
54
55 meta = with lib; {
56 description = "Easiest way to get a production Kubernetes up and running";
57 mainProgram = "kops";
58 homepage = "https://github.com/kubernetes/kops";
59 changelog = "https://github.com/kubernetes/kops/tree/master/docs/releases";
60 license = licenses.asl20;
61 maintainers = with maintainers; [
62 offline
63 zimbatm
64 diegolelis
65 yurrriq
66 ];
67 };
68 }
69 // attrs';
70in
71rec {
72 mkKops = generic;
73
74 kops_1_27 = mkKops rec {
75 version = "1.27.1";
76 sha256 = "sha256-WV+0380yj8GHckY4PDM3WspbZ/YuYZOAQEMd2ygEOjo=";
77 rev = "v${version}";
78 };
79
80 kops_1_28 = mkKops rec {
81 version = "1.28.7";
82 sha256 = "sha256-rTf7+w/o8MGSBKV9wCzZOEI0v31exZhOJpRABeF/KyI=";
83 rev = "v${version}";
84 };
85
86 kops_1_29 = mkKops rec {
87 version = "1.29.2";
88 sha256 = "sha256-SRj0x9N+yfTG/UL/hu1ds46Zt6d5SUYU0PA9lPHO6jQ=";
89 rev = "v${version}";
90 };
91
92 kops_1_30 = mkKops rec {
93 version = "1.30.4";
94 sha256 = "sha256-f+VdgQj6tHWrn+LG6qkArjcADYfpKjuOp+bU0BTYsWY=";
95 rev = "v${version}";
96 };
97}