diff --git a/modules/cdc-ncm/wwan.nix b/modules/cdc-ncm/wwan.nix
index 6c177bea..216f432c 100644
--- a/modules/cdc-ncm/wwan.nix
+++ b/modules/cdc-ncm/wwan.nix
@@ -47,11 +47,9 @@ let
   setup = bundle {
     name = "modemm-mm-mm-mm";
     contents = [
-      (longrun {
-        name = "watch-for-usb-modeswitch";
-        isTrigger = true;
-        buildInputs = [ modeswitch ];
-        run = "${uevent-watch}/bin/uevent-watch -s ${modeswitch.name} devtype=usb_device product=12d1/14fe/102";
+      (svc.uevent-rule.build {
+        service = modeswitch;
+        terms = { devtype = "usb_device"; product = "12d1/14fe/102"; };
       })
       (svc.uevent-rule.build {
         service = atz;
diff --git a/modules/mount/default.nix b/modules/mount/default.nix
index 50e9ef27..944990a4 100644
--- a/modules/mount/default.nix
+++ b/modules/mount/default.nix
@@ -19,9 +19,9 @@ in {
       type = liminix.lib.types.serviceDefn;
     };
   };
-  imports = [ ../mdevd.nix ];
+  imports = [ ../mdevd.nix ../service-trigger ];
   config.system.service.mount =
-    let svc = liminix.callService ./service.nix {
+    let svc = config.system.callService ./service.nix {
           partlabel = mkOption {
             type = types.str;
             example = "my-usb-stick";
diff --git a/modules/mount/service.nix b/modules/mount/service.nix
index ed308797..ab0b91bd 100644
--- a/modules/mount/service.nix
+++ b/modules/mount/service.nix
@@ -1,7 +1,7 @@
 {
   liminix
-, uevent-watch
 , lib
+, svc
 }:
 { partlabel, mountpoint, options, fstype }:
 let
@@ -15,12 +15,11 @@ let
     up = "mount -t ${fstype} ${options_string} ${device} ${mountpoint}";
     down = "umount ${mountpoint}";
   };
-in longrun {
-  name = "watch-mount.${lib.strings.sanitizeDerivationName mountpoint}";
-  isTrigger = true;
-  buildInputs = [ mount_service ];
-
-  run = ''
-    ${uevent-watch}/bin/uevent-watch -s ${mount_service.name} -n ${device} partname=${partlabel} devtype=partition
-  '';
+in svc.uevent-rule.build {
+  service = mount_service;
+  symlink = device;
+  terms = {
+    partname = partlabel;
+    devtype = "partition";
+  };
 }