diff options
Diffstat (limited to 'nixpkgs/pkgs/servers/monitoring/prometheus/dcgm-exporter/default.nix')
-rw-r--r-- | nixpkgs/pkgs/servers/monitoring/prometheus/dcgm-exporter/default.nix | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/dcgm-exporter/default.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/dcgm-exporter/default.nix new file mode 100644 index 000000000000..7c4d2cfae06e --- /dev/null +++ b/nixpkgs/pkgs/servers/monitoring/prometheus/dcgm-exporter/default.nix @@ -0,0 +1,69 @@ +{ lib +, buildGoModule +, fetchFromGitHub +, cudaPackages +, dcgm +, linuxPackages +}: +buildGoModule rec { + pname = "dcgm-exporter"; + + # The first portion of this version string corresponds to a compatible DCGM + # version. + version = "3.2.5-3.1.7"; # N.B: If you change this, update dcgm as well to the matching version. + + src = fetchFromGitHub { + owner = "NVIDIA"; + repo = pname; + rev = "refs/tags/${version}"; + hash = "sha256-+Hviq+iu1LBcy2VwmCX5xOq1I/zevfydesVlrVorGOI="; + }; + + # Upgrade to go 1.17 during the vendoring FOD build because it fails otherwise. + overrideModAttrs = _: { + preBuild = '' + substituteInPlace go.mod --replace 'go 1.16' 'go 1.17' + go mod tidy + ''; + postInstall = '' + cp go.mod "$out/go.mod" + ''; + }; + + CGO_LDFLAGS = "-ldcgm"; + + buildInputs = [ + dcgm + ]; + + # gonvml and go-dcgm do not work with ELF BIND_NOW hardening because not all + # symbols are available on startup. + hardeningDisable = [ "bindnow" ]; + + # Copy the modified go.mod we got from the vendoring process. + preBuild = '' + cp vendor/go.mod go.mod + ''; + + vendorHash = "sha256-Fjvx15e/psxoqoS6c6GhiQfe7g2aI40EmPR26xLhrzg="; + + nativeBuildInputs = [ + cudaPackages.autoAddDriverRunpath + ]; + + # Tests try to interact with running DCGM service. + doCheck = false; + + postFixup = '' + patchelf --add-needed libnvidia-ml.so "$out/bin/dcgm-exporter" + ''; + + meta = with lib; { + description = "NVIDIA GPU metrics exporter for Prometheus leveraging DCGM"; + homepage = "https://github.com/NVIDIA/dcgm-exporter"; + license = licenses.asl20; + maintainers = teams.deshaw.members; + mainProgram = "dcgm-exporter"; + platforms = platforms.linux; + }; +} |