about summary refs log tree commit diff
path: root/pkgs/by-name/gi/githooks/package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/gi/githooks/package.nix')
-rw-r--r--pkgs/by-name/gi/githooks/package.nix86
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..8a68c861471bc
--- /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 = "A 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";
+  };
+}