{ config, pkgs, ... }: let wikiDump = "/var/lib/mediawiki/backup/wikidump.xml.zst"; mediawiki-maintenance = pkgs.runCommand "mediawiki-maintenance" { nativeBuildInputs = [ pkgs.makeWrapper ]; preferLocalBuild = true; } '' mkdir -p $out/bin makeWrapper ${config.services.phpfpm.pools.mediawiki.phpPackage}/bin/php $out/bin/mediawiki-maintenance \ --set MEDIAWIKI_CONFIG ${config.services.phpfpm.pools.mediawiki.phpEnv.MEDIAWIKI_CONFIG} \ --add-flags ${config.services.mediawiki.finalPackage}/share/mediawiki/maintenance/run.php ''; wiki-backup = pkgs.writeShellApplication { name = "wiki-backup"; runtimeInputs = [ pkgs.postgresql pkgs.util-linux ]; text = '' mkdir -p /var/lib/mediawiki/backup/ runuser -u postgres -- pg_dump --format=custom mediawiki > /var/lib/mediawiki/backup/db.tmp mv /var/lib/mediawiki/backup/{db.tmp,db} ''; }; # to restore: # $ runuser -u postgres -- pg_restore --format=custom -d mediawiki < /tmp/db wiki-dump = pkgs.writeShellApplication { name = "wiki-dump"; runtimeInputs = [ pkgs.util-linux pkgs.coreutils ]; text = '' mkdir -p /var/lib/mediawiki/backup/ runuser -u mediawiki -- ${mediawiki-maintenance}/bin/mediawiki-maintenance dumpBackup.php \ --full --include-files --uploads --quiet | \ ${pkgs.zstd}/bin/zstd > ${wikiDump}.tmp mv ${wikiDump}{.tmp,} ''; }; old-wiki-restore = pkgs.writeShellApplication { name = "old-wiki-restore"; runtimeInputs = [ pkgs.postgresql pkgs.coreutils pkgs.util-linux mediawiki-maintenance ]; text = '' if $# != 1; then echo "Usage: $0 " >&2 exit 1 fi dump=$1 tmpdir=$(mktemp -d) cleanup() { rm -rf "$tmpdir"; } cd "$tmpdir" chown mediawiki:nginx "$tmpdir" rm -rf /var/lib/mediawiki-uploads install -d -m 755 -o mediawiki -g nginx /var/lib/mediawiki-uploads systemctl stop phpfpm-mediawiki.service runuser -u postgres -- dropdb mediawiki systemctl restart postgresql runuser -u postgres -- psql -c "ALTER DATABASE mediawiki OWNER TO mediawiki" systemctl restart mediawiki-init.service cat < /var/log/telegraf/borgbackup-job-${config.networking.hostName}.service <