{ config, lib, pkgs, ... }: let unstable = import (import ../../../nix/sources.nix).nixpkgs-unstable {}; in { containers.lantifa = { autoStart = true; privateNetwork = true; hostAddress6 = "fd00::42:14"; localAddress6 = "fd00::42:15"; config = {config, pkgs, ... }: { networking.hosts."::1" = [ "wiki.lantifa.org" ]; networking.firewall.enable = false; users.users.mediawiki.extraGroups = [ "keys" ]; services.mediawiki = { enable = true; name = "LANtifa"; package = unstable.mediawiki; database.createLocally = true; passwordFile = "/var/lib/mediawiki/mediawiki-password"; extraConfig = let wikidb = pkgs.fetchzip { url = "http://www.kennel17.co.uk/uploads/testwiki/archive/e/e9/20210407232657%21WikiDB.zip"; sha256 = "0d4f2ygglz4w515a7lgw59500q3xmr92xxhsmh8p204yaa769x8v"; }; in '' // Configure short URLs $wgScriptPath = ""; $wgArticlePath = "/wiki/$1"; $wgUsePathInfo = true; require_once('${wikidb}/WikiDB.php'); $wgExtraNamespaces = array( 100 => "Table", 101 => "Table_Talk",); $wgWikiDBNamespaces = 100; $wgGroupPermissions['user']['writeapi'] = true; $wgDefaultUserOptions['visualeditor-enable'] = 1; $wgLogo = "images/c/c5/LantifaLogoFem0.3.png"; // PageForms config $wgGroupPermissions['*']['viewedittab'] = false; $wgGroupPermissions['user']['viewedittab'] = true; // Moderation setting $wgModerationNotificationEnable = true; $wgModerationEmail = "wiki_mod@lantifa.org"; $wgLogRestrictions["newusers"] = 'moderation'; // intersection / DynamicPageList config $wgDLPMaxCacheTime = 5 * 60; ''; extensions = { TemplateData = null; VisualEditor = null; InputBox = null; Moderation = pkgs.fetchzip { url = "https://github.com/edwardspec/mediawiki-moderation/archive/v1.4.20.tar.gz"; sha256 = "1k0z44jfqsxzwy6jjz3yfibiq8wi845d5iwwh8j3yijn2854fj0i"; }; intersection = pkgs.fetchzip { # This is the DynamicPageList extension url = "https://extdist.wmflabs.org/dist/extensions/intersection-REL1_35-1adb683.tar.gz"; sha256 = "0jh3b22vq1ml3kdj0hhhbfjsilpw39bcjbnkajgx1pcvr7haxld7"; }; PageForms = pkgs.fetchzip { url = "https://github.com/wikimedia/mediawiki-extensions-PageForms/archive/5.0.1.zip"; sha256 = "172m7p941fbkl29h5bhanx3dn42jfmzgyvgmgm2lgdbmkawwly96"; }; }; virtualHost = { hostName = "wiki.lantifa.org"; listen = [ { port = 80; } ]; adminAddr = "admin@hacc.space"; extraConfig = '' RewriteEngine On RewriteRule ^/?wiki(/.*)?$ %{DOCUMENT_ROOT}/index.php [L] RewriteRule ^/*$ %{DOCUMENT_ROOT}/index.php [L] ''; }; }; services.mysqlBackup = { enable = true; databases = [ "mediawiki" ]; calendar = "*-*-* 23:45:00"; }; }; }; services.nginx.virtualHosts."wiki.lantifa.org" = { locations."/".proxyPass = "http://[" + config.containers.lantifa.localAddress6 + "]"; forceSSL = true; enableACME = true; }; }