2023-07-25 15:36:57 +00:00
|
|
|
{ lib, stdenv, fetchurl, pkg-config, nettle
|
2023-10-06 05:40:30 +00:00
|
|
|
, libidn, libnetfilter_conntrack, nftables, buildPackages
|
2022-02-19 23:22:36 +00:00
|
|
|
, dbusSupport ? stdenv.isLinux
|
|
|
|
, dbus
|
2022-09-30 18:59:41 +00:00
|
|
|
, nixosTests
|
2022-02-19 23:22:36 +00:00
|
|
|
}:
|
2015-06-19 07:54:41 +00:00
|
|
|
|
|
|
|
let
|
2023-01-24 16:35:54 +00:00
|
|
|
copts = lib.concatStringsSep " " ([
|
2015-06-19 07:54:41 +00:00
|
|
|
"-DHAVE_IDN"
|
|
|
|
"-DHAVE_DNSSEC"
|
2023-01-24 16:35:54 +00:00
|
|
|
] ++ lib.optionals dbusSupport [
|
2015-12-25 04:27:31 +00:00
|
|
|
"-DHAVE_DBUS"
|
2023-01-24 16:35:54 +00:00
|
|
|
] ++ lib.optionals stdenv.isLinux [
|
2015-06-19 07:54:41 +00:00
|
|
|
"-DHAVE_CONNTRACK"
|
2023-10-06 05:40:30 +00:00
|
|
|
"-DHAVE_NFTSET"
|
2015-06-19 07:54:41 +00:00
|
|
|
]);
|
|
|
|
in
|
2010-10-11 19:30:54 +00:00
|
|
|
stdenv.mkDerivation rec {
|
2021-01-19 14:19:58 +00:00
|
|
|
pname = "dnsmasq";
|
2024-02-13 21:02:27 +00:00
|
|
|
version = "2.90";
|
2007-09-03 12:10:57 +00:00
|
|
|
|
2008-01-30 17:20:48 +00:00
|
|
|
src = fetchurl {
|
2021-04-23 11:51:43 +00:00
|
|
|
url = "https://www.thekelleys.org.uk/dnsmasq/${pname}-${version}.tar.xz";
|
2024-02-13 21:02:27 +00:00
|
|
|
hash = "sha256-jlAwm9g3v+yWSagS4GbAm2mItz10m30pPAbFfUahCeQ=";
|
2007-09-03 12:10:57 +00:00
|
|
|
};
|
|
|
|
|
2021-01-15 09:19:50 +00:00
|
|
|
postPatch = lib.optionalString stdenv.hostPlatform.isLinux ''
|
2020-02-19 12:13:22 +00:00
|
|
|
sed '1i#include <linux/sockios.h>' -i src/dhcp.c
|
|
|
|
'';
|
2019-10-14 22:25:28 +00:00
|
|
|
|
2015-06-19 07:54:41 +00:00
|
|
|
preBuild = ''
|
|
|
|
makeFlagsArray=("COPTS=${copts}")
|
2014-07-02 22:59:35 +00:00
|
|
|
'';
|
|
|
|
|
2015-06-19 07:54:41 +00:00
|
|
|
makeFlags = [
|
|
|
|
"DESTDIR="
|
|
|
|
"BINDIR=$(out)/bin"
|
|
|
|
"MANDIR=$(out)/man"
|
|
|
|
"LOCALEDIR=$(out)/share/locale"
|
2021-03-14 20:18:31 +00:00
|
|
|
"PKG_CONFIG=${buildPackages.pkg-config}/bin/${buildPackages.pkg-config.targetPrefix}pkg-config"
|
2015-06-19 07:54:41 +00:00
|
|
|
];
|
2007-09-03 12:10:57 +00:00
|
|
|
|
2016-02-26 17:38:15 +00:00
|
|
|
hardeningEnable = [ "pie" ];
|
2016-02-26 17:55:51 +00:00
|
|
|
|
2023-01-24 16:35:54 +00:00
|
|
|
postBuild = lib.optionalString stdenv.isLinux ''
|
2016-07-10 00:44:39 +00:00
|
|
|
make -C contrib/lease-tools
|
2015-12-03 10:04:22 +00:00
|
|
|
'';
|
|
|
|
|
2015-12-25 04:27:31 +00:00
|
|
|
# XXX: Does the systemd service definition really belong here when our NixOS
|
|
|
|
# module can create it in Nix-land?
|
2014-07-02 22:59:35 +00:00
|
|
|
postInstall = ''
|
|
|
|
install -Dm644 trust-anchors.conf $out/share/dnsmasq/trust-anchors.conf
|
2023-01-24 16:35:54 +00:00
|
|
|
'' + lib.optionalString stdenv.isDarwin ''
|
2017-03-07 01:52:08 +00:00
|
|
|
install -Dm644 contrib/MacOSX-launchd/uk.org.thekelleys.dnsmasq.plist \
|
|
|
|
$out/Library/LaunchDaemons/uk.org.thekelleys.dnsmasq.plist
|
|
|
|
substituteInPlace $out/Library/LaunchDaemons/uk.org.thekelleys.dnsmasq.plist \
|
|
|
|
--replace "/usr/local/sbin" "$out/bin"
|
2023-01-24 16:35:54 +00:00
|
|
|
'' + lib.optionalString stdenv.isLinux ''
|
2016-07-10 00:44:39 +00:00
|
|
|
install -Dm755 contrib/lease-tools/dhcp_lease_time $out/bin/dhcp_lease_time
|
|
|
|
install -Dm755 contrib/lease-tools/dhcp_release $out/bin/dhcp_release
|
|
|
|
install -Dm755 contrib/lease-tools/dhcp_release6 $out/bin/dhcp_release6
|
2014-07-02 22:59:35 +00:00
|
|
|
|
2023-01-24 16:35:54 +00:00
|
|
|
'' + lib.optionalString dbusSupport ''
|
2022-02-19 23:22:36 +00:00
|
|
|
install -Dm644 dbus/dnsmasq.conf $out/share/dbus-1/system.d/dnsmasq.conf
|
2014-08-30 14:19:23 +00:00
|
|
|
mkdir -p $out/share/dbus-1/system-services
|
2014-07-02 22:59:35 +00:00
|
|
|
cat <<END > $out/share/dbus-1/system-services/uk.org.thekelleys.dnsmasq.service
|
|
|
|
[D-BUS Service]
|
|
|
|
Name=uk.org.thekelleys.dnsmasq
|
2015-06-19 07:54:41 +00:00
|
|
|
Exec=$out/bin/dnsmasq -k -1
|
2014-07-02 22:59:35 +00:00
|
|
|
User=root
|
|
|
|
SystemdService=dnsmasq.service
|
|
|
|
END
|
|
|
|
'';
|
|
|
|
|
2021-01-17 03:51:22 +00:00
|
|
|
nativeBuildInputs = [ pkg-config ];
|
2015-12-25 04:27:31 +00:00
|
|
|
buildInputs = [ nettle libidn ]
|
2023-01-24 16:35:54 +00:00
|
|
|
++ lib.optionals dbusSupport [ dbus ]
|
2023-10-06 05:40:30 +00:00
|
|
|
++ lib.optionals stdenv.isLinux [ libnetfilter_conntrack nftables ];
|
2014-07-02 22:59:35 +00:00
|
|
|
|
2022-09-30 18:59:41 +00:00
|
|
|
passthru.tests = {
|
|
|
|
prometheus-exporter = nixosTests.prometheus-exporters.dnsmasq;
|
|
|
|
|
|
|
|
# these tests use dnsmasq incidentally
|
|
|
|
inherit (nixosTests) dnscrypt-proxy2;
|
|
|
|
kubernetes-dns-single = nixosTests.kubernetes.dns-single-node;
|
|
|
|
kubernetes-dns-multi = nixosTests.kubernetes.dns-multi-node;
|
|
|
|
};
|
|
|
|
|
2023-01-24 16:35:54 +00:00
|
|
|
meta = with lib; {
|
2010-10-11 19:30:54 +00:00
|
|
|
description = "An integrated DNS, DHCP and TFTP server for small networks";
|
2021-04-23 11:51:43 +00:00
|
|
|
homepage = "https://www.thekelleys.org.uk/dnsmasq/doc.html";
|
2014-08-11 20:48:36 +00:00
|
|
|
license = licenses.gpl2;
|
2023-08-16 15:41:13 +00:00
|
|
|
mainProgram = "dnsmasq";
|
2014-08-11 20:48:36 +00:00
|
|
|
platforms = with platforms; linux ++ darwin;
|
2019-08-20 17:36:05 +00:00
|
|
|
maintainers = with maintainers; [ eelco fpletz globin ];
|
2010-07-30 14:47:23 +00:00
|
|
|
};
|
2007-09-03 12:10:57 +00:00
|
|
|
}
|