{ lib, buildGoModule, fetchFromGitHub, autoAddDriverRunpath, dcgm, }: buildGoModule rec { pname = "dcgm-exporter"; # The first portion of this version string corresponds to a compatible DCGM # version. version = "3.3.9-3.6.1"; # 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-BAMN2yuIW5FcHY3o9MUIMgPnTEFFRCbqhoAkcaZDxcM="; }; 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" ]; vendorHash = "sha256-b7GyPsmSGHx7hK0pDa88FKA+ZKJES2cdAGjT2aAfX/A="; nativeBuildInputs = [ 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; }; }