{ config, pkgs, lib, ... }: let cfg = config.my.services.avahi; in { options.my.services.avahi = with lib; { enable = mkEnableOption "avahi service"; withReflector = mkEnableOption "enable reflector"; interfaces = mkOption { type = types.nullOr (types.listOf types.str); default = null; description = "List of network interfaces that should be used by the {command}`avahi-daemon`."; }; }; config = lib.mkIf cfg.enable { services.avahi.enable = true; # Important to resolve .local domains of printers, otherwise you get an error # like "Impossible to connect to XXX.local: Name or service not known" services.avahi.nssmdns = true; services.avahi.reflector = cfg.withReflector; services.avahi.interfaces = cfg.interfaces; }; }