Merge pull request #330634 from r-ryantm/auto-update/circumflex
[NixPkgs.git] / pkgs / servers / monitoring / prometheus / dcgm-exporter / default.nix
blobf71cd1776bd44a2de23179768a0993696d9b402c
1 { lib
2 , buildGoModule
3 , fetchFromGitHub
4 , autoAddDriverRunpath
5 , dcgm
6 , linuxPackages
7 }:
8 buildGoModule rec {
9   pname = "dcgm-exporter";
11   # The first portion of this version string corresponds to a compatible DCGM
12   # version.
13   version = "3.2.5-3.1.7"; # N.B: If you change this, update dcgm as well to the matching version.
15   src = fetchFromGitHub {
16     owner = "NVIDIA";
17     repo = pname;
18     rev = "refs/tags/${version}";
19     hash = "sha256-+Hviq+iu1LBcy2VwmCX5xOq1I/zevfydesVlrVorGOI=";
20   };
22   # Upgrade to go 1.17 during the vendoring FOD build because it fails otherwise.
23   overrideModAttrs = _: {
24     preBuild = ''
25       substituteInPlace go.mod --replace 'go 1.16' 'go 1.17'
26       go mod tidy
27     '';
28     postInstall = ''
29       cp go.mod "$out/go.mod"
30     '';
31   };
33   CGO_LDFLAGS = "-ldcgm";
35   buildInputs = [
36     dcgm
37   ];
39   # gonvml and go-dcgm do not work with ELF BIND_NOW hardening because not all
40   # symbols are available on startup.
41   hardeningDisable = [ "bindnow" ];
43   # Copy the modified go.mod we got from the vendoring process.
44   preBuild = ''
45     cp vendor/go.mod go.mod
46   '';
48   vendorHash = "sha256-Fjvx15e/psxoqoS6c6GhiQfe7g2aI40EmPR26xLhrzg=";
50   nativeBuildInputs = [
51     autoAddDriverRunpath
52   ];
54   # Tests try to interact with running DCGM service.
55   doCheck = false;
57   postFixup = ''
58     patchelf --add-needed libnvidia-ml.so "$out/bin/dcgm-exporter"
59   '';
61   meta = with lib; {
62     description = "NVIDIA GPU metrics exporter for Prometheus leveraging DCGM";
63     homepage = "https://github.com/NVIDIA/dcgm-exporter";
64     license = licenses.asl20;
65     maintainers = teams.deshaw.members;
66     mainProgram = "dcgm-exporter";
67     platforms = platforms.linux;
68   };