modularize media wiki
This commit is contained in:
parent
d08b8011e4
commit
f791a2b208
6 changed files with 167 additions and 75 deletions
|
|
@ -37,9 +37,57 @@ with lib; {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
trivium.soju = {
|
trivium = {
|
||||||
enable = true;
|
soju = {
|
||||||
fullyQualifiedDomain = "soju.posixlycorrect.com";
|
enable = true;
|
||||||
|
fullyQualifiedDomain = "soju.posixlycorrect.com";
|
||||||
|
};
|
||||||
|
|
||||||
|
mediawiki = {
|
||||||
|
enable = true;
|
||||||
|
hostName = "wiki.posixlycorrect.com";
|
||||||
|
name = "posixlycorrect wiki";
|
||||||
|
passwordFile = "/run/keys/mediawiki-password";
|
||||||
|
skins = {
|
||||||
|
citizen = "${flakes.mediawikiSkinCitizen}";
|
||||||
|
};
|
||||||
|
extraConfig = ''
|
||||||
|
# Disable anonymous editing and account creation
|
||||||
|
$wgGroupPermissions['*']['edit'] = false;
|
||||||
|
$wgGroupPermissions['*']['createaccount'] = false;
|
||||||
|
|
||||||
|
$wgDefaultSkin = 'citizen';
|
||||||
|
$wgDefaultMobileSkin = 'citizen';
|
||||||
|
$wgCitizenThemeDefault = 'dark';
|
||||||
|
$wgCitizenShowPageTools = 'login';
|
||||||
|
$wgLogos = [
|
||||||
|
'icon' => "https://posixlycorrect.com/favicon.png",
|
||||||
|
'1x' => "https://posixlycorrect.com/favicon.png",
|
||||||
|
'2x' => "https://posixlycorrect.com/favicon.png",
|
||||||
|
];
|
||||||
|
|
||||||
|
$wgEnableEmail = false; #TODO: arreglar esto
|
||||||
|
$wgNoReplyAddress = 'mediawiki@posixlycorrect.com';
|
||||||
|
$wgEmergencyContact = 'mediawiki@posixlycorrect.com';
|
||||||
|
$wgPasswordSender = 'mediawiki@posixlycorrect.com';
|
||||||
|
'';
|
||||||
|
extensions = {
|
||||||
|
# some extensions are included and can enabled by passing null
|
||||||
|
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;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.openssh = {
|
services.openssh = {
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@
|
||||||
with lib; {
|
with lib; {
|
||||||
imports = [
|
imports = [
|
||||||
./net.nix
|
./net.nix
|
||||||
./mediawiki.nix
|
|
||||||
./forgejo.nix
|
./forgejo.nix
|
||||||
./vaultwarden.nix
|
./vaultwarden.nix
|
||||||
./msmtp.nix
|
./msmtp.nix
|
||||||
|
|
|
||||||
|
|
@ -1,71 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
flakes,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; {
|
|
||||||
services = {
|
|
||||||
nginx = {
|
|
||||||
virtualHosts."wiki.posixlycorrect.com" = {
|
|
||||||
enableACME = true;
|
|
||||||
forceSSL = true;
|
|
||||||
extraConfig = ''
|
|
||||||
proxy_headers_hash_max_size 512;
|
|
||||||
proxy_headers_hash_bucket_size 128;
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
mediawiki = {
|
|
||||||
enable = true;
|
|
||||||
name = "posixlycorrect wiki";
|
|
||||||
webserver = "nginx";
|
|
||||||
nginx.hostName = "wiki.posixlycorrect.com";
|
|
||||||
database.type = "postgres";
|
|
||||||
|
|
||||||
passwordFile = "/run/keys/mediawiki-password";
|
|
||||||
|
|
||||||
skins = {
|
|
||||||
citizen = "${flakes.mediawikiSkinCitizen}";
|
|
||||||
};
|
|
||||||
|
|
||||||
extraConfig = ''
|
|
||||||
# Disable anonymous editing and account creation
|
|
||||||
$wgGroupPermissions['*']['edit'] = false;
|
|
||||||
$wgGroupPermissions['*']['createaccount'] = false;
|
|
||||||
|
|
||||||
$wgDefaultSkin = 'citizen';
|
|
||||||
$wgDefaultMobileSkin = 'citizen';
|
|
||||||
$wgCitizenThemeDefault = 'dark';
|
|
||||||
$wgCitizenShowPageTools = 'login';
|
|
||||||
$wgLogos = [
|
|
||||||
'icon' => "https://posixlycorrect.com/favicon.png",
|
|
||||||
'1x' => "https://posixlycorrect.com/favicon.png",
|
|
||||||
'2x' => "https://posixlycorrect.com/favicon.png",
|
|
||||||
];
|
|
||||||
|
|
||||||
$wgEnableEmail = false; #TODO: arreglar esto
|
|
||||||
$wgNoReplyAddress = 'mediawiki@posixlycorrect.com';
|
|
||||||
$wgEmergencyContact = 'mediawiki@posixlycorrect.com';
|
|
||||||
$wgPasswordSender = 'mediawiki@posixlycorrect.com';
|
|
||||||
'';
|
|
||||||
|
|
||||||
extensions = {
|
|
||||||
# some extensions are included and can enabled by passing null
|
|
||||||
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;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
13
trivionomicon/modules/mediawiki/default.nix
Normal file
13
trivionomicon/modules/mediawiki/default.nix
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
doctrine,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
doctrine.lib.mkModule {
|
||||||
|
inherit config;
|
||||||
|
name = "mediawiki";
|
||||||
|
sys = ./sys.nix;
|
||||||
|
options = ./options.nix;
|
||||||
|
}
|
||||||
72
trivionomicon/modules/mediawiki/options.nix
Normal file
72
trivionomicon/modules/mediawiki/options.nix
Normal file
|
|
@ -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;
|
||||||
|
};'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
31
trivionomicon/modules/mediawiki/sys.nix
Normal file
31
trivionomicon/modules/mediawiki/sys.nix
Normal file
|
|
@ -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;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue