(define-module (glicid services authentication) #:use-module (gnu services) #:use-module (gnu services shepherd) #:use-module (guix) #:use-module (guix records) #:use-module (ice-9 match) #:use-module (gnu packages sssd) #:use-module (glicid system file-systems) #:use-module (glicid utils) #:export ( sssd-configuration sssd-configuration? sssd-service sssd-service-type )) (define-record-type* sssd-configuration make-sssd-configuration sssd-configuration? (sssd-pkg sssd-pkg (default sssd)) (sssd-config-file sssd-config-file (default "/etc/sssd/sssd.conf")) (sssd-logger sssd-logger (default "stderr")) (sssd-debug-level sssd-debug-level (default "3")) (log-file log-file (default "/var/log/sssd/sssd.log"))) (define sssd-service (match-lambda (($ sssd-pkg sssd-config-file sssd-logger sssd-debug-level log-file) (list (shepherd-service (provision '(sssd)) (documentation "Run sssd.") (requirement '( user-processes )) (respawn? #t) (start #~(make-forkexec-constructor (list #$(file-append sssd-pkg "/sbin/sssd") "-i" "-c" #$sssd-config-file "--logger" #$sssd-logger "-d" #$sssd-debug-level ) #:log-file #$log-file )) (stop #~(make-kill-destructor))))))) (define %sssd-activation #~(begin (mkdir-p "/etc/sssd/conf.d") (mkdir-p "/var/log/sssd") (mkdir-p "/var/lib/sss/db") (install-file #$(file-append sssd-pkg "/lib/sssd/conf/sssd.conf") "/etc/sssd/") #t )) (define sssd-service-type (service-type (name 'sssd) (extensions (list (service-extension shepherd-root-service-type sssd-service) (service-extension activation-service-type (const %sssd-activation)))) (description "Run sssd")))