{ config, pkgs, lib, ... }: let cfg = config.my.services.cgit; cgitrc = '' # Global configuration virtual-root=/ enable-http-clone=0 source-filter=${pkgs.cgit}/lib/cgit/filters/syntax-highlighting.py about-filter=${pkgs.cgit}/lib/cgit/filters/about-formatting.sh readme=:README.md enable-log-filecount=1 enable-log-linecount=1 enable-follow-links=1 enable-blame=1 # Repository configuration repo.url=world repo.path=/var/lib/gerrit/git/world.git/ repo.clone-url=https://git.fcuny.net/world.git ''; in { options.my.services.cgit = with lib; { enable = mkEnableOption "git web viewer"; }; config = lib.mkIf cfg.enable { services.fcgiwrap = { enable = true; user = "git"; group = "git"; }; services.nginx.virtualHosts."git.fcuny.net" = { forceSSL = true; enableACME = true; locations = { "~* ^.+.(css|png|ico)$" = { root = "${pkgs.cgit}/cgit"; }; "/".extraConfig = '' include ${pkgs.nginx}/conf/fastcgi_params; fastcgi_param CGIT_CONFIG ${pkgs.writeText "cgitrc" cgitrc}; fastcgi_param SCRIPT_FILENAME ${pkgs.cgit}/cgit/cgit.cgi; fastcgi_split_path_info ^(/?)(.+)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param HTTP_HOST $server_name; fastcgi_param QUERY_STRING $args; fastcgi_pass unix:${config.services.fcgiwrap.socketAddress}; ''; }; }; }; }