X-Git-Url: https://git.immae.eu/?p=perso%2FImmae%2FConfig%2FNix.git;a=blobdiff_plain;f=modules%2Fwebapps%2Fetherpad-lite.nix;h=7f0e2ed4afbc41c303b887e367af78ccb845e689;hp=3e951c5118bb10022b7c2096579b958e721ed998;hb=5af8d43b9ee0543ff212e5c51fb0e750a2b83955;hpb=742c28ad92467859fb7f54c4b8b4d09d9864a75e diff --git a/modules/webapps/etherpad-lite.nix b/modules/webapps/etherpad-lite.nix index 3e951c5..7f0e2ed 100644 --- a/modules/webapps/etherpad-lite.nix +++ b/modules/webapps/etherpad-lite.nix @@ -26,6 +26,13 @@ in The directory where Etherpad lite stores its data. ''; }; + socketsDir = lib.mkOption { + type = lib.types.path; + default = "/run/${name}"; + description = '' + The directory where Etherpad lite stores its sockets. + ''; + }; configFile = lib.mkOption { type = lib.types.path; description = '' @@ -77,6 +84,26 @@ in ''; readOnly = true; }; + systemdRuntimeDirectory = lib.mkOption { + type = lib.types.str; + # Use ReadWritePaths= instead if socketsDir is outside of /run + default = assert lib.strings.hasPrefix "/run/" cfg.socketsDir; + lib.strings.removePrefix "/run/" cfg.socketsDir; + description = '' + Adjusted Etherpad lite sockets directory for systemd + ''; + readOnly = true; + }; + sockets = lib.mkOption { + type = lib.types.attrsOf lib.types.path; + default = { + node = "${cfg.socketsDir}/etherpad-lite.sock"; + }; + readOnly = true; + description = '' + Etherpad lite sockets + ''; + }; }; config = lib.mkIf cfg.enable { @@ -98,6 +125,12 @@ in --settings ${cfg.configFile} ''; + postStart = '' + while [ ! -S ${cfg.sockets.node} ]; do + sleep 0.5 + done + chmod a+w ${cfg.sockets.node} + ''; serviceConfig = { DynamicUser = true; User = cfg.user; @@ -112,6 +145,7 @@ in Restart = "always"; Type = "simple"; TimeoutSec = 60; + RuntimeDirectory = cfg.systemdRuntimeDirectory; StateDirectory= cfg.systemdStateDirectory; ExecStartPre = [ "+${pkgs.coreutils}/bin/install -d -m 0755 -o ${cfg.user} -g ${cfg.group} ${cfg.dataDir}/ep_initialized"