about summary refs log tree commit diff
path: root/nixpkgs/pkgs/servers/dns/pdns-recursor/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/servers/dns/pdns-recursor/default.nix')
-rw-r--r--nixpkgs/pkgs/servers/dns/pdns-recursor/default.nix65
1 files changed, 65 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/servers/dns/pdns-recursor/default.nix b/nixpkgs/pkgs/servers/dns/pdns-recursor/default.nix
new file mode 100644
index 000000000000..d56b4c7c0359
--- /dev/null
+++ b/nixpkgs/pkgs/servers/dns/pdns-recursor/default.nix
@@ -0,0 +1,65 @@
+{ lib, stdenv, fetchurl, pkg-config, boost, nixosTests
+, openssl, systemd, lua, luajit, protobuf
+, libsodium
+, curl
+, rustPlatform, cargo, rustc
+, enableProtoBuf ? false
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "pdns-recursor";
+  version = "5.0.3";
+
+  src = fetchurl {
+    url = "https://downloads.powerdns.com/releases/pdns-recursor-${finalAttrs.version}.tar.bz2";
+    hash = "sha256-AdFwooUOsqylAdaDijREE2WJmA1cssK1M5K3ZFnjjAc=";
+  };
+
+  cargoDeps = rustPlatform.fetchCargoTarball {
+    inherit (finalAttrs) src;
+    sourceRoot = "pdns-recursor-${finalAttrs.version}/settings/rust";
+    hash = "sha256-XHzuYkO91TJNU2DYqMlafqrc2zR1WvIrNLjFHL2FcwA=";
+  };
+
+  cargoRoot = "settings/rust";
+
+  nativeBuildInputs = [
+    cargo
+    rustc
+
+    rustPlatform.cargoSetupHook
+    pkg-config
+  ];
+  buildInputs = [
+    boost openssl systemd
+    lua luajit
+    libsodium
+    curl
+  ] ++ lib.optional enableProtoBuf protobuf;
+
+  configureFlags = [
+    "--enable-reproducible"
+    "--enable-systemd"
+    "--enable-dns-over-tls"
+    "sysconfdir=/etc/pdns-recursor"
+  ];
+
+  installFlags = [ "sysconfdir=$(out)/etc/pdns-recursor" ];
+
+  enableParallelBuilding = true;
+
+  passthru.tests = {
+    inherit (nixosTests) pdns-recursor ncdns;
+  };
+
+  meta = with lib; {
+    description = "A recursive DNS server";
+    homepage = "https://www.powerdns.com/";
+    platforms = platforms.linux;
+    badPlatforms = [
+      "i686-linux"  # a 64-bit time_t is needed
+    ];
+    license = licenses.gpl2Only;
+    maintainers = with maintainers; [ rnhmjoj ];
+  };
+})