mediawiki: enable SemanticMediaWiki

This commit is contained in:
Sandro - 2024-03-12 01:14:13 +01:00
parent fe34704699
commit 44b6fe7e8b
Signed by: sandro
GPG Key ID: 3AF5A43A3EECC2E5
3 changed files with 71 additions and 6 deletions

View File

@ -1,5 +1,21 @@
{
"nodes": {
"MediaWikiExtensionsComposer": {
"flake": false,
"locked": {
"lastModified": 1710203136,
"narHash": "sha256-yn4ZzzaYTZu46SvgctwtiISwC7rzda+1PwvaX6Zxq58=",
"ref": "refs/heads/master",
"rev": "f4489ac8400b1570d49204ff27b958f49c554007",
"revCount": 1,
"type": "git",
"url": "https://gitea.c3d2.de/c3d2/MediaWikiExtensionsComposer.git"
},
"original": {
"type": "git",
"url": "https://gitea.c3d2.de/c3d2/MediaWikiExtensionsComposer.git"
}
},
"affection-src": {
"inputs": {
"flake-utils": [
@ -487,6 +503,7 @@
},
"root": {
"inputs": {
"MediaWikiExtensionsComposer": "MediaWikiExtensionsComposer",
"affection-src": "affection-src",
"alert2muc": "alert2muc",
"bevy-julia": "bevy-julia",

View File

@ -93,7 +93,11 @@
utils.follows = "flake-utils";
};
};
# hydra-ca.url = "github:mlabs-haskell/hydra/aciceri/ca-derivations";
# extra repository to not infalte this repository's size
MediaWikiExtensionsComposer = {
url = "git+https://gitea.c3d2.de/c3d2/MediaWikiExtensionsComposer.git";
flake = false;
};
microvm = {
url = "github:astro/microvm.nix";
inputs = {
@ -215,7 +219,7 @@
};
};
outputs = inputs@{ self, alert2muc, c3d2-user-module, deployment, disko, fenix, heliwatch, microvm, naersk, nixos, nixos-hardware, nixos-modules, buzzrelay, caveman, oparl-scraper, scrapers, secrets, skyflake, sshlogd, sops-nix, spacemsg, ticker, tigger, yammat, zentralwerk, ... }:
outputs = inputs@{ self, alert2muc, c3d2-user-module, deployment, disko, fenix, heliwatch, MediaWikiExtensionsComposer, microvm, naersk, nixos, nixos-hardware, nixos-modules, buzzrelay, caveman, oparl-scraper, scrapers, secrets, skyflake, sshlogd, sops-nix, spacemsg, ticker, tigger, yammat, zentralwerk, ... }:
let
inherit (nixos) lib;
@ -475,6 +479,9 @@
modules = [
self.nixosModules.microvm
./hosts/mediawiki
{
_module.args = { inherit MediaWikiExtensionsComposer; };
}
];
};

View File

@ -1,4 +1,4 @@
{ config, lib, libC, pkgs, ... }:
{ config, lib, libC, MediaWikiExtensionsComposer, pkgs, ... }:
let
cfg = config.services.mediawiki;
@ -69,6 +69,33 @@ in
url = "https://web.archive.org/web/20230710142618/https://extdist.wmflabs.org/dist/extensions/PluggableAuth-REL1_40-519c6d2.tar.gz";
sha256 = "sha256-N1+OV1UdzvU4iXhaS/+fuEoAXqrkVyyEPDirk0vrT8A=";
};
# source https://github.com/Die-KoMa/mediawiki/blob/main/packages/default.nix#L32-L47
# TODO: generalize
SemanticMediaWiki = let
drv = import MediaWikiExtensionsComposer {
noDev = true;
inherit pkgs;
php = pkgs.php81;
phpPackages = pkgs.php81Packages;
};
in
pkgs.stdenv.mkDerivation {
name = "mediawiki-extensions-composer";
dontUnpack = true;
installPhase = ''
mkdir $out
cp -R ${drv}/extensions/SemanticMediaWiki/* $out
cp -R ${drv}/vendor vendor
pushd vendor/composer/
substituteInPlace *.json *.php \
--replace "/extensions/SemanticMediaWiki" ""
popd
cp -R vendor $out/
'';
};
};
name = "C3D2";
@ -157,9 +184,9 @@ in
wfLoadExtension('ConfirmEdit/QuestyCaptcha');
$wgCaptchaClass = 'QuestyCaptcha';
$wgCaptchaQuestions[] = array( 'question' => 'How is C3D2 logo in ascii?', 'answer' => '<<</>>' );
$wgCaptchaQuestions[] = array('question' => 'How is C3D2 logo in ascii?', 'answer' => '<<</>>');
wfLoadExtension( 'Interwiki' );
wfLoadExtension('Interwiki');
$wgGroupPermissions['sysop']['interwiki'] = true;
wfLoadExtension('Cite');
@ -178,6 +205,20 @@ in
# LDAP
$LDAPProviderDomainConfigs = "${config.sops.secrets."mediawiki/ldapprovider".path}";
$wgPluggableAuth_EnableLocalLogin = true;
# SemanticMediaWiki
# TODO: expose https://github.com/NixOS/nixpkgs/blob/nixos-unstable/nixos/modules/services/web-apps/mediawiki.nix#L19
$smwgConfigFileDir = "/var/lib/mediawiki";
# default was 100 which is already occupied, using 200 to 215
# https://www.semantic-mediawiki.org/wiki/Help:$smwgNamespaceIndex
$smwgNamespaceIndex = 200;
# Doesn't work? Not sure why....
# enableSemantics('${config.services.mediawiki.nginx.hostName}');
# $smwgURITypeSchemeList = array_merge(
# $smwgURITypeSchemeList, [
# 'xmpp', 'mumble', 'ssh'
# ]
# );
'';
};
@ -187,7 +228,7 @@ in
# for some reason nginx adds a port for the 301 redirect from / to /wiki/
port_in_redirect off;
'';
virtualHosts."wiki.c3d2.de" = {
virtualHosts."${config.services.mediawiki.nginx.hostName}" = {
enableACME = true;
forceSSL = true;
listen = libC.defaultListen;