diff options
author | Wout Mertens <Wout.Mertens@gmail.com> | 2018-03-30 00:18:44 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-30 00:18:44 +0200 |
commit | b4e92e0b34e72ed467fe4ed4fa1c5a1dfa3c89b7 (patch) | |
tree | 07b6bb800228a789fe4bbc76d293c57707a0c2e8 | |
parent | 299eb877a72ab73eabe2d0c0e6992122d5a13b59 (diff) | |
parent | 05b535c850d1361e18ecd58ba81a8537bf31041b (diff) | |
download | nixlib-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.nix | 2 | ||||
-rw-r--r-- | nixos/modules/services/misc/gitweb.nix | 50 | ||||
-rw-r--r-- | nixos/modules/services/web-servers/lighttpd/gitweb.nix | 28 | ||||
-rw-r--r-- | nixos/modules/services/web-servers/nginx/gitweb.nix | 64 | ||||
-rw-r--r-- | pkgs/applications/version-management/git-and-tools/default.nix | 2 | ||||
-rw-r--r-- | pkgs/top-level/perl-packages.nix | 12 |
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 { |