diff --git a/pkgs/by-name/kr/krew/package.nix b/pkgs/by-name/kr/krew/package.nix index e3eb7af8e101..314c6366fa50 100644 --- a/pkgs/by-name/kr/krew/package.nix +++ b/pkgs/by-name/kr/krew/package.nix @@ -4,6 +4,8 @@ fetchFromGitHub, makeWrapper, gitMinimal, + writableTmpDirAsHomeHook, + versionCheckHook, }: buildGoModule (finalAttrs: { @@ -13,8 +15,13 @@ buildGoModule (finalAttrs: { src = fetchFromGitHub { owner = "kubernetes-sigs"; repo = "krew"; - rev = "v${finalAttrs.version}"; - sha256 = "sha256-KG4/vtEfwWVddfFoNbC4xakxOynDY6jyxek4JAXW5gY="; + tag = "v${finalAttrs.version}"; + hash = "sha256-rhl4qVHwl876OSDrcLSS07x3H/x/zmFLPHdRw+fcYsw="; + leaveDotGit = true; + postFetch = '' + git -C "$out" rev-parse --short HEAD > "$out/.git_head" + rm -rf "$out/.git" + ''; }; vendorHash = "sha256-z0wiYknXcCx4vqROngn58CRe9TBgya4y3v736VBMhQ8="; @@ -23,11 +30,29 @@ buildGoModule (finalAttrs: { nativeBuildInputs = [ makeWrapper ]; + ldflags = [ + "-s" + "-X" + "sigs.k8s.io/krew/internal/version.gitTag=v${finalAttrs.version}" + ]; + + preBuild = '' + ldflags+=" -X=sigs.k8s.io/krew/internal/version.gitCommit=$(<.git_head)" + ''; + postFixup = '' wrapProgram $out/bin/krew \ --prefix PATH : ${lib.makeBinPath [ gitMinimal ]} ''; + doInstallCheck = true; + nativeInstallCheckInputs = [ + writableTmpDirAsHomeHook + versionCheckHook + ]; + versionCheckKeepEnvironment = [ "HOME" ]; + versionCheckProgramArg = "version"; + meta = { description = "Package manager for kubectl plugins"; mainProgram = "krew";