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 = ''
'';
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 {
--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;
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"
# Make sure we’re not rebuilding whole libreoffice just because of a
# dependency
libreoffice = (import <nixpkgs> { overlays = []; }).libreoffice-fresh;
+ ecfg = config.services.etherpad-lite;
in {
options.services.myWebsites.tools.etherpad-lite = {
enable = lib.mkEnableOption "enable etherpad's website";
"title": "Etherpad",
"favicon": "favicon.ico",
- "ip": "127.0.0.1",
- "port" : ${env.listenPort},
+ "ip": "",
+ "port" : "${ecfg.sockets.node}",
"showSettingsInAdminPage" : false,
"dbType" : "postgres",
"dbSettings" : {
RewriteCond %{REQUEST_URI} ^/socket.io [NC]
RewriteCond %{QUERY_STRING} transport=websocket [NC]
- RewriteRule /(.*) ws://localhost:${env.listenPort}/$1 [P,L]
+ RewriteRule /(.*) unix://${ecfg.sockets.node}|ws://ether.immae.eu/$1 [P,NE,QSA,L]
<IfModule mod_proxy.c>
ProxyVia On
ProxyRequests Off
ProxyPreserveHost On
- ProxyPass / http://localhost:${env.listenPort}/
- ProxyPassReverse / http://localhost:${env.listenPort}/
+ ProxyPass / unix://${ecfg.sockets.node}|http://ether.immae.eu/
+ ProxyPassReverse / unix://${ecfg.sockets.node}|http://ether.immae.eu/
<Proxy *>
Options FollowSymLinks MultiViews
AllowOverride None