1{ lib, traits, ... }:
2let
3 mkDevice = name: id: {
4 inherit name;
5 value = {
6 inherit id;
7 addresses = [
8 "tcp://${name}.mist-nessie.ts.net"
9 "quic://${name}.mist-nessie.ts.net"
10 ];
11 };
12 };
13 devices = lib.listToAttrs [
14 (mkDevice "renko" "JSPWYCM-O76XTAY-IEP3AKI-A2IK4KX-X2NC7N4-ADMQKXY-VYM45XX-OADHHA3")
15 (mkDevice "satori" "OZ2QYJS-463IWPW-DXL6OKH-BU2D2QK-ZP577US-BYXSMAA-LAXRWV7-6PC54QF")
16 ];
17 allDevices = lib.attrNames devices;
18in
19lib.mkIf (traits.gui) {
20 services.syncthing = {
21 enable = true;
22 settings = {
23 inherit devices;
24 options.globalAnnounceEnabled = false;
25 defaults.ignores = [
26 "(?d)**/node_modules"
27 "(?d)**/target"
28 "(?d)**/.svelte-kit"
29 "(?d)**/build"
30 "(?d)**/.gradle"
31 "(?d)**/.direnv"
32 ];
33 folders = {
34 "/home/cassie/projects/synced" = {
35 id = "synced-projects";
36 devices = allDevices;
37 };
38 };
39 };
40 };
41}