summary refs log tree commit diff
diff options
context:
space:
mode:
authorWout Mertens <Wout.Mertens@gmail.com>2018-03-30 00:18:44 +0200
committerGitHub <noreply@github.com>2018-03-30 00:18:44 +0200
commitb4e92e0b34e72ed467fe4ed4fa1c5a1dfa3c89b7 (patch)
tree07b6bb800228a789fe4bbc76d293c57707a0c2e8
parent299eb877a72ab73eabe2d0c0e6992122d5a13b59 (diff)
parent05b535c850d1361e18ecd58ba81a8537bf31041b (diff)
downloadnixlib-b4e92e0b34e72ed467fe4ed4fa1c5a1dfa3c89b7.tar
nixlib-b4e92e0b34e72ed467fe4ed4fa1c5a1dfa3c89b7.tar.gz
nixlib-b4e92e0b34e72ed467fe4ed4fa1c5a1dfa3c89b7.tar.bz2
nixlib-b4e92e0b34e72ed467fe4ed4fa1c5a1dfa3c89b7.tar.lz
nixlib-b4e92e0b34e72ed467fe4ed4fa1c5a1dfa3c89b7.tar.xz
nixlib-b4e92e0b34e72ed467fe4ed4fa1c5a1dfa3c89b7.tar.zst
nixlib-b4e92e0b34e72ed467fe4ed4fa1c5a1dfa3c89b7.zip
Merge pull request #37921 from gnidorah/gitweb
nixos/nginx: add gitweb sub-service
-rw-r--r--nixos/modules/module-list.nix2
-rw-r--r--nixos/modules/services/misc/gitweb.nix50
-rw-r--r--nixos/modules/services/web-servers/lighttpd/gitweb.nix28
-rw-r--r--nixos/modules/services/web-servers/nginx/gitweb.nix64
-rw-r--r--pkgs/applications/version-management/git-and-tools/default.nix2
-rw-r--r--pkgs/top-level/perl-packages.nix12
6 files changed, 132 insertions, 26 deletions
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 751bf6584427..f23ecc1e99d8 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -325,6 +325,7 @@
   #./services/misc/gitit.nix
   #./services/misc/gitlab.nix
   ./services/misc/gitolite.nix
+  ./services/misc/gitweb.nix
   ./services/misc/gogs.nix
   ./services/misc/gollum.nix
   ./services/misc/gpsd.nix
@@ -650,6 +651,7 @@
   ./services/web-servers/mighttpd2.nix
   ./services/web-servers/minio.nix
   ./services/web-servers/nginx/default.nix
+  ./services/web-servers/nginx/gitweb.nix
   ./services/web-servers/phpfpm/default.nix
   ./services/web-servers/shellinabox.nix
   ./services/web-servers/tomcat.nix
diff --git a/nixos/modules/services/misc/gitweb.nix b/nixos/modules/services/misc/gitweb.nix
new file mode 100644
index 000000000000..8e4d85a1e15f
--- /dev/null
+++ b/nixos/modules/services/misc/gitweb.nix
@@ -0,0 +1,50 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+  cfg = config.services.gitweb;
+
+in
+{
+
+  options.services.gitweb = {
+
+    projectroot = mkOption {
+      default = "/srv/git";
+      type = types.path;
+      description = ''
+        Path to git projects (bare repositories) that should be served by
+        gitweb. Must not end with a slash.
+      '';
+    };
+
+    extraConfig = mkOption {
+      default = "";
+      type = types.lines;
+      description = ''
+        Verbatim configuration text appended to the generated gitweb.conf file.
+      '';
+      example = ''
+        $feature{'highlight'}{'default'} = [1];
+        $feature{'ctags'}{'default'} = [1];
+      '';
+    };
+
+    gitwebConfigFile = mkOption {
+      default = pkgs.writeText "gitweb.conf" ''
+        # path to git projects (<project>.git)
+        $projectroot = "${cfg.projectroot}";
+        $highlight_bin = "${pkgs.highlight}/bin/highlight";
+        ${cfg.extraConfig}
+      '';
+      type = types.path;
+      readOnly = true;
+      internal = true;
+    };
+
+  };
+
+  meta.maintainers = with maintainers; [ gnidorah ];
+
+}
diff --git a/nixos/modules/services/web-servers/lighttpd/gitweb.nix b/nixos/modules/services/web-servers/lighttpd/gitweb.nix
index c8d9836b0b68..37128d90401d 100644
--- a/nixos/modules/services/web-servers/lighttpd/gitweb.nix
+++ b/nixos/modules/services/web-servers/lighttpd/gitweb.nix
@@ -3,12 +3,7 @@
 with lib;
 
 let
