summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorRyan Schanzenbacher <ryan@rschanz.org>2024-01-18 18:43:59 -0500
committerRyan Schanzenbacher <ryan@rschanz.org>2024-01-18 18:44:20 -0500
commitc8a2ce5015728920495bf8719b7a0c16904b0c36 (patch)
tree8d8593ea3f5c57405ce9fcae01e09cfa73548bcc /modules
parentc45e1fcd8bec7f03200c68adfd9cd19b9b6819e6 (diff)
temp changes
Diffstat (limited to 'modules')
-rw-r--r--modules/ryan-config/utils.scm33
1 files changed, 33 insertions, 0 deletions
diff --git a/modules/ryan-config/utils.scm b/modules/ryan-config/utils.scm
new file mode 100644
index 0000000..e889e69
--- /dev/null
+++ b/modules/ryan-config/utils.scm
@@ -0,0 +1,33 @@
1(define-module (ryan-config utils)
2 #:use-module (gnu packages)
3 #:use-module (gnu services)
4 #:use-module (gnu home services)
5 #:use-module (gnu home services shepherd)
6 #:use-module (gnu packages freedesktop)
7 #:use-module (gnu services configuration)
8 #:use-module (guix gexp)
9 #:use-module (ice-9 regex)
10 #:use-module (ice-9 pretty-print)
11 #:use-module (ice-9 textual-ports)
12
13 #:export (gather-manifest-packages
14 apply-template-file))
15
16(define (apply-template template-string value-alist)
17 (regexp-substitute/global #f
18 "\\$\\{([A-Za-z/\\-]+)\\}"
19 template-string
20 'pre
21 (lambda (m)
22 (let ((entry (assq (string->symbol (match:substring m 1))
23 value-alist)))
24 (if entry
25 (cdr entry)
26 "VALUE NOT FOUND")))
27 'post))
28
29(define (apply-template-file file-path value-alist)
30 (call-with-input-file file-path
31 (lambda (port)
32 (apply-template (get-string-all port)
33 value-alist))))