diff options
Diffstat (limited to 'modules/nixos/vhack/git-server/default.nix')
-rw-r--r-- | modules/nixos/vhack/git-server/default.nix | 86 |
1 files changed, 84 insertions, 2 deletions
diff --git a/modules/nixos/vhack/git-server/default.nix b/modules/nixos/vhack/git-server/default.nix index a700ef4..8bb1428 100644 --- a/modules/nixos/vhack/git-server/default.nix +++ b/modules/nixos/vhack/git-server/default.nix @@ -5,6 +5,13 @@ ... }: let cfg = config.vhack.git-server; + + cgitCss = import ./css.nix { + inherit pkgs; + cgitPkg = + config.services.cgit."${cfg.domain}".package; + }; + /* Until <https://github.com/NixOS/nixpkgs/pull/317293> is merged into nixpkgs, we have to do the list to string conversion ourselves: @@ -74,20 +81,95 @@ in { package = pkgs.cgit-pink; scanPath = "${config.services.gitolite.dataDir}/repositories"; settings = { + branch-sort = "age"; + # Allow users to download a repo checkout with these compression formats snapshots = toCgitRc ["tar.gz" "zip"]; # The template used to generate the clone url for https clone. clone-url = toCgitRc ["https://${cfg.domain}/$CGIT_REPO_URL" "ssh://git@${cfg.domain}/$CGIT_REPO_URL"]; enable-http-clone = true; - section-from-path = true; + + # TODO: We might want to add an logo and readme here <2024-07-31> + # logo = "<url>"; + # root-readme = "/some/readme/file" + root-desc = "The cgit instance of ${cfg.domain}!"; + root-title = "${ + lib.strings.toUpper (builtins.substring 0 1 cfg.domain) + builtins.substring 1 (builtins.stringLength cfg.domain) cfg.domain + } cgit instace"; + + # Set the default maximum statistics period. Valid values are "week", + # "month", "quarter" and "year". + max-stats = "week"; + + readme = toCgitRc [ + ":README.md" + ":readme.md" + ":README.mkd" + ":readme.mkd" + ":README.rst" + ":readme.rst" + ":README.html" + ":readme.html" + ":README.htm" + ":readme.htm" + ":README.txt" + ":readme.txt" + ":README" + ":readme" + ":INSTALL.md" + ":install.md" + ":INSTALL.mkd" + ":install.mkd" + ":INSTALL.rst" + ":install.rst" + ":INSTALL.html" + ":install.html" + ":INSTALL.htm" + ":install.htm" + ":INSTALL.txt" + ":install.txt" + ":INSTALL" + ":install" + ]; + + enable-blame = true; + enable-commit-graph = true; + enable-subject-links = true; + enable-follow-links = true; + enable-index-links = true; + enable-index-owner = true; + + # NOTE: This allows cgit to take configuration from the bare git repositories: + # eg. `cgit.section` should set the section, `cgit.homepage` the homepage, + # `gitweb.owner` the owner and `gitweb.description` the description of the repo. <2024-08-02> + enable-git-config = true; + + # Remove the `.git` suffix from scanned repositories (this must be set _before_ `scan-path`) + remove-suffix = true; + + css = "${cgitCss}"; + + # This is a number of path elements to treat as section. + # Set this to a big number to ensure all path elements are treated as sections. + section-from-path = 1000; + project-list = "${config.services.gitolite.dataDir}/projects.list"; - source-filter = "${config.services.cgit."git.vhack.eu".package}/lib/cgit/filters/syntax-highlighting.py"; + + # TODO: We might want to use the kernel.org `libravatar.lua` email-filter <2024-07-31> + source-filter = "${config.services.cgit."${cfg.domain}".package}/lib/cgit/filters/syntax-highlighting.py"; + about-filter = "${config.services.cgit."${cfg.domain}".package}/lib/cgit/filters/about-formatting.sh"; }; }; nginx.virtualHosts."${cfg.domain}" = { enableACME = true; forceSSL = true; + + # locations = { + # "= /cgit.css" = { + # alias = cgitCss.outPath; + # }; + # }; }; }; }; |