mirror of
https://codeberg.org/guix/guix.git
synced 2025-10-02 02:15:12 +00:00
activation: Operate on <user-account> and <user-group> records.
* gnu/system/accounts.scm (sexp->user-group, sexp->user-account): New procedures. * gnu/system/shadow.scm (account-activation): Call them in the arguments to 'activate-users+groups'. (account-shepherd-service): Likewise. * gnu/build/activation.scm (activate-users+groups): Expect a list of <user-account> and a list of <user-group>. Replace uses of 'match' on tuples with calls to record accessors. (activate-user-home): Likewise.
This commit is contained in:
parent
f6f67b87c0
commit
6061d01512
3 changed files with 103 additions and 65 deletions
|
@ -298,11 +298,14 @@ group."
|
|||
(assert-valid-users/groups accounts groups)
|
||||
|
||||
;; Add users and user groups.
|
||||
#~(begin
|
||||
(setenv "PATH"
|
||||
(string-append #$(@ (gnu packages admin) shadow) "/sbin"))
|
||||
(activate-users+groups (list #$@user-specs)
|
||||
(list #$@group-specs))))
|
||||
(with-imported-modules (source-module-closure '((gnu system accounts)))
|
||||
#~(begin
|
||||
(use-modules (gnu system accounts))
|
||||
|
||||
(setenv "PATH"
|
||||
(string-append #$(@ (gnu packages admin) shadow) "/sbin"))
|
||||
(activate-users+groups (map sexp->user-account (list #$@user-specs))
|
||||
(map sexp->user-group (list #$@group-specs))))))
|
||||
|
||||
(define (account-shepherd-service accounts+groups)
|
||||
"Return a Shepherd service that creates the home directories for the user
|
||||
|
@ -322,12 +325,15 @@ accounts among ACCOUNTS+GROUPS."
|
|||
(list (shepherd-service
|
||||
(requirement '(file-systems))
|
||||
(provision '(user-homes))
|
||||
(modules '((gnu build activation)))
|
||||
(modules '((gnu build activation)
|
||||
(gnu system accounts)))
|
||||
(start (with-imported-modules (source-module-closure
|
||||
'((gnu build activation)))
|
||||
'((gnu build activation)
|
||||
(gnu system accounts)))
|
||||
#~(lambda ()
|
||||
(activate-user-home
|
||||
(list #$@(map user-account->gexp accounts)))
|
||||
(map sexp->user-account
|
||||
(list #$@(map user-account->gexp accounts))))
|
||||
#f))) ;stop
|
||||
(stop #~(const #f))
|
||||
(respawn? #f)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue