From e0d6ebfc8fdc00415ff16cfc10e83d4b49e769d8 Mon Sep 17 00:00:00 2001 From: Nguyễn Gia Phong Date: Tue, 7 Mar 2023 18:00:22 +0900 Subject: Set up cgit --- configuration.nix | 1 + git.nix | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 git.nix diff --git a/configuration.nix b/configuration.nix index 712a88e..798e300 100644 --- a/configuration.nix +++ b/configuration.nix @@ -34,6 +34,7 @@ ./dns.nix ./ipfs.nix ./irc.nix + ./git.nix ./matrix.nix ./push.nix ./static.nix diff --git a/git.nix b/git.nix new file mode 100644 index 0000000..152de98 --- /dev/null +++ b/git.nix @@ -0,0 +1,53 @@ +# HTTP Git hosting +# Copyright (C) 2023 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; +in { + services = { + lighttpd = { + cgit = { + configText = let + httpsClone = "https://trong.${domain}/$CGIT_REPO_URL"; + scanPath = "/var/lib/git"; + sshClone = "ssh://${domain}:2211${scanPath}/$CGIT_REPO_URL"; + in '' + about-filter=${pkgs.cgit}/lib/cgit/filters/about-formatting.sh + source-filter=${pkgs.cgit}/lib/cgit/filters/syntax-highlighting.py + + clone-url=${httpsClone} ${sshClone} + enable-blame=1 + enable-git-config=1 + readme=:README.md + snapshots=tar.gz tar.zst + scan-path=${scanPath} + ''; + enable = true; + subdir = ""; + }; + enable = true; + port = 9418; + }; + + nginx."trong.${domain}" = let port = config.services.lighttpd.port; + in { + enableACME = true; + forceSSL = true; + locations."/".proxyPass = "http://127.0.0.1:${toString port}"; + }; +} -- cgit 1.4.1