diff --git a/lib/default.nix b/lib/default.nix
index 73c04f4..96932b5 100644
--- a/lib/default.nix
+++ b/lib/default.nix
@@ -10,6 +10,8 @@ let
         { machine.meta = raw; }
       ];
     }).config.machine.meta;
+
+  non_local_machines = (import ./snowfield.nix).machines;
 in
 rec {
   importConfig =
@@ -52,15 +54,17 @@ rec {
 
   mapAttrsWithMerge = f: set: listToAttrsWithMerge (map (attr: f attr set.${attr}) (attrNames set));
 
-  snowfield = mapAttrs (
-    name: _value:
-    let
-      machineF = import (../machines + "/${name}/default.nix");
-    in
-    evalMeta
-      (machineF ((mapAttrs (_: _: null) (builtins.functionArgs machineF)) // { inherit inputs; }))
-      .machine.meta
-  ) (final.filterAttrs (_: v: v == "directory") (readDir ../machines));
+  snowfield =
+    (mapAttrs (
+      name: _value:
+      let
+        machineF = import (../machines + "/${name}/default.nix");
+      in
+      evalMeta
+        (machineF ((mapAttrs (_: _: null) (builtins.functionArgs machineF)) // { inherit inputs; }))
+        .machine.meta
+    ) (final.filterAttrs (_: v: v == "directory") (readDir ../machines)))
+    // mapAttrs (_: evalMeta) non_local_machines;
 
   dns = import ./dns.nix {
     lib = final;
diff --git a/lib/snowfield.nix b/lib/snowfield.nix
index 7c72ed8..6325d93 100644
--- a/lib/snowfield.nix
+++ b/lib/snowfield.nix
@@ -1,102 +1,88 @@
 {
 
+  # Metadata of machines whose configuration is not handled by this repository
+
   machines = {
 
     doma-backups = {
       subdomains = [ "doma-backups.julienmalka.me" ];
-      ipv4 = {
-        public = "82.67.34.230";
-        local = "192.168.0.250";
-      };
-      ipv6 = {
-        public = "2a01:e0a:de4:a0e1:6b86:c2c:2141:6702";
+      ips = {
+        public.ipv4 = "82.67.34.230";
+        local.ipv4 = "192.168.0.250";
+        public.ipv6 = "2a01:e0a:de4:a0e1:6b86:c2c:2141:6702";
       };
     };
 
     proxmox-nixos-infra = {
       subdomains = [ "proxmox-nixos-update-logs.saumon.network" ];
-      ipv4 = {
-        public = "82.67.34.230";
-        local = "192.168.0.177";
-      };
-      ipv6 = {
-        public = "2a01:e0a:de4:a0e1:eb2:caa1::78";
+      ips = {
+        public.ipv4 = "82.67.34.230";
+        local.ipv4 = "192.168.0.177";
+        public.ipv6 = "2a01:e0a:de4:a0e1:eb2:caa1::78";
       };
     };
 
     doma-zulip = {
       subdomains = [ "zulip.julienmalka.me" ];
-      ipv4 = {
-        public = "82.67.34.230";
-        local = "192.168.0.187";
-      };
-      ipv6 = {
-        public = "2a01:e0a:de4:a0e1:6830:ddff:fe52:a444";
+      ips = {
+        public.ipv4 = "82.67.34.230";
+        local.ipv4 = "192.168.0.187";
+        public.ipv6 = "2a01:e0a:de4:a0e1:6830:ddff:fe52:a444";
       };
     };
 
     pve1 = {
-      ipv4 = {
-        public = "82.67.34.230";
-        local = "192.168.1.1";
-        vpn = "100.100.45.3";
-      };
-      ipv6 = {
-        public = "2a01:e0a:de4:a0e1:d250:99ff:fefa:b62";
-        vpn = "fd7a:115c:a1e0::3";
+      ips = {
+        public.ipv4 = "82.67.34.230";
+        local.ipv4 = "192.168.1.1";
+        vpn.ipv4 = "100.100.45.3";
+        public.ipv6 = "2a01:e0a:de4:a0e1:d250:99ff:fefa:b62";
+        vpn.ipv6 = "fd7a:115c:a1e0::3";
       };
       sshPort = 22;
       sshUser = "root";
     };
     pve2 = {
-      ipv4 = {
-        public = "82.67.34.230";
-        local = "192.168.1.2";
-        vpn = "100.100.45.15";
-      };
-      ipv6 = {
-        public = "2a01:e0a:de4:a0e1:aaa1:59ff:fec7:1d6";
-        vpn = "fd7a:115c:a1e0::f";
+      ips = {
+        public.ipv4 = "82.67.34.230";
+        local.ipv4 = "192.168.1.2";
+        vpn.ipv4 = "100.100.45.15";
+        public.ipv6 = "2a01:e0a:de4:a0e1:aaa1:59ff:fec7:1d6";
+        vpn.ipv6 = "fd7a:115c:a1e0::f";
       };
       sshPort = 22;
       sshUser = "root";
     };
     pve3 = {
-      ipv4 = {
-        public = "82.67.34.230";
-        local = "192.168.1.3";
-        vpn = "100.100.45.16";
-      };
-      ipv6 = {
-        public = "2a01:e0a:de4:a0e1:aaa1:59ff:fec1:aa10";
-        vpn = "fd7a:115c:a1e0::10";
+      ips = {
+        public.ipv4 = "82.67.34.230";
+        local.ipv4 = "192.168.1.3";
+        vpn.ipv4 = "100.100.45.16";
+        public.ipv6 = "2a01:e0a:de4:a0e1:aaa1:59ff:fec1:aa10";
+        vpn.ipv6 = "fd7a:115c:a1e0::10";
       };
       sshPort = 22;
       sshUser = "root";
     };
     pve4 = {
-      ipv4 = {
-        public = "82.67.34.230";
-        local = "192.168.1.4";
-        vpn = "100.100.45.17";
-      };
-      ipv6 = {
-        public = "2a01:e0a:de4:a0e1:d250:99ff:fefa:b76";
-        vpn = "fd7a:115c:a1e0::11";
+      ips = {
+        public.ipv4 = "82.67.34.230";
+        local.ipv4 = "192.168.1.4";
+        vpn.ipv4 = "100.100.45.17";
+        public.ipv6 = "2a01:e0a:de4:a0e1:d250:99ff:fefa:b76";
+        vpn.ipv6 = "fd7a:115c:a1e0::11";
       };
       sshPort = 22;
       sshUser = "root";
     };
     saves-paris = {
       subdomains = [ "saves-paris.luj" ];
-      ipv4 = {
-        public = "82.67.34.230";
-        local = "192.168.4.5";
-        vpn = "100.100.45.4";
-      };
-      ipv6 = {
-        public = "2a01:e0a:de4:a0e1:3af3:abff:fe6a:1f54";
-        vpn = "fd7a:115c:a1e0::4";
+      ips = {
+        public.ipv4 = "82.67.34.230";
+        local.ipv4 = "192.168.4.5";
+        vpn.ipv4 = "100.100.45.4";
+        public.ipv6 = "2a01:e0a:de4:a0e1:3af3:abff:fe6a:1f54";
+        vpn.ipv6 = "fd7a:115c:a1e0::4";
       };
       sshPort = 22;
       sshUser = "root";
@@ -104,11 +90,9 @@
 
     saves-lyon = {
       subdomains = [ "saves-lyon.luj" ];
-      ipv4 = {
-        vpn = "100.100.45.20";
-      };
-      ipv6 = {
-        vpn = "fd7a:115c:a1e0::14";
+      ips = {
+        vpn.ipv4 = "100.100.45.20";
+        vpn.ipv6 = "fd7a:115c:a1e0::14";
       };
       sshPort = 22;
       sshUser = "root";