Loading nixos/modules/services/web-apps/dokuwiki.nix +18 −24 Original line number Diff line number Diff line Loading @@ -180,18 +180,14 @@ let ''; example = literalExpression '' let # Let's package the icalevents plugin plugin-icalevents = pkgs.stdenv.mkDerivation { plugin-icalevents = pkgs.stdenv.mkDerivation rec { name = "icalevents"; # Download the plugin from the dokuwiki site src = pkgs.fetchurl { url = "https://github.com/real-or-random/dokuwiki-plugin-icalevents/releases/download/2017-06-16/dokuwiki-plugin-icalevents-2017-06-16.zip"; sha256 = "e40ed7dd6bbe7fe3363bbbecb4de481d5e42385b5a0f62f6a6ce6bf3a1f9dfa8"; }; sourceRoot = "."; # We need unzip to build this package buildInputs = [ pkgs.unzip ]; # Installing simply means copying all files to the output directory version = "2017-06-16"; src = pkgs.fetchzip { stripRoot = false; url = "https://github.com/real-or-random/dokuwiki-plugin-icalevents/releases/download/''${version}/dokuwiki-plugin-icalevents-''${version}.zip"; hash = "sha256-IPs4+qgEfe8AAWevbcCM9PnyI0uoyamtWeg4rEb+9Wc="; }; installPhase = "mkdir -p $out; cp -R * $out/"; }; # And then pass this theme to the plugin list like this: Loading @@ -211,17 +207,15 @@ let ''; example = literalExpression '' let # Let's package the bootstrap3 theme template-bootstrap3 = pkgs.stdenv.mkDerivation { template-bootstrap3 = pkgs.stdenv.mkDerivation rec { name = "bootstrap3"; # Download the theme from the dokuwiki site src = pkgs.fetchurl { url = "https://github.com/giterlizzi/dokuwiki-template-bootstrap3/archive/v2019-05-22.zip"; sha256 = "4de5ff31d54dd61bbccaf092c9e74c1af3a4c53e07aa59f60457a8f00cfb23a6"; }; # We need unzip to build this package buildInputs = [ pkgs.unzip ]; # Installing simply means copying all files to the output directory version = "2022-07-27"; src = pkgs.fetchFromGitHub { owner = "giterlizzi"; repo = "dokuwiki-template-bootstrap3"; rev = "v''${version}"; hash = "sha256-B3Yd4lxdwqfCnfmZdp+i/Mzwn/aEuZ0ovagDxuR6lxo="; }; installPhase = "mkdir -p $out; cp -R * $out/"; }; # And then pass this theme to the template list like this: Loading Loading @@ -310,8 +304,8 @@ in Further nginx configuration can be done by adapting `services.nginx.virtualHosts.<name>`. See [](#opt-services.nginx.virtualHosts) for further information. Further apache2 configuration can be done by adapting `services.httpd.virtualHosts.<name>`. See [](#opt-services.httpd.virtualHosts) for further information. Further caddy configuration can be done by adapting `services.caddy.virtualHosts.<name>`. See [](#opt-services.caddy.virtualHosts) for further information. ''; }; Loading nixos/tests/dokuwiki.nix +64 −61 Original line number Diff line number Diff line import ./make-test-python.nix ({ pkgs, ... }: let template-bootstrap3 = pkgs.stdenv.mkDerivation { template-bootstrap3 = pkgs.stdenv.mkDerivation rec { name = "bootstrap3"; # Download the theme from the dokuwiki site src = pkgs.fetchurl { url = "https://github.com/giterlizzi/dokuwiki-template-bootstrap3/archive/v2019-05-22.zip"; sha256 = "4de5ff31d54dd61bbccaf092c9e74c1af3a4c53e07aa59f60457a8f00cfb23a6"; version = "2022-07-27"; src = pkgs.fetchFromGitHub { owner = "giterlizzi"; 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/"; }; # Let's package the icalevents plugin plugin-icalevents = pkgs.stdenv.mkDerivation { plugin-icalevents = pkgs.stdenv.mkDerivation rec { name = "icalevents"; # Download the plugin from the dokuwiki site src = pkgs.fetchurl { url = "https://github.com/real-or-random/dokuwiki-plugin-icalevents/releases/download/2017-06-16/dokuwiki-plugin-icalevents-2017-06-16.zip"; sha256 = "e40ed7dd6bbe7fe3363bbbecb4de481d5e42385b5a0f62f6a6ce6bf3a1f9dfa8"; version = "2017-06-16"; src = pkgs.fetchzip { stripRoot = false; 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/"; }; in { name = "dokuwiki"; meta = with pkgs.lib; { maintainers = with maintainers; [ _1000101 onny ]; }; acronymsFile = pkgs.writeText "acronyms.local.conf" '' r13y reproducibility ''; nodes = { dokuwiki_nginx = {...}: { 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 ]; Loading @@ -60,27 +58,18 @@ in { 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" ]; in { name = "dokuwiki"; meta = with pkgs.lib; { maintainers = with maintainers; [ _1000101 onny ]; }; nodes = { dokuwiki_nginx = mkNode "nginx"; dokuwiki_caddy = mkNode "caddy"; }; testScript = '' Loading @@ -102,10 +91,24 @@ in { machine.succeed("curl -sSfL http://site2.local/ | grep 'DokuWiki'") machine.succeed("curl -sSfL 'http://site2.local/doku.php?do=login' | grep 'Login'") with subtest("ACL Operations"): machine.succeed( "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 --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
nixos/modules/services/web-apps/dokuwiki.nix +18 −24 Original line number Diff line number Diff line Loading @@ -180,18 +180,14 @@ let ''; example = literalExpression '' let # Let's package the icalevents plugin plugin-icalevents = pkgs.stdenv.mkDerivation { plugin-icalevents = pkgs.stdenv.mkDerivation rec { name = "icalevents"; # Download the plugin from the dokuwiki site src = pkgs.fetchurl { url = "https://github.com/real-or-random/dokuwiki-plugin-icalevents/releases/download/2017-06-16/dokuwiki-plugin-icalevents-2017-06-16.zip"; sha256 = "e40ed7dd6bbe7fe3363bbbecb4de481d5e42385b5a0f62f6a6ce6bf3a1f9dfa8"; }; sourceRoot = "."; # We need unzip to build this package buildInputs = [ pkgs.unzip ]; # Installing simply means copying all files to the output directory version = "2017-06-16"; src = pkgs.fetchzip { stripRoot = false; url = "https://github.com/real-or-random/dokuwiki-plugin-icalevents/releases/download/''${version}/dokuwiki-plugin-icalevents-''${version}.zip"; hash = "sha256-IPs4+qgEfe8AAWevbcCM9PnyI0uoyamtWeg4rEb+9Wc="; }; installPhase = "mkdir -p $out; cp -R * $out/"; }; # And then pass this theme to the plugin list like this: Loading @@ -211,17 +207,15 @@ let ''; example = literalExpression '' let # Let's package the bootstrap3 theme template-bootstrap3 = pkgs.stdenv.mkDerivation { template-bootstrap3 = pkgs.stdenv.mkDerivation rec { name = "bootstrap3"; # Download the theme from the dokuwiki site src = pkgs.fetchurl { url = "https://github.com/giterlizzi/dokuwiki-template-bootstrap3/archive/v2019-05-22.zip"; sha256 = "4de5ff31d54dd61bbccaf092c9e74c1af3a4c53e07aa59f60457a8f00cfb23a6"; }; # We need unzip to build this package buildInputs = [ pkgs.unzip ]; # Installing simply means copying all files to the output directory version = "2022-07-27"; src = pkgs.fetchFromGitHub { owner = "giterlizzi"; repo = "dokuwiki-template-bootstrap3"; rev = "v''${version}"; hash = "sha256-B3Yd4lxdwqfCnfmZdp+i/Mzwn/aEuZ0ovagDxuR6lxo="; }; installPhase = "mkdir -p $out; cp -R * $out/"; }; # And then pass this theme to the template list like this: Loading Loading @@ -310,8 +304,8 @@ in Further nginx configuration can be done by adapting `services.nginx.virtualHosts.<name>`. See [](#opt-services.nginx.virtualHosts) for further information. Further apache2 configuration can be done by adapting `services.httpd.virtualHosts.<name>`. See [](#opt-services.httpd.virtualHosts) for further information. Further caddy configuration can be done by adapting `services.caddy.virtualHosts.<name>`. See [](#opt-services.caddy.virtualHosts) for further information. ''; }; Loading
nixos/tests/dokuwiki.nix +64 −61 Original line number Diff line number Diff line import ./make-test-python.nix ({ pkgs, ... }: let template-bootstrap3 = pkgs.stdenv.mkDerivation { template-bootstrap3 = pkgs.stdenv.mkDerivation rec { name = "bootstrap3"; # Download the theme from the dokuwiki site src = pkgs.fetchurl { url = "https://github.com/giterlizzi/dokuwiki-template-bootstrap3/archive/v2019-05-22.zip"; sha256 = "4de5ff31d54dd61bbccaf092c9e74c1af3a4c53e07aa59f60457a8f00cfb23a6"; version = "2022-07-27"; src = pkgs.fetchFromGitHub { owner = "giterlizzi"; 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/"; }; # Let's package the icalevents plugin plugin-icalevents = pkgs.stdenv.mkDerivation { plugin-icalevents = pkgs.stdenv.mkDerivation rec { name = "icalevents"; # Download the plugin from the dokuwiki site src = pkgs.fetchurl { url = "https://github.com/real-or-random/dokuwiki-plugin-icalevents/releases/download/2017-06-16/dokuwiki-plugin-icalevents-2017-06-16.zip"; sha256 = "e40ed7dd6bbe7fe3363bbbecb4de481d5e42385b5a0f62f6a6ce6bf3a1f9dfa8"; version = "2017-06-16"; src = pkgs.fetchzip { stripRoot = false; 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/"; }; in { name = "dokuwiki"; meta = with pkgs.lib; { maintainers = with maintainers; [ _1000101 onny ]; }; acronymsFile = pkgs.writeText "acronyms.local.conf" '' r13y reproducibility ''; nodes = { dokuwiki_nginx = {...}: { 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 ]; Loading @@ -60,27 +58,18 @@ in { 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" ]; in { name = "dokuwiki"; meta = with pkgs.lib; { maintainers = with maintainers; [ _1000101 onny ]; }; nodes = { dokuwiki_nginx = mkNode "nginx"; dokuwiki_caddy = mkNode "caddy"; }; testScript = '' Loading @@ -102,10 +91,24 @@ in { machine.succeed("curl -sSfL http://site2.local/ | grep 'DokuWiki'") machine.succeed("curl -sSfL 'http://site2.local/doku.php?do=login' | grep 'Login'") with subtest("ACL Operations"): machine.succeed( "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 --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!'", ) ''; })