fca51849ec
This option makes the coupling between lighttpd and its sub-services more "loose". While the option is a list, its purpose is to provide a "set" of needed modules to load for lighttpd to function correctly with its config. The NixOS lighttpd module ensures that lighttpd modules are loaded no more than once (because lighttpd dislikes that), and in the correct order. Also add an assertion that all modules listed in .enableModules are valid.
68 lines
1.6 KiB
Nix
68 lines
1.6 KiB
Nix
{ config, lib, pkgs, ... }:
|
|
|
|
with lib;
|
|
|
|
let
|
|
cfg = config.services.lighttpd.cgit;
|
|
configFile = pkgs.writeText "cgitrc"
|
|
''
|
|
${cfg.configText}
|
|
'';
|
|
in
|
|
{
|
|
|
|
options.services.lighttpd.cgit = {
|
|
|
|
enable = mkOption {
|
|
default = false;
|
|
type = types.uniq types.bool;
|
|
description = ''
|
|
If true, enable cgit (fast web interface for git repositories) as a
|
|
sub-service in lighttpd. cgit will be accessible at
|
|
http://yourserver/cgit
|
|
'';
|
|
};
|
|
|
|
configText = mkOption {
|
|
default = "";
|
|
example = ''
|
|
cache-size=1000
|
|
scan-path=/srv/git
|
|
'';
|
|
type = types.lines;
|
|
description = ''
|
|
Verbatim contents of the cgit runtime configuration file. Documentation
|
|
(with cgitrc example file) is available in "man cgitrc". Or online:
|
|
http://git.zx2c4.com/cgit/tree/cgitrc.5.txt
|
|
'';
|
|
};
|
|
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
|
|
# make the cgitrc manpage available
|
|
environment.systemPackages = [ pkgs.cgit ];
|
|
|
|
# declare module dependencies
|
|
services.lighttpd.enableModules = [ "mod_cgi" "mod_alias" "mod_setenv" ];
|
|
|
|
services.lighttpd.extraConfig = ''
|
|
$HTTP["url"] =~ "^/cgit" {
|
|
cgi.assign = (
|
|
"cgit.cgi" => "${pkgs.cgit}/cgit/cgit.cgi"
|
|
)
|
|
alias.url = (
|
|
"/cgit.css" => "${pkgs.cgit}/cgit/cgit.css",
|
|
"/cgit.png" => "${pkgs.cgit}/cgit/cgit.png",
|
|
"/cgit" => "${pkgs.cgit}/cgit/cgit.cgi"
|
|
)
|
|
setenv.add-environment = (
|
|
"CGIT_CONFIG" => "${configFile}"
|
|
)
|
|
}
|
|
'';
|
|
|
|
};
|
|
|
|
}
|