base16-schemes: unstable-2024-06-21 -> unstable-2024-11-12
[NixPkgs.git] / pkgs / by-name / gl / glasskube / package.nix
bloba6c5f54f814e7564306c310b4e6531c2ff2b2e84
1 { lib
2 , buildGo123Module
3 , buildNpmPackage
4 , fetchFromGitHub
5 , nix-update-script
6 , installShellFiles
7 , versionCheckHook
8 }:
10 let
11   version = "0.25.0";
12   gitSrc = fetchFromGitHub {
13     owner = "glasskube";
14     repo = "glasskube";
15     rev = "refs/tags/v${version}";
16     hash = "sha256-456kMO7KappYI2FuHA8g+uhkJNCGCxb/9zmleZqu6SQ=";
17   };
18   web-bundle = buildNpmPackage rec {
19     inherit version;
20     pname = "glasskube-web-bundle";
22     src = gitSrc;
24     npmDepsHash = "sha256-XKPFT8eyZmDhNbuCpTzGYeg5QdhgpVhHkj8AGSlh6WU=";
26     dontNpmInstall = true;
28     installPhase = ''
29       runHook preInstall
31       mkdir $out
32       mv internal/web/root/static/bundle $out
34       runHook postInstall
35     '';
36   };
38 in buildGo123Module rec {
39   inherit version;
40   pname = "glasskube";
42   src = gitSrc;
44   vendorHash = "sha256-oly6SLgXVyvKQQuPrb76LYngoDPNLjTAs4gWCT3/kew=";
46   CGO_ENABLED = 0;
48   ldflags = [
49     "-s"
50     "-w"
51     "-X github.com/glasskube/glasskube/internal/config.Version=${version}"
52     "-X github.com/glasskube/glasskube/internal/config.Commit=${src.rev}"
53   ];
55   subPackages = [ "cmd/glasskube" "cmd/package-operator" ];
57   nativeBuildInputs = [ installShellFiles ];
58   nativeCheckInputs = [ versionCheckHook ];
59   doInstallCheck = true;
61   preBuild = ''
62     cp -r ${web-bundle}/bundle internal/web/root/static/bundle
63   '';
65   postInstall = ''
66     # Completions
67     installShellCompletion --cmd glasskube \
68       --bash <($out/bin/glasskube completion bash) \
69       --fish <($out/bin/glasskube completion fish) \
70       --zsh <($out/bin/glasskube completion zsh)
71   '';
73   passthru.updateScript = nix-update-script { };
75   meta = with lib; {
76     description =
77       "The missing Package Manager for Kubernetes featuring a GUI and a CLI";
78     homepage = "https://github.com/glasskube/glasskube";
79     changelog =
80       "https://github.com/glasskube/glasskube/releases/tag/v${version}";
81     maintainers = with maintainers; [ jakuzure ];
82     license = licenses.asl20;
83     mainProgram = "glasskube";
84   };