-  cfg = config.services.lighttpd.gitweb;
-  gitwebConfigFile = pkgs.writeText "gitweb.conf" ''
-    # path to git projects (<project>.git)
-    $projectroot = "${cfg.projectroot}";
-    ${cfg.extraConfig}
-  '';
+  cfg = config.services.gitweb;
 
 in
 {
@@ -23,26 +18,9 @@ in
       '';
     };
 
-    projectroot = mkOption {
-      default = "/srv/git";
-      type = types.path;
-      description = ''
-        Path to git projects (bare repositories) that should be served by
-        gitweb. Must not end with a slash.
-      '';
-    };
-
-    extraConfig = mkOption {
-      default = "";
-      type = types.lines;
-      description = ''
-        Verbatim configuration text appended to the generated gitweb.conf file.
-      '';
-    };
-
   };
 
-  config = mkIf cfg.enable {
+  config = mkIf config.services.lighttpd.gitweb.enable {
 
     # declare module dependencies
     services.lighttpd.enableModules = [ "mod_cgi" "mod_redirect" "mod_alias" "mod_setenv" ];
@@ -60,7 +38,7 @@ in
               "/gitweb/"        => "${pkgs.git}/share/gitweb/gitweb.cgi"
           )
           setenv.add-environment = (
-              "GITWEB_CONFIG" => "${gitwebConfigFile}",
+              "GITWEB_CONFIG" => "${cfg.gitwebConfigFile}",
               "HOME" => "${cfg.projectroot}"
           )
       }
diff --git a/nixos/modules/services/web-servers/nginx/gitweb.nix b/nixos/modules/services/web-servers/nginx/gitweb.nix
new file mode 100644
index 000000000000..344c1f7b8aa4
--- /dev/null
+++ b/nixos/modules/services/web-servers/nginx/gitweb.nix
@@ -0,0 +1,64 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+  cfg = config.services.gitweb;
+
+in
+{
+
+  options.services.nginx.gitweb = {
+
+    enable = mkOption {
+      default = false;
+      type = types.bool;
+      description = ''
+        If true, enable gitweb in nginx. Access it at http://yourserver/gitweb
+      '';
+    };
+
+  };
+
+  config = mkIf config.services.nginx.gitweb.enable {
+
+    systemd.sockets.gitweb = {
+      description = "GitWeb Listen Socket";
+      listenStreams = [ "/run/gitweb.sock" ];
+      socketConfig = {
+        Accept = "false";
+        SocketUser = "nginx";
+        SocketGroup = "nginx";
+        SocketMode = "0600";
+      };
+      wantedBy = [ "sockets.target" ];
+    };
+    systemd.services.gitweb = {
+      description = "GitWeb service";
+      script = "${git}/share/gitweb/gitweb.cgi --fcgi";
+      serviceConfig = {
+        Type = "simple";
+        StandardInput = "socket";
+        User = "nginx";
+        Group = "nginx";
+      };
+    };
+
+    services.nginx = {
+      virtualHosts.default = {
+        locations."/gitweb" = {
+          root = "${pkgs.git}/share/gitweb";
+          extraConfig = ''
+            include ${pkgs.nginx}/conf/fastcgi_params;
+            fastcgi_param GITWEB_CONFIG ${cfg.gitwebConfigFile};
+            fastcgi_pass unix:/run/gitweb.sock;
+          '';
+        };
+      };
+    };
+
+  };
+
+  meta.maintainers = with maintainers; [ gnidorah ];
+
+}
diff --git a/pkgs/applications/version-management/git-and-tools/default.nix b/pkgs/applications/version-management/git-and-tools/default.nix
index e5e36e998ace..e2c525963d28 100644
--- a/pkgs/applications/version-management/git-and-tools/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/default.nix
@@ -15,7 +15,7 @@ let
       perlPackages.MIMEBase64 perlPackages.AuthenSASL
       perlPackages.DigestHMAC
     ];
-    gitwebPerlLibs = with perlPackages; [ CGI HTMLParser ];
+    gitwebPerlLibs = with perlPackages; [ CGI HTMLParser CGIFast FCGI FCGIProcManager HTMLTagCloud ];
   };
 
 in
diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix
index 13554ff6ee68..18800e553bb1 100644
--- a/pkgs/top-level/perl-packages.nix
+++ b/pkgs/top-level/perl-packages.nix
@@ -6743,6 +6743,18 @@ let self = _self // overrides; _self = with self; {
     };
   };
 
+  HTMLTagCloud = buildPerlPackage rec {
+    name = "HTML-TagCloud-0.38";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RO/ROBERTSD/${name}.tar.gz";
+      sha256 = "05bhnrwwlwd6cj3cn91zw5r99xddvy142bznid26p1pg5m3rk029";
+    };
+    meta = {
+      description = "Generate An HTML Tag Cloud";
+      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
   HTMLQuoted = buildPerlPackage {
     name = "HTML-Quoted-0.04";
     src = fetchurl {