summary refs log tree commit diff
path: root/nixos/modules/services/web-servers
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 /nixos/modules/services/web-servers
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
Diffstat (limited to 'nixos/modules/services/web-servers')
-rw-r--r--nixos/modules/services/web-servers/lighttpd/gitweb.nix28
-rw-r--r--nixos/modules/services/web-servers/nginx/gitweb.nix64
2 files changed, 67 insertions, 25 deletions
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 ];
+
+}