mercurial: initial version for hgweb apache module
svn path=/nixos/trunk/; revision=24111
This commit is contained in:
parent
aeb89fc753
commit
8d60cad42a
76
modules/services/web-servers/apache-httpd/mercurial.nix
Normal file
76
modules/services/web-servers/apache-httpd/mercurial.nix
Normal file
@ -0,0 +1,76 @@
|
||||
{ config, pkgs, serverInfo, servicesPath, ... }:
|
||||
|
||||
let
|
||||
inherit (pkgs) mercurial;
|
||||
inherit (pkgs.lib) mkOption;
|
||||
|
||||
urlPrefix = config.urlPrefix;
|
||||
|
||||
cgi = pkgs.stdenv.mkDerivation {
|
||||
name = "mercurial-cgi";
|
||||
buildCommand = ''
|
||||
ensureDir $out
|
||||
cp -v ${mercurial}/share/cgi-bin/hgweb.cgi $out
|
||||
sed -i "s|/path/to/repo/or/config|$out/hgweb.config|" $out/hgweb.cgi
|
||||
echo "
|
||||
[collections]
|
||||
${config.dataDir} = ${config.dataDir}
|
||||
[web]
|
||||
style = gitweb
|
||||
allow_push = *
|
||||
" > $out/hgweb.config
|
||||
'';
|
||||
};
|
||||
|
||||
in {
|
||||
|
||||
extraConfig = ''
|
||||
RewriteEngine on
|
||||
RewriteRule /(.*) ${cgi}/hgweb.cgi/$1
|
||||
|
||||
<Location "${urlPrefix}">
|
||||
AuthType Basic
|
||||
AuthName "Mercurial repositories"
|
||||
AuthUserFile ${config.dataDir}/hgusers
|
||||
<LimitExcept GET>
|
||||
Require valid-user
|
||||
</LimitExcept>
|
||||
</Location>
|
||||
<Directory "${cgi}">
|
||||
Order allow,deny
|
||||
Allow from all
|
||||
AllowOverride All
|
||||
Options ExecCGI
|
||||
AddHandler cgi-script .cgi
|
||||
SetEnv PYTHONPATH "${mercurial}/lib/${pkgs.python.libPrefix}/site-packages"
|
||||
PassEnv PYTHONPATH
|
||||
</Directory>
|
||||
'';
|
||||
|
||||
robotsEntries = ''
|
||||
User-agent: *
|
||||
Disallow: ${urlPrefix}
|
||||
'';
|
||||
|
||||
extraServerPath = [
|
||||
(pkgs.python+"/bin")
|
||||
];
|
||||
|
||||
options = {
|
||||
urlPrefix = mkOption {
|
||||
default = "/hg";
|
||||
description = "
|
||||
The URL prefix under which the Mercurial service appears.
|
||||
Use the empty string to have it appear in the server root.
|
||||
";
|
||||
};
|
||||
|
||||
dataDir = mkOption {
|
||||
example = "/data/mercurial";
|
||||
description = "
|
||||
Path to the directory that holds the repositories.
|
||||
";
|
||||
};
|
||||
};
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user