;;; SPDX-License-Identifier: GPL-3.0-or-later ;;; SPDX-FileCopyrightText: 2026 Marek Paśnikowski ;;; COPYRIGHT NOTICE ;;; ;;; Copyright 2026, Marek Paśnikowski ;;; LICENSE NOTICE ;;; ;;; This library is free software: you can redistribute it and/or modify it under the terms of ;;; the GNU General Public License as published by the Free Software Foundation, ;;; either version 3 of the License, or (at your option) any later version. ;;; ;;; This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; ;;; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ;;; See the GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License along with this library. ;;; If not, see . (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