From c9d13ae319b4f01202a1afad046c3c1add1cc7ba Mon Sep 17 00:00:00 2001 From: =?utf8?q?Isma=C3=ABl=20Bouya?= Date: Tue, 7 May 2019 00:01:09 +0200 Subject: [PATCH] Move dokuwiki to pkgs --- .../modules/websites/tools/tools/default.nix | 2 +- .../tools/tools/dokuwiki-plugin-farmer.json | 15 -- .../tools/tools/dokuwiki-plugin-todo.json | 15 -- .../modules/websites/tools/tools/dokuwiki.nix | 157 +++++++----------- pkgs/webapps/default.nix | 8 + pkgs/webapps/dokuwiki/default.nix | 41 +++++ .../webapps/dokuwiki}/dokuwiki.json | 0 pkgs/webapps/dokuwiki/plugins/farmer.nix | 25 +++ pkgs/webapps/dokuwiki/plugins/todo.nix | 18 ++ 9 files changed, 151 insertions(+), 130 deletions(-) delete mode 100644 nixops/modules/websites/tools/tools/dokuwiki-plugin-farmer.json delete mode 100644 nixops/modules/websites/tools/tools/dokuwiki-plugin-todo.json create mode 100644 pkgs/webapps/dokuwiki/default.nix rename {nixops/modules/websites/tools/tools => pkgs/webapps/dokuwiki}/dokuwiki.json (100%) create mode 100644 pkgs/webapps/dokuwiki/plugins/farmer.nix create mode 100644 pkgs/webapps/dokuwiki/plugins/todo.nix diff --git a/nixops/modules/websites/tools/tools/default.nix b/nixops/modules/websites/tools/tools/default.nix index 95679f6..1d459b7 100644 --- a/nixops/modules/websites/tools/tools/default.nix +++ b/nixops/modules/websites/tools/tools/default.nix @@ -30,7 +30,7 @@ let env = myconfig.env.tools.shaarli; }; dokuwiki = pkgs.callPackage ./dokuwiki.nix { - inherit (mylibs) fetchedGithub; + inherit (pkgs.webapps) dokuwiki dokuwiki-plugins; }; ldap = pkgs.callPackage ./ldap.nix { inherit (pkgs.webapps) phpldapadmin; diff --git a/nixops/modules/websites/tools/tools/dokuwiki-plugin-farmer.json b/nixops/modules/websites/tools/tools/dokuwiki-plugin-farmer.json deleted file mode 100644 index 4022eb4..0000000 --- a/nixops/modules/websites/tools/tools/dokuwiki-plugin-farmer.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "tag": "72b8577-master", - "meta": { - "name": "dokuwiki-plugin-farmer", - "url": "https://github.com/cosmocode/dokuwiki-plugin-farmer", - "branch": "master" - }, - "github": { - "owner": "cosmocode", - "repo": "dokuwiki-plugin-farmer", - "rev": "72b857734fd164bf79cc6e17abe56491d55c1072", - "sha256": "1c9vc1z7yvzjz4p054kshb9yd00a4bb52s43k9zav0lvwvjij9l0", - "fetchSubmodules": true - } -} diff --git a/nixops/modules/websites/tools/tools/dokuwiki-plugin-todo.json b/nixops/modules/websites/tools/tools/dokuwiki-plugin-todo.json deleted file mode 100644 index 9576826..0000000 --- a/nixops/modules/websites/tools/tools/dokuwiki-plugin-todo.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "tag": "49068ec-master", - "meta": { - "name": "dokuwiki-plugin-todo", - "url": "https://github.com/leibler/dokuwiki-plugin-todo", - "branch": "master" - }, - "github": { - "owner": "leibler", - "repo": "dokuwiki-plugin-todo", - "rev": "49068ecea455ea997d1e4a7adab171ccaf8228e8", - "sha256": "1jaq623kp14fyhamsas5mk9ryqlk4q6x6znijrb5xhcdg3r83gmq", - "fetchSubmodules": true - } -} diff --git a/nixops/modules/websites/tools/tools/dokuwiki.nix b/nixops/modules/websites/tools/tools/dokuwiki.nix index 2cd19f1..c61d15f 100644 --- a/nixops/modules/websites/tools/tools/dokuwiki.nix +++ b/nixops/modules/websites/tools/tools/dokuwiki.nix @@ -1,102 +1,61 @@ -{ lib, php, stdenv, writeText, fetchedGithub }: -let - dokuwiki = let - plugins = { - farmer = stdenv.mkDerivation (fetchedGithub ./dokuwiki-plugin-farmer.json // rec { - installPhase = '' - mkdir $out - cp -a * $out/ - ''; - }); - todo = stdenv.mkDerivation (fetchedGithub ./dokuwiki-plugin-todo.json // rec { - installPhase = '' - mkdir $out - cp -a * $out/ - ''; - }); - }; - preload = writeText "preload.php" '' - - DirectoryIndex index.php - - SetHandler "proxy:unix:${phpFpm.socket}|fcgi://localhost" - +{ lib, stdenv, dokuwiki, dokuwiki-plugins }: +rec { + varDir = "/var/lib/dokuwiki"; + activationScript = { + deps = [ "wrappers" ]; + text = '' + if [ ! -d ${varDir} ]; then + install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir} \ + ${varDir}/animals + cp -a ${webRoot}/conf.dist ${varDir}/conf + cp -a ${webRoot}/data.dist ${varDir}/data + cp -a ${webRoot}/ + chown -R ${apache.user}:${apache.user} ${varDir}/config ${varDir}/data + chmod -R 755 ${varDir}/config ${varDir}/data + fi + install -m 0750 -o ${apache.user} -g ${apache.group} -d ${varDir}/phpSessions + ''; + }; + webRoot = dokuwiki.withPlugins (builtins.attrValues dokuwiki-plugins); + apache = rec { + user = "wwwrun"; + group = "wwwrun"; + modules = [ "proxy_fcgi" ]; + webappName = "tools_dokuwiki"; + root = "/run/current-system/webapps/${webappName}"; + vhostConf = '' + Alias /dokuwiki "${root}" + + DirectoryIndex index.php + + SetHandler "proxy:unix:${phpFpm.socket}|fcgi://localhost" + - AllowOverride All - Options +FollowSymlinks - Require all granted - - ''; - }; - phpFpm = rec { - serviceDeps = [ "openldap.service" ]; - basedir = builtins.concatStringsSep ":" ( - [ webRoot varDir ] - ++ lib.attrsets.mapAttrsToList (name: value: value) plugins); - socket = "/var/run/phpfpm/dokuwiki.sock"; - pool = '' - listen = ${socket} - user = ${apache.user} - group = ${apache.group} - listen.owner = ${apache.user} - listen.group = ${apache.group} - pm = ondemand - pm.max_children = 60 - pm.process_idle_timeout = 60 + AllowOverride All + Options +FollowSymlinks + Require all granted + + ''; + }; + phpFpm = rec { + serviceDeps = [ "openldap.service" ]; + basedir = builtins.concatStringsSep ":" ( + [ webRoot varDir ] ++ webRoot.plugins); + socket = "/var/run/phpfpm/dokuwiki.sock"; + pool = '' + listen = ${socket} + user = ${apache.user} + group = ${apache.group} + listen.owner = ${apache.user} + listen.group = ${apache.group} + pm = ondemand + pm.max_children = 60 + pm.process_idle_timeout = 60 - ; Needed to avoid clashes in browser cookies (same domain) - php_value[session.name] = DokuwikiPHPSESSID - php_admin_value[open_basedir] = "${basedir}:/tmp" - php_admin_value[session.save_path] = "${varDir}/phpSessions" - ''; - }; + ; Needed to avoid clashes in browser cookies (same domain) + php_value[session.name] = DokuwikiPHPSESSID + php_admin_value[open_basedir] = "${basedir}:/tmp" + php_admin_value[session.save_path] = "${varDir}/phpSessions" + ''; }; -in - dokuwiki +} diff --git a/pkgs/webapps/default.nix b/pkgs/webapps/default.nix index 109eb6d..4403f5d 100644 --- a/pkgs/webapps/default.nix +++ b/pkgs/webapps/default.nix @@ -34,4 +34,12 @@ rec { in lib.attrsets.genAttrs names (name: callPackage (./mantisbt_2/plugins + "/${name}") {}); + + dokuwiki = callPackage ./dokuwiki { inherit mylibs; }; + dokuwiki-with-plugins = dokuwiki.withPlugins (builtins.attrValues dokuwiki-plugins); + dokuwiki-plugins = let + names = [ "farmer" "todo" ]; + in + lib.attrsets.genAttrs names + (name: callPackage (./dokuwiki/plugins + "/${name}.nix") {}); } diff --git a/pkgs/webapps/dokuwiki/default.nix b/pkgs/webapps/dokuwiki/default.nix new file mode 100644 index 0000000..7b5d899 --- /dev/null +++ b/pkgs/webapps/dokuwiki/default.nix @@ -0,0 +1,41 @@ +{ varDir ? "/var/lib/dokuwiki", preload ? "", lib, stdenv, mylibs, writeText }: +let + preloadFile = plugins: let preloads = [preload] + ++ builtins.concatMap (p: lib.optional (lib.hasAttr "preload" p) (p.preload p)) plugins; + in writeText "preload.php" ('' +