diff options
Diffstat (limited to '')
-rw-r--r-- | modules/nixos/git/default.nix (renamed from modules/nixos/git.nix) | 96 |
1 files changed, 88 insertions, 8 deletions
diff --git a/modules/nixos/git.nix b/modules/nixos/git/default.nix index f754588..587f3b3 100644 --- a/modules/nixos/git.nix +++ b/modules/nixos/git/default.nix @@ -54,8 +54,13 @@ in { locations = { "/".extraConfig = let cgitrc = pkgs.writeText "cgitrc" '' - root-title=azahi’s git stuff - root-desc=鯛も一人はうまからず + root-title=github sux >:^( + root-desc=Homo sum, humani a me nihil alienum puto. + footer= + + logo=/cgit-custom-logo.gif + favicon=/cgit-custom-favicon.gif + css=/cgit-custom-style.css about-filter=${cfg.server.package}/lib/cgit/filters/about-formatting.sh source-filter=${cfg.server.package}/lib/cgit/filters/syntax-highlighting.py @@ -63,10 +68,9 @@ in { enable-git-config=1 enable-gitweb-owner=1 + enable-index-owner=0 remove-suffix=1 - snapshots=tar.gz tar.bz2 zip - readme=:README readme=:README.md readme=:README.org @@ -88,9 +92,80 @@ in { fastcgi_param QUERY_STRING $args; fastcgi_param HTTP_HOST $server_name; ''; - # FIXME This breaks sources previewing for these files. - "~* ^/(.+.(ico|css|png))$".extraConfig = '' - alias ${cfg.server.package}/cgit/$1; + "~* ^.+(cgit.css|robots.txt)$".extraConfig = '' + root ${cfg.server.package}/cgit; + ''; + "~* ^.+cgit-custom-logo.gif$".extraConfig = '' + alias ${./logo.gif}; + ''; + "~* ^.+cgit-custom-favicon.gif$".extraConfig = '' + alias ${./favicon.ico}; + ''; + "~* ^.+cgit-custom-style.css$".extraConfig = let + css = with config.colourScheme; + pkgs.writeText "custom.css" '' + @import url("cgit.css"); + + form { + display: none; + } + + div#cgit { + max-width: 200ch; + margin: auto; + font-family: "${config.fontScheme.monospaceFont.family}", monospace; + -moz-tab-size: 4; + tab-size: 4; + } + + div#cgit table#header td.sub { + border-top: none; + } + + div#cgit table#header td.sub.right { + padding-right: 1em; + } + + div#cgit table.tabs { + border-bottom: none; + } + + div#cgit div.content { + border-bottom: none; + } + + div#cgit table.list th a { + color: inherit; + } + + div#cgit table.list tr:nth-child(even) { + background: inherit; + } + + div#cgit table.list tr:hover { + background: inherit; + } + + div#cgit table.list tr.nohover-highlight:hover:nth-child(even) { + background: inherit; + } + + div#cgit table.blob td.linenumbers a:target { + color: goldenrod; + text-decoration: underline; + outline: none; + } + + div#cgit div#summary { + max-width: 80ch; + } + + div#cgit a.permalink { + color: inherit; + } + ''; + in '' + alias ${css}; ''; }; }; @@ -101,10 +176,15 @@ in { group = "git"; in { gitolite = { - # TODO Make the configuration purely declarative. enable = true; inherit user group; adminPubkey = my.ssh.key; + extraGitoliteRc = '' + # This allows hiding repositories via "cgit.ignore"[1]. + # + # [1]: https://www.omarpolo.com/post/cgit-gitolite.html + $RC{GIT_CONFIG_KEYS} = '.*'; + ''; }; fcgiwrap = { |