anchor.diff:          defaultText = "pkgs.matrix-synapse";
           description = ''
             Overridable attribute of the matrix synapse server package to use.
  +        '';
  +      };
  +      plugins = mkOption {
  +        type = types.listOf types.package;
  +        default = [ ];
  +        defaultText = "with config.services.matrix-synapse.package.plugins [ matrix-synapse-ldap3 matrix-synapse-pam ]";
  +        description = ''
  +          List of additional Matrix plugins to make available.
           '';
         };
         no_tls = mkOption {
  
positive.code:           --keys-directory ${cfg.dataDir} \
            --generate-keys
        '';
        serviceConfig = {
          Type = "notify";
          User = "matrix-synapse";
  
negative.code:   logConfigFile = pkgs.writeText "log_config.yaml" cfg.logConfig;
    mkResource = r: ''{names: ${builtins.toJSON r.names}, compress: ${boolToString r.compress}}'';
    mkListener = l: ''{port: ${toString l.port}, bind_address: "${l.bind_address}", type: ${l.type}, tls: ${boolToString l.tls}, x_forwarded: ${boolToString l.x_forwarded}, resources: [${concatStringsSep "," (map mkResource l.resources)}]}'';
    pluginsEnv = cfg.package.python.buildEnv.override {
      extraLibs = cfg.plugins;
    };
    configFile = pkgs.writeText "homeserver.yaml" ''
  ${optionalString (cfg.tls_certificate_path != null) ''
  tls_certificate_path: "${cfg.tls_certificate_path}"
  