Commit 1f4d9ef518dc

Vincent Demeester <vincent@sbr.pm>
2022-08-21 11:19:40
systems: migrate syncthing out of profile
Signed-off-by: Vincent Demeester <vincent@sbr.pm>
1 parent c3e5de7
Changed files (4)
systems/hosts/wakasu.nix
@@ -80,6 +80,10 @@ in
     };
     desktop = {
       wayland.sway.enable = true;
+      syncthing = {
+        enable = true;
+        guiAddress = "${metadata.hosts.wakasu.wireguard.addrs.v4}:8384";
+      };
     };
   };
 
@@ -87,9 +91,6 @@ in
   profiles.ssh.enable = true;
   profiles.home = true;
   profiles.avahi.enable = true;
-  profiles.syncthing.enable = true;
-
-
   environment.systemPackages = with pkgs; [
     docker-client
   ];
@@ -104,7 +105,6 @@ in
       endpointPort = endpointPort;
       endpointPublicKey = endpointPublicKey;
     };
-    syncthing.guiAddress = "${metadata.hosts.wakasu.wireguard.addrs.v4}:8384";
   };
 
 }
systems/modules/desktop/default.nix
@@ -5,5 +5,6 @@
     ./sway.nix
     ./wayland.nix
     ./xorg.nix
+    ./syncthing.nix
   ];
 }
systems/modules/desktop/syncthing.nix
@@ -0,0 +1,95 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+let
+  # unstable = versionOlder config.system.nixos.release "21.05";
+  cfg = config.modules.desktop.syncthing;
+  isCurrentHost = n: v: n != config.networking.hostName;
+  devices = {
+    wakasu = {
+      id = "3P5BRF6-27NH2OX-3ZUI7EZ-BP4KCSE-EF2GMJL-DHUGPP2-OGHIJVO-LAJOMA7";
+      addresses = [ "tcp://wakasu.home" "tcp://wakasu.vpn" ];
+    };
+    aomi = {
+      id = "XCR6WWB-OZUDGFB-LQPFW73-MV5SPJK-4IGOMA4-IAXON3I-C6OFETL-TPK5FQS";
+      addresses = [ "tcp://aomi.vpn" "tcp://aomi.home" ];
+    };
+    sakhalin = {
+      id = "4TYYG7V-A67D5SN-HMEJCI7-POOZRLL-RNCIE4U-ZYVGTOB-JQ5DOSV-ZCGWUAL";
+      addresses = [ "tcp://sakhalin.home" "tcp://sakhalin.vpn" ];
+    };
+    shikoku = {
+      id = "KZMMXRR-UINDQTS-H3TV2W7-EIGOUDI-3LW4ZDG-7PRKDFV-MJ5KUTJ-YG5Y5AI";
+      addresses = [ "tcp://shikoku.home" "tcp://shikoku.vpn" ];
+    };
+    okinawa = {
+      id = "2RWT47Z-UGSH4QO-G4W6XN7-3XY722R-ZKGDN5U-4MDGHMA-6SM26QM-7VCQIAZ";
+      addresses = [ "tcp://okinawa.home" "tcp://okinawa.vpn" ];
+    };
+    # Deprecated
+    naruhodo = {
+      id = "BKZN3FH-KRP4XRN-XFEVCCG-VANAUJN-YFAUS5Q-WUOLQQ7-II7I6PR-NVJZXQT";
+      addresses = [ "tcp://naruhodo.vpn" "tcp://naruhodo.home" ];
+    };
+  };
+  deviceNames = builtins.attrNames (filterAttrs isCurrentHost devices);
+in
+{
+  options = {
+    modules.desktop.syncthing = {
+      enable = mkEnableOption "Enable syncthing profile";
+      guiAddress = mkOption {
+        type = types.str;
+        default = "127.0.0.1:8384";
+        description = ''
+          The address to serve the web interface at.
+        '';
+      };
+    };
+  };
+  config = mkIf cfg.enable {
+    services.syncthing =
+      if (builtins.hasAttr "devices" config.services.syncthing)
+      then {
+        enable = true;
+        user = "vincent";
+        dataDir = "/home/vincent/.syncthing";
+        configDir = "/home/vincent/.syncthing";
+        devices = filterAttrs isCurrentHost devices;
+        folders = {
+          "/home/vincent/sync" = {
+            label = "sync";
+            id = "7dshg-r8zr6";
+            devices = deviceNames;
+          };
+          "/home/vincent/desktop/org" = {
+            label = "org";
+            id = "sjpsr-xfwdu";
+            devices = deviceNames;
+          };
+          "/home/vincent/desktop/documents" = {
+            label = "documents";
+            id = "oftdb-t5anv";
+            devices = deviceNames;
+          };
+          "/home/vincent/desktop/pictures/screenshots" = {
+            label = "screenshots";
+            id = "prpsz-azlz9";
+            devices = deviceNames;
+          };
+          "/home/vincent/desktop/pictures/wallpapers" = {
+            label = "wallpapers";
+            id = "wpiah-ydwwx";
+            devices = deviceNames;
+          };
+        };
+      }
+      else {
+        enable = true;
+        user = "vincent";
+        dataDir = "/home/vincent/.syncthing";
+        configDir = "/home/vincent/.syncthing";
+        guiAddress = cfg.guiAddress;
+      };
+  };
+}
systems/modules/profiles/syncthing.nix
@@ -1,40 +1,6 @@
 { config, lib, pkgs, ... }:
 
 with lib;
