about summary refs log tree commit diff
diff options
context:
space:
mode:
authorgnidorah <gnidorah@users.noreply.github.com>2018-04-17 20:06:44 +0300
committergnidorah <gnidorah@users.noreply.github.com>2018-04-17 20:07:01 +0300
commit9029ed933c69287c64a30d40b6b4f9f1ace7dd94 (patch)
tree3ce069646e63b7d4cee63874265337e41c6fb6a9
parenta415a95e7c520b1f0f86c9729a54f5c8e7bd416c (diff)
downloadnixlib-9029ed933c69287c64a30d40b6b4f9f1ace7dd94.tar
nixlib-9029ed933c69287c64a30d40b6b4f9f1ace7dd94.tar.gz
nixlib-9029ed933c69287c64a30d40b6b4f9f1ace7dd94.tar.bz2
nixlib-9029ed933c69287c64a30d40b6b4f9f1ace7dd94.tar.lz
nixlib-9029ed933c69287c64a30d40b6b4f9f1ace7dd94.tar.xz
nixlib-9029ed933c69287c64a30d40b6b4f9f1ace7dd94.tar.zst
nixlib-9029ed933c69287c64a30d40b6b4f9f1ace7dd94.zip
nixos/gitweb: add gitwebTheme option
-rw-r--r--nixos/modules/services/misc/gitweb.nix8
-rw-r--r--nixos/modules/services/web-servers/lighttpd/gitweb.nix7
-rw-r--r--nixos/modules/services/web-servers/nginx/gitweb.nix12
-rw-r--r--pkgs/applications/version-management/git-and-tools/default.nix1
-rw-r--r--pkgs/applications/version-management/git-and-tools/git/default.nix17
-rw-r--r--pkgs/applications/version-management/git-and-tools/gitweb/default.nix37
-rw-r--r--pkgs/top-level/all-packages.nix2
7 files changed, 65 insertions, 19 deletions
diff --git a/nixos/modules/services/misc/gitweb.nix b/nixos/modules/services/misc/gitweb.nix
index b0e34a690ca5..ca21366b7796 100644
--- a/nixos/modules/services/misc/gitweb.nix
+++ b/nixos/modules/services/misc/gitweb.nix
@@ -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)
diff --git a/nixos/modules/services/web-servers/lighttpd/gitweb.nix b/nixos/modules/services/web-servers/lighttpd/gitweb.nix
index 37128d90401d..c494d6966a7f 100644
--- a/nixos/modules/services/web-servers/lighttpd/gitweb.nix
+++ b/nixos/modules/services/web-servers/lighttpd/gitweb.nix
@@ -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}",
diff --git a/nixos/modules/services/web-servers/nginx/gitweb.nix b/nixos/modules/services/web-servers/nginx/gitweb.nix
index 3dc3ebc7e4c2..272fd1480185 100644
--- a/nixos/modules/services/web-servers/nginx/gitweb.nix
+++ b/nixos/modules/services/web-servers/nginx/gitweb.nix
@@ -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};
diff --git a/pkgs/applications/version-management/git-and-tools/default.nix b/pkgs/applications/version-management/git-and-tools/default.nix
index cd969ff81d0b..73659a32f4bf 100644
--- a/pkgs/applications/version-management/git-and-tools/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/default.nix
@@ -15,7 +15,6 @@ let
       perlPackages.MIMEBase64 perlPackages.AuthenSASL
       perlPackages.DigestHMAC
     ];
-    gitwebPerlLibs = with perlPackages; [ CGI HTMLParser CGIFast FCGI FCGIProcManager HTMLTagCloud ];
   };
 
 in
diff --git a/pkgs/applications/version-management/git-and-tools/git/default.nix b/pkgs/applications/version-management/git-and-tools/git/default.nix
index b336f72c7ac1..cf44cf5ef981 100644
--- a/pkgs/applications/version-management/git-and-tools/git/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/git/default.nix
@@ -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
diff --git a/pkgs/applications/version-management/git-and-tools/gitweb/default.nix b/pkgs/applications/version-management/git-and-tools/gitweb/default.nix
new file mode 100644
index 000000000000..0358f850c9ab
--- /dev/null
+++ b/pkgs/applications/version-management/git-and-tools/gitweb/default.nix
@@ -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 ];
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 27636fb8c186..3dbe8b860b0e 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -15613,6 +15613,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 { };