{ flake, ... }: let inherit (import ../../../helpers.nix) labHelpers; inherit (labHelpers) guestPath mediaPath docsPath miscPath ; inherit (import ../config { inherit flake; }) syncthingVM; inherit (flake.config.services) instances; inherit (flake.config.people) user0; serviceCfg = instances.syncthing; interface0Cfg = serviceCfg.interfaces.interface0; foldersHelper = user: { docs = { enable = true; id = "docs"; path = "/var/lib/${serviceCfg.name}/docs"; devices = [ "${user}Phone" ]; }; media = { enable = true; id = "media"; path = "/var/lib/${serviceCfg.name}/media"; devices = [ "${user}Phone" ]; }; misc = { enable = true; id = "misc"; path = "/var/lib/${serviceCfg.name}/misc"; devices = [ "${user}Phone" ]; }; }; devicesHelper = user: syncID: device: deviceIP: { "${user}${device}" = { autoAcceptFolders = true; name = "${user}${device}"; addresses = [ "tcp://${deviceIP}:${toString serviceCfg.ports.port2}" ]; id = syncID; }; }; mountsHelper = user: [ { mountPoint = "/var/lib/${serviceCfg.name}/docs"; proto = "virtiofs"; source = docsPath user; tag = "${serviceCfg.name}_${user}_docs"; } { mountPoint = "/var/lib/${serviceCfg.name}/media"; proto = "virtiofs"; source = mediaPath user; tag = "${serviceCfg.name}_${user}_media"; } { mountPoint = "/var/lib/${serviceCfg.name}/misc"; proto = "virtiofs"; source = miscPath user; tag = "${serviceCfg.name}_${user}_misc"; } ]; tmpRulesIn = [ "d /var/lib/${serviceCfg.name}/docs 0755 ${serviceCfg.name} ${serviceCfg.name} -" "d /var/lib/${serviceCfg.name}/media 0755 ${serviceCfg.name} ${serviceCfg.name} -" "d /var/lib/${serviceCfg.name}/misc 0755 ${serviceCfg.name} ${serviceCfg.name} -" ]; syncthingNick = let phoneID = "OALKHLZ-OODUWVX-PAC2LI7-UMZMSZO-FELLRCD-RS4DHJS-PVA5YQK-WTFXXQI"; in syncthingVM { user = user0; ip = interface0Cfg.microvm.ip; mac = interface0Cfg.microvm.mac; userMac = interface0Cfg.microvm.macUser; ssh = interface0Cfg.microvm.ssh; mnt = guestPath user0; folders = foldersHelper user0; devices = devicesHelper user0 phoneID "Phone" "192.168.50.8"; mounts = mountsHelper user0; tmp = tmpRulesIn; }; in syncthingNick