-let
-  unstable = versionOlder config.system.nixos.release "21.05";
-  cfg = config.profiles.syncthing;
-  isCurrentHost = n: v: n != config.networking.hostName;
-  devices = {
-    aomi = {
-      id = "XCR6WWB-OZUDGFB-LQPFW73-MV5SPJK-4IGOMA4-IAXON3I-C6OFETL-TPK5FQS";
-      addresses = [ "tcp://aomi.vpn" "tcp://aomi.home" ];
-    };
-    naruhodo = {
-      id = "BKZN3FH-KRP4XRN-XFEVCCG-VANAUJN-YFAUS5Q-WUOLQQ7-II7I6PR-NVJZXQT";
-      addresses = [ "tcp://naruhodo.vpn" "tcp://naruhodo.home" ];
-      # addresses = [ "tcp://192.168.1.2" "tcp://void.home" ];
-    };
-    sakhalin = {
-      id = "4TYYG7V-A67D5SN-HMEJCI7-POOZRLL-RNCIE4U-ZYVGTOB-JQ5DOSV-ZCGWUAL";
-      addresses = [ "tcp://sakhalin.home" "tcp://sakhalin.vpn" ];
-    };
-    shikoku = {
-      id = "KZMMXRR-UINDQTS-H3TV2W7-EIGOUDI-3LW4ZDG-7PRKDFV-MJ5KUTJ-YG5Y5AI";
-      addresses = [ "tcp://shikoku.home" "tcp://shikoku.vpn" ];
-    };
-    okinawa = {
-      id = "2RWT47Z-UGSH4QO-G4W6XN7-3XY722R-ZKGDN5U-4MDGHMA-6SM26QM-7VCQIAZ";
-      addresses = [ "tcp://okinawa.home" "tcp://okinawa.vpn" ];
-    };
-    # Deprecated
-    wakasu = {
-      id = "XNCACMA-LMIZPRZ-J6LEMR5-BVI7IVQ-6HWWMUU-QUCA63X-ZE32NOP-QFDDGQM";
-      addresses = [ "tcp://wakasu.home" "tcp://wakasu.vpn" ];
-    };
-  };
-  deviceNames = builtins.attrNames (filterAttrs isCurrentHost devices);
-in
 {
   options = {
     profiles.syncthing = {
@@ -42,47 +8,7 @@ in
     };
   };
   config = mkIf cfg.enable {
-    services.syncthing =
-      if (builtins.hasAttr "devices" config.services.syncthing)
-      then {
-        enable = true;
-        user = "vincent";
-        dataDir = "/home/vincent/.syncthing";
-        configDir = "/home/vincent/.syncthing";
-        devices = filterAttrs isCurrentHost devices;
-        folders = {
-          "/home/vincent/sync" = {
-            label = "sync";
-            id = "7dshg-r8zr6";
-            devices = deviceNames;
-          };
-          "/home/vincent/desktop/org" = {
-            label = "org";
-            id = "sjpsr-xfwdu";
-            devices = deviceNames;
-          };
-          "/home/vincent/desktop/documents" = {
-            label = "documents";
-            id = "oftdb-t5anv";
-            devices = deviceNames;
-          };
-          "/home/vincent/desktop/pictures/screenshots" = {
-            label = "screenshots";
-            id = "prpsz-azlz9";
-            devices = deviceNames;
-          };
-          "/home/vincent/desktop/pictures/wallpapers" = {
-            label = "wallpapers";
-            id = "wpiah-ydwwx";
-            devices = deviceNames;
-          };
-        };
-      }
-      else {
-        enable = true;
-        user = "vincent";
-        dataDir = "/home/vincent/.syncthing";
-        configDir = "/home/vincent/.syncthing";
-      };
+    warnings = [ "The option 'profiles.syncthing' is deprecated, use 'modules.desktop.syncthing' instead" ];
+    modules.desktop.syncthing = cfg.enable;
   };
 }