···
cfg = config.services.resilio;
-
resilioSync = pkgs.resilio;
-
listenAddr = cfg.httpListenAddr + ":" + (toString cfg.httpListenPort);
-
boolStr = x: if x then "true" else "false";
-
optionalEmptyStr = b: v: optionalString (b != "") v;
-
webUIConfig = optionalString cfg.enableWebUI
-
${optionalEmptyStr cfg.httpLogin "\"login\": \"${cfg.httpLogin}\","}
-
${optionalEmptyStr cfg.httpPass "\"password\": \"${cfg.httpPass}\","}
-
${optionalEmptyStr cfg.apiKey "\"api_key\": \"${cfg.apiKey}\","}
-
${optionalEmptyStr cfg.directoryRoot "\"directory_root\": \"${cfg.directoryRoot}\","}
-
"listen": "${listenAddr}"
-
optionalString (e ? "knownHosts")
-
(concatStringsSep "," (map (v: "\"${v}\"") e."knownHosts"));
-
concatStringsSep "," (map (entry:
-
if (entry ? attr) then boolStr entry.attr else boolStr v;
-
"secret": "${entry.secret}",
-
"dir": "${entry.directory}",
-
"use_relay_server": ${helper "useRelayServer" true},
-
"use_tracker": ${helper "useTracker" true},
-
"use_dht": ${helper "useDHT" false},
-
"search_lan": ${helper "searchLAN" true},
-
"use_sync_trash": ${helper "useSyncTrash" true},
-
"known_hosts": [${knownHosts entry}]
-
'') cfg.sharedFolders);
-
sharedFoldersConfig = optionalString (cfg.sharedFolders != [])
-
configFile = pkgs.writeText "config.json"
-
"device_name": "${cfg.deviceName}",
-
"storage_path": "${cfg.storagePath}",
-
"listening_port": ${toString cfg.listeningPort},
-
"check_for_updates": ${boolStr cfg.checkForUpdates},
-
"use_upnp": ${boolStr cfg.useUpnp},
-
"download_limit": ${toString cfg.downloadLimit},
-
"upload_limit": ${toString cfg.uploadLimit},
-
"lan_encrypt_data": ${boolStr cfg.encryptLAN},
···
Name of the Resilio Sync device.
···
···
-
services.resilio.package = mkOptionDefault pkgs.resilio;
users.extraUsers.rslsync = {
description = "Resilio Sync Service user";
···
-
"${resilioSync}/bin/rslsync --nodaemon --config ${configFile}";
···
after = [ "network.target" "local-fs.target" ];
-
"${resilioSync}/bin/rslsync --nodaemon --config %h/.config/resilio-sync/config.json";
-
environment.systemPackages = [ cfg.package ];