]> git.immae.eu Git - perso/Immae/Config/Nix.git/blame - nixops/modules/websites/tools/tools/dokuwiki.nix
Remove useless relative symlinks
[perso/Immae/Config/Nix.git] / nixops / modules / websites / tools / tools / dokuwiki.nix
CommitLineData
b892dcbe
IB
1{ lib, php, stdenv, writeText, fetchedGithub }:
2let
3 dokuwiki = let
4 plugins = {
5 farmer = stdenv.mkDerivation (fetchedGithub ./dokuwiki-plugin-farmer.json // rec {
6 installPhase = ''
7 mkdir $out
8 cp -a * $out/
9 '';
10 });
11 todo = stdenv.mkDerivation (fetchedGithub ./dokuwiki-plugin-todo.json // rec {
12 installPhase = ''
13 mkdir $out
14 cp -a * $out/
15 '';
16 });
17 };
18 preload = writeText "preload.php" ''
19 <?php
20 # farm setup by farmer plugin
21 if(file_exists('${plugins.farmer}/DokuWikiFarmCore.php'))
22 {
23 include('${plugins.farmer}/DokuWikiFarmCore.php');
24 }
25 '';
26 in rec {
27 varDir = "/var/lib/dokuwiki";
28 activationScript = {
29 deps = [ "wrappers" ];
30 text = ''
31 if [ ! -d ${varDir} ]; then
32 install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir} \
33 ${varDir}/animals
34 cp -a ${webRoot}/conf.dist ${varDir}/conf
35 cp -a ${webRoot}/data.dist ${varDir}/data
36 cp -a ${webRoot}/
37 chown -R ${apache.user}:${apache.user} ${varDir}/config ${varDir}/data
38 chmod -R 755 ${varDir}/config ${varDir}/data
39 fi
40 install -m 0750 -o ${apache.user} -g ${apache.group} -d ${varDir}/phpSessions
41 '';
42 };
43 webRoot = stdenv.mkDerivation (fetchedGithub ./dokuwiki.json // rec {
44 buildPhase = ''
45 mv conf conf.dist
46 mv data data.dist
47 '';
48 installPhase = ''
49 cp -a . $out
50 cp ${preload} $out/inc/preload.php
3c8d7f87
IB
51 ln -sf ${varDir}/{conf,data} $out/
52 ln -sf ${varDir}/conf/.htaccess $out/
b892dcbe
IB
53 ${builtins.concatStringsSep "\n" (
54 lib.attrsets.mapAttrsToList (name: value: "ln -sf ${value} $out/lib/plugins/${name}") plugins
55 )}
56 '';
57 });
a95ab089 58 apache = rec {
b892dcbe
IB
59 user = "wwwrun";
60 group = "wwwrun";
61 modules = [ "proxy_fcgi" ];
a95ab089
IB
62 webappName = "tools_dokuwiki";
63 root = "/run/current-system/webapps/${webappName}";
b892dcbe 64 vhostConf = ''
a95ab089
IB
65 Alias /dokuwiki "${root}"
66 <Directory "${root}">
b892dcbe
IB
67 DirectoryIndex index.php
68 <FilesMatch "\.php$">
69 SetHandler "proxy:unix:${phpFpm.socket}|fcgi://localhost"
70 </FilesMatch>
71
72 AllowOverride All
73 Options +FollowSymlinks
74 Require all granted
75 </Directory>
76 '';
77 };
78 phpFpm = rec {
79 basedir = builtins.concatStringsSep ":" (
80 [ webRoot varDir ]
81 ++ lib.attrsets.mapAttrsToList (name: value: value) plugins);
82 socket = "/var/run/phpfpm/dokuwiki.sock";
83 pool = ''
84 listen = ${socket}
85 user = ${apache.user}
86 group = ${apache.group}
87 listen.owner = ${apache.user}
88 listen.group = ${apache.group}
89 pm = ondemand
90 pm.max_children = 60
91 pm.process_idle_timeout = 60
92
93 ; Needed to avoid clashes in browser cookies (same domain)
94 php_value[session.name] = DokuwikiPHPSESSID
95 php_admin_value[open_basedir] = "${basedir}:/tmp"
96 php_admin_value[session.save_path] = "${varDir}/phpSessions"
97 '';
98 };
99 };
100in
101 dokuwiki