gnu: dmd: Add 'pam-services' field to <service>.

* gnu/system/dmd.scm (<service>)[pam-services]: New field.
  (mingetty-service): Add #:motd and #:allow-empty-passwords?
  parameters.  Add MOTD to 'inputs' field; add 'pam-services' field.
* gnu/system/vm.scm (system-qemu-image): Aggregate PAM entries from
  SERVICES.
This commit is contained in:
Ludovic Courtès 2013-12-07 16:18:51 +01:00
parent f0387dd167
commit f7d6fafaa2
2 changed files with 26 additions and 10 deletions

View File

@ -29,7 +29,8 @@
#:select (guix)) #:select (guix))
#:use-module ((gnu packages linux) #:use-module ((gnu packages linux)
#:select (net-tools)) #:select (net-tools))
#:use-module (gnu system shadow) #:use-module (gnu system shadow) ; for user accounts/groups
#:use-module (gnu system linux) ; for PAM services
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:use-module (ice-9 format) #:use-module (ice-9 format)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
@ -45,6 +46,7 @@
service-inputs service-inputs
service-user-accounts service-user-accounts
service-user-groups service-user-groups
service-pam-services
host-name-service host-name-service
syslog-service syslog-service
@ -79,6 +81,8 @@
(user-accounts service-user-accounts ; list of <user-account> (user-accounts service-user-accounts ; list of <user-account>
(default '())) (default '()))
(user-groups service-user-groups ; list of <user-groups> (user-groups service-user-groups ; list of <user-groups>
(default '()))
(pam-services service-pam-services ; list of <pam-service>
(default '()))) (default '())))
(define (host-name-service name) (define (host-name-service name)
@ -91,9 +95,13 @@
(sethostname ,name))) (sethostname ,name)))
(respawn? #f))))) (respawn? #f)))))
(define (mingetty-service tty) (define* (mingetty-service tty
#:key
(motd (text-file "motd" "Welcome.\n"))
(allow-empty-passwords? #t))
"Return a service to run mingetty on TTY." "Return a service to run mingetty on TTY."
(mlet %store-monad ((mingetty-bin (package-file mingetty "sbin/mingetty"))) (mlet %store-monad ((mingetty-bin (package-file mingetty "sbin/mingetty"))
(motd motd))
(return (return
(service (service
(documentation (string-append "Run mingetty on " tty ".")) (documentation (string-append "Run mingetty on " tty "."))
@ -103,9 +111,18 @@
;; service to be done. ;; service to be done.
(requirement '(host-name)) (requirement '(host-name))
(start `(make-forkexec-constructor ,mingetty-bin "--noclear" ,tty)) (start `(make-forkexec-constructor ,mingetty-bin "--noclear" ,tty))
(stop `(make-kill-destructor)) (stop `(make-kill-destructor))
(inputs `(("mingetty" ,mingetty))))))) (inputs `(("mingetty" ,mingetty)
("motd" ,motd)))
(pam-services
;; Let 'login' be known to PAM. All the mingetty services will have
;; that PAM service, but that's fine because they're all identical and
;; duplicates are removed.
(list (unix-pam-service "login"
#:allow-empty-passwords? allow-empty-passwords?
#:motd motd)))))))
(define* (nscd-service #:key (glibc glibc-final)) (define* (nscd-service #:key (glibc glibc-final))
"Return a service that runs libc's name service cache daemon (nscd)." "Return a service that runs libc's name service cache daemon (nscd)."

View File

@ -571,10 +571,9 @@ Happy birthday, GNU! http://www.gnu.org/gnu30
")) "))
(pam-services -> (pam-services ->
;; Services known to PAM. ;; Services known to PAM.
(list %pam-other-services (delete-duplicates
(unix-pam-service "login" (cons %pam-other-services
#:allow-empty-passwords? #t (append-map service-pam-services services))))
#:motd motd)))
(bash-file (package-file bash "bin/bash")) (bash-file (package-file bash "bin/bash"))
(dmd-file (package-file dmd "bin/dmd")) (dmd-file (package-file dmd "bin/dmd"))