diff options
Diffstat (limited to 'pkgs/webapps/dokuwiki')
-rw-r--r-- | pkgs/webapps/dokuwiki/default.nix | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/pkgs/webapps/dokuwiki/default.nix b/pkgs/webapps/dokuwiki/default.nix index 9df88c6..874f0d8 100644 --- a/pkgs/webapps/dokuwiki/default.nix +++ b/pkgs/webapps/dokuwiki/default.nix | |||
@@ -1,4 +1,4 @@ | |||
1 | { varDir ? "/var/lib/dokuwiki", preload ? "", lib, stdenv, mylibs, writeText }: | 1 | { varDir ? "/var/lib/dokuwiki", preload ? "", lib, callPackage, stdenv, mylibs, writeText }: |
2 | let | 2 | let |
3 | preloadFile = plugins: let preloads = [preload] | 3 | preloadFile = plugins: let preloads = [preload] |
4 | ++ builtins.concatMap (p: lib.optional (lib.hasAttr "preload" p) (p.preload p)) plugins; | 4 | ++ builtins.concatMap (p: lib.optional (lib.hasAttr "preload" p) (p.preload p)) plugins; |
@@ -6,21 +6,26 @@ let | |||
6 | <?php | 6 | <?php |
7 | '' + builtins.concatStringsSep "\n" preloads | 7 | '' + builtins.concatStringsSep "\n" preloads |
8 | ); | 8 | ); |
9 | withPlugins = plugins: package.overrideAttrs(old: { | 9 | pluginNames = [ "farmer" "todo" ]; |
10 | name = "${old.name}-with-plugins"; | 10 | allPlugins = lib.attrsets.genAttrs pluginNames |
11 | installPhase = old.installPhase + ( | 11 | (name: callPackage (./plugins + "/${name}.nix") {}); |
12 | builtins.concatStringsSep "\n" ( | 12 | toPassthru = pkg: plugins: { |
13 | map (value: "ln -sf ${value} $out/lib/plugins/${value.pluginName}") plugins | 13 | inherit plugins varDir allPlugins; |
14 | ) | 14 | withPlugins = withPlugins pkg; |
15 | ); | 15 | }; |
16 | installPreloadPhase = '' | 16 | withPlugins = pkg: toPlugins: |
17 | cp ${preloadFile plugins} $out/inc/preload.php | 17 | let |
18 | ''; | 18 | plugins = toPlugins allPlugins; |
19 | passthru = old.passthru // { | 19 | toInstallPlugin = n: |
20 | inherit plugins; | 20 | "ln -sf ${n} $out/lib/plugins/${n.pluginName}"; |
21 | withPlugins = morePlugins: old.withPlugins (morePlugins ++ plugins); | 21 | newDokuwiki = pkg.overrideAttrs(old: { |
22 | }; | 22 | installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallPlugin plugins); |
23 | }); | 23 | installPreloadPhase = '' |
24 | cp ${preloadFile (pkg.plugins ++ plugins)} $out/inc/preload.php | ||
25 | ''; | ||
26 | passthru = toPassthru newDokuwiki (pkg.plugins ++ plugins); | ||
27 | }); | ||
28 | in newDokuwiki; | ||
24 | package = stdenv.mkDerivation (mylibs.fetchedGithub ./dokuwiki.json // rec { | 29 | package = stdenv.mkDerivation (mylibs.fetchedGithub ./dokuwiki.json // rec { |
25 | phases = "unpackPhase buildPhase installPhase installPreloadPhase fixupPhase"; | 30 | phases = "unpackPhase buildPhase installPhase installPreloadPhase fixupPhase"; |
26 | buildPhase = '' | 31 | buildPhase = '' |
@@ -35,9 +40,6 @@ let | |||
35 | installPreloadPhase = '' | 40 | installPreloadPhase = '' |
36 | cp ${preloadFile []} $out/inc/preload.php | 41 | cp ${preloadFile []} $out/inc/preload.php |
37 | ''; | 42 | ''; |
38 | passthru = { | 43 | passthru = toPassthru package []; |
39 | plugins = []; | ||
40 | inherit withPlugins varDir; | ||
41 | }; | ||
42 | }); | 44 | }); |
43 | in package | 45 | in package |