aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/nixos/modules/services/misc/parsoid.nix
diff options
context:
space:
mode:
authorKatharina Fey <kookie@spacekookie.de>2019-10-05 12:43:18 +0000
committerKatharina Fey <kookie@spacekookie.de>2019-10-05 12:44:52 +0000
commitcf85056ba64caf3267d43255ef4a1243e9c8ee3b (patch)
tree3051519e9c8275b870aac43f80af875715c9d124 /nixpkgs/nixos/modules/services/misc/parsoid.nix
parent1148b1d122bc03e9a3665856c9b7bb96bd4e3994 (diff)
parent2436c27541b2f52deea3a4c1691216a02152e729 (diff)
Add 'nixpkgs/' from commit '2436c27541b2f52deea3a4c1691216a02152e729'
git-subtree-dir: nixpkgs git-subtree-mainline: 1148b1d122bc03e9a3665856c9b7bb96bd4e3994 git-subtree-split: 2436c27541b2f52deea3a4c1691216a02152e729
Diffstat (limited to 'nixpkgs/nixos/modules/services/misc/parsoid.nix')
-rw-r--r--nixpkgs/nixos/modules/services/misc/parsoid.nix104
1 files changed, 104 insertions, 0 deletions
diff --git a/nixpkgs/nixos/modules/services/misc/parsoid.nix b/nixpkgs/nixos/modules/services/misc/parsoid.nix
new file mode 100644
index 00000000000..c757093e5c1
--- /dev/null
+++ b/nixpkgs/nixos/modules/services/misc/parsoid.nix
@@ -0,0 +1,104 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+
+ cfg = config.services.parsoid;
+
+ parsoid = pkgs.nodePackages."parsoid-git://github.com/abbradar/parsoid#stable";
+
+ confTree = {
+ worker_heartbeat_timeout = 300000;
+ logging = { level = "info"; };
+ services = [{
+ module = "lib/index.js";
+ entrypoint = "apiServiceWorker";
+ conf = {
+ mwApis = map (x: if isAttrs x then x else { uri = x; }) cfg.wikis;
+ serverInterface = cfg.interface;
+ serverPort = cfg.port;
+ };
+ }];
+ };
+
+ confFile = pkgs.writeText "config.yml" (builtins.toJSON (recursiveUpdate confTree cfg.extraConfig));
+
+in
+{
+ ##### interface
+
+ options = {
+
+ services.parsoid = {
+
+ enable = mkOption {
+ type = types.bool;
+ default = false;
+ description = ''
+ Whether to enable Parsoid -- bidirectional
+ wikitext parser.
+ '';
+ };
+
+ wikis = mkOption {
+ type = types.listOf (types.either types.str types.attrs);
+ example = [ "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.attrs;
+ 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 = {
+ User = "nobody";
+ ExecStart = "${parsoid}/lib/node_modules/parsoid/bin/server.js -c ${confFile} -n ${toString cfg.workers}";
+ };
+ };
+
+ };
+
+}