{ lib, config, ... }: let enabled = config.mod.syncthing.enable; in { options = { mod.syncthing = { enable = lib.mkEnableOption "Enable syncthing module"; }; }; config = lib.mkIf enabled { services.syncthing = { enable = true; openDefaultPorts = true; cert = config.age.secrets.syncthing-cert.path; key = config.age.secrets.syncthing-key.path; user = "alex"; group = "users"; dataDir = "/home/alex/sync"; guiAddress = "0.0.0.0:8384"; settings = { gui = { user = "syncthing"; password = "$2a$12$J/h/JOUiW24ZXsLYLEl2kOZUS1LftxANi0OlZxLy8Dst3/jpBd0v2"; insecureSkipHostcheck = false; }; devices = { phone.id = config.lib.syncthing.phone; pinwheel.id = config.lib.syncthing.pinwheel; }; folders = { org = { path = "/home/alex/sync/org"; devices = [ "phone" "pinwheel" ]; versioning = { type = "staggered"; params = { maxage = "2592000"; # 30 days }; }; }; personal = { path = "/home/alex/sync/personal"; devices = [ "pinwheel" ]; versioning = { type = "staggered"; params = { maxAge = "2592000"; # 30 days }; }; }; work = { path = "/home/alex/sync/work"; devices = [ "pinwheel" ]; versioning = { type = "staggered"; params = { maxAge = "2592000"; # 30 days }; }; }; books = { path = "/home/alex/sync/books"; devices = [ "pinwheel" ]; versioning = { type = "staggered"; params = { maxAge = "2592000"; # 30 days }; }; }; "phone-gps" = { path = "/home/alex/sync/phone-gps"; devices = [ "phone" ]; versioning = { type = "staggered"; params = { maxage = "2592000"; # 30 days }; }; }; }; }; }; age = { secrets = { "syncthing-cert".file = ../../../../secrets/backwards/syncthing-cert.age; "syncthing-key".file = ../../../../secrets/backwards/syncthing-key.age; }; }; }; }