nixpkgs/pkgs/servers/web-apps/dokuwiki/default.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

92 lines
2.6 KiB
Nix
Raw Normal View History

{ lib
, stdenv
, fetchFromGitHub
, writeText
, nixosTests
, dokuwiki
}:
2019-11-03 16:43:57 +01:00
stdenv.mkDerivation rec {
pname = "dokuwiki";
2024-02-15 01:12:09 +01:00
version = "2024-02-06a";
2019-11-03 16:43:57 +01:00
src = fetchFromGitHub {
owner = "dokuwiki";
repo = pname;
rev = "release-${version}";
2024-02-15 01:12:09 +01:00
sha256 = "sha256-gAoEUskTTbcpHgDUBSsAv6QQDvPuxQ1jXZ4TTKrjWIU=";
2019-11-03 16:43:57 +01:00
};
preload = writeText "preload.php" ''
<?php
$config_cascade = array(
'acl' => array(
'default' => getenv('DOKUWIKI_ACL_AUTH_CONFIG'),
),
'plainauth.users' => array(
'default' => getenv('DOKUWIKI_USERS_AUTH_CONFIG'),
'protected' => "" // not used by default
),
);
'';
phpLocalConfig = writeText "local.php" ''
<?php
return require(getenv('DOKUWIKI_LOCAL_CONFIG'));
?>
'';
phpPluginsLocalConfig = writeText "plugins.local.php" ''
<?php
return require(getenv('DOKUWIKI_PLUGINS_LOCAL_CONFIG'));
?>
'';
2019-11-03 16:43:57 +01:00
installPhase = ''
runHook preInstall
2019-11-03 16:43:57 +01:00
mkdir -p $out/share/dokuwiki
cp -r * $out/share/dokuwiki
cp ${preload} $out/share/dokuwiki/inc/preload.php
cp ${phpLocalConfig} $out/share/dokuwiki/conf/local.php
cp ${phpPluginsLocalConfig} $out/share/dokuwiki/conf/plugins.local.php
runHook postInstall
2019-11-03 16:43:57 +01:00
'';
passthru = {
combine = { basePackage ? dokuwiki
, plugins ? []
, templates ? []
, localConfig ? null
, pluginsConfig ? null
, aclConfig ? null
, pname ? (p: "${p.pname}-combined")
}: let
isNotEmpty = x: lib.optionalString (! builtins.elem x [ null "" ]);
in basePackage.overrideAttrs (prev: {
pname = if builtins.isFunction pname then pname prev else pname;
postInstall = prev.postInstall or "" + ''
${lib.concatMapStringsSep "\n" (tpl: "cp -r ${toString tpl} $out/share/dokuwiki/lib/tpl/${tpl.name}") templates}
${lib.concatMapStringsSep "\n" (plugin: "cp -r ${toString plugin} $out/share/dokuwiki/lib/plugins/${plugin.name}") plugins}
${isNotEmpty localConfig "ln -sf ${localConfig} $out/share/dokuwiki/conf/local.php" }
${isNotEmpty pluginsConfig "ln -sf ${pluginsConfig} $out/share/dokuwiki/conf/plugins.local.php" }
${isNotEmpty aclConfig "ln -sf ${aclConfig} $out/share/dokuwiki/acl.auth.php" }
'';
});
tests = {
inherit (nixosTests) dokuwiki;
};
2021-12-13 17:26:36 +01:00
};
meta = with lib; {
2019-11-03 16:43:57 +01:00
description = "Simple to use and highly versatile Open Source wiki software that doesn't require a database";
license = licenses.gpl2;
homepage = "https://www.dokuwiki.org";
platforms = platforms.all;
2020-07-29 12:57:20 +02:00
maintainers = with maintainers; [ _1000101 ];
2019-11-03 16:43:57 +01:00
};
}