···
configFile = format.generate "syncstorage.toml" (lib.recursiveUpdate settings cfg.settings);
35
+
setupScript = pkgs.writeShellScript "firefox-syncserver-setup" ''
37
+
shopt -s inherit_errexit
39
+
schema_configured() {
40
+
mysql ${cfg.database.name} -Ne 'SHOW TABLES' | grep -q services
44
+
mysql ${cfg.database.name} <<"EOF"
47
+
INSERT INTO `services` (`id`, `service`, `pattern`)
48
+
VALUES (1, 'sync-1.5', '{node}/1.5/{uid}')
49
+
ON DUPLICATE KEY UPDATE service='sync-1.5', pattern='{node}/1.5/{uid}';
50
+
INSERT INTO `nodes` (`id`, `service`, `node`, `available`, `current_load`,
51
+
`capacity`, `downed`, `backoff`)
52
+
VALUES (1, 1, '${cfg.singleNode.url}', ${toString cfg.singleNode.capacity},
53
+
0, ${toString cfg.singleNode.capacity}, 0, 0)
54
+
ON DUPLICATE KEY UPDATE node = '${cfg.singleNode.url}', capacity=${toString cfg.singleNode.capacity};
61
+
for (( try = 0; try < 60; try++ )); do
62
+
if ! schema_configured; then
70
+
echo "Single-node setup failed"
···
wantedBy = [ "multi-user.target" ];
requires = lib.mkIf dbIsLocal [ "mysql.service" ];
after = lib.mkIf dbIsLocal [ "mysql.service" ];
251
+
restartTriggers = lib.optional cfg.singleNode.enable setupScript;
environment.RUST_LOG = cfg.logLevel;
···
requires = [ "firefox-syncserver.service" ] ++ lib.optional dbIsLocal "mysql.service";
after = [ "firefox-syncserver.service" ] ++ lib.optional dbIsLocal "mysql.service";
path = [ config.services.mysql.package ];
260
-
shopt -s inherit_errexit
262
-
schema_configured() {
263
-
mysql ${cfg.database.name} -Ne 'SHOW TABLES' | grep -q services
266
-
services_configured() {
267
-
[ 1 != $(mysql ${cfg.database.name} -Ne 'SELECT COUNT(*) < 1 FROM `services`') ]
270
-
create_services() {
271
-
mysql ${cfg.database.name} <<"EOF"
274
-
INSERT INTO `services` (`id`, `service`, `pattern`)
275
-
VALUES (1, 'sync-1.5', '{node}/1.5/{uid}');
276
-
INSERT INTO `nodes` (`id`, `service`, `node`, `available`, `current_load`,
277
-
`capacity`, `downed`, `backoff`)
278
-
VALUES (1, 1, '${cfg.singleNode.url}', ${toString cfg.singleNode.capacity},
279
-
0, ${toString cfg.singleNode.capacity}, 0, 0);
286
-
mysql ${cfg.database.name} <<"EOF"
288
-
SET `capacity` = ${toString cfg.singleNode.capacity}
293
-
for (( try = 0; try < 60; try++ )); do
294
-
if ! schema_configured; then
296
-
elif services_configured; then
305
-
echo "Single-node setup failed"
297
+
serviceConfig.ExecStart = [ "${setupScript}" ];
services.nginx.virtualHosts = lib.mkIf cfg.singleNode.enableNginx {