# HTTP Git hosting # Copyright (C) 2023-2024 Nguyễn Gia Phong # # This file is part of loang configuration. # # Loang configuration is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Loang configuration 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 Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with loang configuration. If not, see . { config, lib, pkgs, ... }: let inherit (config.networking) domain; cgit = pkgs.cgit-pink; css = builtins.readFile "${cgit}/cgit/cgit.css" + '' div#cgit { font-size: initial; } ''; httpsClone = "https://trong.${domain}/$CGIT_REPO_URL"; scanPath = "/var/lib/git"; sshClone = "ssh://${domain}:2211${scanPath}/$CGIT_REPO_URL"; in { services = { cgit.trong = { enable = true; nginx.virtualHost = "trong.${domain}"; package = cgit; scanPath = scanPath; settings = { about-filter = "${cgit}/lib/cgit/filters/about-formatting.sh"; source-filter = "${cgit}/lib/cgit/filters/syntax-highlighting.py"; css = "/style.css"; clone-url = "${httpsClone} ${sshClone}"; enable-blame = true; enable-git-config = true; enable-index-links = true; enable-index-owner = false; readme = ":README.md"; snapshots = "tar.gz"; }; }; nginx.virtualHosts."${config.services.cgit.trong.nginx.virtualHost}" = { enableACME = true; forceSSL = true; locations."= /style.css".alias = builtins.toFile "style.css" css; }; }; }