diff --git a/Makefile.dep b/Makefile.dep
index 6465fcfbaf09b3a283543d6b8ff42640e7f5e2ab..4a811c91a31f18a12ad8e4b1a0ebde71a7b62156 100644
--- a/Makefile.dep
+++ b/Makefile.dep
@@ -146,6 +146,12 @@ endif
 ifneq (,$(filter gnrc_netif,$(USEMODULE)))
   USEMODULE += netif
   USEMODULE += fmt
+  ifneq (,$(filter netdev_ieee802154,$(USEMODULE)))
+    USEMODULE += gnrc_netif_ieee802154
+  endif
+  ifneq (,$(filter netdev_eth,$(USEMODULE)))
+    USEMODULE += gnrc_netif_ethernet
+  endif
 endif
 
 ifneq (,$(filter ieee802154 nrfmin,$(USEMODULE)))
diff --git a/sys/net/gnrc/Makefile b/sys/net/gnrc/Makefile
index eeae57137e7641f85c9b3bf1acbd779c153ec220..b2fbc03e0778ede6e5a5f66849e453445bf7c5d7 100644
--- a/sys/net/gnrc/Makefile
+++ b/sys/net/gnrc/Makefile
@@ -34,12 +34,9 @@ endif
 ifneq (,$(filter gnrc_netapi,$(USEMODULE)))
   DIRS += netapi
 endif
-ifneq (,$(filter gnrc_netif,$(USEMODULE)))
+ifneq (,$(filter gnrc_netif gnrc_netif_%,$(USEMODULE)))
     DIRS += netif
 endif
-ifneq (,$(filter gnrc_netif_hdr,$(USEMODULE)))
-  DIRS += netif/hdr
-endif
 ifneq (,$(filter gnrc_netreg,$(USEMODULE)))
   DIRS += netreg
 endif
diff --git a/sys/net/gnrc/netif/Makefile b/sys/net/gnrc/netif/Makefile
index 02c030bd3503ea3b2cedbcaf2a391d822cb2ef6e..f615ac1e311465d69c0f1e77f2cb9e7b51e58953 100644
--- a/sys/net/gnrc/netif/Makefile
+++ b/sys/net/gnrc/netif/Makefile
@@ -1,3 +1,13 @@
 MODULE := gnrc_netif
 
+ifneq (,$(filter gnrc_netif_ethernet,$(USEMODULE)))
+  DIRS += ethernet
+endif
+ifneq (,$(filter gnrc_netif_ieee802154,$(USEMODULE)))
+  DIRS += ieee802154
+endif
+ifneq (,$(filter gnrc_netif_hdr,$(USEMODULE)))
+  DIRS += hdr
+endif
+
 include $(RIOTBASE)/Makefile.base
diff --git a/sys/net/gnrc/netif/ethernet/Makefile b/sys/net/gnrc/netif/ethernet/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..fdf22f6c10a0500ec4d1aa4db8d9558fdbe5eee0
--- /dev/null
+++ b/sys/net/gnrc/netif/ethernet/Makefile
@@ -0,0 +1,3 @@
+MODULE := gnrc_netif_ethernet
+
+include $(RIOTBASE)/Makefile.base
diff --git a/sys/net/gnrc/netif/gnrc_netif_ethernet.c b/sys/net/gnrc/netif/ethernet/gnrc_netif_ethernet.c
similarity index 98%
rename from sys/net/gnrc/netif/gnrc_netif_ethernet.c
rename to sys/net/gnrc/netif/ethernet/gnrc_netif_ethernet.c
index 2ba016ddfca8d557fa63d0dfaa017cf945ef7edf..c502ecb91c6b487f51f5b1c9c1f8af292d0b12af 100644
--- a/sys/net/gnrc/netif/gnrc_netif_ethernet.c
+++ b/sys/net/gnrc/netif/ethernet/gnrc_netif_ethernet.c
@@ -17,7 +17,6 @@
 
 #include <string.h>
 
-#ifdef MODULE_NETDEV_ETH
 #include "net/ethernet/hdr.h"
 #include "net/gnrc.h"
 #include "net/gnrc/netif/ethernet.h"
@@ -248,8 +247,5 @@ safe_out:
     gnrc_pktbuf_release(pkt);
     return NULL;
 }
-#else   /* MODULE_NETDEV_ETH */
-typedef int dont_be_pedantic;
-#endif  /* MODULE_NETDEV_ETH */
 
 /** @} */
diff --git a/sys/net/gnrc/netif/ieee802154/Makefile b/sys/net/gnrc/netif/ieee802154/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..83b0381d64d12bbd67f5cff478c162934c14ed56
--- /dev/null
+++ b/sys/net/gnrc/netif/ieee802154/Makefile
@@ -0,0 +1,3 @@
+MODULE := gnrc_netif_ieee802154
+
+include $(RIOTBASE)/Makefile.base
diff --git a/sys/net/gnrc/netif/gnrc_netif_ieee802154.c b/sys/net/gnrc/netif/ieee802154/gnrc_netif_ieee802154.c
similarity index 98%
rename from sys/net/gnrc/netif/gnrc_netif_ieee802154.c
rename to sys/net/gnrc/netif/ieee802154/gnrc_netif_ieee802154.c
index 60036a40852a12c1c3bd3d1ace110530cbd1c7e5..0a57b391cea96fe44895125a9709a6d7aebe64f4 100644
--- a/sys/net/gnrc/netif/gnrc_netif_ieee802154.c
+++ b/sys/net/gnrc/netif/ieee802154/gnrc_netif_ieee802154.c
@@ -28,7 +28,6 @@
 #include "od.h"
 #endif
 
-#ifdef MODULE_NETDEV_IEEE802154
 static int _send(gnrc_netif_t *netif, gnrc_pktsnip_t *pkt);
 static gnrc_pktsnip_t *_recv(gnrc_netif_t *netif);
 
@@ -263,7 +262,4 @@ static int _send(gnrc_netif_t *netif, gnrc_pktsnip_t *pkt)
     gnrc_pktbuf_release(pkt);
     return res;
 }
-#else   /* MODULE_NETDEV_IEEE802154 */
-typedef int dont_be_pedantic;
-#endif  /* MODULE_NETDEV_IEEE802154 */
 /** @} */