diff options
Diffstat (limited to 'pkgs/tools/networking/dd-agent/datadog-agent.nix')
-rw-r--r-- | pkgs/tools/networking/dd-agent/datadog-agent.nix | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/pkgs/tools/networking/dd-agent/datadog-agent.nix b/pkgs/tools/networking/dd-agent/datadog-agent.nix new file mode 100644 index 000000000000..d751b32a869c --- /dev/null +++ b/pkgs/tools/networking/dd-agent/datadog-agent.nix @@ -0,0 +1,82 @@ +{ lib, stdenv, fetchFromGitHub, buildGoPackage, makeWrapper, pythonPackages, pkgconfig, systemd, hostname }: + +let + # keep this in sync with github.com/DataDog/agent-payload dependency + payloadVersion = "4.7.1"; + +in buildGoPackage rec { + name = "datadog-agent-${version}"; + version = "6.11.0"; + owner = "DataDog"; + repo = "datadog-agent"; + + src = fetchFromGitHub { + inherit owner repo; + rev = "${version}"; + sha256 = "1gvawsrm3qlrciahnqa9793hwm586jiccmnz1pp0z889508wbg07"; + }; + + subPackages = [ + "cmd/agent" + "cmd/cluster-agent" + "cmd/dogstatsd" + "cmd/py-launcher" + "cmd/trace-agent" + ]; + goDeps = ./datadog-agent-deps.nix; + goPackagePath = "github.com/${owner}/${repo}"; + + # Explicitly set this here to allow it to be overridden. + python = pythonPackages.python; + + nativeBuildInputs = [ pkgconfig makeWrapper ]; + buildInputs = [ systemd ]; + PKG_CONFIG_PATH = "${python}/lib/pkgconfig"; + + + preBuild = let + ldFlags = stdenv.lib.concatStringsSep " " [ + "-X ${goPackagePath}/pkg/version.Commit=${src.rev}" + "-X ${goPackagePath}/pkg/version.AgentVersion=${version}" + "-X ${goPackagePath}/pkg/serializer.AgentPayloadVersion=${payloadVersion}" + "-X ${goPackagePath}/pkg/collector/py.pythonHome=${python}" + "-r ${python}/lib" + ]; + in '' + buildFlagsArray=( "-tags" "ec2 systemd cpython process log" "-ldflags" "${ldFlags}") + ''; + + # DataDog use paths relative to the agent binary, so fix these. + postPatch = '' + sed -e "s|PyChecksPath =.*|PyChecksPath = \"$bin/${python.sitePackages}\"|" \ + -e "s|distPath =.*|distPath = \"$bin/share/datadog-agent\"|" \ + -i cmd/agent/common/common_nix.go + sed -e "s|/bin/hostname|${lib.getBin hostname}/bin/hostname|" \ + -i pkg/util/hostname_nix.go + ''; + + # Install the config files and python modules from the "dist" dir + # into standard paths. + postInstall = '' + mkdir -p $bin/${python.sitePackages} $bin/share/datadog-agent + cp -R $src/cmd/agent/dist/conf.d $bin/share/datadog-agent + cp -R $src/cmd/agent/dist/{checks,utils,config.py} $bin/${python.sitePackages} + + cp -R $src/pkg/status/dist/templates $bin/share/datadog-agent + + wrapProgram "$bin/bin/agent" \ + --set PYTHONPATH "$bin/${python.sitePackages}" \ + --prefix LD_LIBRARY_PATH : ${systemd.lib}/lib + ''; + + meta = with stdenv.lib; { + description = '' + Event collector for the DataDog analysis service + -- v6 new golang implementation. + ''; + homepage = https://www.datadoghq.com; + license = licenses.bsd3; + platforms = platforms.all; + maintainers = with maintainers; [ thoughtpolice domenkozar rvl ]; + }; +} |