(define-module (glicid services openldap) #:use-module (gnu packages openldap) #:use-module (gnu services) #:use-module (gnu services shepherd) #:use-module (guix) #:use-module (guix records) #:use-module (ice-9 match) #: export ( openldap-configuration openldap-configuration? openldap-shepherd-service openldap-service-type )) (define-record-type* openldap-configuration make-openldap-configuration openldap-configuration? (openldap-pkg openldap-pkg (default openldap)) (uri uri (default "ldapi:// ldap://")) (logflags logflags (default "0")) (pid-file pid-file (default "/var/run/openldap/slapd.pid")) (config-file config-file (default (file-append openldap "/etc/openldap/slapd.conf"))) (log-file log-file (default "/var/log/slapd.log"))) (define openldap-shepherd-service (match-lambda (($ pkg uri logflags pid-file config-file log-file) (list (shepherd-service (provision '(slapd)) (documentation "Run openldap.") (requirement '(user-processes)) (respawn? #t) (start #~(make-forkexec-constructor (list #$(file-append pkg "/libexec/slapd") "-h" #$uri "-d" #$logflags "-f" #$config-file ) #:pid-file #$pid-file #:log-file #$log-file )) (stop #~(make-kill-destructor))))))) (define %openldap-activation #~(begin (mkdir-p "/var/run/openldap") (mkdir-p "/var/lib/ldap") #t )) (define openldap-service-type (service-type (name 'slapd) (extensions (list (service-extension shepherd-root-service-type openldap-shepherd-service) (service-extension activation-service-type (const %openldap-activation)))) (description "Run @uref{https://www.openldap.org, Openldap} community developped LDAP software.")))