biome: 1.9.2 -> 1.9.3
[NixPkgs.git] / pkgs / tools / security / witness / default.nix
blob1a24742e8a364133ad42911b870088b96bac4d7a
1 { lib
2 , buildGoModule
3 , fetchFromGitHub
4 , installShellFiles
6 # testing
7 , testers
8 , witness
9 }:
11 buildGoModule rec {
12   pname = "witness";
13   version = "0.6.0";
15   src = fetchFromGitHub {
16     owner = "in-toto";
17     repo = "witness";
18     rev = "v${version}";
19     sha256 = "sha256-ao9mxN5cMGopCRXUkJRTNJemizzibdw0Q+oAhKjUyHA=";
20   };
21   vendorHash = "sha256-pDMvtSavifWfxJqfiOef0CyT8KtU8BUjEFwReElkEeM=";
23   nativeBuildInputs = [ installShellFiles ];
25   # We only want the witness binary, not the helper utilities for generating docs.
26   subPackages = [ "." ];
28   ldflags = [
29     "-s"
30     "-w"
31     "-X github.com/in-toto/witness/cmd.Version=v${version}"
32   ];
34   # Feed in all tests for testing
35   # This is because subPackages above limits what is built to just what we
36   # want but also limits the tests
37   preCheck = ''
38     unset subPackages
39   '';
41   postInstall = ''
42     installShellCompletion --cmd witness \
43       --bash <($out/bin/witness completion bash) \
44       --fish <($out/bin/witness completion fish) \
45       --zsh <($out/bin/witness completion zsh)
46   '';
48   passthru.tests.version = testers.testVersion {
49     package = witness;
50     command = "witness version";
51     version = "v${version}";
52   };
54   meta = with lib; {
55     description = "Pluggable framework for software supply chain security. Witness prevents tampering of build materials and verifies the integrity of the build process from source to target";
56     longDescription = ''
57       Witness prevents tampering of build materials and verifies the integrity
58       of the build process from source to target. It works by wrapping commands
59       executed in a continuous integration process. Its attestation system is
60       pluggable and offers support out of the box for most major CI and
61       infrastructure providers. Verification of Witness metadata and a secure
62       PKI distribution system will mitigate against many software supply chain
63       attack vectors and can be used as a framework for automated governance.
64     '';
65     mainProgram = "witness";
66     homepage = "https://github.com/testifysec/witness";
67     changelog = "https://github.com/testifysec/witness/releases/tag/v${version}";
68     license = licenses.asl20;
69     maintainers = with maintainers; [ fkautz jk ];
70   };