;;; SPDX-License-Identifier: GPL-3.0-or-later ;;; SPDX-FileCopyrightText: 2024-2026 Marek Paśnikowski (define-module (deployment services cgit) #:export (aisaka-cgit-service) #:use-module (gnu services) #:use-module (gnu services cgit) #:use-module (gnu services web) #:use-module ((deployment services version-control) #:prefix deployment:services:version-control:) #:use-module ((deployment services web) #:prefix deployment:services:web:) #:use-module ((gnu packages version-control) #:prefix gnu:packages:version-control:) #:use-module ((gnu services version-control) #:prefix gnu:services:version-control:)) (define cgit-repository-configuration (repository-cgit-configuration (hide? #t) (path "/srv/git/marek/packages"))) (define nginx-location-cgit (nginx-location-configuration (body (list "fastcgi_param HTTP_HOST $server_name ;" "fastcgi_param PATH_INFO $uri ;" "fastcgi_param QUERY_STRING $args ;" "fastcgi_param SCRIPT_FILENAME $document_root/lib/cgit/cgit.cgi ;" "fastcgi_pass 127.0.0.1:9000 ;")) (uri "@cgit"))) (define nginx-server-cgit (nginx-server-configuration (locations (list deployment:services:version-control:aisaka-git-http-nginx-location nginx-location-cgit deployment:services:web:nginx-location-well-known)) (listen (list "192.168.10.2:443 ssl")) (root gnu:packages:version-control:cgit) (server-name (list "git.marekpasnikowski.pl")) (ssl-certificate "/etc/letsencrypt/live/marekpasnikowski.pl/fullchain.pem") (ssl-certificate-key "/etc/letsencrypt/live/marekpasnikowski.pl/privkey.pem") (try-files (list "$uri" "@cgit")))) (define nginx-extension-of-cgit (service-extension deployment:services:web:nginx-service-type* cgit-configuration-nginx-config)) (define (extend-cgit extension) (let* ((extension-target- (service-extension-target extension)) (nginx-service-type?- (eq? extension-target- nginx-service-type))) (if nginx-service-type?- nginx-extension-of-cgit extension))) (define cgit-type (let ((cgit-extensions- (service-type-extensions cgit-service-type))) (service-type (inherit cgit-service-type) (extensions (map extend-cgit cgit-extensions-))))) (define aisaka-cgit-configuration (cgit-configuration (nginx (list nginx-server-cgit)) (repositories (list cgit-repository-configuration)) (project-list (list "deployment.git" "nonguix.git" "sovereign.git")) (repository-directory "/var/lib/gitolite/repositories"))) (define-public aisaka-cgit-service (service cgit-type aisaka-cgit-configuration)) ;;; EOF