{ pkgs, ... }: let cgitPkg = pkgs.cgit; in { users.groups.git = { }; users.users.git = { isSystemUser = true; group = "git"; home = "/var/lib/git"; createHome = true; shell = "${pkgs.git}/bin/git-shell"; }; environment.etc."cgitrc".text = '' root-title=beeb5k git repos root-desc=Personal Code Repositories scan-path=/var/lib/git enable-http-clone=1 clone-prefix=https://git.beeb5k.space css=/cgit-css/cgit.css logo=/cgit-css/cgit.png favicon=/favicon.ico readme=:README.md readme=:README.txt readme=:README ''; services.fcgiwrap.instances.cgit = { process = { user = "git"; group = "git"; }; socket = { type = "unix"; address = "/run/fcgiwrap-cgit.sock"; user = "git"; group = "caddy"; mode = "0660"; }; }; services.caddy = { enable = true; virtualHosts."git.beeb5k.space".extraConfig = '' # Article: location /cgit-css/ { alias /usr/share/cgit/; } handle_path /cgit-css/* { root * ${pkgs.cgit}/cgit file_server } # Article: location / { fastcgi_pass ... fastcgi_param SCRIPT_FILENAME ... } handle { reverse_proxy unix//run/fcgiwrap-cgit.sock { transport fastcgi { env DOCUMENT_ROOT ${pkgs.cgit}/cgit env SCRIPT_FILENAME ${pkgs.cgit}/cgit/cgit.cgi env CGIT_CONFIG /etc/cgitrc } } } ''; }; }