···
cfg = config.services.firefox.syncserver;
8
+
defaultDbLocation = "/var/db/firefox-sync-server/firefox-sync-server.db";
9
+
defaultSqlUri = "sqlite:///${defaultDbLocation}";
syncServerIni = pkgs.writeText "syncserver.ini" ''
overrides = ${cfg.privateConfig}
···
backend = tokenserver.verifiers.LocalVerifier
audiences = ${removeSuffix "/" cfg.publicUrl}
···
75
+
default = "syncserver";
76
+
description = "User account under which syncserver runs.";
81
+
default = "syncserver";
82
+
description = "Group account under which syncserver runs.";
default = "http://localhost:5000/";
···
88
-
default = "sqlite:////var/db/firefox-sync-server.db";
105
+
default = defaultSqlUri;
example = "postgresql://scott:tiger@localhost/test";
The location of the database. This URL is composed of
···
description = "Firefox Sync Server";
wantedBy = [ "multi-user.target" ];
path = [ pkgs.coreutils syncServerEnv ];
150
+
PermissionsStartOnly = true;
if ! test -e ${cfg.privateConfig}; then
131
-
umask u=rwx,g=x,o=x
132
-
mkdir -p $(dirname ${cfg.privateConfig})
155
+
mkdir -m 700 -p $(dirname ${cfg.privateConfig})
echo > ${cfg.privateConfig} '[syncserver]'
echo >> ${cfg.privateConfig} "secret = $(head -c 20 /dev/urandom | sha1sum | tr -d ' -')"
159
+
chown ${cfg.user}:${cfg.group} ${cfg.privateConfig}
160
+
'' + optionalString (cfg.sqlUri == defaultSqlUri) ''
161
+
if ! test -e $(dirname ${defaultDbLocation}); then
162
+
mkdir -m 700 -p $(dirname ${defaultDbLocation})
163
+
chown ${cfg.user}:${cfg.group} $(dirname ${defaultDbLocation})
165
+
# Move previous database file if it exists
166
+
oldDb="/var/db/firefox-sync-server.db"
167
+
if test -f $oldDb; then
168
+
mv $oldDb ${defaultDbLocation}
169
+
chown ${cfg.user}:${cfg.group} ${defaultDbLocation}
serviceConfig.ExecStart = "${syncServerEnv}/bin/paster serve ${syncServerIni}";
175
+
users.extraUsers = optionalAttrs (cfg.user == "syncserver")
177
+
name = "syncserver";
179
+
isSystemUser = true;
182
+
users.extraGroups = optionalAttrs (cfg.group == "syncserver")
184
+
name = "syncserver";