pytrainer: unpin python 3.10
[NixPkgs.git] / pkgs / servers / web-apps / dokuwiki / default.nix
blobcf20b3cc993e454d5795157d5580d2f435068a0f
1 { lib
2 , stdenv
3 , fetchFromGitHub
4 , writeText
5 , nixosTests
6 , dokuwiki
7 }:
9 stdenv.mkDerivation rec {
10   pname = "dokuwiki";
11   version = "2024-02-06b";
13   src = fetchFromGitHub {
14     owner = "dokuwiki";
15     repo = pname;
16     rev = "release-${version}";
17     sha256 = "sha256-jrxsVBStvRxHCAOGVUkqtzE75wRBiVR+KxSCNuI2vnk=";
18   };
20   preload = writeText "preload.php" ''
21   <?php
23     $config_cascade = array(
24       'acl' => array(
25         'default'   => getenv('DOKUWIKI_ACL_AUTH_CONFIG'),
26       ),
27       'plainauth.users' => array(
28         'default'   => getenv('DOKUWIKI_USERS_AUTH_CONFIG'),
29         'protected' => "" // not used by default
30       ),
31     );
32   '';
34   phpLocalConfig = writeText "local.php" ''
35   <?php
36     return require(getenv('DOKUWIKI_LOCAL_CONFIG'));
37   ?>
38   '';
40   phpPluginsLocalConfig = writeText "plugins.local.php" ''
41   <?php
42     return require(getenv('DOKUWIKI_PLUGINS_LOCAL_CONFIG'));
43   ?>
44   '';
46   installPhase = ''
47     runHook preInstall
49     mkdir -p $out/share/dokuwiki
50     cp -r * $out/share/dokuwiki
51     cp ${preload} $out/share/dokuwiki/inc/preload.php
52     cp ${phpLocalConfig} $out/share/dokuwiki/conf/local.php
53     cp ${phpPluginsLocalConfig} $out/share/dokuwiki/conf/plugins.local.php
55     runHook postInstall
56   '';
58   passthru = {
59     combine = { basePackage ? dokuwiki
60       , plugins ? []
61       , templates ? []
62       , localConfig ? null
63       , pluginsConfig ? null
64       , aclConfig ? null
65       , pname ? (p: "${p.pname}-combined")
66     }: let
67       isNotEmpty = x: lib.optionalString (! builtins.elem x [ null "" ]);
68     in basePackage.overrideAttrs (prev: {
69       pname = if builtins.isFunction pname then pname prev else pname;
71       postInstall = prev.postInstall or "" + ''
72         ${lib.concatMapStringsSep "\n" (tpl: "cp -r ${toString tpl} $out/share/dokuwiki/lib/tpl/${tpl.name}") templates}
73         ${lib.concatMapStringsSep "\n" (plugin: "cp -r ${toString plugin} $out/share/dokuwiki/lib/plugins/${plugin.name}") plugins}
74         ${isNotEmpty localConfig "ln -sf ${localConfig} $out/share/dokuwiki/conf/local.php" }
75         ${isNotEmpty pluginsConfig "ln -sf ${pluginsConfig} $out/share/dokuwiki/conf/plugins.local.php" }
76         ${isNotEmpty aclConfig "ln -sf ${aclConfig} $out/share/dokuwiki/acl.auth.php" }
77       '';
78     });
79     tests = {
80       inherit (nixosTests) dokuwiki;
81     };
82   };
84   meta = with lib; {
85     description = "Simple to use and highly versatile Open Source wiki software that doesn't require a database";
86     license = licenses.gpl2Only;
87     homepage = "https://www.dokuwiki.org";
88     platforms = platforms.all;
89     maintainers = with maintainers; [
90       _1000101
91       e1mo
92     ];
93   };