commit 9fe183c3a62720922c2c9241260c7cf4ddd7650f
parent aacce8b650dbe9f0d3bcd77e166d3d9ea11b4d61
Author: Vineet Kumar <git@vineetk.net>
Date: Sun, 1 Feb 2026 18:43:06 -0500
saklas: add git hosting (cgit)
Diffstat:
1 file changed, 46 insertions(+), 3 deletions(-)
diff --git a/epistemia/systems/saklas.scm b/epistemia/systems/saklas.scm
@@ -7,6 +7,7 @@
#:use-module (gnu packages messaging)
#:use-module (gnu packages version-control)
#:use-module (gnu services certbot)
+ #:use-module (gnu services cgit)
#:use-module (gnu services dns)
#:use-module (gnu services file-sharing)
#:use-module (gnu services linux)
@@ -154,13 +155,23 @@ table inet filter {
(inherit base-system)
(host-name "saklas.epistemia")
- (users (cons (user-account
+ (users (cons* (user-account
(name "vin")
(comment "Vineet")
(shell (file-append bash "/bin/bash"))
(group "users")
- (supplementary-groups '("wheel")))
+ (supplementary-groups '("wheel" "git")))
+ (user-account
+ (name "git")
+ (comment "git account")
+ (shell (file-append git "/bin/git-shell"))
+ (group "git")
+ (home-directory "/data/src/bare")
+ (system? #f))
%base-user-accounts))
+ (groups (cons* (user-group
+ (name "git"))
+ %base-groups))
(kernel linux-6.17)
(kernel-arguments (list "net.ifnames=0"))
@@ -259,6 +270,7 @@ table inet filter {
(password-authentication? #f)
(authorized-keys
`(("vin" ,(local-file "/data/ssh/id_ed25519.pub"))
+ ("git" ,(local-file "/data/ssh/id_ed25519.pub"))
("root" ,(local-file "/data/ssh/id_ed25519.pub"))))
(extra-content "\
ListenAddress 127.0.0.1:22
@@ -365,7 +377,7 @@ rpz:
(let ((prosodyctl (string-append #$prosody "/bin/prosodyctl")))
(system* prosodyctl "--root" "cert" "import" "/etc/certs")))))
(domains '("vineetk.net"
- ;"git.vineetk.net"
+ "git.vineetk.net"
;"mail.vineetk.net"
"u.vineetk.net"
"xmpp.vineetk.net"
@@ -401,6 +413,37 @@ rpz:
(ssl-certificate-key "/etc/certs/vinbiz.ca/privkey.pem")
(root "/var/www/site_vinbiz")
(raw-content (list "include " %nginx-badboi ";")))))))
+ (service cgit-service-type
+ (cgit-configuration
+ (enable-index-links? #t)
+ (enable-log-filecount? #t)
+ (enable-log-linecount? #t)
+ (enable-git-config? #t)
+ (remove-suffix? #t)
+ (root-desc "")
+ (root-title "Vineet's git repos")
+ (repository-directory "/data/src/bare")
+ (section-from-path 1)
+ (side-by-side-diffs? #t)
+ (nginx
+ (list
+ (nginx-server-configuration
+ (server-name '("git.vineetk.net"))
+ (listen '("443 ssl"))
+ (root cgit)
+ (try-files (list "$uri" "@cgit"))
+ (ssl-certificate "/etc/certs/vineetk.net/fullchain.pem")
+ (ssl-certificate-key "/etc/certs/vineetk.net/privkey.pem")
+ (raw-content (list "include" %nginx-badboi ";"))
+ (locations
+ (list
+ (nginx-location-configuration
+ (uri "@cgit")
+ (body '("fastcgi_param SCRIPT_FILENAME $document_root/lib/cgit/cgit.cgi;"
+ "fastcgi_param PATH_INFO $uri;"
+ "fastcgi_param QUERY_STRING $args;"
+ "fastcgi_param HTTP_HOST $server_name;"
+ "fastcgi_pass 127.0.0.1:9000;"))))))))))
(service prosody-service-type
(prosody-configuration
(admins '("vin@vineetk.net"))