anchor.diff:          '';
         };
   
  -      # TODO: for bonus points migrate this to https://github.com/NixOS/rfcs/pull/42
  -      extraConfig = mkOption {
  -        default = "";
  -        type = types.lines;
  +      settings = mkOption {
  +        type = with types; attrsOf (oneOf [ int str (listOf str) ]);
  +        default = {};
           description = ''
  -          Configuration that is injected verbatim into the configuration file. Refer to
  +          Zabbix Server configuration. Refer to
             <link xlink:href="https://www.zabbix.com/documentation/current/manual/appendix/config/zabbix_server"/>
             for details on supported values.
           '';
  +        example = {
  +          CacheSize = "1G";
  +          SSHKeyLocation = "/var/lib/zabbix/.ssh";
  +          StartPingers = 32;
  +        };
         };
   
       };
  
positive.code:     paths = attrValues cfg.modules;
    };
  
    configFile = pkgs.writeText "zabbix_server.conf" ''
      LogType = console
      ListenIP = ${cfg.listen.ip}
      ListenPort = ${toString cfg.listen.port}
      # TODO: set to cfg.database.socket if database type is pgsql?
      DBHost = ${optionalString (cfg.database.createLocally != true) cfg.database.host}
      ${optionalString (cfg.database.createLocally != true) "DBPort = ${cfg.database.port}"}
      DBName = ${cfg.database.name}
      DBUser = ${cfg.database.user}
      ${optionalString (cfg.database.passwordFile != null) "Include ${passwordFile}"}
      ${optionalString (mysqlLocal && cfg.database.socket != null) "DBSocket = ${cfg.database.socket}"}
      PidFile = ${runtimeDir}/zabbix_server.pid
      SocketDir = ${runtimeDir}
      FpingLocation = /run/wrappers/bin/fping
      ${optionalString (cfg.modules != {}) "LoadModulePath = ${moduleEnv}/lib"}
      ${concatMapStringsSep "\n" (name: "LoadModule = ${name}") (builtins.attrNames cfg.modules)}
      ${cfg.extraConfig}
    '';
  
    mysqlLocal = cfg.database.createLocally && cfg.database.type == "mysql";
    pgsqlLocal = cfg.database.createLocally && cfg.database.type == "pgsql";
  
negative.code:   pgsql = config.services.postgresql;
    mysql = config.services.mysql;
  
    inherit (lib) mkDefault mkEnableOption mkIf mkMerge mkOption;
    inherit (lib) attrValues concatMapStringsSep literalExample optional optionalAttrs optionalString types;
    inherit (lib.generators) toKeyValue;
  
    user = "zabbix";
    group = "zabbix";
  