summary refs log tree commit diff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/syncthing.nix69
1 files changed, 69 insertions, 0 deletions
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;
+    };
+  };
+}