diff options
| author | Tomas Volf <~@wolfsden.cz> | 2025-04-01 00:10:16 +0200 |
|---|---|---|
| committer | Maxim Cournoyer <maxim.cournoyer@gmail.com> | 2025-04-03 21:16:15 +0900 |
| commit | a0ce5501ca5cb5f8ac53d07797a2a992f00b3077 (patch) | |
| tree | 49c5f603f3b4fa41abe8d46848f0e2a6ed993a9e /gnu/services/version-control.scm | |
| parent | 9ab0c42d5532d54abeb7bc33cdeaa6a37ce57f16 (diff) | |
services: Add gitolite-git-configuration.
In preparation for further customizability of the git configuration, extract
the current setup into a separate record type.
* gnu/services/version-control.scm (<gitolite-git-configuration>): New record
type.
(gitolite-git-configuration-compiler): And gexp compiler for it.
(<gitolite-configuration>): Add git-config field.
(gitolite-activation): Use it.
* doc/guix.texi (Version Control Services): Document both.
Change-Id: I7658698a93f938f62f41a4fa45b72de1eeb14414
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Diffstat (limited to 'gnu/services/version-control.scm')
| -rw-r--r-- | gnu/services/version-control.scm | 37 |
1 files changed, 30 insertions, 7 deletions
diff --git a/gnu/services/version-control.scm b/gnu/services/version-control.scm index 268b0a47ee8..dcdddf80783 100644 --- a/gnu/services/version-control.scm +++ b/gnu/services/version-control.scm @@ -67,6 +67,12 @@ gitolite-rc-file-extra-content gitolite-rc-file-default-enable + <gitolite-git-configuration> + gitolite-git-configuration + gitolite-git-configuration? + gitolite-git-configuration-name + gitolite-git-configuration-email + gitolite-service-type gitile-configuration @@ -321,6 +327,23 @@ access to exported repositories under @file{/srv/git}." "# End:\n" "# vim: set syn=perl:\n")))) +(define-record-type* <gitolite-git-configuration> + gitolite-git-configuration make-gitolite-git-configuration + gitolite-git-configuration? + (name gitolite-git-configuration-name + (default "GNU Guix")) + (email gitolite-git-configuration-email + (default "guix@localhost"))) + +(define-gexp-compiler (gitolite-git-configuration-compiler + (config <gitolite-git-configuration>) system target) + (match-record config <gitolite-git-configuration> + (name email) + (apply text-file* "gitconfig" + `("[user]\n" + "name = " ,name "\n" + "email = " ,email "\n")))) + (define-record-type* <gitolite-configuration> gitolite-configuration make-gitolite-configuration gitolite-configuration? @@ -334,6 +357,8 @@ access to exported repositories under @file{/srv/git}." (default "/var/lib/gitolite")) (rc-file gitolite-configuration-rc-file (default (gitolite-rc-file))) + (git-config gitolite-configuration-git-config + (default (gitolite-git-configuration))) (admin-pubkey gitolite-configuration-admin-pubkey)) (define (gitolite-accounts config) @@ -352,7 +377,8 @@ access to exported repositories under @file{/srv/git}." (define (gitolite-activation config) (match-record config <gitolite-configuration> - (package user group home-directory rc-file admin-pubkey) + ( package user group home-directory rc-file admin-pubkey + git-config) #~(begin (use-modules (ice-9 match) (guix build utils)) @@ -390,12 +416,9 @@ access to exported repositories under @file{/srv/git}." ;; Set the git configuration, to avoid gitolite trying to use ;; the hostname command, as the network might not be up yet - (with-output-to-file #$(string-append home-directory "/.gitconfig") - (lambda () - (display "[user] - name = GNU Guix - email = guix@localhost -"))) + (copy-file #$git-config + #$(string-append home-directory "/.gitconfig")) + ;; Run Gitolite setup, as this updates the hooks and include the ;; admin pubkey if specified. The admin pubkey is required for ;; initial setup, and will replace the previous key if run after |
