Merge pull request #38918 from gnidorah/gitweb
nixos/gitweb: add gitwebTheme option
This commit is contained in:
commit
77a1993b46
@ -32,6 +32,14 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
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)
|
||||
|
@ -4,6 +4,9 @@ with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.gitweb;
|
||||
package = pkgs.gitweb.override (optionalAttrs cfg.gitwebTheme {
|
||||
gitwebTheme = true;
|
||||
});
|
||||
|
||||
in
|
||||
{
|
||||
@ -34,8 +37,8 @@ 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}",
|
||||
|
@ -4,6 +4,9 @@ with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.gitweb;
|
||||
package = pkgs.gitweb.override (optionalAttrs cfg.gitwebTheme {
|
||||
gitwebTheme = true;
|
||||
});
|
||||
|
||||
in
|
||||
{
|
||||
@ -24,7 +27,7 @@ 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";
|
||||
};
|
||||
@ -38,11 +41,10 @@ in
|
||||
|
||||
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};
|
||||
|
@ -15,7 +15,6 @@ let
|
||||
perlPackages.MIMEBase64 perlPackages.AuthenSASL
|
||||
perlPackages.DigestHMAC
|
||||
];
|
||||
gitwebPerlLibs = with perlPackages; [ CGI HTMLParser CGIFast FCGI FCGIProcManager HTMLTagCloud ];
|
||||
};
|
||||
|
||||
in
|
||||
|
@ -1,9 +1,9 @@
|
||||
{ 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
|
||||
@ -25,6 +25,8 @@ stdenv.mkDerivation {
|
||||
sha256 = "0j1dwvg5llnj3g0fp8hdgpms4hp90qw9f6509vqw30dhwplrjpfn";
|
||||
};
|
||||
|
||||
outputs = [ "out" "gitweb" ];
|
||||
|
||||
hardeningDisable = [ "format" ];
|
||||
|
||||
patches = [
|
||||
@ -131,15 +133,8 @@ stdenv.mkDerivation {
|
||||
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
|
||||
|
@ -0,0 +1,37 @@
|
||||
{ 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 ];
|
||||
};
|
||||
}
|
@ -15636,6 +15636,8 @@ with pkgs;
|
||||
|
||||
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 { };
|
||||
|
Loading…
Reference in New Issue
Block a user