signalbackup-tools: 20241220 -> 20250106 (#371523)
[NixPkgs.git] / pkgs / development / libraries / getdns / default.nix
blob3be26afe3e528514724040d03b4fe632c0ea3538
1 # Getdns and Stubby are released together, see https://getdnsapi.net/releases/
4   lib,
5   stdenv,
6   fetchurl,
7   cmake,
8   darwin,
9   doxygen,
10   libidn2,
11   libyaml,
12   openssl,
13   systemd,
14   unbound,
15   yq,
17 let
18   metaCommon = {
19     maintainers = with lib.maintainers; [
20       leenaars
21       ehmry
22     ];
23     license = lib.licenses.bsd3;
24     platforms = lib.platforms.all;
25   };
27 rec {
29   getdns = stdenv.mkDerivation rec {
30     pname = "getdns";
31     version = "1.7.3";
32     outputs = [
33       "out"
34       "dev"
35       "lib"
36       "man"
37     ];
39     src = fetchurl {
40       url = "https://getdnsapi.net/releases/${pname}-${lib.concatStringsSep "-" (lib.splitVersion version)}/${pname}-${version}.tar.gz";
41       # upstream publishes hashes in hex format
42       sha256 = "f1404ca250f02e37a118aa00cf0ec2cbe11896e060c6d369c6761baea7d55a2c";
43     };
45     nativeBuildInputs = [
46       cmake
47       doxygen
48     ];
50     buildInputs = [
51       libidn2
52       openssl
53       unbound
54     ];
56     # https://github.com/getdnsapi/getdns/issues/517
57     postPatch = ''
58       substituteInPlace getdns.pc.in \
59         --replace '$'{exec_prefix}/@CMAKE_INSTALL_LIBDIR@ @CMAKE_INSTALL_FULL_LIBDIR@ \
60         --replace '$'{prefix}/@CMAKE_INSTALL_INCLUDEDIR@ @CMAKE_INSTALL_FULL_INCLUDEDIR@
61     '';
63     postInstall = "rm -r $out/share/doc";
65     meta = metaCommon // {
66       description = "Modern asynchronous DNS API";
67       longDescription = ''
68         getdns is an implementation of a modern asynchronous DNS API; the
69         specification was originally edited by Paul Hoffman. It is intended to make all
70         types of DNS information easily available to application developers and non-DNS
71         experts. DNSSEC offers a unique global infrastructure for establishing and
72         enhancing cryptographic trust relations. With the development of this API the
73         developers intend to offer application developers a modern and flexible
74         interface that enables end-to-end trust in the DNS architecture, and which will
75         inspire application developers to implement innovative security solutions in
76         their applications.
77       '';
78       homepage = "https://getdnsapi.net";
79     };
80   };
82   stubby = stdenv.mkDerivation rec {
83     pname = "stubby";
84     version = "0.4.3";
85     outputs = [
86       "out"
87       "man"
88       "stubbyExampleJson"
89     ];
91     inherit (getdns) src;
92     sourceRoot = "${getdns.pname}-${getdns.version}/stubby";
94     nativeBuildInputs = [
95       cmake
96       doxygen
97       yq
98     ];
100     buildInputs = [
101       getdns
102       libyaml
103       openssl
104       systemd
105     ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ darwin.Security ];
107     postInstall = ''
108       rm -r $out/share/doc
109       yq \
110         < $NIX_BUILD_TOP/$sourceRoot/stubby.yml.example \
111         > $stubbyExampleJson
112     '';
114     passthru.settingsExample = builtins.fromJSON (builtins.readFile stubby.stubbyExampleJson);
116     meta = metaCommon // {
117       description = "Local DNS Privacy stub resolver (using DNS-over-TLS)";
118       mainProgram = "stubby";
119       longDescription = ''
120         Stubby is an application that acts as a local DNS Privacy stub
121         resolver (using RFC 7858, aka DNS-over-TLS). Stubby encrypts DNS
122         queries sent from a client machine (desktop or laptop) to a DNS
123         Privacy resolver increasing end user privacy. Stubby is developed by
124         the getdns team.
125       '';
126       homepage = "https://dnsprivacy.org/dns_privacy_daemon_-_stubby/";
127     };
128   };