1 { lib, php, stdenv, writeText, fetchedGithub }:
5 farmer = stdenv.mkDerivation (fetchedGithub ./dokuwiki-plugin-farmer.json // rec {
11 todo = stdenv.mkDerivation (fetchedGithub ./dokuwiki-plugin-todo.json // rec {
18 preload = writeText "preload.php" ''
20 # farm setup by farmer plugin
21 if(file_exists('${plugins.farmer}/DokuWikiFarmCore.php'))
23 include('${plugins.farmer}/DokuWikiFarmCore.php');
27 varDir = "/var/lib/dokuwiki";
29 deps = [ "wrappers" ];
31 if [ ! -d ${varDir} ]; then
32 install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir} \
34 cp -a ${webRoot}/conf.dist ${varDir}/conf
35 cp -a ${webRoot}/data.dist ${varDir}/data
37 chown -R ${apache.user}:${apache.user} ${varDir}/config ${varDir}/data
38 chmod -R 755 ${varDir}/config ${varDir}/data
40 install -m 0750 -o ${apache.user} -g ${apache.group} -d ${varDir}/phpSessions
43 webRoot = stdenv.mkDerivation (fetchedGithub ./dokuwiki.json // rec {
50 cp ${preload} $out/inc/preload.php
51 ln -sf ${varDir}/{conf,data} $out/
52 ln -sf ${varDir}/conf/.htaccess $out/
53 ${builtins.concatStringsSep "\n" (
54 lib.attrsets.mapAttrsToList (name: value: "ln -sf ${value} $out/lib/plugins/${name}") plugins
61 modules = [ "proxy_fcgi" ];
62 webappName = "tools_dokuwiki";
63 root = "/run/current-system/webapps/${webappName}";
65 Alias /dokuwiki "${root}"
67 DirectoryIndex index.php
69 SetHandler "proxy:unix:${phpFpm.socket}|fcgi://localhost"
73 Options +FollowSymlinks
79 serviceDeps = [ "openldap.service" ];
80 basedir = builtins.concatStringsSep ":" (
82 ++ lib.attrsets.mapAttrsToList (name: value: value) plugins);
83 socket = "/var/run/phpfpm/dokuwiki.sock";
87 group = ${apache.group}
88 listen.owner = ${apache.user}
89 listen.group = ${apache.group}
92 pm.process_idle_timeout = 60
94 ; Needed to avoid clashes in browser cookies (same domain)
95 php_value[session.name] = DokuwikiPHPSESSID
96 php_admin_value[open_basedir] = "${basedir}:/tmp"
97 php_admin_value[session.save_path] = "${varDir}/phpSessions"