diff --git a/modules/module-list.nix b/modules/module-list.nix index b908920a460..265f8e604ab 100644 --- a/modules/module-list.nix +++ b/modules/module-list.nix @@ -92,6 +92,7 @@ ./services/networking/ddclient.nix ./services/networking/dhclient.nix ./services/networking/dhcpd.nix + ./services/networking/dnsmasq.nix ./services/networking/ejabberd.nix ./services/networking/firewall.nix ./services/networking/git-daemon.nix diff --git a/modules/services/networking/dnsmasq.nix b/modules/services/networking/dnsmasq.nix new file mode 100644 index 00000000000..3c215d837f9 --- /dev/null +++ b/modules/services/networking/dnsmasq.nix @@ -0,0 +1,57 @@ +{ config, pkgs, ... }: + +with pkgs.lib; + +let + cfg = config.services.dnsmasq; + dnsmasq = pkgs.dnsmasq; + + serversParam = concatMapStrings (s: "-S ${s} ") cfg.servers; + +in + +{ + + ###### interface + + options = { + + services.dnsmasq = { + + enable = mkOption { + default = true; + description = '' + Whether to run dnsmasq. + ''; + }; + + servers = mkOption { + default = []; + example = [ "8.8.8.8" "8.8.4.4" ]; + description = '' + The parameter to dnsmasq -S. + ''; + }; + + }; + + }; + + + ###### implementation + + config = mkIf config.services.dnsmasq.enable { + + jobs.dnsmasq = + { description = "dnsmasq daemon"; + + startOn = "ip-up"; + + daemonType = "daemon"; + + exec = "${dnsmasq}/bin/dnsmasq -R ${serversParam}"; + }; + + }; + +}