Skip to content

Instantly share code, notes, and snippets.



Created Aug 16, 2020
What would you like to do?
{ config, pkgs, ... }:
let projectroot = "/home/git/"; # where are the repos on the disk?
subdir = "private-git"; # url path prefix
staticFilesPath = "cgit-static"; # url path to cgit's static assets
# /home/git/published-by-cgit contains the list of projects
# that cgit will show
cgitrc = pkgs.writeText "cgitrc"
# default paths to static assets
in { = true; = {
virtualHosts."_" = {
locations."/${staticFilesPath}/" = {
# don't be confused, alias and root are different things
# in nginx, and root is probably the wrong one when you're
# not at the root of the virtual host
extraConfig = ''
alias ${pkgs.cgit}/cgit/;
locations."/${subdir}/" = {
extraConfig = ''
include ${pkgs.nginx}/conf/fastcgi_params;
# Incoming request might be for "/private-git/repo.git/foo/".
# This directs nginx to split that string into
# "/private-git/" and "repo.git/foo/"
# and put the second part in $fastcgi_path_info,
# which we can then pass to fastcgi as PATH_INFO. whoo.
fastcgi_split_path_info ^(/${subdir}/)(.*)$;
fastcgi_param CGIT_CONFIG ${cgitrc};
fastcgi_param SCRIPT_FILENAME ${pkgs.cgit}/cgit/cgit.cgi;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param QUERY_STRING $query_string;
fastcgi_pass unix:/run/fcgiwrap.sock;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.