diff --git a/modules/services/web-servers/apache-httpd/mediawiki.nix b/modules/services/web-servers/apache-httpd/mediawiki.nix
index 784f560ee370..4b005a1b1cd2 100644
--- a/modules/services/web-servers/apache-httpd/mediawiki.nix
+++ b/modules/services/web-servers/apache-httpd/mediawiki.nix
@@ -57,6 +57,11 @@ let
$wgArticlePath = "${config.articleUrlPrefix}/$1";
''}
+ ${optionalString config.enableUploads ''
+ $wgEnableUploads = true;
+ $wgUploadDirectory = "${config.uploadDir}";
+ ''}
+
${config.extraConfig}
?>
'';
@@ -96,6 +101,16 @@ in
extraConfig =
''
+ ${optionalString config.enableUploads ''
+ Alias ${config.urlPrefix}/images ${config.uploadDir}
+
+
+ Order allow,deny
+ Allow from all
+ Options -Indexes
+
+ ''}
+
Alias ${config.urlPrefix} ${mediawikiRoot}
@@ -205,6 +220,17 @@ in
'';
};
+ enableUploads = mkOption {
+ default = false;
+ description = "Whether to enable file uploads.";
+ };
+
+ uploadDir = mkOption {
+ default = throw "You must specify `uploadDir'.";
+ example = "/data/mediawiki-upload";
+ description = "The directory that stores uploaded files.";
+ };
+
extraConfig = mkOption {
default = "";
example =