{ config, lib, ... }: let cfg = config.vhack.dns; zones = lib.debug.traceValSeqN 2 ( builtins.mapAttrs (name: value: { data = dns.types.zone.renderToString name value; }) (lib.debug.traceValSeqN 4 cfg.zones) ); dns = import ./dns {inherit lib;}; in { options.vhack.dns = { enable = lib.mkEnableOption "custom dns server"; interfaces = lib.mkOption { type = lib.types.listOf lib.types.str; description = '' A list of the interfaces to bind to. ''; example = [ "192.168.1.3" "2001:db8:1::3" ]; }; zones = lib.mkOption { type = lib.types.attrsOf dns.types.zone.zone; description = "DNS zones"; }; }; config = lib.mkIf cfg.enable { services.nsd = { enable = true; inherit (cfg) interfaces; inherit zones; }; }; }