···
configFile = format.generate "syncstorage.toml" (lib.recursiveUpdate settings cfg.settings);
···
wantedBy = [ "multi-user.target" ];
requires = lib.mkIf dbIsLocal [ "mysql.service" ];
after = lib.mkIf dbIsLocal [ "mysql.service" ];
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 ];
-
shopt -s inherit_errexit
-
mysql ${cfg.database.name} -Ne 'SHOW TABLES' | grep -q services
-
services_configured() {
-
[ 1 != $(mysql ${cfg.database.name} -Ne 'SELECT COUNT(*) < 1 FROM `services`') ]
-
mysql ${cfg.database.name} <<"EOF"
-
INSERT INTO `services` (`id`, `service`, `pattern`)
-
VALUES (1, 'sync-1.5', '{node}/1.5/{uid}');
-
INSERT INTO `nodes` (`id`, `service`, `node`, `available`, `current_load`,
-
`capacity`, `downed`, `backoff`)
-
VALUES (1, 1, '${cfg.singleNode.url}', ${toString cfg.singleNode.capacity},
-
0, ${toString cfg.singleNode.capacity}, 0, 0);
-
mysql ${cfg.database.name} <<"EOF"
-
SET `capacity` = ${toString cfg.singleNode.capacity}
-
for (( try = 0; try < 60; try++ )); do
-
if ! schema_configured; then
-
elif services_configured; then
-
echo "Single-node setup failed"
services.nginx.virtualHosts = lib.mkIf cfg.singleNode.enableNginx {
···
configFile = format.generate "syncstorage.toml" (lib.recursiveUpdate settings cfg.settings);
+
setupScript = pkgs.writeShellScript "firefox-syncserver-setup" ''
+
shopt -s inherit_errexit
+
mysql ${cfg.database.name} -Ne 'SHOW TABLES' | grep -q services
+
mysql ${cfg.database.name} <<"EOF"
+
INSERT INTO `services` (`id`, `service`, `pattern`)
+
VALUES (1, 'sync-1.5', '{node}/1.5/{uid}')
+
ON DUPLICATE KEY UPDATE service='sync-1.5', pattern='{node}/1.5/{uid}';
+
INSERT INTO `nodes` (`id`, `service`, `node`, `available`, `current_load`,
+
`capacity`, `downed`, `backoff`)
+
VALUES (1, 1, '${cfg.singleNode.url}', ${toString cfg.singleNode.capacity},
+
0, ${toString cfg.singleNode.capacity}, 0, 0)
+
ON DUPLICATE KEY UPDATE node = '${cfg.singleNode.url}', capacity=${toString cfg.singleNode.capacity};
+
for (( try = 0; try < 60; try++ )); do
+
if ! schema_configured; then
+
echo "Single-node setup failed"
···
wantedBy = [ "multi-user.target" ];
requires = lib.mkIf dbIsLocal [ "mysql.service" ];
after = lib.mkIf dbIsLocal [ "mysql.service" ];
+
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 ];
+
serviceConfig.ExecStart = [ "${setupScript}" ];
services.nginx.virtualHosts = lib.mkIf cfg.singleNode.enableNginx {