(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)) (pid-file pid-file (default "/var/run/sssd.pid")) (config-file config-file (default (file-append sssd "/etc/sssd/sssd.conf"))) (logger logger (default "stderr")) (debug-level debug-level (default "3")) (log-file log-file (default "/var/log/sssd.log"))) (define sssd-shepherd-service (match-lambda (($ sssd-pkg pid-file config-file logger 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" #$config-file "--logger" #$logger "-d" #$debug-level ) #:pid-file #$pid-file #: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") (mkdir-p "/var/lib/sss/mc") (mkdir-p "/var/lib/sss/pipes/private") #t )) (define sssd-service-type (service-type (name 'sssd) (extensions (list (service-extension shepherd-root-service-type sssd-shepherd-service) (service-extension activation-service-type (const %sssd-activation)))) (description "Run sssd")))