Commit 34eeb3c47c8b

Vincent Demeester <vincent@sbr.pm>
2025-12-01 11:27:55
refactor: Share common Samba configuration across hosts
- Reduce duplication by extracting shared settings to common module - Enable host-specific server strings for aix and rhea - Standardize configuration structure and boolean values Signed-off-by: Vincent Demeester <vincent@sbr.pm>
1 parent 7457c5c
Changed files (3)
systems
aix
common
services
rhea
systems/aix/extra.nix
@@ -15,18 +15,21 @@
   users.users.vincent.linger = true;
 
   services = {
-    samba.settings."vincent" = {
-      path = "/data/share";
-      public = true;
-      browseable = "yes";
-      "read only" = "no";
-      "guest ok" = "yes";
-      writable = true;
-      comment = "Vincent's share";
-      "create mask" = "0644";
-      "directory mask" = "0755";
-      "force user" = "vincent";
-      "force group" = "users";
+    samba.settings = {
+      global."server string" = "Aix";
+      vincent = {
+        path = "/data/share";
+        public = "yes";
+        browseable = "yes";
+        "read only" = "no";
+        "guest ok" = "yes";
+        writable = "yes";
+        comment = "Vincent's share";
+        "create mask" = "0644";
+        "directory mask" = "0755";
+        "force user" = "vincent";
+        "force group" = "users";
+      };
     };
     wireguard = {
       enable = true;
systems/common/services/samba.nix
@@ -15,7 +15,6 @@
           workgroup = "WORKGROUP";
           "server smb encrypt" = "required";
           "server min protocol" = "SMB3_00";
-          "server string" = "Aix";
           "hosts allow" = "192.168. 10.100. 127.0.0.1 localhost";
           "hosts deny" = "0.0.0.0/0";
         };
systems/rhea/extra.nix
@@ -7,6 +7,10 @@
   ...
 }:
 {
+  imports = [
+    ../common/services/samba.nix
+  ];
+
   age.secrets."gandi.env" = {
     file = ../../secrets/rhea/gandi.env.age;
     mode = "400";
@@ -284,93 +288,86 @@
     #   enable = true;
     #   devices = [ { device = "/dev/nvme0n1"; } ];
     # };
-    samba = {
-      enable = true;
-      openFirewall = true;
-      settings = {
-        backup = {
-          path = "/neo/backup";
-          public = "yes";
-          browseable = "yes";
-          "read only" = "no";
-          "guest ok" = "yes";
-          writable = "yes";
-          comment = "backup";
-          "create mask" = "0644";
-          "directory mask" = "0755";
-          "force user" = "vincent";
-          "force group" = "users";
-        };
-        documents = {
-          path = "/neo/documents";
-          public = "yes";
-          browseable = "yes";
-          "read only" = "no";
-          "guest ok" = "yes";
-          writable = "yes";
-          comment = "documents";
-          "create mask" = "0644";
-          "directory mask" = "0755";
-          "force user" = "vincent";
-          "force group" = "users";
-        };
-        downloads = {
-          path = "/neo/downloads";
-          public = "yes";
-          browseable = "yes";
-          "read only" = "no";
-          "guest ok" = "yes";
-          writable = "yes";
-          comment = "downloads";
-          "create mask" = "0644";
-          "directory mask" = "0755";
-          "force user" = "vincent";
-          "force group" = "users";
-        };
-        music = {
-          path = "/neo/music";
-          public = "yes";
-          browseable = "yes";
-          "read only" = "no";
-          "guest ok" = "yes";
-          writable = "yes";
-          comment = "music";
-          "create mask" = "0644";
-          "directory mask" = "0755";
-          "force user" = "vincent";
-          "force group" = "users";
-        };
-        pictures = {
-          path = "/neo/pictures";
-          public = "yes";
-          browseable = "yes";
-          "read only" = "no";
-          "guest ok" = "yes";
-          writable = "yes";
-          comment = "pictures";
-          "create mask" = "0644";
-          "directory mask" = "0755";
-          "force user" = "vincent";
-          "force group" = "users";
-        };
-        videos = {
-          path = "/neo/videos";
-          public = "yes";
-          browseable = "yes";
-          "read only" = "no";
-          "guest ok" = "yes";
-          writable = "yes";
-          comment = "videos";
-          "create mask" = "0644";
-          "directory mask" = "0755";
-          "force user" = "vincent";
-          "force group" = "users";
-        };
+    samba.settings = {
+      global."server string" = "Rhea";
+      backup = {
+        path = "/neo/backup";
+        public = "yes";
+        browseable = "yes";
+        "read only" = "no";
+        "guest ok" = "yes";
+        writable = "yes";
+        comment = "backup";
+        "create mask" = "0644";
+        "directory mask" = "0755";
+        "force user" = "vincent";
+        "force group" = "users";
+      };
+      documents = {
+        path = "/neo/documents";
+        public = "yes";
+        browseable = "yes";
+        "read only" = "no";
+        "guest ok" = "yes";
+        writable = "yes";
+        comment = "documents";
+        "create mask" = "0644";
+        "directory mask" = "0755";
+        "force user" = "vincent";
+        "force group" = "users";
+      };
+      downloads = {
+        path = "/neo/downloads";
+        public = "yes";
+        browseable = "yes";
+        "read only" = "no";
+        "guest ok" = "yes";
+        writable = "yes";
+        comment = "downloads";
+        "create mask" = "0644";
+        "directory mask" = "0755";
+        "force user" = "vincent";
+        "force group" = "users";
+      };
+      music = {
+        path = "/neo/music";
+        public = "yes";
+        browseable = "yes";
+        "read only" = "no";
+        "guest ok" = "yes";
+        writable = "yes";
+        comment = "music";
+        "create mask" = "0644";
+        "directory mask" = "0755";
+        "force user" = "vincent";
+        "force group" = "users";
+      };
+      pictures = {
+        path = "/neo/pictures";
+        public = "yes";
+        browseable = "yes";
+        "read only" = "no";
+        "guest ok" = "yes";
+        writable = "yes";
+        comment = "pictures";
+        "create mask" = "0644";
+        "directory mask" = "0755";
+        "force user" = "vincent";
+        "force group" = "users";
+      };
+      videos = {
+        path = "/neo/videos";
+        public = "yes";
+        browseable = "yes";
+        "read only" = "no";
+        "guest ok" = "yes";
+        writable = "yes";
+        comment = "videos";
+        "create mask" = "0644";
+        "directory mask" = "0755";
+        "force user" = "vincent";
+        "force group" = "users";
       };
-    };
-    samba-wsdd = {
-      enable = true;
-      openFirewall = true;
     };
     nfs.server = {
       enable = true;