[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#49419] [PATCH v3 4/4] home-services: Add fold-home-service-types fu
From: |
Andrew Tropin |
Subject: |
[bug#49419] [PATCH v3 4/4] home-services: Add fold-home-service-types function |
Date: |
Mon, 5 Jul 2021 18:41:45 +0300 |
* gnu/home-services.scm (parent-directory, %guix-home-root-directory,
%service-type-path, all-home-service-modules, fold-home-service-types): New
variables.
---
gnu/home-services.scm | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/gnu/home-services.scm b/gnu/home-services.scm
index 8aa9adeaaf..9afb70f0a7 100644
--- a/gnu/home-services.scm
+++ b/gnu/home-services.scm
@@ -449,3 +449,29 @@ environment, and its configuration file, when
available.")))
(define sexp->home-provenance sexp->system-provenance)
(define home-provenance system-provenance)
+
+
+;;;
+;;; Searching
+;;;
+
+(define (parent-directory directory)
+ "Get the parent directory of DIRECTORY"
+ (string-join (drop-right (string-split directory #\/) 1) "/"))
+
+(define %guix-home-root-directory
+ ;; Absolute file name of the module hierarchy.
+ (parent-directory (dirname (search-path %load-path
"gnu/home-services.scm"))))
+
+(define %service-type-path
+ ;; Search path for service types.
+ (make-parameter `((,%guix-home-root-directory . "gnu/home-services"))))
+
+(define (all-home-service-modules)
+ "Return the default set of home-service modules."
+ (cons (resolve-interface '(gnu home-services))
+ (all-modules (%service-type-path)
+ #:warn warn-about-load-error)))
+
+(define* (fold-home-service-types proc seed)
+ (fold-service-types proc seed (all-home-service-modules)))
--
2.32.0
signature.asc
Description: PGP signature
[bug#49549] [PATCH v2 4/4] home-services: Add fold-home-service-types function, Andrew Tropin, 2021/07/13
[bug#49568] Testing reply without debbugs address, Andrew Tropin, 2021/07/15
[bug#49419] [PATCH v3 0/4] Essential home services, Andrew Tropin, 2021/07/19