{ config, lib, pkgs, profiles, modules, evalConfig, ... }: let unstable = import (import ../nix/sources.nix).nixpkgs-unstable {}; in { containers.lantifa = { autoStart = true; privateNetwork = true; hostAddress = "192.168.100.1"; localAddress = "192.168.100.8"; bindMounts = { "/persist" = { hostPath = "/persist/containers/lantifa"; isReadOnly = false; }; }; path = (evalConfig {hosts = {}; groups = {};} ({ config, lib, pkgs, profiles, modules, sources, ... }: { boot.isContainer = true; networking.useDHCP = false; users.users.root.hashedPassword = ""; hexchen.bindmounts."/var/lib/mediawiki" = "/persist/var/lib/mediawiki"; imports = [ ((import sources.nix-hexchen) {}).profiles.nopersist ]; networking.hosts."127.0.0.1" = [ "wiki.lantifa.org" ]; users.users.mediawiki.extraGroups = [ "keys" ]; nixpkgs.config.allowUnfree = true; networking.firewall.enable = false; networking.defaultGateway = { address = "192.168.100.1"; interface = "eth0"; }; 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_36-4a70dbd.tar.gz"; sha256 = "0s70fqkf5ylpsxy1h3hljic8708j6099mz12b6k03hgwc582yywi"; }; 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.mysql.dataDir = "/persist/mysql"; services.mysqlBackup = { enable = true; databases = [ "mediawiki" ]; calendar = "*-*-* 23:45:00"; }; })).config.system.build.toplevel; }; services.nginx.virtualHosts."wiki.lantifa.org" = { locations."/".proxyPass = "http://" + config.containers.lantifa.localAddress + ""; forceSSL = true; enableACME = true; }; }