Commit cb1b1850a830

Vincent Demeester <vincent@sbr.pm>
2025-12-16 12:04:26
feat(homepage): Add syncthing synchronization section
- Provide visibility into all syncthing instances across homelab - Auto-discover syncthing hosts from globals configuration - Enable quick access to syncthing UI on each machine Also comment out some host's syncthing configuration. Signed-off-by: Vincent Demeester <vincent@sbr.pm>
1 parent 6c5c608
Changed files (2)
systems
common
systems/common/services/homepage.nix
@@ -20,6 +20,22 @@ let
       "homepage.sbr.pm"
     ]
   );
+
+  # Extract syncthing machines from globals
+  syncthingMachines = lib.filterAttrs (
+    _name: machine: machine ? syncthing && machine.syncthing ? folders
+  ) globals.machines;
+
+  # Generate syncthing service entries
+  syncthingServices = lib.mapAttrsToList (name: _machine: {
+    "Syncthing (${name})" = {
+      description = "Syncthing on ${name}";
+      href = "https://syncthing.sbr.pm/${name}/";
+      icon = "syncthing.png";
+      ping = "https://syncthing.sbr.pm/${name}/";
+      statusStyle = "dot";
+    };
+  }) syncthingMachines;
 in
 {
   # Homepage Dashboard - Homelab Services Overview
@@ -53,6 +69,12 @@ in
             columns = 3;
           };
         }
+        {
+          Synchronization = {
+            style = "row";
+            columns = 4;
+          };
+        }
         {
           Infrastructure = {
             style = "row";
@@ -185,6 +207,9 @@ in
           }
         ];
       }
+      {
+        Synchronization = syncthingServices;
+      }
       {
         Infrastructure = [
           {
globals.nix
@@ -120,14 +120,14 @@ _: {
       ssh = {
         hostKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIfep1SkMsAPHggXFLfEJNzZb7eoihtkqDeQruG+TbhF";
       };
-      syncthing = {
-        id = "HZDLS5A-LKCEIYQ-DDMDYDF-DBTSRYH-HUNQSII-TVCDACT-DIYIO7V-G4K2EQV";
-        folders = {
-          sync = {
-            type = "receiveonly";
-          };
-        };
-      };
+      # syncthing = {
+      #   id = "HZDLS5A-LKCEIYQ-DDMDYDF-DBTSRYH-HUNQSII-TVCDACT-DIYIO7V-G4K2EQV";
+      #   folders = {
+      #     sync = {
+      #       type = "receiveonly";
+      #     };
+      #   };
+      # };
     };
     aix = {
       net = {
@@ -240,16 +240,16 @@ _: {
       ssh = {
         hostKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH18c6kcorVbK2TwCgdewL6nQf29Cd5BVTeq8nRYUigm";
       };
-      syncthing = {
-        id = "ZKUNKBI-N2K2LTG-AWLDAEX-NE6NALQ-DLFO6YV-FU4A7IE-KCF5ZCD-IEYSKAH";
-        folders = {
-          org = { };
-          documents = { };
-          sync = { };
-          screenshots = { };
-          wallpapers = { };
-        };
-      };
+      # syncthing = {
+      #   id = "ZKUNKBI-N2K2LTG-AWLDAEX-NE6NALQ-DLFO6YV-FU4A7IE-KCF5ZCD-IEYSKAH";
+      #   folders = {
+      #     org = { };
+      #     documents = { };
+      #     sync = { };
+      #     screenshots = { };
+      #     wallpapers = { };
+      #   };
+      # };
       ssh = {
         vincent = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGxstR3xEf87leVVDS3GVPx8Ap9+eP+OfkSvM26V54XP vincent@shikoku";
       };
@@ -322,14 +322,14 @@ _: {
       ssh = {
         # hostKey = "";
       };
-      syncthing = {
-        id = "";
-        folders = {
-          org = { };
-          documents = { };
-          sync = { };
-        };
-      };
+      # syncthing = {
+      #   id = "";
+      #   folders = {
+      #     org = { };
+      #     documents = { };
+      #     sync = { };
+      #   };
+      # };
     };
     rhea = {
       net = {
@@ -408,16 +408,16 @@ _: {
           "wakasu.sbr.pm"
         ];
       };
-      syncthing = {
-        id = "WM23THJ-ECXRLXA-HE5TIKO-VPLSMRY-Y2EWZI7-Q7JMLPX-5Q5UNEN-QMB7ZQJ";
-        folders = {
-          org = { };
-          documents = { };
-          sync = { };
-          screenshots = { };
-          wallpapers = { };
-        };
-      };
+      # syncthing = {
+      #   id = "WM23THJ-ECXRLXA-HE5TIKO-VPLSMRY-Y2EWZI7-Q7JMLPX-5Q5UNEN-QMB7ZQJ";
+      #   folders = {
+      #     org = { };
+      #     documents = { };
+      #     sync = { };
+      #     screenshots = { };
+      #     wallpapers = { };
+      #   };
+      # };
     };
     # Home Assistant
     hass = {
@@ -446,13 +446,13 @@ _: {
           "okinawa.sbr.pm"
         ];
       };
-      syncthing = {
-        id = "2RWT47Z-UGSH4QO-G4W6XN7-3XY722R-ZKGDN5U-4MDGHMA-6SM26QM-7VCQIAZ";
-        folders = {
-          sync = { };
-          org = { };
-        };
-      };
+      # syncthing = {
+      #   id = "2RWT47Z-UGSH4QO-G4W6XN7-3XY722R-ZKGDN5U-4MDGHMA-6SM26QM-7VCQIAZ";
+      #   folders = {
+      #     sync = { };
+      #     org = { };
+      #   };
+      # };
     };
     # iPhone
     hokkaido = {