{ stdenv, fetchurl, openssl, nettle, expat, libevent }: stdenv.mkDerivation rec { name = "unbound-${version}"; version = "1.6.4"; src = fetchurl { url = "http://unbound.net/downloads/${name}.tar.gz"; sha256 = "1vbzfzp932nhii5vq7z7rpczdyv624p17sy9hj1cn763ds0qh2nz"; }; outputs = [ "out" "lib" "man" ]; # "dev" would only split ~20 kB buildInputs = [ openssl nettle expat libevent ]; configureFlags = [ "--with-ssl=${openssl.dev}" "--with-libexpat=${expat.dev}" "--with-libevent=${libevent.dev}" "--localstatedir=/var" "--sysconfdir=/etc" "--sbindir=\${out}/bin" "--enable-pie" "--enable-relro-now" ]; installFlags = [ "configfile=\${out}/etc/unbound/unbound.conf" ]; preFixup = stdenv.lib.optionalString stdenv.isLinux # Build libunbound again, but only against nettle instead of openssl. # This avoids gnutls.out -> unbound.lib -> openssl.out. # There was some problem with this on Darwin; let's not complicate non-Linux. '' configureFlags="$configureFlags --with-nettle=${nettle.dev} --with-libunbound-only" configurePhase buildPhase installPhase '' # get rid of runtime dependencies on $dev outputs + ''substituteInPlace "$lib/lib/libunbound.la" '' + stdenv.lib.concatMapStrings (pkg: " --replace '-L${pkg.dev}/lib' '-L${pkg.out}/lib' ") buildInputs; meta = with stdenv.lib; { description = "Validating, recursive, and caching DNS resolver"; license = licenses.bsd3; homepage = https://www.unbound.net; maintainers = with maintainers; [ ehmry fpletz ]; platforms = stdenv.lib.platforms.unix; }; }