mediawiki-nix-container/flake.nix

114 lines
4.5 KiB
Nix
Raw Normal View History

2021-08-12 03:02:26 +02:00
{
2022-06-17 13:52:11 +02:00
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-22.05";
2021-08-12 03:02:26 +02:00
outputs = { self, nixpkgs }: {
2022-06-22 20:10:39 +02:00
2021-09-05 19:58:48 +02:00
devShell.x86_64-linux = import ./shell.nix {
pkgs = import nixpkgs { system = "x86_64-linux"; };
};
2021-10-22 08:51:43 +02:00
nixosConfigurations.container = nixpkgs.lib.nixosSystem {
2021-08-12 03:02:26 +02:00
system = "x86_64-linux";
modules =
2021-10-22 08:51:43 +02:00
[ ({ config, pkgs, lib, ... }:
let
mediaWikiOld = pkgs.mediawiki.overrideAttrs ({pname, ...}: rec {
2022-06-17 14:28:33 +02:00
version = "1.38.1";
2021-10-22 08:51:43 +02:00
src = with lib; pkgs.fetchurl {
url = "https://releases.wikimedia.org/mediawiki/${versions.majorMinor version}/${pname}-${version}.tar.gz";
2022-06-17 14:28:33 +02:00
sha256 = "sha256-EXNlUloN7xsgnKUIV9ZXNrYlRbh3p1NIpXqF0SZDezE=";
2021-10-22 08:51:43 +02:00
};
});
in
{
2022-06-22 20:10:39 +02:00
#imports = [ ./module/mediawiki.nix ];
2021-08-12 03:02:26 +02:00
boot.isContainer = true;
# Let 'nixos-version --json' know about the Git revision
# of this flake.
system.configurationRevision = nixpkgs.lib.mkIf (self ? rev) self.rev;
# Network configuration.
networking.useDHCP = false;
2021-09-05 19:58:48 +02:00
networking.firewall.allowedTCPPorts = [ 80 5432 ];
services.postgresql =
let
cfg = config.services.mediawiki;
in {
enable = true;
enableTCPIP = true;
2021-10-22 08:51:43 +02:00
package = pkgs.postgresql_11;
2021-09-05 19:58:48 +02:00
ensureDatabases = [ cfg.database.name ];
ensureUsers = [{
name = cfg.database.user;
2021-10-22 08:51:43 +02:00
ensurePermissions = { "DATABASE ${cfg.database.name}" = "ALL PRIVILEGES"; };
2021-09-05 19:58:48 +02:00
}
];
authentication = lib.mkForce ''
2022-06-22 20:10:39 +02:00
# TYPE DATABASE USER ADDRESS METHOD
local all all trust
host all all 127.0.0.1/32 trust
host all all 10.233.2.1/32 trust
host all all 169.254.155.231/32 trust
host all all ::1/128 trust
2021-09-05 19:58:48 +02:00
'';};
2022-06-17 13:52:11 +02:00
system.stateVersion = "22.05";
2021-09-05 19:58:48 +02:00
2022-06-22 20:10:39 +02:00
services.mediawiki = let
cfg = config.services.mediawiki;
2022-06-17 13:52:11 +02:00
in {
2021-08-12 03:02:26 +02:00
enable = true;
2021-10-22 08:51:43 +02:00
package = mediaWikiOld;
2021-09-05 00:48:25 +02:00
virtualHost = {
2021-09-05 06:49:41 +02:00
hostName = "mediawiki";
2021-09-05 00:48:25 +02:00
adminAddr = "root@example.com";
};
2022-06-17 13:52:11 +02:00
#skins = {
# Vector = "${mediaWikiOld}/share/mediawiki/skins/Vector";
# Hector = "${mediaWikiOld}/share/mediawiki/skins/Hector";
#};
2021-09-05 19:58:48 +02:00
extraConfig = ''
$wgShowExceptionDetails = true;
2022-06-22 20:10:39 +02:00
$wgDBserver = "${cfg.database.socket}";
2022-06-17 13:52:11 +02:00
$wgDBmwschema = "mediawiki";
2021-09-05 19:58:48 +02:00
'';
2021-09-05 06:49:41 +02:00
extensions = {
2022-06-17 14:28:33 +02:00
Interwiki = pkgs.fetchzip {
url = "https://extdist.wmflabs.org/dist/extensions/Interwiki-REL1_38-223bbf8.tar.gz";
sha256 = "sha256-A4tQuISJNzzXPXJXv9N1jMat1VuZ7khYzk2jxoUqzIk=";
};
Cite = pkgs.fetchzip {
url = "https://extdist.wmflabs.org/dist/extensions/Cite-REL1_38-7fdd57d.tar.gz";
sha256 = "sha256-/s9byrAVjky0EeiokUEchG3ICw+Q2T6HLjbzHnl3uVE=";
};
2022-06-17 14:44:51 +02:00
#DynamicPageList = pkgs.fetchzip {
# url = "https://extdist.wmflabs.org/dist/extensions/DynamicPageList-REL1_38-3b7a26d.tar.gz";
# sha256 = "sha256-WjVLks0Q9hSN2poqbKzTJhvOXog7UHJqjY2WJ4Uc64o=";
#};
2022-06-17 14:28:33 +02:00
Scribunto = pkgs.fetchzip {
url = "https://extdist.wmflabs.org/dist/extensions/Scribunto-REL1_38-bd2f615.tar.gz";
sha256 = "sha256-e70P8/0CsWWftyh2LhFw/Fv3E34Bl8HIZxVszuUl8Pk=";
};
Lockdown = pkgs.fetchzip {
url = "https://extdist.wmflabs.org/dist/extensions/Lockdown-REL1_38-1915db4.tar.gz";
sha256 = "sha256-YCYsjh/3g2P8oT6IomP3UWjOoggH7jYjiiix7poOYnA=";
};
2021-09-05 06:49:41 +02:00
};
passwordFile = pkgs.writeText "password" "topSecretF0rAll!!!!";
2021-09-05 19:58:48 +02:00
database = {
type = "postgres";
2022-06-22 20:10:39 +02:00
socket = "/run/postgresql";
2021-09-05 19:58:48 +02:00
user = "mediawiki";
2021-10-22 08:51:43 +02:00
name = "mediawiki";
2021-09-05 19:58:48 +02:00
};
2021-08-12 03:02:26 +02:00
};
})
];
};
};
}