mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-07-14 14:10:33 +03:00
Merge pull request #209316 from e1mo/dokuwiki/housekeeping
nixosTests.dokuwiki: Deduplicate node configuration
This commit is contained in:
commit
059e0f8958
2 changed files with 82 additions and 85 deletions
|
@ -180,18 +180,14 @@ let
|
||||||
'';
|
'';
|
||||||
example = literalExpression ''
|
example = literalExpression ''
|
||||||
let
|
let
|
||||||
# Let's package the icalevents plugin
|
plugin-icalevents = pkgs.stdenv.mkDerivation rec {
|
||||||
plugin-icalevents = pkgs.stdenv.mkDerivation {
|
|
||||||
name = "icalevents";
|
name = "icalevents";
|
||||||
# Download the plugin from the dokuwiki site
|
version = "2017-06-16";
|
||||||
src = pkgs.fetchurl {
|
src = pkgs.fetchzip {
|
||||||
url = "https://github.com/real-or-random/dokuwiki-plugin-icalevents/releases/download/2017-06-16/dokuwiki-plugin-icalevents-2017-06-16.zip";
|
stripRoot = false;
|
||||||
sha256 = "e40ed7dd6bbe7fe3363bbbecb4de481d5e42385b5a0f62f6a6ce6bf3a1f9dfa8";
|
url = "https://github.com/real-or-random/dokuwiki-plugin-icalevents/releases/download/''${version}/dokuwiki-plugin-icalevents-''${version}.zip";
|
||||||
|
hash = "sha256-IPs4+qgEfe8AAWevbcCM9PnyI0uoyamtWeg4rEb+9Wc=";
|
||||||
};
|
};
|
||||||
sourceRoot = ".";
|
|
||||||
# We need unzip to build this package
|
|
||||||
buildInputs = [ pkgs.unzip ];
|
|
||||||
# Installing simply means copying all files to the output directory
|
|
||||||
installPhase = "mkdir -p $out; cp -R * $out/";
|
installPhase = "mkdir -p $out; cp -R * $out/";
|
||||||
};
|
};
|
||||||
# And then pass this theme to the plugin list like this:
|
# And then pass this theme to the plugin list like this:
|
||||||
|
@ -211,19 +207,17 @@ let
|
||||||
'';
|
'';
|
||||||
example = literalExpression ''
|
example = literalExpression ''
|
||||||
let
|
let
|
||||||
# Let's package the bootstrap3 theme
|
template-bootstrap3 = pkgs.stdenv.mkDerivation rec {
|
||||||
template-bootstrap3 = pkgs.stdenv.mkDerivation {
|
name = "bootstrap3";
|
||||||
name = "bootstrap3";
|
version = "2022-07-27";
|
||||||
# Download the theme from the dokuwiki site
|
src = pkgs.fetchFromGitHub {
|
||||||
src = pkgs.fetchurl {
|
owner = "giterlizzi";
|
||||||
url = "https://github.com/giterlizzi/dokuwiki-template-bootstrap3/archive/v2019-05-22.zip";
|
repo = "dokuwiki-template-bootstrap3";
|
||||||
sha256 = "4de5ff31d54dd61bbccaf092c9e74c1af3a4c53e07aa59f60457a8f00cfb23a6";
|
rev = "v''${version}";
|
||||||
};
|
hash = "sha256-B3Yd4lxdwqfCnfmZdp+i/Mzwn/aEuZ0ovagDxuR6lxo=";
|
||||||
# We need unzip to build this package
|
|
||||||
buildInputs = [ pkgs.unzip ];
|
|
||||||
# Installing simply means copying all files to the output directory
|
|
||||||
installPhase = "mkdir -p $out; cp -R * $out/";
|
|
||||||
};
|
};
|
||||||
|
installPhase = "mkdir -p $out; cp -R * $out/";
|
||||||
|
};
|
||||||
# And then pass this theme to the template list like this:
|
# And then pass this theme to the template list like this:
|
||||||
in [ template-bootstrap3 ]
|
in [ template-bootstrap3 ]
|
||||||
'';
|
'';
|
||||||
|
@ -310,8 +304,8 @@ in
|
||||||
Further nginx configuration can be done by adapting `services.nginx.virtualHosts.<name>`.
|
Further nginx configuration can be done by adapting `services.nginx.virtualHosts.<name>`.
|
||||||
See [](#opt-services.nginx.virtualHosts) for further information.
|
See [](#opt-services.nginx.virtualHosts) for further information.
|
||||||
|
|
||||||
Further apache2 configuration can be done by adapting `services.httpd.virtualHosts.<name>`.
|
Further caddy configuration can be done by adapting `services.caddy.virtualHosts.<name>`.
|
||||||
See [](#opt-services.httpd.virtualHosts) for further information.
|
See [](#opt-services.caddy.virtualHosts) for further information.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,35 +1,63 @@
|
||||||
import ./make-test-python.nix ({ pkgs, ... }:
|
import ./make-test-python.nix ({ pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
template-bootstrap3 = pkgs.stdenv.mkDerivation {
|
template-bootstrap3 = pkgs.stdenv.mkDerivation rec {
|
||||||
name = "bootstrap3";
|
name = "bootstrap3";
|
||||||
# Download the theme from the dokuwiki site
|
version = "2022-07-27";
|
||||||
src = pkgs.fetchurl {
|
src = pkgs.fetchFromGitHub {
|
||||||
url = "https://github.com/giterlizzi/dokuwiki-template-bootstrap3/archive/v2019-05-22.zip";
|
owner = "giterlizzi";
|
||||||
sha256 = "4de5ff31d54dd61bbccaf092c9e74c1af3a4c53e07aa59f60457a8f00cfb23a6";
|
repo = "dokuwiki-template-bootstrap3";
|
||||||
|
rev = "v${version}";
|
||||||
|
hash = "sha256-B3Yd4lxdwqfCnfmZdp+i/Mzwn/aEuZ0ovagDxuR6lxo=";
|
||||||
};
|
};
|
||||||
# We need unzip to build this package
|
|
||||||
nativeBuildInputs = [ pkgs.unzip ];
|
|
||||||
# Installing simply means copying all files to the output directory
|
|
||||||
installPhase = "mkdir -p $out; cp -R * $out/";
|
installPhase = "mkdir -p $out; cp -R * $out/";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
# Let's package the icalevents plugin
|
plugin-icalevents = pkgs.stdenv.mkDerivation rec {
|
||||||
plugin-icalevents = pkgs.stdenv.mkDerivation {
|
|
||||||
name = "icalevents";
|
name = "icalevents";
|
||||||
# Download the plugin from the dokuwiki site
|
version = "2017-06-16";
|
||||||
src = pkgs.fetchurl {
|
src = pkgs.fetchzip {
|
||||||
url = "https://github.com/real-or-random/dokuwiki-plugin-icalevents/releases/download/2017-06-16/dokuwiki-plugin-icalevents-2017-06-16.zip";
|
stripRoot = false;
|
||||||
sha256 = "e40ed7dd6bbe7fe3363bbbecb4de481d5e42385b5a0f62f6a6ce6bf3a1f9dfa8";
|
url = "https://github.com/real-or-random/dokuwiki-plugin-icalevents/releases/download/${version}/dokuwiki-plugin-icalevents-${version}.zip";
|
||||||
|
hash = "sha256-IPs4+qgEfe8AAWevbcCM9PnyI0uoyamtWeg4rEb+9Wc=";
|
||||||
};
|
};
|
||||||
# We need unzip to build this package
|
|
||||||
nativeBuildInputs = [ pkgs.unzip ];
|
|
||||||
sourceRoot = ".";
|
|
||||||
# Installing simply means copying all files to the output directory
|
|
||||||
installPhase = "mkdir -p $out; cp -R * $out/";
|
installPhase = "mkdir -p $out; cp -R * $out/";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
acronymsFile = pkgs.writeText "acronyms.local.conf" ''
|
||||||
|
r13y reproducibility
|
||||||
|
'';
|
||||||
|
|
||||||
|
dwWithAcronyms = pkgs.dokuwiki.overrideAttrs (prev: {
|
||||||
|
installPhase = prev.installPhase or "" + ''
|
||||||
|
ln -sf ${acronymsFile} $out/share/dokuwiki/conf/acronyms.local.conf
|
||||||
|
'';
|
||||||
|
});
|
||||||
|
|
||||||
|
mkNode = webserver: { ... }: {
|
||||||
|
services.dokuwiki = {
|
||||||
|
inherit webserver;
|
||||||
|
|
||||||
|
sites = {
|
||||||
|
"site1.local" = {
|
||||||
|
aclUse = false;
|
||||||
|
superUser = "admin";
|
||||||
|
};
|
||||||
|
"site2.local" = {
|
||||||
|
package = dwWithAcronyms;
|
||||||
|
usersFile = "/var/lib/dokuwiki/site2.local/users.auth.php";
|
||||||
|
superUser = "admin";
|
||||||
|
templates = [ template-bootstrap3 ];
|
||||||
|
plugins = [ plugin-icalevents ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = [ 80 ];
|
||||||
|
networking.hosts."127.0.0.1" = [ "site1.local" "site2.local" ];
|
||||||
|
};
|
||||||
|
|
||||||
in {
|
in {
|
||||||
name = "dokuwiki";
|
name = "dokuwiki";
|
||||||
meta = with pkgs.lib; {
|
meta = with pkgs.lib; {
|
||||||
|
@ -40,47 +68,8 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
nodes = {
|
nodes = {
|
||||||
dokuwiki_nginx = {...}: {
|
dokuwiki_nginx = mkNode "nginx";
|
||||||
services.dokuwiki = {
|
dokuwiki_caddy = mkNode "caddy";
|
||||||
sites = {
|
|
||||||
"site1.local" = {
|
|
||||||
aclUse = false;
|
|
||||||
superUser = "admin";
|
|
||||||
};
|
|
||||||
"site2.local" = {
|
|
||||||
usersFile = "/var/lib/dokuwiki/site2.local/users.auth.php";
|
|
||||||
superUser = "admin";
|
|
||||||
templates = [ template-bootstrap3 ];
|
|
||||||
plugins = [ plugin-icalevents ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
networking.firewall.allowedTCPPorts = [ 80 ];
|
|
||||||
networking.hosts."127.0.0.1" = [ "site1.local" "site2.local" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
dokuwiki_caddy = {...}: {
|
|
||||||
services.dokuwiki = {
|
|
||||||
webserver = "caddy";
|
|
||||||
sites = {
|
|
||||||
"site1.local" = {
|
|
||||||
aclUse = false;
|
|
||||||
superUser = "admin";
|
|
||||||
};
|
|
||||||
"site2.local" = {
|
|
||||||
usersFile = "/var/lib/dokuwiki/site2.local/users.auth.php";
|
|
||||||
superUser = "admin";
|
|
||||||
templates = [ template-bootstrap3 ];
|
|
||||||
plugins = [ plugin-icalevents ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
networking.firewall.allowedTCPPorts = [ 80 ];
|
|
||||||
networking.hosts."127.0.0.1" = [ "site1.local" "site2.local" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
|
@ -102,10 +91,24 @@ in {
|
||||||
machine.succeed("curl -sSfL http://site2.local/ | grep 'DokuWiki'")
|
machine.succeed("curl -sSfL http://site2.local/ | grep 'DokuWiki'")
|
||||||
machine.succeed("curl -sSfL 'http://site2.local/doku.php?do=login' | grep 'Login'")
|
machine.succeed("curl -sSfL 'http://site2.local/doku.php?do=login' | grep 'Login'")
|
||||||
|
|
||||||
machine.succeed(
|
with subtest("ACL Operations"):
|
||||||
|
machine.succeed(
|
||||||
"echo 'admin:$2y$10$ijdBQMzSVV20SrKtCna8gue36vnsbVm2wItAXvdm876sshI4uwy6S:Admin:admin@example.test:user' >> /var/lib/dokuwiki/site2.local/users.auth.php",
|
"echo 'admin:$2y$10$ijdBQMzSVV20SrKtCna8gue36vnsbVm2wItAXvdm876sshI4uwy6S:Admin:admin@example.test:user' >> /var/lib/dokuwiki/site2.local/users.auth.php",
|
||||||
"curl -sSfL -d 'u=admin&p=password' --cookie-jar cjar 'http://site2.local/doku.php?do=login'",
|
"curl -sSfL -d 'u=admin&p=password' --cookie-jar cjar 'http://site2.local/doku.php?do=login'",
|
||||||
"curl -sSfL --cookie cjar --cookie-jar cjar 'http://site2.local/doku.php?do=login' | grep 'Logged in as: <bdi>Admin</bdi>'",
|
"curl -sSfL --cookie cjar --cookie-jar cjar 'http://site2.local/doku.php?do=login' | grep 'Logged in as: <bdi>Admin</bdi>'",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
with subtest("Customizing Dokuwiki"):
|
||||||
|
machine.succeed(
|
||||||
|
"echo 'r13y is awesome!' >> /var/lib/dokuwiki/site2.local/data/pages/acronyms-test.txt",
|
||||||
|
"curl -sSfL 'http://site2.local/doku.php?id=acronyms-test' | grep '<abbr title=\"reproducibility\">r13y</abbr>'",
|
||||||
|
)
|
||||||
|
|
||||||
|
# Just to ensure both Webserver configurations are consistent in allowing that
|
||||||
|
with subtest("Rewriting"):
|
||||||
|
machine.succeed(
|
||||||
|
"echo 'Hello, NixOS!' >> /var/lib/dokuwiki/site1.local/data/pages/rewrite-test.txt",
|
||||||
|
"curl -sSfL http://site1.local/rewrite-test | grep 'Hello, NixOS!'",
|
||||||
|
)
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue