aboutsummaryrefslogtreecommitdiff
path: root/flakes/mypackages/pkgs/webapps/dokuwiki
diff options
context:
space:
mode:
Diffstat (limited to 'flakes/mypackages/pkgs/webapps/dokuwiki')
-rw-r--r--flakes/mypackages/pkgs/webapps/dokuwiki/default.nix54
-rw-r--r--flakes/mypackages/pkgs/webapps/dokuwiki/plugins/farmer.nix25
-rw-r--r--flakes/mypackages/pkgs/webapps/dokuwiki/plugins/todo.nix18
3 files changed, 97 insertions, 0 deletions
diff --git a/flakes/mypackages/pkgs/webapps/dokuwiki/default.nix b/flakes/mypackages/pkgs/webapps/dokuwiki/default.nix
new file mode 100644
index 0000000..db8be30
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/dokuwiki/default.nix
@@ -0,0 +1,54 @@
1{ varDir ? "/var/lib/dokuwiki", preload ? "", lib, callPackage, stdenv, fetchFromGitHub, writeText }:
2let
3 preloadFile = plugins: let preloads = [preload]
4 ++ builtins.concatMap (p: lib.optional (lib.hasAttr "preload" p) (p.preload p)) plugins;
5 in writeText "preload.php" (''
6 <?php
7 '' + builtins.concatStringsSep "\n" preloads
8 );
9 pluginNames = [ "farmer" "todo" ];
10 allPlugins = lib.attrsets.genAttrs pluginNames
11 (name: callPackage (./plugins + "/${name}.nix") {});
12 toPassthru = pkg: plugins: {
13 inherit plugins varDir allPlugins;
14 withPlugins = withPlugins pkg;
15 };
16 withPlugins = pkg: toPlugins:
17 let
18 plugins = toPlugins allPlugins;
19 toInstallPlugin = n:
20 "ln -sf ${n} $out/lib/plugins/${n.pluginName}";
21 newDokuwiki = pkg.overrideAttrs(old: {
22 installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallPlugin plugins);
23 installPreloadPhase = ''
24 cp ${preloadFile (pkg.plugins ++ plugins)} $out/inc/preload.php
25 '';
26 passthru = toPassthru newDokuwiki (pkg.plugins ++ plugins);
27 });
28 in newDokuwiki;
29 package = stdenv.mkDerivation (rec {
30 pname = "dokuwiki";
31 version = "release_stable_2018-04-22b";
32 src = fetchFromGitHub {
33 owner = "splitbrain";
34 repo = "dokuwiki";
35 rev = "871dae1320b40211626c7ec665f5e6d5290aca95";
36 sha256 = "1syvd5dvv3v75swf8ig7dxqs0g5xikb0f6vlcy7g4c4ghldkw7nz";
37 fetchSubmodules = true;
38 };
39 phases = "unpackPhase buildPhase installPhase installPreloadPhase fixupPhase";
40 buildPhase = ''
41 mv conf conf.dist
42 mv data data.dist
43 '';
44 installPhase = ''
45 cp -a . $out
46 ln -sf ${varDir}/{conf,data} $out/
47 ln -sf ${varDir}/conf/.htaccess $out/
48 '';
49 installPreloadPhase = ''
50 cp ${preloadFile []} $out/inc/preload.php
51 '';
52 passthru = toPassthru package [];
53 });
54in package
diff --git a/flakes/mypackages/pkgs/webapps/dokuwiki/plugins/farmer.nix b/flakes/mypackages/pkgs/webapps/dokuwiki/plugins/farmer.nix
new file mode 100644
index 0000000..b737b2d
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/dokuwiki/plugins/farmer.nix
@@ -0,0 +1,25 @@
1{ stdenv, fetchFromGitHub }:
2stdenv.mkDerivation rec {
3 version = "72b8577-master";
4 name = "dokuwiki-plugin-farmer-${version}";
5 src = fetchFromGitHub {
6 owner = "cosmocode";
7 repo = "dokuwiki-plugin-farmer";
8 rev = "72b857734fd164bf79cc6e17abe56491d55c1072";
9 sha256 = "1c9vc1z7yvzjz4p054kshb9yd00a4bb52s43k9zav0lvwvjij9l0";
10 };
11 installPhase = ''
12 mkdir $out
13 cp -a * $out
14 '';
15 passthru = {
16 pluginName = "farmer";
17 preload = out: ''
18 # farm setup by farmer plugin
19 if (file_exists('${out}/DokuWikiFarmCore.php'))
20 {
21 include('${out}/DokuWikiFarmCore.php');
22 }
23 '';
24 };
25}
diff --git a/flakes/mypackages/pkgs/webapps/dokuwiki/plugins/todo.nix b/flakes/mypackages/pkgs/webapps/dokuwiki/plugins/todo.nix
new file mode 100644
index 0000000..a3e03fb
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/dokuwiki/plugins/todo.nix
@@ -0,0 +1,18 @@
1{ stdenv, fetchFromGitHub }:
2stdenv.mkDerivation rec {
3 version = "49068ec-master";
4 name = "dokuwiki-plugin-todo-${version}";
5 src = fetchFromGitHub {
6 owner = "leibler";
7 repo = "dokuwiki-plugin-todo";
8 rev = "49068ecea455ea997d1e4a7adab171ccaf8228e8";
9 sha256 = "1jaq623kp14fyhamsas5mk9ryqlk4q6x6znijrb5xhcdg3r83gmq";
10 };
11 installPhase = ''
12 mkdir $out
13 cp -a * $out
14 '';
15 passthru = {
16 pluginName = "todo";
17 };
18}