at 22.05-pre 2.8 kB view raw
1{ config, pkgs, lib, ... }: 2 3with lib; 4 5let 6 7 cfg = config.services.syslog-ng; 8 9 syslogngConfig = pkgs.writeText "syslog-ng.conf" '' 10 ${cfg.configHeader} 11 ${cfg.extraConfig} 12 ''; 13 14 ctrlSocket = "/run/syslog-ng/syslog-ng.ctl"; 15 pidFile = "/run/syslog-ng/syslog-ng.pid"; 16 persistFile = "/var/syslog-ng/syslog-ng.persist"; 17 18 syslogngOptions = [ 19 "--foreground" 20 "--module-path=${concatStringsSep ":" (["${cfg.package}/lib/syslog-ng"] ++ cfg.extraModulePaths)}" 21 "--cfgfile=${syslogngConfig}" 22 "--control=${ctrlSocket}" 23 "--persist-file=${persistFile}" 24 "--pidfile=${pidFile}" 25 ]; 26 27in { 28 imports = [ 29 (mkRemovedOptionModule [ "services" "syslog-ng" "serviceName" ] "") 30 (mkRemovedOptionModule [ "services" "syslog-ng" "listenToJournal" ] "") 31 ]; 32 33 options = { 34 35 services.syslog-ng = { 36 enable = mkOption { 37 type = types.bool; 38 default = false; 39 description = '' 40 Whether to enable the syslog-ng daemon. 41 ''; 42 }; 43 package = mkOption { 44 type = types.package; 45 default = pkgs.syslogng; 46 defaultText = literalExpression "pkgs.syslogng"; 47 description = '' 48 The package providing syslog-ng binaries. 49 ''; 50 }; 51 extraModulePaths = mkOption { 52 type = types.listOf types.str; 53 default = []; 54 example = literalExpression '' 55 [ "''${pkgs.syslogng_incubator}/lib/syslog-ng" ] 56 ''; 57 description = '' 58 A list of paths that should be included in syslog-ng's 59 <literal>--module-path</literal> option. They should usually 60 end in <literal>/lib/syslog-ng</literal> 61 ''; 62 }; 63 extraConfig = mkOption { 64 type = types.lines; 65 default = ""; 66 description = '' 67 Configuration added to the end of <literal>syslog-ng.conf</literal>. 68 ''; 69 }; 70 configHeader = mkOption { 71 type = types.lines; 72 default = '' 73 @version: 3.6 74 @include "scl.conf" 75 ''; 76 description = '' 77 The very first lines of the configuration file. Should usually contain 78 the syslog-ng version header. 79 ''; 80 }; 81 }; 82 }; 83 84 config = mkIf cfg.enable { 85 systemd.services.syslog-ng = { 86 description = "syslog-ng daemon"; 87 preStart = "mkdir -p /{var,run}/syslog-ng"; 88 wantedBy = [ "multi-user.target" ]; 89 after = [ "multi-user.target" ]; # makes sure hostname etc is set 90 serviceConfig = { 91 Type = "notify"; 92 PIDFile = pidFile; 93 StandardOutput = "null"; 94 Restart = "on-failure"; 95 ExecStart = "${cfg.package}/sbin/syslog-ng ${concatStringsSep " " syslogngOptions}"; 96 ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; 97 }; 98 }; 99 }; 100 101}