nixos/gitweb: add gitwebTheme option

gnidorah 9029ed93 a415a95e

Changed files
+65 -19
nixos
modules
services
misc
web-servers
lighttpd
nginx
pkgs
applications
version-management
git-and-tools
top-level
+8
nixos/modules/services/misc/gitweb.nix
···
'';
};
+
gitwebTheme = mkOption {
+
default = false;
+
type = types.bool;
+
description = ''
+
Use an alternative theme for gitweb, strongly inspired by GitHub.
+
'';
+
};
+
gitwebConfigFile = mkOption {
default = pkgs.writeText "gitweb.conf" ''
# path to git projects (<project>.git)
+5 -2
nixos/modules/services/web-servers/lighttpd/gitweb.nix
···
let
cfg = config.services.gitweb;
+
package = pkgs.gitweb.override (optionalAttrs cfg.gitwebTheme {
+
gitwebTheme = true;
+
});
in
{
···
"^/gitweb$" => "/gitweb/"
)
alias.url = (
-
"/gitweb/static/" => "${pkgs.git}/share/gitweb/static/",
-
"/gitweb/" => "${pkgs.git}/share/gitweb/gitweb.cgi"
+
"/gitweb/static/" => "${package}/static/",
+
"/gitweb/" => "${package}/gitweb.cgi"
)
setenv.add-environment = (
"GITWEB_CONFIG" => "${cfg.gitwebConfigFile}",
+7 -5
nixos/modules/services/web-servers/nginx/gitweb.nix
···
let
cfg = config.services.gitweb;
+
package = pkgs.gitweb.override (optionalAttrs cfg.gitwebTheme {
+
gitwebTheme = true;
+
});
in
{
···
systemd.services.gitweb = {
description = "GitWeb service";
-
script = "${pkgs.git}/share/gitweb/gitweb.cgi --fastcgi --nproc=1";
+
script = "${package}/gitweb.cgi --fastcgi --nproc=1";
environment = {
FCGI_SOCKET_PATH = "/run/gitweb/gitweb.sock";
};
···
services.nginx = {
virtualHosts.default = {
-
locations."/gitweb/" = {
-
root = "${pkgs.git}/share";
-
tryFiles = "$uri @gitweb";
+
locations."/gitweb/static/" = {
+
alias = "${package}/static/";
};
-
locations."@gitweb" = {
+
locations."/gitweb/" = {
extraConfig = ''
include ${pkgs.nginx}/conf/fastcgi_params;
fastcgi_param GITWEB_CONFIG ${cfg.gitwebConfigFile};
-1
pkgs/applications/version-management/git-and-tools/default.nix
···
perlPackages.MIMEBase64 perlPackages.AuthenSASL
perlPackages.DigestHMAC
];
-
gitwebPerlLibs = with perlPackages; [ CGI HTMLParser CGIFast FCGI FCGIProcManager HTMLTagCloud ];
};
in
+6 -11
pkgs/applications/version-management/git-and-tools/git/default.nix
···
{ fetchurl, stdenv, curl, openssl, zlib, expat, perl, python, gettext, cpio
, gnugrep, gnused, gawk, coreutils # needed at runtime by git-filter-branch etc
-
, gzip, openssh, pcre2
+
, openssh, pcre2
, asciidoc, texinfo, xmlto, docbook2x, docbook_xsl, docbook_xml_dtd_45
, libxslt, tcl, tk, makeWrapper, libiconv
-
, svnSupport, subversionClient, perlLibs, smtpPerlLibs, gitwebPerlLibs
+
, svnSupport, subversionClient, perlLibs, smtpPerlLibs
, guiSupport
, withManual ? true
, pythonSupport ? true
···
url = "https://www.kernel.org/pub/software/scm/git/git-${version}.tar.xz";
sha256 = "0j1dwvg5llnj3g0fp8hdgpms4hp90qw9f6509vqw30dhwplrjpfn";
};
+
+
outputs = [ "out" "gitweb" ];
hardeningDisable = [ "format" ];
···
substituteInPlace $out/libexec/git-core/git-sh-i18n \
--subst-var-by gettext ${gettext}
-
# gzip (and optionally bzip2, xz, zip) are runtime dependencies for
-
# gitweb.cgi, need to patch so that it's found
-
sed -i -e "s|'compressor' => \['gzip'|'compressor' => ['${gzip}/bin/gzip'|" \
-
$out/share/gitweb/gitweb.cgi
-
# Give access to CGI.pm and friends (was removed from perl core in 5.22)
-
for p in ${stdenv.lib.concatStringsSep " " gitwebPerlLibs}; do
-
sed -i -e "/use CGI /i use lib \"$p/lib/perl5/site_perl\";" \
-
"$out/share/gitweb/gitweb.cgi"
-
done
+
# put in separate package for simpler maintenance
+
mv $out/share/gitweb $gitweb/
# Also put git-http-backend into $PATH, so that we can use smart
# HTTP(s) transports for pushing
+37
pkgs/applications/version-management/git-and-tools/gitweb/default.nix
···
+
{ stdenv, git, gzip, perlPackages, fetchFromGitHub
+
, gitwebTheme ? false }:
+
+
let
+
gitwebPerlLibs = with perlPackages; [ CGI HTMLParser CGIFast FCGI FCGIProcManager HTMLTagCloud ];
+
gitwebThemeSrc = fetchFromGitHub {
+
owner = "kogakure";
+
repo = "gitweb-theme";
+
rev = "049b88e664a359f8ec25dc6f531b7e2aa60dd1a2";
+
sha256 = "0wksqma41z36dbv6w6iplkjfdm0ha3njp222fakyh4lismajr71p";
+
};
+
in stdenv.mkDerivation {
+
name = "gitweb";
+
+
src = git.gitweb;
+
+
installPhase = ''
+
mkdir $out
+
mv * $out
+
+
# gzip (and optionally bzip2, xz, zip) are runtime dependencies for
+
# gitweb.cgi, need to patch so that it's found
+
sed -i -e "s|'compressor' => \['gzip'|'compressor' => ['${gzip}/bin/gzip'|" \
+
$out/gitweb.cgi
+
# Give access to CGI.pm and friends (was removed from perl core in 5.22)
+
for p in ${stdenv.lib.concatStringsSep " " gitwebPerlLibs}; do
+
sed -i -e "/use CGI /i use lib \"$p/lib/perl5/site_perl\";" \
+
"$out/gitweb.cgi"
+
done
+
+
${stdenv.lib.optionalString gitwebTheme "cp ${gitwebThemeSrc}/* $out/static"}
+
'';
+
+
meta = git.meta // {
+
maintainers = with stdenv.lib.maintainers; [ gnidorah ];
+
};
+
}
+2
pkgs/top-level/all-packages.nix
···
ghostwriter = libsForQt5.callPackage ../applications/editors/ghostwriter { };
+
gitweb = callPackage ../applications/version-management/git-and-tools/gitweb/default.nix { };
+
gksu = callPackage ../applications/misc/gksu { };
gnss-sdr = callPackage ../applications/misc/gnss-sdr { };