aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--oni/home/services/git.scm17
1 files changed, 16 insertions, 1 deletions
diff --git a/oni/home/services/git.scm b/oni/home/services/git.scm
index 8af29ec..b1db06e 100644
--- a/oni/home/services/git.scm
+++ b/oni/home/services/git.scm
@@ -1,4 +1,5 @@
(define-module (oni home services git)
+ #:use-module (srfi srfi-1)
#:use-module ((gnu home services)
#:select (service-type
service-extension
@@ -39,6 +40,13 @@
(name (pascal-case (substring field-name (1+ (string-index field-name #\-))) #\-)))
(format #f "~a=~a~%" name (if value "true" "false"))))
+(define (list-of-strings? obj)
+ (and (list? obj)
+ (every string? obj)))
+
+(define (serialize-list-of-strings field value)
+ (string-append (string-join value "\n")))
+
(define-configuration home-git-configuration
(package
(package git)
@@ -61,6 +69,9 @@
(advice-detached-head
(boolean #t)
"Show warning about being in a detached-head state?")
+ (ignore-patterns
+ (list-of-strings '())
+ "Ignore patterns.")
(extra
maybe-string
"Any extra configuration."))
@@ -83,7 +94,11 @@
(serialize-configuration config (filter-prefix "init-" home-git-configuration-fields))
"[advice]\n"
(serialize-configuration config (filter-prefix "advice-" home-git-configuration-fields))
- (home-git-configuration-extra config))))))
+ (home-git-configuration-extra config)))
+ ("git/ignore"
+ ,(mixed-text-file
+ "gitignore"
+ (serialize-list-of-strings #f (home-git-configuration-ignore-patterns config)))))))
(define home-git-service-type
(service-type