summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSandro Jäckel <sandro.jaeckel@gmail.com>2024-07-06 01:45:28 +0200
committergithub-actions[bot] <github-actions[bot]@users.noreply.github.com>2024-07-07 13:17:37 +0000
commit20ae197d94fbe5a604ba2bc490812d6f6c7d2a47 (patch)
treec1e8e4ececa714e4d1d8c58f4effbacd1e6ea314
parentMerge pull request #325097 from ShamrockLee/backport-voms-update (diff)
downloadnixpkgs-origin/backport-324924-to-release-24.05.tar.gz
nixos/mediawiki: check if LocalConfig.php is valid syntaxorigin/backport-324924-to-release-24.05
(cherry picked from commit 313d2ccf83e431a3ce3d7c75985eded6bb58be51)
-rw-r--r--nixos/modules/services/web-apps/mediawiki.nix192
1 files changed, 99 insertions, 93 deletions
diff --git a/nixos/modules/services/web-apps/mediawiki.nix b/nixos/modules/services/web-apps/mediawiki.nix
index b11626ec2dc3..600ad3053605 100644
--- a/nixos/modules/services/web-apps/mediawiki.nix
+++ b/nixos/modules/services/web-apps/mediawiki.nix
@@ -64,129 +64,135 @@ let
else
throw "Unsupported database type: ${cfg.database.type} for socket: ${cfg.database.socket}";
- mediawikiConfig = pkgs.writeText "LocalSettings.php" ''
- <?php
- # Protect against web entry
- if ( !defined( 'MEDIAWIKI' ) ) {
- exit;
- }
+ mediawikiConfig = pkgs.writeTextFile {
+ name = "LocalSettings.php";
+ checkPhase = ''
+ ${php}/bin/php --syntax-check "$target"
+ '';
+ text = ''
+ <?php
+ # Protect against web entry
+ if ( !defined( 'MEDIAWIKI' ) ) {
+ exit;
+ }
- $wgSitename = "${cfg.name}";
- $wgMetaNamespace = false;
+ $wgSitename = "${cfg.name}";
+ $wgMetaNamespace = false;
- ## The URL base path to the directory containing the wiki;
- ## defaults for all runtime URL paths are based off of this.
- ## For more information on customizing the URLs
- ## (like /w/index.php/Page_title to /wiki/Page_title) please see:
- ## https://www.mediawiki.org/wiki/Manual:Short_URL
- $wgScriptPath = "${lib.optionalString (cfg.webserver == "nginx") "/w"}";
+ ## The URL base path to the directory containing the wiki;
+ ## defaults for all runtime URL paths are based off of this.
+ ## For more information on customizing the URLs
+ ## (like /w/index.php/Page_title to /wiki/Page_title) please see:
+ ## https://www.mediawiki.org/wiki/Manual:Short_URL
+ $wgScriptPath = "${lib.optionalString (cfg.webserver == "nginx") "/w"}";
- ## The protocol and server name to use in fully-qualified URLs
- $wgServer = "${cfg.url}";
+ ## The protocol and server name to use in fully-qualified URLs
+ $wgServer = "${cfg.url}";
- ## The URL path to static resources (images, scripts, etc.)
- $wgResourceBasePath = $wgScriptPath;
+ ## The URL path to static resources (images, scripts, etc.)
+ $wgResourceBasePath = $wgScriptPath;
- ${lib.optionalString (cfg.webserver == "nginx") ''
- $wgArticlePath = "/wiki/$1";
- $wgUsePathInfo = true;
- ''}
+ ${lib.optionalString (cfg.webserver == "nginx") ''
+ $wgArticlePath = "/wiki/$1";
+ $wgUsePathInfo = true;
+ ''}
- ## The URL path to the logo. Make sure you change this from the default,
- ## or else you'll overwrite your logo when you upgrade!
- $wgLogo = "$wgResourceBasePath/resources/assets/wiki.png";
+ ## The URL path to the logo. Make sure you change this from the default,
+ ## or else you'll overwrite your logo when you upgrade!
+ $wgLogo = "$wgResourceBasePath/resources/assets/wiki.png";
- ## UPO means: this is also a user preference option
+ ## UPO means: this is also a user preference option
- $wgEnableEmail = true;
- $wgEnableUserEmail = true; # UPO
+ $wgEnableEmail = true;
+ $wgEnableUserEmail = true; # UPO
- $wgPasswordSender = "${cfg.passwordSender}";
+ $wgPasswordSender = "${cfg.passwordSender}";
- $wgEnotifUserTalk = false; # UPO
- $wgEnotifWatchlist = false; # UPO
- $wgEmailAuthentication = true;
+ $wgEnotifUserTalk = false; # UPO
+ $wgEnotifWatchlist = false; # UPO
+ $wgEmailAuthentication = true;
- ## Database settings
- $wgDBtype = "${cfg.database.type}";
- $wgDBserver = "${dbAddr}";
- $wgDBport = "${toString cfg.database.port}";
- $wgDBname = "${cfg.database.name}";
- $wgDBuser = "${cfg.database.user}";
- ${optionalString (cfg.database.passwordFile != null) "$wgDBpassword = file_get_contents(\"${cfg.database.passwordFile}\");"}
+ ## Database settings
+ $wgDBtype = "${cfg.database.type}";
+ $wgDBserver = "${dbAddr}";
+ $wgDBport = "${toString cfg.database.port}";
+ $wgDBname = "${cfg.database.name}";
+ $wgDBuser = "${cfg.database.user}";
+ ${optionalString (cfg.database.passwordFile != null) "$wgDBpassword = file_get_contents(\"${cfg.database.passwordFile}\");"}
- ${optionalString (cfg.database.type == "mysql" && cfg.database.tablePrefix != null) ''
- # MySQL specific settings
- $wgDBprefix = "${cfg.database.tablePrefix}";
- ''}
+ ${optionalString (cfg.database.type == "mysql" && cfg.database.tablePrefix != null) ''
+ # MySQL specific settings
+ $wgDBprefix = "${cfg.database.tablePrefix}";
+ ''}
- ${optionalString (cfg.database.type == "mysql") ''
- # MySQL table options to use during installation or update
- $wgDBTableOptions = "ENGINE=InnoDB, DEFAULT CHARSET=binary";
- ''}
+ ${optionalString (cfg.database.type == "mysql") ''
+ # MySQL table options to use during installation or update
+ $wgDBTableOptions = "ENGINE=InnoDB, DEFAULT CHARSET=binary";
+ ''}
- ## Shared memory settings
- $wgMainCacheType = CACHE_NONE;
- $wgMemCachedServers = [];
+ ## Shared memory settings
+ $wgMainCacheType = CACHE_NONE;
+ $wgMemCachedServers = [];
- ${optionalString (cfg.uploadsDir != null) ''
- $wgEnableUploads = true;
- $wgUploadDirectory = "${cfg.uploadsDir}";
- ''}
+ ${optionalString (cfg.uploadsDir != null) ''
+ $wgEnableUploads = true;
+ $wgUploadDirectory = "${cfg.uploadsDir}";
+ ''}
- $wgUseImageMagick = true;
- $wgImageMagickConvertCommand = "${pkgs.imagemagick}/bin/convert";
+ $wgUseImageMagick = true;
+ $wgImageMagickConvertCommand = "${pkgs.imagemagick}/bin/convert";
- # InstantCommons allows wiki to use images from https://commons.wikimedia.org
- $wgUseInstantCommons = false;
+ # InstantCommons allows wiki to use images from https://commons.wikimedia.org
+ $wgUseInstantCommons = false;
- # Periodically send a pingback to https://www.mediawiki.org/ with basic data
- # about this MediaWiki instance. The Wikimedia Foundation shares this data
- # with MediaWiki developers to help guide future development efforts.
- $wgPingback = true;
+ # Periodically send a pingback to https://www.mediawiki.org/ with basic data
+ # about this MediaWiki instance. The Wikimedia Foundation shares this data
+ # with MediaWiki developers to help guide future development efforts.
+ $wgPingback = true;
- ## If you use ImageMagick (or any other shell command) on a
- ## Linux server, this will need to be set to the name of an
- ## available UTF-8 locale
- $wgShellLocale = "C.UTF-8";
+ ## If you use ImageMagick (or any other shell command) on a
+ ## Linux server, this will need to be set to the name of an
+ ## available UTF-8 locale
+ $wgShellLocale = "C.UTF-8";
- ## Set $wgCacheDirectory to a writable directory on the web server
- ## to make your wiki go slightly faster. The directory should not
- ## be publicly accessible from the web.
- $wgCacheDirectory = "${cacheDir}";
+ ## Set $wgCacheDirectory to a writable directory on the web server
+ ## to make your wiki go slightly faster. The directory should not
+ ## be publicly accessible from the web.
+ $wgCacheDirectory = "${cacheDir}";
- # Site language code, should be one of the list in ./languages/data/Names.php
- $wgLanguageCode = "en";
+ # Site language code, should be one of the list in ./languages/data/Names.php
+ $wgLanguageCode = "en";
- $wgSecretKey = file_get_contents("${stateDir}/secret.key");
+ $wgSecretKey = file_get_contents("${stateDir}/secret.key");
- # Changing this will log out all existing sessions.
- $wgAuthenticationTokenVersion = "";
+ # Changing this will log out all existing sessions.
+ $wgAuthenticationTokenVersion = "";
- ## For attaching licensing metadata to pages, and displaying an
- ## appropriate copyright notice / icon. GNU Free Documentation
- ## License and Creative Commons licenses are supported so far.
- $wgRightsPage = ""; # Set to the title of a wiki page that describes your license/copyright
- $wgRightsUrl = "";
- $wgRightsText = "";
- $wgRightsIcon = "";
+ ## For attaching licensing metadata to pages, and displaying an
+ ## appropriate copyright notice / icon. GNU Free Documentation
+ ## License and Creative Commons licenses are supported so far.
+ $wgRightsPage = ""; # Set to the title of a wiki page that describes your license/copyright
+ $wgRightsUrl = "";
+ $wgRightsText = "";
+ $wgRightsIcon = "";
- # Path to the GNU diff3 utility. Used for conflict resolution.
- $wgDiff = "${pkgs.diffutils}/bin/diff";
- $wgDiff3 = "${pkgs.diffutils}/bin/diff3";
+ # Path to the GNU diff3 utility. Used for conflict resolution.
+ $wgDiff = "${pkgs.diffutils}/bin/diff";
+ $wgDiff3 = "${pkgs.diffutils}/bin/diff3";
- # Enabled skins.
- ${concatStringsSep "\n" (mapAttrsToList (k: v: "wfLoadSkin('${k}');") cfg.skins)}
+ # Enabled skins.
+ ${concatStringsSep "\n" (mapAttrsToList (k: v: "wfLoadSkin('${k}');") cfg.skins)}
- # Enabled extensions.
- ${concatStringsSep "\n" (mapAttrsToList (k: v: "wfLoadExtension('${k}');") cfg.extensions)}
+ # Enabled extensions.
+ ${concatStringsSep "\n" (mapAttrsToList (k: v: "wfLoadExtension('${k}');") cfg.extensions)}
- # End of automatically generated settings.
- # Add more configuration options below.
+ # End of automatically generated settings.
+ # Add more configuration options below.
- ${cfg.extraConfig}
- '';
+ ${cfg.extraConfig}
+ '';
+ };
withTrailingSlash = str: if lib.hasSuffix "/" str then str else "${str}/";
in