From c7627e14666fe7dedb91ecc9f3fbd8949182f6e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isma=C3=ABl=20Bouya?= Date: Sun, 29 Mar 2020 23:51:14 +0200 Subject: Add grocy --- modules/private/websites/tools/tools/default.nix | 8 ++++ modules/private/websites/tools/tools/grocy.nix | 56 ++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 modules/private/websites/tools/tools/grocy.nix (limited to 'modules/private/websites/tools') diff --git a/modules/private/websites/tools/tools/default.nix b/modules/private/websites/tools/tools/default.nix index 9fb2d03..e2a3913 100644 --- a/modules/private/websites/tools/tools/default.nix +++ b/modules/private/websites/tools/tools/default.nix @@ -35,6 +35,9 @@ let inherit (pkgs.webapps) phpldapadmin; env = config.myEnv.tools.phpldapadmin; }; + grocy = pkgs.callPackage ./grocy.nix { + inherit (pkgs.webapps) grocy; + }; cfg = config.myServices.websites.tools.tools; in { @@ -53,6 +56,7 @@ in { services.duplyBackup.profiles = { dokuwiki = dokuwiki.backups; + grocy = grocy.backups; kanboard = kanboard.backups; rompr = rompr.backups; shaarli = shaarli.backups; @@ -125,6 +129,7 @@ in { dokuwiki.apache.vhostConf ldap.apache.vhostConf kanboard.apache.vhostConf + grocy.apache.vhostConf ]; }; @@ -252,6 +257,7 @@ in { dokuwiki = dokuwiki.phpFpm.pool; ldap = ldap.phpFpm.pool; kanboard = kanboard.phpFpm.pool; + grocy = grocy.phpFpm.pool; tools = '' listen = /var/run/phpfpm/tools.sock user = wwwrun @@ -272,6 +278,7 @@ in { system.activationScripts = { adminer = adminer.activationScript; + grocy = grocy.activationScript; ttrss = ttrss.activationScript; wallabag = wallabag.activationScript; yourls = yourls.activationScript; @@ -292,6 +299,7 @@ in { "${wallabag.apache.webappName}" = wallabag.webRoot; "${yourls.apache.webappName}" = yourls.webRoot; "${kanboard.apache.webappName}" = kanboard.webRoot; + "${grocy.apache.webappName}" = grocy.webRoot; }; services.websites.env.tools.watchPaths = [ diff --git a/modules/private/websites/tools/tools/grocy.nix b/modules/private/websites/tools/tools/grocy.nix new file mode 100644 index 0000000..c165030 --- /dev/null +++ b/modules/private/websites/tools/tools/grocy.nix @@ -0,0 +1,56 @@ +{ lib, stdenv, grocy }: +rec { + backups = { + rootDir = varDir; + }; + varDir = "/var/lib/grocy"; + 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 + ''; + }; + webRoot = grocy.webRoot; + apache = rec { + user = "wwwrun"; + group = "wwwrun"; + modules = [ "proxy_fcgi" ]; + webappName = "tools_grocy"; + root = "/run/current-system/webapps/${webappName}"; + vhostConf = '' + Alias /grocy "${root}" + + DirectoryIndex index.php + + SetHandler "proxy:unix:${phpFpm.socket}|fcgi://localhost" + + + AllowOverride All + Options +FollowSymlinks + Require all granted + + ''; + }; + phpFpm = rec { + basedir = builtins.concatStringsSep ":" ( + [ grocy grocy.yarnModules varDir ]); + socket = "/var/run/phpfpm/grocy.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] = grocyPHPSESSID + php_admin_value[open_basedir] = "${basedir}:/tmp" + php_admin_value[session.save_path] = "${varDir}/phpSessions" + ''; + }; +} + -- cgit v1.2.3