From 6bb292d42b60ec78e92836c33d6f0b270d760e84 Mon Sep 17 00:00:00 2001 From: Nikolay Amiantov Date: Sun, 20 Nov 2016 17:41:38 +0300 Subject: parsoid service: update, use declarative configuration Old configuration format is disabled now (it can still be used, but with additional steps). This is a backwards incompatible change. --- nixos/doc/manual/release-notes/rl-1703.xml | 9 ++++++++ nixos/modules/rename.nix | 3 +++ nixos/modules/services/misc/parsoid.nix | 37 +++++++++++++++--------------- 3 files changed, 31 insertions(+), 18 deletions(-) diff --git a/nixos/doc/manual/release-notes/rl-1703.xml b/nixos/doc/manual/release-notes/rl-1703.xml index 743f3dce230..a133630e146 100644 --- a/nixos/doc/manual/release-notes/rl-1703.xml +++ b/nixos/doc/manual/release-notes/rl-1703.xml @@ -68,6 +68,15 @@ following incompatible changes: that may be in /etc. + + + + Parsoid service now uses YAML configuration format. + service.parsoid.interwikis is now called + service.parsoid.wikis and is a list of either API URLs + or attribute sets as specified in parsoid's documentation. + + diff --git a/nixos/modules/rename.nix b/nixos/modules/rename.nix index 0d2e0f981db..81b197186c4 100644 --- a/nixos/modules/rename.nix +++ b/nixos/modules/rename.nix @@ -144,6 +144,9 @@ with lib; # murmur (mkRenamedOptionModule [ "services" "murmur" "welcome" ] [ "services" "murmur" "welcometext" ]) + # parsoid + (mkRemovedOptionModule [ "services" "parsoid" "interwikis" ] [ "services" "parsoid" "wikis" ]) + # Options that are obsolete and have no replacement. (mkRemovedOptionModule [ "boot" "initrd" "luks" "enable" ] "") (mkRemovedOptionModule [ "programs" "bash" "enable" ] "") diff --git a/nixos/modules/services/misc/parsoid.nix b/nixos/modules/services/misc/parsoid.nix index ab1b5406877..ae3f84333d2 100644 --- a/nixos/modules/services/misc/parsoid.nix +++ b/nixos/modules/services/misc/parsoid.nix @@ -6,20 +6,21 @@ 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} - }; - ''; + 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 = builtins.toFile "localsettings.js" conf; + confFile = pkgs.writeText "config.yml" (builtins.toJSON (recursiveUpdate confTree cfg.extraConfig)); in { @@ -38,9 +39,9 @@ in ''; }; - interwikis = mkOption { - type = types.attrsOf types.str; - example = { localhost = "http://localhost/api.php"; }; + wikis = mkOption { + type = types.listOf (types.either types.str types.attrs); + example = [ "http://localhost/api.php" ]; description = '' Used MediaWiki API endpoints. ''; @@ -71,8 +72,8 @@ in }; extraConfig = mkOption { - type = types.lines; - default = ""; + type = types.attrs; + default = {}; description = '' Extra configuration to add to parsoid configuration. ''; -- cgit 1.4.1