summaryrefslogtreecommitdiff
path: root/trivionomicon/modules/mediawiki
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2026-02-03 15:16:48 -0600
committerAlejandro Soto <alejandro@34project.org>2026-02-03 15:16:48 -0600
commit57e33b923de6a9122e43613778de0d268a5b4eb8 (patch)
tree806101359fe89031b29a4eb37f10ba96b511c3f9 /trivionomicon/modules/mediawiki
parentf2a85354abbad60ea13f15d7c20a988d2f9a6a52 (diff)
parent4a822c48da5a3aa4550fd0fad2697fd023c1810a (diff)
Merge commit 'b4974a7fc6338ad127bfe667084010199b2961f6' into master
Diffstat (limited to 'trivionomicon/modules/mediawiki')
-rw-r--r--trivionomicon/modules/mediawiki/default.nix13
-rw-r--r--trivionomicon/modules/mediawiki/options.nix72
-rw-r--r--trivionomicon/modules/mediawiki/sys.nix31
3 files changed, 116 insertions, 0 deletions
diff --git a/trivionomicon/modules/mediawiki/default.nix b/trivionomicon/modules/mediawiki/default.nix
new file mode 100644
index 0000000..2ed69c2
--- /dev/null
+++ b/trivionomicon/modules/mediawiki/default.nix
@@ -0,0 +1,13 @@
+{
+ config,
+ lib,
+ pkgs,
+ doctrine,
+ ...
+}:
+doctrine.lib.mkModule {
+ inherit config;
+ name = "mediawiki";
+ sys = ./sys.nix;
+ options = ./options.nix;
+}
diff --git a/trivionomicon/modules/mediawiki/options.nix b/trivionomicon/modules/mediawiki/options.nix
new file mode 100644
index 0000000..06acbf1
--- /dev/null
+++ b/trivionomicon/modules/mediawiki/options.nix
@@ -0,0 +1,72 @@
+{lib, ...}:
+with lib.types; {
+ sys = {
+ hostName = lib.mkOption {
+ type = str;
+ description = "used for nginx virtualhost. no protocol";
+ example = "wiki.posixlycorrect.com";
+ };
+
+ name = lib.mkOption {
+ type = str;
+ description = "name of the wiki";
+ example = "posixlycorrect wiki";
+ };
+
+ passwordFile = lib.mkOption {
+ type = types.path;
+ description = "path of passwordfile for mediawiki";
+ example = "/run/keys/mediawiki-password";
+ };
+
+ skins = lib.mkOption {
+ type = types.attrsOf (types.nullOr str);
+ description = "skins for mediawiki";
+ example = ''{
+ citizen = "flakes.mediawikiSkinCitizen";
+ };'';
+ };
+
+ extraConfig = lib.mkOption {
+ type = str;
+ example = ''
+ # Disable anonymous editing and account creation
+ $wgGroupPermissions['*']['edit'] = false;
+ $wgGroupPermissions['*']['createaccount'] = false;
+
+ $wgCitizenThemeDefault = 'dark';
+ $wgCitizenShowPageTools = 'login';
+ $wgLogos = [
+ 'icon' => "https://example.com/favicon.png",
+ '1x' => "https://example.com/favicon.png",
+ '2x' => "https://example.com/favicon.png",
+ ];
+
+ $wgEnableEmail = false; #TODO: arreglar esto
+ $wgNoReplyAddress = 'mediawiki@example.com';
+ $wgEmergencyContact = 'mediawiki@example.com';
+ $wgPasswordSender = 'mediawiki@example.com';
+ '';
+ };
+
+ extensions = lib.mkOption {
+ type = types.attrsOf (types.nullOr types.path);
+ description = "some extensions are included and can enabled by passing null";
+ example = ''{
+ VisualEditor = null;
+ CategoryTree = null;
+ CiteThisPage = null;
+ Scribunto = null;
+ Cite = null;
+ CodeEditor = null;
+ Math = null;
+ MultimediaViewer = null;
+ PdfHandler = null;
+ Poem = null;
+ SecureLinkFixer = null;
+ WikiEditor = null;
+ ParserFunctions = null;
+ };'';
+ };
+ };
+}
diff --git a/trivionomicon/modules/mediawiki/sys.nix b/trivionomicon/modules/mediawiki/sys.nix
new file mode 100644
index 0000000..525ec3e
--- /dev/null
+++ b/trivionomicon/modules/mediawiki/sys.nix
@@ -0,0 +1,31 @@
+{
+ pkgs,
+ lib,
+ cfg,
+ doctrine,
+ ...
+}: with lib; {
+ services = {
+ nginx = {
+ virtualHosts.${cfg.hostName} = {
+ enableACME = true;
+ forceSSL = true;
+ extraConfig = ''
+ proxy_headers_hash_max_size 512;
+ proxy_headers_hash_bucket_size 128;
+ '';
+ };
+ };
+ mediawiki = {
+ enable = true;
+ name = cfg.name;
+ webserver = "nginx";
+ nginx.hostName = cfg.hostName;
+ database.type = "postgres";
+ passwordFile = cfg.passwordFile;
+ skins = cfg.skins;
+ extraConfig = cfg.extraConfig;
+ extensions = cfg.extensions;
+ };
+ };
+}