X-Git-Url: https://git.immae.eu/?p=perso%2FImmae%2FConfig%2FNix.git;a=blobdiff_plain;f=nixops%2Fmodules%2Fwebsites%2Ftools%2Ftools%2Fkanboard.nix;h=399d3e1ab94e713cfca51a21d17e7c597a7726f8;hb=d4ed0eff6a46d0b1596cf4c68ba7f6abf807bd50;hpb=d68bb46bc6d04b450bb0bd995b4286f3d46b2557 diff --git a/nixops/modules/websites/tools/tools/kanboard.nix b/nixops/modules/websites/tools/tools/kanboard.nix new file mode 100644 index 0000000..399d3e1 --- /dev/null +++ b/nixops/modules/websites/tools/tools/kanboard.nix @@ -0,0 +1,86 @@ +{ lib, env, fetchedGithub, writeText, stdenv, fetchurl }: +rec { + varDir = "/var/lib/kanboard"; + activationScript = { + deps = [ "wrappers" ]; + text = '' + install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir}/data + install -m 0750 -o ${apache.user} -g ${apache.group} -d ${varDir}/phpSessions + install -TDm644 ${webRoot}/dataold/.htaccess ${varDir}/data/.htaccess + install -TDm644 ${webRoot}/dataold/web.config ${varDir}/data/web.config + ''; + }; + config = writeText "config.php" '' + + ''; + webRoot = stdenv.mkDerivation (fetchedGithub ./kanboard.json // rec { + dontBuild = true; + installPhase = '' + cp -a . $out + ln -s ${config} $out/config.php + mv $out/data $out/dataold + ln -s ${varDir}/data $out/data + ''; + }); + apache = rec { + user = "wwwrun"; + group = "wwwrun"; + modules = [ "proxy_fcgi" ]; + webappName = "tools_kanboard"; + root = "/run/current-system/webapps/${webappName}"; + vhostConf = '' + Alias /kanboard "${root}" + + DirectoryIndex index.php + AllowOverride All + Options FollowSymlinks + Require all granted + + + SetHandler "proxy:unix:${phpFpm.socket}|fcgi://localhost" + + + + Require all denied + + ''; + }; + phpFpm = rec { + basedir = builtins.concatStringsSep ":" [ webRoot varDir config ]; + socket = "/var/run/phpfpm/kanboard.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] = KanboardPHPSESSID + php_admin_value[open_basedir] = "${basedir}:/tmp" + php_admin_value[session.save_path] = "${varDir}/phpSessions" + ''; + }; +}