3
0
Fork 0
forked from mirrors/nixpkgs

Merge pull request #4485 from abbradar/parsoid

Add "parsoid" service
This commit is contained in:
Nikolay Amiantov 2015-02-04 23:08:28 +03:00
commit b22a1ff683
2 changed files with 101 additions and 0 deletions

View file

@ -189,6 +189,7 @@
./services/misc/nix-gc.nix
./services/misc/nixos-manual.nix
./services/misc/nix-ssh-serve.nix
./services/misc/parsoid.nix
./services/misc/phd.nix
./services/misc/redmine.nix
./services/misc/rippled.nix

View file

@ -0,0 +1,100 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.parsoid;
conf = ''
exports.setup = function( parsoidConfig ) {
${toString (mapAttrsToList (name: str: "parsoidConfig.setInterwiki('${name}', '${str}');") cfg.interwikis)}
parsoidConfig.serverInterface = "${cfg.interface}";
parsoidConfig.serverPort = ${toString cfg.port};
parsoidConfig.useSelser = true;
${cfg.extraConfig}
};
'';
confFile = builtins.toFile "localsettings.js" conf;
in
{
##### interface
options = {
services.parsoid = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Whether to enable Parsoid -- bidirectional
wikitext parser.
'';
};
interwikis = mkOption {
type = types.attrsOf types.str;
example = { localhost = "http://localhost/api.php"; };
description = ''
Used MediaWiki API endpoints.
'';
};
workers = mkOption {
type = types.int;
default = 2;
description = ''
Number of Parsoid workers.
'';
};
interface = mkOption {
type = types.str;
default = "127.0.0.1";
description = ''
Interface to listen on.
'';
};
port = mkOption {
type = types.int;
default = 8000;
description = ''
Port to listen on.
'';
};
extraConfig = mkOption {
type = types.lines;
default = "";
description = ''
Extra configuration to add to parsoid configuration.
'';
};
};
};
##### implementation
config = mkIf cfg.enable {
systemd.services.parsoid = {
description = "Bidirectional wikitext parser";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
serviceConfig = {
ExecStart = "${pkgs.nodePackages.parsoid}/lib/node_modules/parsoid/api/server.js -c ${confFile} -n ${toString cfg.workers}";
};
};
};
}