{ config, pkgs, lib, name, ... }: let package = pkgs.status-engine-worker.override { config_file = config.secrets.fullPaths."status_engine"; }; env = config.myEnv.tools.status_engine; in { config = lib.mkIf config.myServices.status.enable { systemd.services.gearmand = { description = "Gearman daemon"; after = [ "network.target" ]; wantedBy = [ "multi-user.target" ]; serviceConfig = { DynamicUser = true; User = "gearmand"; Type = "simple"; ExecStart = "${pkgs.gearmand}/bin/gearmand --syslog -L 127.0.0.1 -q libsqlite3 --libsqlite3-db /var/lib/gearmand/gearmand.db --store-queue-on-shutdown -l stderr -P /run/gearmand/gearmand.pid"; RuntimeDirectory = "gearmand"; StateDirectory = "gearmand"; }; }; secrets.keys."status_engine" = { permissions = "0400"; user = "naemon"; group = "naemon"; text = '' node_name: ${name} use_gearman: 1 gearman: address: 127.0.0.1 port: 4730 timeout: 1000 use_rabbitmq: 0 use_redis: 1 redis: address: 127.0.0.1 port: 6379 db: 0 store_live_data_in_archive_backend: 1 use_mysql: 1 mysql: host: ${env.mysql.remoteHost} port: ${builtins.toString env.mysql.port} username: ${env.mysql.user} password: ${env.mysql.password} database: ${env.mysql.database} use_crate: 0 number_of_bulk_records: 100 max_bulk_delay: 5 number_servicestatus_worker: 1 number_hoststatus_worker: 1 number_logentry_worker: 1 number_statechange_worker: 1 number_hostcheck_worker: 1 number_servicecheck_worker: 1 number_misc_worker: 1 process_perfdata: 1 number_perfdata_worker: 1 perfdata_backend: - mysql check_for_commands: 1 command_check_interval: 15 external_command_file: /run/naemon/naemon.cmd query_handler: /run/naemon/naemon.qh submit_method: qh syslog_enabled: 1 syslog_tag: statusengine-worker # Archive age age_hostchecks: 5 age_host_acknowledgements: 60 age_host_notifications: 60 age_host_statehistory: 365 age_host_downtimes: 60 age_servicechecks: 5 age_service_acknowledgements: 60 age_service_notifications: 60 age_service_statehistory: 365 age_service_downtimes: 60 age_logentries: 5 age_tasks: 1 age_perfdata: 90 disable_http_proxy: 1 ''; }; services.redis.servers."" = rec { enable = true; bind = "127.0.0.1"; }; services.cron = { mailto = "cron@immae.eu"; systemCronJobs = [ "0 0 * * * naemon cd ${package} && ./bin/Console.php cleanup" ]; }; environment.systemPackages = [ pkgs.gearmand (pkgs.writeScriptBin "status-engine-worker" '' #! ${pkgs.stdenv.shell} cd ${package} exec sudo -E -u naemon ./bin/Console.php "$@" '') ]; systemd.services.status_engine_worker = { description = "Status engine worker"; after = [ "network.target" ]; wantedBy = [ "multi-user.target" ]; serviceConfig = { Type = "simple"; Restart = "on-failure"; User = "naemon"; ExecStart = "${package}/bin/StatusengineWorker.php"; }; }; }; }