diff options
Diffstat (limited to 'deployment')
| -rw-r--r-- | deployment/services/cgit.scm | 83 | ||||
| -rw-r--r-- | deployment/services/web.scm | 78 | ||||
| -rw-r--r-- | deployment/system.scm | 4 |
3 files changed, 90 insertions, 75 deletions
diff --git a/deployment/services/cgit.scm b/deployment/services/cgit.scm new file mode 100644 index 0000000..8ff6662 --- /dev/null +++ b/deployment/services/cgit.scm @@ -0,0 +1,83 @@ +;;; SPDX-License-Identifier: GPL-3.0-or-later +;;; SPDX-FileCopyrightText: 2024-2026 Marek Paśnikowski <marek@marekpasnikowski.pl> + +(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 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 git-http-configuration + (gnu:services:version-control:git-http-configuration + (git-root "/var/lib/gitolite/repositories") + (uri-path "/git"))) + +(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 + (let + ((git-http- (gnu:services:version-control:git-http-nginx-location-configuration git-http-configuration))) + (nginx-server-configuration + (locations (list git-http- + 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 diff --git a/deployment/services/web.scm b/deployment/services/web.scm index 52d8385..fe03e90 100644 --- a/deployment/services/web.scm +++ b/deployment/services/web.scm @@ -3,36 +3,21 @@ (define-module (deployment services web) #:export (aisaka-certbot-service - aisaka-cgit-service - aisaka-nginx-service) + aisaka-nginx-service + nginx-location-well-known + nginx-service-type*) #:use-module (gnu services) #:use-module (gnu services web) #:use-module (guix gexp) #:use-module ((gnu packages matrix) #:prefix gnu:packages:matrix:) - #:use-module ((gnu packages version-control) - #:prefix gnu:packages:version-control:) #:use-module ((gnu services certbot) #:prefix gnu:services:certbot:) - #:use-module ((gnu services cgit) - #:prefix gnu:services:cgit:) - #:use-module ((gnu services version-control) - #:prefix gnu:services:version-control:) #:use-module ((gnu system shadow) #:prefix gnu:system:shadow:) #:use-module ((sovereign system accounts) #:prefix sovereign:system:accounts:)) -(define cgit-repository-configuration - (gnu:services:cgit:repository-cgit-configuration - (hide? #t) - (path "/srv/git/marek/packages"))) - -(define git-http-configuration - (gnu:services:version-control:git-http-configuration - (git-root "/var/lib/gitolite/repositories") - (uri-path "/git"))) - (define nginx-accounts (let ((accounts- (list sovereign:system:accounts:nginx-group @@ -60,15 +45,6 @@ (extensions (map extend-account nginx-extensions-))))) -(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-location-proxy-guix (nginx-location-configuration (body (list "proxy_pass http://localhost:5232/ ;" @@ -117,20 +93,6 @@ "add_header Access-Control-Allow-Origin * ;")) (uri "/.well-known/matrix/client"))) -(define nginx-server-cgit - (let - ((git-http- (gnu:services:version-control:git-http-nginx-location-configuration git-http-configuration))) - (nginx-server-configuration - (locations (list git-http- - nginx-location-cgit - 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-server-guix (nginx-server-configuration (locations (list nginx-location-proxy-guix)) @@ -278,36 +240,4 @@ (service certbot-type certbot-configuration)) -(define nginx-extension-of-cgit - (service-extension nginx-service-type* - gnu:services:cgit: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 gnu:services:cgit:cgit-service-type))) - (service-type - (inherit gnu:services:cgit:cgit-service-type) - (extensions (map extend-cgit - cgit-extensions-))))) - -(define cgit-configuration - (gnu:services:cgit: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 - cgit-configuration)) +;;; EOF diff --git a/deployment/system.scm b/deployment/system.scm index 2d54e16..bf5b143 100644 --- a/deployment/system.scm +++ b/deployment/system.scm @@ -1,4 +1,6 @@ (define-module (deployment system) + #:use-module ((deployment services cgit) + #:prefix deployment:services:cgit:) #:use-module ((deployment services databases) #:prefix deployment:services:databases:) #:use-module ((deployment services web) @@ -92,7 +94,7 @@ (name-service-switch gnu:system:nss:%default-nss) (essential-services (gnu:system:operating-system-default-essential-services gnu:system:this-operating-system)) (services (cons* deployment:services:web:aisaka-certbot-service - deployment:services:web:aisaka-cgit-service + deployment:services:cgit:aisaka-cgit-service users:id1000:dkim-service users:id1000:dovecot-service deployment:system:aisaka:etc |
