diff options
| -rw-r--r-- | oni/home/services/git.scm | 17 |
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 |
