{ gitweb, writeText, gitolite, git, gitoliteDir, highlight }:
rec {
varDir = gitoliteDir;
webRoot = gitweb;
config = writeText "gitweb.conf" ''
$git_temp = "/tmp";
# The directories where your projects are. Must not end with a
# slash.
$projectroot = "${varDir}/repositories";
$projects_list = "${varDir}/projects.list";
$strict_export = "true";
# Base URLs for links displayed in the web interface.
our @git_base_url_list = qw(ssh://gitolite@git.immae.eu https://git.immae.eu);
$feature{'blame'}{'default'} = [1];
$feature{'avatar'}{'default'} = ['gravatar'];
$feature{'highlight'}{'default'} = [1];
@stylesheets = ("gitweb-theme/gitweb.css");
$logo = "gitweb-theme/git-logo.png";
$favicon = "gitweb-theme/git-favicon.png";
$javascript = "gitweb-theme/gitweb.js";
$logo_url = "https://git.immae.eu/";
$projects_list_group_categories = "true";
$projects_list_description_width = 60;
$project_list_default_category = "__Others__";
$highlight_bin = "${highlight}/bin/highlight";
'';
apache = rec {
user = "wwwrun";
group = "wwwrun";
modules = [ "cgid" ];
webappName = "tools_gitweb";
root = "/run/current-system/webapps/${webappName}";
vhostConf = ''
SetEnv GIT_PROJECT_ROOT ${varDir}/repositories/
ScriptAliasMatch \
"(?x)^/(.*/(HEAD | \
info/refs | \
objects/(info/[^/]+ | \
[0-9a-f]{2}/[0-9a-f]{38} | \
pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
git-(upload|receive)-pack))$" \
${git}/libexec/git-core/git-http-backend/$1
Require all granted
DirectoryIndex gitweb.cgi
Require all granted
AllowOverride None
Options ExecCGI FollowSymLinks
SetHandler cgi-script
SetEnv GITWEB_CONFIG "${config}"
'';
};
}