diff --git a/examples/rotuer.nix b/examples/rotuer.nix
index 716663b39..324d5186d 100644
--- a/examples/rotuer.nix
+++ b/examples/rotuer.nix
@@ -54,7 +54,7 @@ in rec {
   rootfsType = "jffs2";
   hostname = "rotuer";
 
-  services.hostap = svc.hostapd {
+  services.hostap = svc.hostapd.build {
     interface = config.hardware.networkInterfaces.wlan_24;
     params = {
       ssid = "liminix";
@@ -64,7 +64,7 @@ in rec {
     } // wirelessConfig;
   };
 
-  services.hostap5 = svc.hostapd {
+  services.hostap5 = svc.hostapd.build {
     interface = config.hardware.networkInterfaces.wlan_5;
     params = rec {
       ssid = "liminix_5";
diff --git a/modules/hostapd/default.nix b/modules/hostapd/default.nix
index c02303be5..e1b346a4b 100644
--- a/modules/hostapd/default.nix
+++ b/modules/hostapd/default.nix
@@ -1,13 +1,21 @@
 { lib, pkgs, config, ...}:
 let
   inherit (lib) mkOption types;
+  inherit (pkgs) liminix;
 in {
   options = {
     system.service.hostapd = mkOption {
-      type = types.functionTo types.package;
+      type = liminix.lib.types.serviceDefn;
     };
   };
   config = {
-    system.service.hostapd = pkgs.callPackage ./service.nix {};
+    system.service.hostapd = liminix.callService ./service.nix {
+      interface = mkOption {
+        type = liminix.lib.types.service;
+      };
+      params = mkOption {
+        type = types.attrs;
+      };
+    };
   };
 }
diff --git a/modules/hostapd/service.nix b/modules/hostapd/service.nix
index c371791f8..6c02dafb8 100644
--- a/modules/hostapd/service.nix
+++ b/modules/hostapd/service.nix
@@ -4,6 +4,7 @@
 , writeText
 , lib
 }:
+{ interface, params} :
 let
   inherit (liminix.services) longrun;
   inherit (lib) concatStringsSep mapAttrsToList;
@@ -16,19 +17,6 @@ let
   # we'll add them as top-level attributes and rename params to
   # extraParams
 
-  t = {
-    interface = mkOption {
-      type = liminix.lib.types.service;
-    };
-    params = mkOption {
-      type = types.attrs;
-    };
-  };
-in
-args:
-let
-  inherit (typeChecked "hostapd" t args)
-    interface params;
   name = "${interface.device}.hostapd";
   defaults =  {
     driver = "nl80211";
diff --git a/tests/wlan/configuration.nix b/tests/wlan/configuration.nix
index 57765054f..d6d321f53 100644
--- a/tests/wlan/configuration.nix
+++ b/tests/wlan/configuration.nix
@@ -10,7 +10,7 @@ in rec {
     ../../modules/hostapd
   ];
 
-  services.hostap = config.system.service.hostapd {
+  services.hostap = config.system.service.hostapd.build {
     interface = config.hardware.networkInterfaces.wlan_24;
     params = {
       ssid = "liminix";