diff --git a/pkgs/image/default.nix b/pkgs/image/default.nix
index 452bf1f..a248a09 100644
--- a/pkgs/image/default.nix
+++ b/pkgs/image/default.nix
@@ -35,17 +35,10 @@ mkdir rootfs
 cp -prP ${patosPkgs.rootfs}/* rootfs/
 find rootfs/ -type d -exec chmod 755 {} \;
 
-# package kernel modules as sysext
-pkgName="patos-kernel-modules-${version}"
-mkdir -p ./tree/usr/lib/extension-release.d
-cat << EOF > ./tree/usr/lib/extension-release.d/extension-release.patos-kernel-modules
-ID=patos
-IMAGE_ID=patos-kernel-modules
-IMAGE_VERSION=${version}
-VERSION_ID=patos
-EOF
-cp -Prp rootfs/usr/lib/modules ./tree/usr/lib/modules && rm -rf rootfs/usr/lib/modules
-tar -cJf $pkgName.tar.xz -C ./tree . --owner=root:0 --group=root:0 && rm -rf tree
+# package kernel modules as sysext (will reduce the image size a little bit (~3MB))
+mkdir rootfs/etc/extensions
+rm -rf rootfs/usr/lib/modules
+cp ${patosPkgs.kernel}/patos-kernel-modules* rootfs/etc/extensions/
 
 # set default target to multi-user
 ln -sf multi-user.target rootfs/usr/lib/systemd/system/default.target
@@ -137,23 +130,6 @@ ReadOnly=1
 Verify=no
 EOF
 
-cat <<EOF > rootfs/etc/sysupdate.d/30-kernel-modules.transfer
-[Source]
-Type=url-tar
-Path=${updateUrl}
-MatchPattern=patos-kernel-modules-@v.tar.xz
-
-[Target]
-Type=subvolume
-Path=/var/lib/extensions
-MatchPattern=patos-kernel-modules-@v
-CurrentSymlink=patos-kernel-modules
-
-[Transfer]
-Verify=no
-EOF
-
-
 # Initial partitioning
 cat <<EOF > init.repart.d/10-root.conf
 [Partition]
diff --git a/pkgs/kernel/manual-config.nix b/pkgs/kernel/manual-config.nix
index 9f1ba99..98b09f8 100644
--- a/pkgs/kernel/manual-config.nix
+++ b/pkgs/kernel/manual-config.nix
@@ -22,6 +22,8 @@
   pahole,
   kmod,
   ubootTools,
+  erofs-utils,
+  cryptsetup,
   fetchpatch,
   rustc,
   rust-bindgen,
@@ -224,6 +226,8 @@ lib.makeOverridable (
             python3Minimal
             kmod
             hexdump
+            erofs-utils
+            cryptsetup
           ]
           ++ optional needsUbootTools ubootTools
           ++ optionals (lib.versionAtLeast version "5.2") [
@@ -496,6 +500,20 @@ lib.makeOverridable (
 
           # Delete empty directories
           find -empty -type d -delete
+
+          pkgName="patos-kernel-modules"
+          mkdir -p $out/tree/usr/lib/extension-release.d
+          cat << EOF > $out/tree/usr/lib/extension-release.d/extension-release.$pkgName
+          ID=patos
+          IMAGE_ID=$pkgName
+          IMAGE_VERSION=${version}
+          VERSION_ID=patos
+          EOF
+          cp -Prp $out/lib/modules $out/tree/usr/lib/modules
+          find $out/tree -type d -exec chmod 0755 {} \;
+          mkfs.erofs --all-root -zlz4hc,12 -C1048576 -Efragments,dedupe,ztailpacking $out/$pkgName.raw $out/tree/
+          veritysetup format --root-hash-file $out/$pkgName.roothash $out/$pkgName.raw $out/$pkgName.verity
+          chmod -R 755 $out/tree && rm -rf $out/tree
         '';
 
         requiredSystemFeatures = [ "big-parallel" ];