From b96231f6be926f30c9a737c710e015f875b3f070 Mon Sep 17 00:00:00 2001 From: dish Date: Tue, 4 Nov 2025 16:07:57 -0500 Subject: [PATCH] nixos/parsoid: remove --- .../manual/release-notes/rl-2511.section.md | 2 + nixos/modules/module-list.nix | 1 - nixos/modules/rename.nix | 4 + nixos/modules/services/misc/parsoid.nix | 144 ------------------ 4 files changed, 6 insertions(+), 145 deletions(-) delete mode 100644 nixos/modules/services/misc/parsoid.nix diff --git a/nixos/doc/manual/release-notes/rl-2511.section.md b/nixos/doc/manual/release-notes/rl-2511.section.md index d9b2a8c3f8c8..65001eb9b172 100644 --- a/nixos/doc/manual/release-notes/rl-2511.section.md +++ b/nixos/doc/manual/release-notes/rl-2511.section.md @@ -195,6 +195,8 @@ - `boot.enableContainers` is only turned on when a declarative NixOS container is defined in `containers`. If you use the `nixos-container` tool for imperative container management, set `boot.enableContainers = true;` explicitly. +- `services.parsoid` and the `nodePackages.parsoid` package have been removed, as the JavaScript-based version this module uses is not compatible with modern MediaWiki versions. + - `virtualisation.lxd` has been removed due to lack of Nixpkgs maintenance. Users can migrate to `virtualisation.incus`, a fork of LXD, as a replacement. See [Incus migration documentation](https://linuxcontainers.org/incus/docs/main/howto/server_migrate_lxd/) for migration information. - `virtualisation.libvirtd` now uses OVMF images shipped with QEMU for UEFI machines. `virtualisation.libvirtd.qemu.ovmf` has been removed. diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index d0937a501807..ab964994d908 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -902,7 +902,6 @@ ./services/misc/packagekit.nix ./services/misc/paisa.nix ./services/misc/paperless.nix - ./services/misc/parsoid.nix ./services/misc/persistent-evdev.nix ./services/misc/pghero.nix ./services/misc/pinchflat.nix diff --git a/nixos/modules/rename.nix b/nixos/modules/rename.nix index 66e58ce59803..d7759c232fea 100644 --- a/nixos/modules/rename.nix +++ b/nixos/modules/rename.nix @@ -234,6 +234,10 @@ in (mkRemovedOptionModule [ "services" "pantheon" "files" ] '' This module was removed, please add pkgs.pantheon.elementary-files to environment.systemPackages directly. '') + (mkRemovedOptionModule [ "services" "parsoid" ] '' + The Javascript version of Parsoid configured through this module does not work with modern MediaWiki versions, + and has been deprecated by upstream, so it has been removed. MediaWiki comes with a new PHP-based parser built-in, so there is no need for this module. + '') (mkRemovedOptionModule [ "services" "polipo" ] '' The polipo project is unmaintained and archived upstream. '') diff --git a/nixos/modules/services/misc/parsoid.nix b/nixos/modules/services/misc/parsoid.nix deleted file mode 100644 index b839309419d6..000000000000 --- a/nixos/modules/services/misc/parsoid.nix +++ /dev/null @@ -1,144 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -let - - cfg = config.services.parsoid; - - parsoid = pkgs.nodePackages.parsoid; - - confTree = { - worker_heartbeat_timeout = 300000; - logging = { - level = "info"; - }; - services = [ - { - module = "lib/index.js"; - entrypoint = "apiServiceWorker"; - conf = { - mwApis = map (x: if lib.isAttrs x then x else { uri = x; }) cfg.wikis; - serverInterface = cfg.interface; - serverPort = cfg.port; - }; - } - ]; - }; - - confFile = pkgs.writeText "config.yml" ( - builtins.toJSON (lib.recursiveUpdate confTree cfg.extraConfig) - ); - -in -{ - imports = [ - (lib.mkRemovedOptionModule [ - "services" - "parsoid" - "interwikis" - ] "Use services.parsoid.wikis instead") - ]; - - ##### interface - - options = { - - services.parsoid = { - - enable = lib.mkOption { - type = lib.types.bool; - default = false; - description = '' - Whether to enable Parsoid -- bidirectional - wikitext parser. - ''; - }; - - wikis = lib.mkOption { - type = lib.types.listOf (lib.types.either lib.types.str lib.types.attrs); - example = [ "http://localhost/api.php" ]; - description = '' - Used MediaWiki API endpoints. - ''; - }; - - workers = lib.mkOption { - type = lib.types.int; - default = 2; - description = '' - Number of Parsoid workers. - ''; - }; - - interface = lib.mkOption { - type = lib.types.str; - default = "127.0.0.1"; - description = '' - Interface to listen on. - ''; - }; - - port = lib.mkOption { - type = lib.types.port; - default = 8000; - description = '' - Port to listen on. - ''; - }; - - extraConfig = lib.mkOption { - type = lib.types.attrs; - default = { }; - description = '' - Extra configuration to add to parsoid configuration. - ''; - }; - - }; - - }; - - ##### implementation - - config = lib.mkIf cfg.enable { - - systemd.services.parsoid = { - description = "Bidirectional wikitext parser"; - wantedBy = [ "multi-user.target" ]; - after = [ "network.target" ]; - serviceConfig = { - ExecStart = "${parsoid}/lib/node_modules/parsoid/bin/server.js -c ${confFile} -n ${toString cfg.workers}"; - - DynamicUser = true; - User = "parsoid"; - Group = "parsoid"; - - CapabilityBoundingSet = ""; - NoNewPrivileges = true; - ProtectSystem = "strict"; - ProtectHome = true; - PrivateTmp = true; - PrivateDevices = true; - ProtectHostname = true; - ProtectKernelTunables = true; - ProtectKernelModules = true; - ProtectControlGroups = true; - RestrictAddressFamilies = [ - "AF_INET" - "AF_INET6" - ]; - RestrictNamespaces = true; - LockPersonality = true; - #MemoryDenyWriteExecute = true; - RestrictRealtime = true; - RestrictSUIDSGID = true; - RemoveIPC = true; - }; - }; - - }; - -}