diff options
-rw-r--r-- | git.nix | 78 |
1 files changed, 31 insertions, 47 deletions
diff --git a/git.nix b/git.nix index dc120f8..a18ff6a 100644 --- a/git.nix +++ b/git.nix @@ -1,5 +1,5 @@ # HTTP Git hosting -# Copyright (C) 2023 Nguyễn Gia Phong +# Copyright (C) 2023-2024 Nguyễn Gia Phong # # This file is part of loang configuration. # @@ -20,57 +20,41 @@ let inherit (config.networking) domain; cgit = pkgs.cgit-pink; -in { - services = let - cgitrc = pkgs.writeText "cgitrc" '' - about-filter=${cgit}/lib/cgit/filters/about-formatting.sh - css=/style.css - favicon=/favicon.ico - logo=/cgit.png - source-filter=${cgit}/lib/cgit/filters/syntax-highlighting.py - virtual-root=/ + css = builtins.readFile "${cgit}/cgit/cgit.css" + '' - clone-url=${httpsClone} ${sshClone} - enable-blame=1 - enable-git-config=1 - enable-index-links=1 - enable-index-owner=0 - readme=:README.md - snapshots=tar.gz tar.zst - scan-path=${scanPath} - ''; - 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"; - 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 { - fcgiwrap.enable = true; + 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."trong.${domain}" = { + nginx.virtualHosts."${config.services.cgit.trong.nginx.virtualHost}" = { enableACME = true; forceSSL = true; - locations = { - "/" = { - root = "${cgit}/cgit/"; - tryFiles = "$uri @cgit"; - }; - "~ ^/(cgit.png|favicon.ico|robots.txt)$".alias = "${cgit}/cgit/$1"; - "= /style.css".alias = builtins.toFile "style.css" css; - "@cgit".extraConfig = '' - include ${pkgs.nginx}/conf/fastcgi_params; - fastcgi_param CGIT_CONFIG ${cgitrc}; - fastcgi_param HTTP_HOST $server_name; - fastcgi_param PATH_INFO $uri; - fastcgi_param QUERY_STRING $args; - fastcgi_param SCRIPT_FILENAME ${cgit}/cgit/cgit.cgi; - fastcgi_pass unix:${config.services.fcgiwrap.socketAddress}; - ''; - }; + locations."= /style.css".alias = builtins.toFile "style.css" css; }; }; } |