diff --git a/modules.d/51plymouth-label/module-setup.sh b/modules.d/51plymouth-label/module-setup.sh
new file mode 100755
index 0000000..4bad3c7
--- /dev/null
+++ b/modules.d/51plymouth-label/module-setup.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+# ex: ts=8 sw=4 sts=4 et filetype=sh
+
+check() {
+	return 255
+}
+
+depends() {
+	echo plymouth
+}
+
+install() {
+	# hardcoded default if nothing is found in dracut.conf
+	local deffont=/usr/share/fonts/liberation*/{encodings.dir,fonts.*,LiberationSans-Regular.ttf}
+	local deffontconf=/etc/fonts/conf.d/*-liberation*.conf
+
+	local font=$deffont
+	local fontconf=$deffontconf
+
+	# configs from dracut.conf. Both must exist.
+	# a font without its config is not very useful
+	if [[ -n $PLYMOUTH_FONT && -n $PLYMOUTH_FONTCONF ]] ; then
+		font=$PLYMOUTH_FONT
+		fontconf=$PLYMOUTH_FONTCONF
+	fi
+
+	inst_libdir_file plymouth/label.so
+
+	inst_multiple \
+		/etc/fonts/fonts.conf \
+		$font \
+		$fontconf
+
+	inst_libdir_file pango/* pango/*/* pango/*/*/*
+
+	inst_multiple -o /etc/pango/* /etc/pango/*/*
+}
