diff --git a/glicid/services/logging.scm b/glicid/services/logging.scm new file mode 100644 index 0000000..109faf8 --- /dev/null +++ b/glicid/services/logging.scm @@ -0,0 +1,56 @@ +(define-module (glicid services rsyslog) + #:use-module (gnu packages logging) + #:use-module (gnu services) + #:use-module (gnu services shepherd) + #:use-module (guix) + #:use-module (guix records) + #:use-module (ice-9 match) + #: export ( + rsyslog-configuration + rsyslog-configuration? + rsyslog-shepherd-service + rsyslog-service-type + )) + +(define-record-type* + + rsyslog-configuration make-rsyslog-configuration + rsyslog-configuration? + (rsyslog-pkg rsyslog-pkg (default rsyslog)) + (pid-file pid-file (default "/var/run/rsyslog/rsyslog.pid")) + (config-file config-file (default (file-append rsyslog "/etc/rsyslog/rsyslog.conf"))) + (log-file log-file (default "/var/log/rsyslog.log"))) + +(define rsyslog-shepherd-service + (match-lambda + (($ rsyslog-pkg logflags pid-file config-file log-file) + (list + (shepherd-service + (provision '(rsyslog)) + (documentation "Run rsyslog.") + (requirement '(user-processes)) + (respawn? #t) + (start #~(make-forkexec-constructor + (list + #$(file-append pkg "/sbin/rsyslog") + "-f" #$config-file + "-n" + ) + #:pid-file #$pid-file + #:log-file #$log-file )) + (stop #~(make-kill-destructor))))))) + + +(define %rsyslog-activation + #~(begin + (mkdir-p "/var/run/rsyslog") + (mkdir-p "/var/lib/rsyslog") + #t )) + +(define rsyslog-service-type + (service-type + (name 'rsyslog) + (extensions (list + (service-extension shepherd-root-service-type rsyslog-shepherd-service) + (service-extension activation-service-type (const %rsyslog-activation)))) + (description "Run @uref{https://www.rsyslog.org, rsyslog} community developped LDAP software.")))