services: Define 'for-home'.
* gnu/services.scm (remove-service-extensions): New procedure. (for-home?): New syntax parameter. (for-home): New macro.
This commit is contained in:
parent
c6c8106c65
commit
dff7d2468f
1 changed files with 24 additions and 1 deletions
|
@ -1,5 +1,5 @@
|
||||||
;;; GNU Guix --- Functional package management for GNU
|
;;; GNU Guix --- Functional package management for GNU
|
||||||
;;; Copyright © 2015-2022 Ludovic Courtès <ludo@gnu.org>
|
;;; Copyright © 2015-2023 Ludovic Courtès <ludo@gnu.org>
|
||||||
;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
|
;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
|
||||||
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
;;; Copyright © 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
|
;;; Copyright © 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
|
||||||
|
@ -86,6 +86,10 @@
|
||||||
instantiate-missing-services
|
instantiate-missing-services
|
||||||
fold-services
|
fold-services
|
||||||
|
|
||||||
|
remove-service-extensions
|
||||||
|
for-home
|
||||||
|
for-home?
|
||||||
|
|
||||||
service-error?
|
service-error?
|
||||||
missing-value-service-error?
|
missing-value-service-error?
|
||||||
missing-value-service-error-type
|
missing-value-service-error-type
|
||||||
|
@ -1225,4 +1229,23 @@ TARGET-TYPE; return the root service adjusted accordingly."
|
||||||
(G_ "more than one target service of type '~a'")
|
(G_ "more than one target service of type '~a'")
|
||||||
(service-type-name target-type)))))))))
|
(service-type-name target-type)))))))))
|
||||||
|
|
||||||
|
(define (remove-service-extensions type lst)
|
||||||
|
"Return TYPE, a service type, without any of the service extensions
|
||||||
|
targeting one of the types in LST."
|
||||||
|
(service-type
|
||||||
|
(inherit type)
|
||||||
|
(extensions (remove (lambda (extension)
|
||||||
|
(memq (service-extension-target extension) lst))
|
||||||
|
(service-type-extensions type)))))
|
||||||
|
|
||||||
|
(define-syntax-parameter for-home?
|
||||||
|
;; Whether the configuration being defined is for a Home service.
|
||||||
|
(identifier-syntax #f))
|
||||||
|
|
||||||
|
(define-syntax-rule (for-home exp ...)
|
||||||
|
"Mark EXP, which typically defines a service configuration, as targeting a
|
||||||
|
Home service rather than a System service."
|
||||||
|
(syntax-parameterize ((for-home? (identifier-syntax #t)))
|
||||||
|
exp ...))
|
||||||
|
|
||||||
;;; services.scm ends here.
|
;;; services.scm ends here.
|
||||||
|
|
Reference in a new issue