{ lib, hosts, ... }: { services.syncthing = { guiAddress = lib.mkDefault "127.0.0.1:8384"; overrideDevices = false; overrideFolders = false; cert = "~/.config/syncthing/cert"; key = "~/.config/syncthing/key"; settings = { folders = { "Sync" = { id = "default"; type = "sendreceive"; enabled = lib.mkDefault true; label = "Sync"; path = "~/Sync"; devices = [ "nas" "s25" ]; }; "Documents" = { id = "ikwrq-ahv5a"; type = "sendreceive"; enabled = lib.mkDefault false; label = "Documents"; path = "~/Documents"; devices = [ "nas" ]; }; "Music" = { id = "6ytyt-ngvta"; type = "sendreceive"; enabled = lib.mkDefault false; label = "Music"; path = "~/Music"; devices = [ "nas" ]; }; "Obsidian" = { id = "hyeaf-ygups"; type = "sendreceive"; enabled = lib.mkDefault false; label = "Obsidian"; path = "~/Obsidian"; devices = [ "nas" "s25" ]; }; "Camera S25" = { id = "sm-s938b_9wbf-фото"; enabled = lib.mkDefault false; type = "receiveonly"; label = "Camera S25"; path = "~/Photos/S25"; devices = [ "nas" "s25" ]; }; "PhotoArchive" = { id = "6detn-xjbco"; type = "sendreceive"; enabled = lib.mkDefault false; label = "PhotoArchive"; path = "~/Photos/archive"; ignorePerms = true; devices = [ "nas" ]; }; "books" = { id = "6st45-t9jej"; type = "sendreceive"; enabled = lib.mkDefault false; label = "Books"; path = "/mnt/hdd/Books"; devices = [ "nas" ]; }; }; devices = lib.mapAttrs ( name: host: lib.mkIf (host ? syncthing) { addresses = [ "tcp://${host.ip}:22000" ]; id = host.syncthing; } ) hosts; }; }; }