~ruther/guix-local

b2fef041fcfbb63d7901c25647373aeda56b026e — Ludovic Courtès 10 years ago b13cf17
system: Add procedures to access user accounts and service names.

* gnu/system.scm (operating-system-user-accounts)
(operating-system-shepherd-service-names): New procedures.
1 files changed, 18 insertions(+), 0 deletions(-)

M gnu/system.scm
M gnu/system.scm => gnu/system.scm +18 -0
@@ 82,6 82,8 @@
            operating-system-file-systems
            operating-system-store-file-system
            operating-system-activation-script
            operating-system-user-accounts
            operating-system-shepherd-service-names

            operating-system-derivation
            operating-system-profile


@@ 578,6 580,22 @@ hardware-related operations as necessary when booting a Linux container."
    ;; BOOT is the script as a monadic value.
    (service-parameters boot)))

(define (operating-system-user-accounts os)
  "Return the list of user accounts of OS."
  (let* ((services (operating-system-services os))
         (account  (fold-services services
                                  #:target-type account-service-type)))
    (filter user-account?
            (service-parameters account))))

(define (operating-system-shepherd-service-names os)
  "Return the list of Shepherd service names for OS."
  (append-map shepherd-service-provision
              (service-parameters
               (fold-services (operating-system-services os)
                              #:target-type
                              shepherd-root-service-type))))

(define* (operating-system-derivation os #:key container?)
  "Return a derivation that builds OS."
  (let* ((services (operating-system-services os #:container? container?))