diff options
Diffstat (limited to 'flakes/mypackages/pkgs/webapps/dokuwiki/default.nix')
-rw-r--r-- | flakes/mypackages/pkgs/webapps/dokuwiki/default.nix | 54 |
1 files changed, 54 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 }: | ||
2 | let | ||
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 | }); | ||
54 | in package | ||