{ config, hostMeta, siteConfig, ... }: { services.mediawiki = { enable = true; name = siteConfig.wikiName; url = "https://${hostMeta.publicDomain}"; webserver = "none"; passwordFile = config.age.secrets.mediawiki-admin-password.path; database = { type = "mysql"; name = siteConfig.database.name; user = siteConfig.database.mediawikiUser; passwordFile = config.age.secrets.mysql-mediawiki.path; socket = "/run/mysqld/mysqld.sock"; createLocally = false; }; extensions = { ParserFunctions = null; WikiEditor = null; }; extraConfig = '' $wgServer = "https://${hostMeta.publicDomain}"; $wgSitename = "${siteConfig.wikiName}"; $wgMetaNamespace = "${siteConfig.wikiName}"; $wgScriptPath = ""; $wgArticlePath = "/wiki/$1"; $wgUsePathInfo = true; wfLoadSkin('Vector'); $wgEnableUploads = true; $wgEnableEmail = false; $wgShowIPinHeader = false; $wgGroupPermissions['*']['edit'] = false; $wgGroupPermissions['*']['createpage'] = false; $wgGroupPermissions['*']['createtalk'] = false; $wgGroupPermissions['*']['writeapi'] = false; $wgGroupPermissions['*']['createaccount'] = false; $wgGroupPermissions['user']['edit'] = true; $wgGroupPermissions['user']['createpage'] = true; $wgGroupPermissions['user']['createtalk'] = true; $wgGroupPermissions['user']['upload'] = true; $wgGroupPermissions['user']['writeapi'] = true; ''; }; services.mediawiki.poolConfig = if hostMeta.role == "primary" then { "pm" = "dynamic"; "pm.max_children" = 12; "pm.start_servers" = 3; "pm.min_spare_servers" = 2; "pm.max_spare_servers" = 4; "pm.max_requests" = 500; } else { "pm" = "dynamic"; "pm.max_children" = 6; "pm.start_servers" = 2; "pm.min_spare_servers" = 1; "pm.max_spare_servers" = 3; "pm.max_requests" = 500; }; services.phpfpm.pools.mediawiki.phpOptions = if hostMeta.role == "primary" then '' opcache.enable=1 opcache.memory_consumption=192 opcache.interned_strings_buffer=16 opcache.max_accelerated_files=10000 realpath_cache_size=4096K realpath_cache_ttl=600 '' else '' opcache.enable=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=16 opcache.max_accelerated_files=10000 realpath_cache_size=2048K realpath_cache_ttl=600 ''; age.secrets.mediawiki-admin-password = { file = ../secrets/mediawiki-admin-password.age; owner = "mediawiki"; group = "mediawiki"; mode = "0400"; }; age.secrets.mysql-mediawiki = { file = ../secrets/mysql-mediawiki.age; owner = "mediawiki"; group = "mediawiki"; mode = "0400"; }; }