summaryrefslogtreecommitdiff
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;
+ };
+ };
+}