diff --git a/bgpwtf/machines/modules/eoip.nix b/bgpwtf/machines/modules/eoip.nix
deleted file mode 100644
index 5ce04f3..0000000
--- a/bgpwtf/machines/modules/eoip.nix
+++ /dev/null
@@ -1,75 +0,0 @@
-# A small Ethernet-over-IP service implementation.
-# Yes, that's the Mikrotik EoIP implementation. This one is somewhat sketchy
-# (notably, it pumps huge zero-padded frames into tap), so doesn't use it for
-# production. We currently only use it in the edge01.waw test framework to
-# bring vlans across test VMs.
-
-{ config, pkgs, lib, ... }:
-
-with lib;
-
-let
-  eoip = pkgs.stdenv.mkDerivation {
-    pname = "eoip";
-    version = "20180119";
-    nativeBuildInputs = with pkgs; [ cmake ];
-    src = pkgs.fetchFromGitHub {
-      owner = "amphineko";
-      repo = "eoiptapd";
-      rev = "5573a905bcbc001b503308665f098e82f451dc33";
-      sha256 = "0np9dzcw5w6jarzdv2yh3mbzz0wgw10sjqyi6pxan4ipr75v1b8s";
-    };
-    installPhase = ''
-      mkdir -p $out/bin
-      cp eoiptapd $out/bin/eoiptapd
-    '';
-  };
-
-  cfg = config.hscloud.eoip;
-
-in {
-  options.hscloud.eoip = {
-    interfaces = mkOption {
-      type = with types; attrsOf (submodule {
-        options = {
-          localV4 = mkOption {
-            type = types.str;
-            description = "Local outer IPv4 address";
-          };
-          remoteV4 = mkOption {
-            type = types.str;
-            description = "Remote outer IPv4 address";
-          };
-          id = mkOption {
-            type = types.int;
-            description = "Tunnel ID";
-          };
-          parent = mkOption {
-            type = types.str;
-            description = "Parent/outer device";
-          };
-        };
-      });
-      description = ''
-        EoIP interfaces to create.
-      '';
-    };
-  };
-
-  config.systemd.services = mapAttrs' (name: value: nameValuePair "${name}-eoip" {
-    wantedBy = [ "network.target" ];
-    wants = [
-      "${name}-netdev.service"
-      "network-addresses-${value.parent}.service"
-    ];
-    after = [
-      "network-addresses-${value.parent}.service"
-    ];
-    serviceConfig = {
-      Type = "simple";
-      ExecStart = "${eoip}/bin/eoiptapd -i ${name} -l ${value.localV4} -r ${value.remoteV4} -t ${toString value.id}";
-      Restart = "always";
-      RestartSec = "1";
-    };
-  }) cfg.interfaces;
-}
diff --git a/bgpwtf/machines/modules/gretap.nix b/bgpwtf/machines/modules/gretap.nix
new file mode 100644
index 0000000..f4e1a7b
--- /dev/null
+++ b/bgpwtf/machines/modules/gretap.nix
@@ -0,0 +1,62 @@
+# Support for GRETap interfaces in NixOS' scripted networking.
+#
+# We currently only use it in the edge01.waw test framework to bring vlans
+# across test VMs.
+
+{ config, pkgs, lib, ... }:
+
+with lib;
+
+let
+  cfg = config.hscloud.gretap;
+
+in {
+  options.hscloud.gretap = {
+    interfaces = mkOption {
+      type = with types; attrsOf (submodule {
+        options = {
+          localV4 = mkOption {
+            type = types.str;
+            description = "Local outer IPv4 address";
+          };
+          remoteV4 = mkOption {
+            type = types.str;
+            description = "Remote outer IPv4 address";
+          };
+          id = mkOption {
+            type = types.int;
+            description = "Tunnel ID";
+          };
+          parent = mkOption {
+            type = types.str;
+            description = "Parent/outer device";
+          };
+        };
+      });
+      description = ''
+        GRETap interfaces to create.
+      '';
+    };
+  };
+
+  config.boot.kernelModules = [ "fou" ];
+  config.systemd.services = mapAttrs' (name: value: nameValuePair "${name}-gretap" {
+    wants = [
+      "${name}-netdev.service"
+      "network-addresses-${value.parent}.service"
+    ];
+    after = [
+      "network-addresses-${value.parent}.service"
+    ];
+    before = [
+      "network-addresses-${name}.service"
+    ];
+    wantedBy = [
+      "network-addresses-${name}.service"
+    ];
+    serviceConfig = {
+      Type = "oneshot";
+      ExecStart = "${pkgs.iproute}/bin/ip link add name ${name} type gretap remote ${value.remoteV4} local ${value.localV4} key ${toString value.id}";
+    };
+  }) cfg.interfaces;
+}
diff --git a/bgpwtf/machines/tests/edge01-waw.nix b/bgpwtf/machines/tests/edge01-waw.nix
index 535418f..1d724e1 100644
--- a/bgpwtf/machines/tests/edge01-waw.nix
+++ b/bgpwtf/machines/tests/edge01-waw.nix
@@ -5,9 +5,9 @@
 # - bgpspeaker, which simulates bgp upstreams
 # - customs, which simulates customs.hackerspace.pl.
 #
