diff --git a/recipes/initfs/init.rc b/recipes/initfs/init.rc
new file mode 100644
index 0000000000000000000000000000000000000000..bfbcad7a612088a452e841702d983d66e0b54fd0
--- /dev/null
+++ b/recipes/initfs/init.rc
@@ -0,0 +1,16 @@
+export PATH /bin
+export TMPDIR /tmp
+nulld
+zerod
+randd
+vesad T T G
+logd debug: display:1
+stdio log:
+ps2d us
+ramfs logging
+acpid
+pcid /etc/pcid/initfs.toml
+redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK
+cd file:
+export PATH file:/bin
+run.d /etc/init.d
diff --git a/recipes/initfs/recipe.toml b/recipes/initfs/recipe.toml
new file mode 100644
index 0000000000000000000000000000000000000000..689a0c967e35b6cc98ae39e81b142fce70091922
--- /dev/null
+++ b/recipes/initfs/recipe.toml
@@ -0,0 +1,33 @@
+[source]
+git = "https://gitlab.redox-os.org/redox-os/redox-initfs.git"
+
+[build]
+template = "custom"
+dependencies = [
+  "drivers-initfs",
+  "init",
+  "logd",
+  "nulld",
+  "ramfs",
+  "randd",
+  "redoxfs",
+  "zerod",
+]
+script = """
+INITFS_RM_BINS='redoxfs-ar redoxfs-mkfs'
+
+mkdir -p "${COOKBOOK_BUILD}/initfs/etc"
+
+cp -r "${COOKBOOK_SYSROOT}/"* "${COOKBOOK_BUILD}/initfs"
+
+# TODO: Move init.rc to another recipe, perhaps initfs-misc? Then it can be installed as a regular dependency.
+cp "${COOKBOOK_RECIPE}/init.rc" "${COOKBOOK_BUILD}/initfs/etc/init.rc"
+
+for bin in ${INITFS_RM_BINS}; do
+  rm -f "${COOKBOOK_BUILD}/initfs/bin/$bin"
+done
+
+env -u CARGO cargo run --manifest-path "${COOKBOOK_SOURCE}/tools/Cargo.toml" --bin redox-initfs-ar -- "${COOKBOOK_BUILD}/initfs" -o "${COOKBOOK_BUILD}/initfs.img"
+
+cp "${COOKBOOK_BUILD}/initfs.img" "${COOKBOOK_STAGE}/initfs"
+"""