From 4d2e7db5cf8e89590c9f8b342cc487d500c0e822 Mon Sep 17 00:00:00 2001 From: Mel Date: Fri, 6 Dec 2024 22:15:26 +0100 Subject: Server-side syncthing configuration Signed-off-by: Mel --- modules/syncthing.nix | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 modules/syncthing.nix (limited to 'modules') diff --git a/modules/syncthing.nix b/modules/syncthing.nix new file mode 100644 index 0000000..3210e03 --- /dev/null +++ b/modules/syncthing.nix @@ -0,0 +1,69 @@ +{ + lib, + me, + config, + ... +}: + +let + inherit (config.users.users) mel; + + defaultSyncthingPort = "8384"; +in +{ + # server-side + services.syncthing = { + enable = true; + # do not open any firewall ports, + # we only want access through the tailnet + openDefaultPorts = false; + guiAddress = "${me.tailscale.ip}:${defaultSyncthingPort}"; + + user = "mel"; + dataDir = "${mel.home}/sync"; + configDir = "${mel.home}/.config/syncthing"; + + # only take declarative configuration below + overrideDevices = true; + overrideFolders = true; + settings = { + devices = { + bismuth.id = "MXC4UQG-PRZESJ3-AQYGWNG-EMCI44Q-UC7YFNP-6ZDF3SA-NLZCVUH-FQAK6QK"; + graphite.id = "THWA2HN-BZ4URXS-P5PKAJY-YEBYQSH-2MUDKXC-CL3YQ2A-VHFUPCE-ROHQNQ7"; + }; + + # TODO: these are duplciated from the client configuration. + # maybe we should semi-merge the two?? + folders = + let + clientFolders = [ + "desktop" + "documents" + "pictures" + "music" + "videos" + "thoughts" + "code" + "scripts" + "projects" + ]; + + commonFolder = name: { + path = "~/sync/${name}"; + type = "receiveonly"; + versioning = { + type = "staggered"; + params = { + cleanInterval = toString (60 * 60); + maxAge = toString (14 * 24 * 60 * 60); + }; + }; + }; + in + lib.genAttrs clientFolders commonFolder; + + # no telemetry + options.urAccepted = -1; + }; + }; +} -- cgit 1.4.1