{ lib, pkgs, cfg, intercomEntries }: let baseUrl = "http://${cfg.serverAddress}:${toString cfg.directoryPort}"; hasPageExtensions = lib.any (e: e.mode == "page") (lib.attrValues cfg.extensions); menuXml = '' ${cfg.directoryName} Telefonbuch Ihre Wahl Internes Telefonbuch ${baseUrl}/directory-list.xml '' + lib.optionalString (intercomEntries != [] || hasPageExtensions) '' Intercom / Durchsage ${baseUrl}/intercom.xml '' + '' ''; listXml = '' ${cfg.directoryName} Telefonbuch Ihre Wahl '' + lib.concatStringsSep "\n" (lib.mapAttrsToList (ext: extCfg: lib.optionalString (extCfg.mode == "line" && extCfg.displayName != "") '' ${extCfg.displayName} ${ext} '') cfg.extensions) + '' ''; intercomXml = '' Intercom / Durchsage Ihre Wahl '' + lib.concatStringsSep "\n" (lib.mapAttrsToList (ext: extCfg: lib.optionalString (extCfg.mode == "page" && extCfg.displayName != "") '' ${extCfg.displayName} ${ext} '') cfg.extensions) + lib.concatMapStringsSep "\n" (ic: '' ${ic.displayName} ${ic.extension} '') intercomEntries + '' ''; voicemailMenuXml = '' ''; in { menuFile = pkgs.writeText "directory.xml" menuXml; listFile = pkgs.writeText "directory-list.xml" listXml; intercomFile = pkgs.writeText "intercom.xml" intercomXml; voicemailFile = pkgs.writeText "voicemail.xml" voicemailMenuXml; }