diff --git a/machines/gustave/nsd.nix b/machines/gustave/nsd.nix
index cf98197..032e6f9 100644
--- a/machines/gustave/nsd.nix
+++ b/machines/gustave/nsd.nix
@@ -12,6 +12,34 @@ let
       lib.attrValues nixosConfigurations
     )
   );
+
+  allowedDomains = [
+    "luj.fr"
+    "julienmalka.me"
+    "malka.family"
+    "luj"
+    "luj-static.page"
+  ];
+
+  isVPNDomain = domain: lib.dns.domainToZone [ "luj" ] domain != null;
+
+  zonesFromSnowField = lib.fold (elem: acc: acc // elem) { } (
+    lib.flatten (
+      map (
+        elem:
+        let
+          domains = if builtins.hasAttr "subdomains" elem then elem.subdomains else [ ];
+        in
+        map (domain: {
+          machine.meta.zones.${lib.dns.domainToZone allowedDomains domain}.subdomains =
+            lib.dns.domainToRecords domain elem
+              (isVPNDomain domain);
+        }) domains
+
+      ) (lib.attrValues lib.snowfield)
+    )
+  );
+
   dnsLib = (import inputs.dns).lib;
   evalZones =
     zones:
@@ -35,32 +63,37 @@ let
 
 in
 
-{
-  services.nsd = {
-    enable = true;
-    interfaces = [
-      config.machine.meta.ips.vpn.ipv4
-      config.machine.meta.ips.public.ipv6
-    ];
-    zones = lib.mapAttrs (_: value: {
-      data = builtins.toString value;
-      provideXFR = [ "100.100.45.0/24 NOKEY" ];
-      notify = [ "${lib.snowfield.akhaten.ips.vpn.ipv4} NOKEY" ];
-    }) (evalZones zonesFromConfig);
-  };
+lib.mkMerge [
+  {
+    services.nsd = {
+      enable = true;
+      interfaces = [
+        config.machine.meta.ips.vpn.ipv4
+        config.machine.meta.ips.public.ipv6
+      ];
+      zones = lib.mapAttrs (_: value: {
+        data = builtins.toString value;
+        provideXFR = [ "100.100.45.0/24 NOKEY" ];
+        notify = [ "${lib.snowfield.akhaten.ips.vpn.ipv4} NOKEY" ];
+      }) (evalZones zonesFromConfig);
+    };
 
-  systemd.services.nsd.preStart = lib.mkAfter ''
-    if [ -f ${stateDir}/counter ]; then
-      current_value=$(cat ${stateDir}/counter)
-      new_value=$((current_value + 1))
-      echo "$new_value" > ${stateDir}/counter
-    else
-      echo "0" > ${stateDir}/counter
-      new_value="0"
-    fi
-    sed -i "3s/0/$new_value/" ${stateDir}/zones/julienmalka.me
-  '';
+    systemd.services.nsd.preStart = lib.mkAfter ''
+      if [ -f ${stateDir}/counter ]; then
+        current_value=$(cat ${stateDir}/counter)
+        new_value=$((current_value + 1))
+        echo "$new_value" > ${stateDir}/counter
+      else
+        echo "0" > ${stateDir}/counter
+        new_value="0"
+      fi
+      sed -i "3s/0/$new_value/" ${stateDir}/zones/julienmalka.me
+    '';
 
-  networking.firewall.allowedUDPPorts = [ 53 ];
+    networking.firewall.allowedUDPPorts = [ 53 ];
 
-}
+  }
+
+  # DNS Records from all non local configurations are exported here
+  zonesFromSnowField
+]