diff options
Diffstat (limited to 'pkgs/by-name/gi/githooks/package.nix')
-rw-r--r-- | pkgs/by-name/gi/githooks/package.nix | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/pkgs/by-name/gi/githooks/package.nix b/pkgs/by-name/gi/githooks/package.nix new file mode 100644 index 0000000000000..fbfc407b8101d --- /dev/null +++ b/pkgs/by-name/gi/githooks/package.nix @@ -0,0 +1,86 @@ +{ + lib, + buildGoModule, + fetchFromGitHub, + git, + testers, + makeWrapper, + githooks +}: +buildGoModule rec { + pname = "githooks"; + version = "3.0.2"; + + src = fetchFromGitHub { + owner = "gabyx"; + repo = "githooks"; + rev = "v${version}"; + hash = "sha256-gTvbvW+AFyZUBt7gSKJGc9lrl7CAy+cOElcADlIvuRk="; + }; + + modRoot = "./githooks"; + vendorHash = "sha256-ZcDD4Z/thtyCvXg6GzzKC/FSbh700QEaqXU8FaZaZc4="; + + nativeBuildInputs = [ makeWrapper ]; + + buildInputs = [ git ]; + + strictDeps = true; + + ldflags = [ + "-s" # Disable symbole table. + "-w" # Disable DWARF generation. + ]; + + # We need to disable updates and other features: + # That is done with tag `package_manager_enabled`. + tags = [ "package_manager_enabled" ]; + + checkFlags = + let + skippedTests = [ + "TestGithooksCompliesWithGit" # Needs internet to download all hooks documentation. + "TestUpdateImages" # Needs docker/podman. + ]; + in + [ + "-v" + "-skip" + "(${builtins.concatStringsSep "|" skippedTests})" + ]; + + doCheck = true; + + # We need to generate some build files before building. + postConfigure = '' + GH_BUILD_VERSION="${version}" \ + GH_BUILD_TAG="v${version}" \ + go generate -mod=vendor ./... + ''; + + postInstall = '' + # Rename executable to proper names. + mv $out/bin/cli $out/bin/githooks-cli + mv $out/bin/runner $out/bin/githooks-runner + mv $out/bin/dialog $out/bin/githooks-dialog + ''; + + postFixup = '' + wrapProgram "$out/bin/githooks-cli" --prefix PATH : ${lib.makeBinPath [ git ]} + wrapProgram "$out/bin/githooks-runner" --prefix PATH : ${lib.makeBinPath [ git ]} + ''; + + passthru.tests.version = testers.testVersion { + package = githooks; + command = "githooks-cli --version"; + inherit version; + }; + + meta = with lib; { + description = "Git hooks manager with per-repo and shared Git hooks including version control"; + homepage = "https://github.com/gabyx/Githooks"; + license = licenses.mpl20; + maintainers = with maintainers; [ gabyx ]; + mainProgram = "githooks-cli"; + }; +} |