-# We use EoIP to build up virtual ethernet links between the machines, and
-# to run VLANs on that. We don't just use plain 'vlans' from NixOS tests as
-# we actually want to run 802.1q ourselves from the edge01 config.
+# We use GRETap to build up virtual ethernet links between the machines, and to
+# run VLANs on that. We don't just use plain 'vlans' from NixOS tests as we
+# actually want to run 802.1q ourselves from the edge01 config.
 #
 # Everything else is pretty much straightforward. Bring up everything, ping
 # stuff. We don't really test much else than internet routing.
@@ -31,19 +31,15 @@
   virtualisation.memorySize = 1024;
   virtualisation.vlans = [ 1 ];
   imports = [
-    ../modules/eoip.nix
+    ../modules/gretap.nix
   ];
 
-  hscloud.eoip.interfaces."nnet" = {
+  hscloud.gretap.interfaces."nnet" = {
     parent = "eth1";
     localV4 = "192.168.1.3";
     remoteV4 = "192.168.1.2";
     id = 100;
   };
-  networking.interfaces."nnet" = {
-    virtual = true;
-    virtualType = "tap";
-  };
   networking.vlans = {
     "vl-globalmix" = { interface = "nnet"; id = 466; };
   };
@@ -142,27 +138,20 @@
     dut = { config, pkgs, ... }: {
       imports = [
         ../edge01.waw.bgp.wtf.nix
-        ../modules/eoip.nix
+        ../modules/gretap.nix
       ];
       virtualisation.memorySize = 1024;
       virtualisation.vlans = [
         1 2
       ];
 
-      hscloud.eoip.interfaces = {
+      hscloud.gretap.interfaces = {
         "e1-nnet" = { parent = "eth1"; localV4 = "192.168.1.2"; remoteV4 = "192.168.1.3"; id = 100; };
         "e2-customs" = { parent = "eth2"; localV4 = "192.168.2.2"; remoteV4 = "192.168.2.1"; id = 200; };
         "e3-mgmt" = { parent = "eth2"; localV4 = "192.168.2.2"; remoteV4 = "192.168.2.111"; id = 300; }; # not connected
         "e4-oob" = { parent = "eth2"; localV4 = "192.168.2.2"; remoteV4 = "192.168.2.112"; id = 400; }; # not connected
         "e7-dcsw" = { parent = "eth2"; localV4 = "192.168.2.2"; remoteV4 = "192.168.2.113"; id = 500; }; # not connected
       };
-      networking.interfaces = {
-        "e1-nnet" = { virtual = true; virtualType = "tap"; };
-        "e2-customs" = { virtual = true; virtualType = "tap"; };
-        "e3-mgmt" = { virtual = true; virtualType = "tap"; };
-        "e4-oob" = { virtual = true; virtualType = "tap"; };
-        "e7-dcsw" = { virtual = true; virtualType = "tap"; };
-      };
       hscloud.anchorvm = {
         blkdev = "/anchor.img";
         ram = 32;
@@ -180,7 +169,7 @@
 
     customs = { config, pkgs, ... }: {
       imports = [
-        ../modules/eoip.nix
+        ../modules/gretap.nix
       ];
       environment.systemPackages = with pkgs; [
         tcpdump htop dstat file dhcpcd
@@ -194,12 +183,10 @@
       networking.defaultGateway = "185.236.240.4";
       networking.defaultGateway6 = "2a0d:eb00:2137:1::2";
       networking.interfaces."edge" = {
-        virtual = true;
-        virtualType = "tap";
         ipv4.addresses = [{ address = "185.236.240.5"; prefixLength = 31; }];
         ipv6.addresses = [{ address = "2a0d:eb00:2137:1::3"; prefixLength = 127; }];
       };
-      hscloud.eoip.interfaces."edge" = {
+      hscloud.gretap.interfaces."edge" = {
         parent = "eth2";
         localV4 = "192.168.2.1";
         remoteV4 = "192.168.2.2";
