-{ gitweb, writeText, gitolite, git, gitoliteDir, highlight }:
+{ gitweb, writeText, stdenv, coreutils, writeScript, gitolite, git, cgit, gitoliteDir, mailcap, highlight }:
rec {
varDir = gitoliteDir;
- webRoot = gitweb;
config = writeText "gitweb.conf" ''
$git_temp = "/tmp";
$project_list_default_category = "__Others__";
$highlight_bin = "${highlight}/bin/highlight";
'';
+ aboutFilter = writeScript "about-filter.sh" ''
+ #!${stdenv.shell}
+
+ if [ -f "$CGIT_REPO_PATH/README.html" ]; then
+ cat "$CGIT_REPO_PATH/README.html"
+ else
+ ${cgit}/lib/cgit/filters/about-formatting.sh "$@"
+ fi
+ '';
+ cgitConfig = writeText "cgitrc" ''
+ css=/cgit-css/cgit.css
+ logo=/cgit-css/cgit.png
+ favicon=/cgit-css/favicon.ico
+ head-include=${./cgit_js.html}
+
+ root-title=Immae’s git
+ root-desc=To go back to the old interface: https://git.immae.eu/?old
+ readme=:README.md
+ readme=:readme.md
+ readme=:README
+ readme=:DOCUMENTATION.md
+ about-filter=${aboutFilter}
+ #${cgit}/lib/cgit/filters/about-formatting.sh
+ source-filter=${cgit}/lib/cgit/filters/syntax-highlighting.py
+
+ enable-blame=1
+ enable-index-links=1
+ enable-commit-graph=1
+ enable-log-filecount=1
+ enable-log-linecount=1
+
+ enable-html-serving=1
+ # Allow using gitweb.* keys
+ enable-git-config=1
+
+ side-by-side-diffs=1
+ snapshots=tar.gz tar.zst zip
+ mimetype-file=${mailcap}/etc/mime.types
+
+ section=__Others__
+ clone-url=ssh://gitolite@git.immae.eu/$CGIT_REPO_URL https://git.immae.eu/$CGIT_REPO_URL
+ #section-from-path=1
+ project-list=${varDir}/projects.list
+ scan-path=${varDir}/repositories
+ '';
apache = rec {
user = "wwwrun";
group = "wwwrun";
modules = [ "cgid" ];
- webappName = "tools_gitweb";
- root = "/run/current-system/webapps/${webappName}";
+ root = gitweb;
vhostConf = ''
SetEnv GIT_PROJECT_ROOT ${varDir}/repositories/
ScriptAliasMatch \
SetEnv GITWEB_CONFIG "${config}"
</Files>
</Directory>
+
+ SetEnv CGIT_CONFIG ${cgitConfig}
+ ScriptAlias /cgit "${cgit}/cgit/cgit.cgi/"
+ Alias /cgit-css "${cgit}/cgit"
+ <Directory "${cgit}/cgit/">
+ AllowOverride None
+ Options ExecCGI FollowSymlinks
+ Require all granted
+ </Directory>
+
+ RewriteEngine On
+ RewriteCond %{QUERY_STRING} ^$
+ RewriteRule ^/?$ /cgit [L,R=302]
+
+ RewriteCond %{REQUEST_URI} ^(.*)(\.git)?/?$
+ RewriteCond ${varDir}/repositories/%1.git/HEAD -f
+ RewriteRule ^(.+)$ /cgit$1 [L,R=302]
'';
};
}