The check for initrd-modules does not appear to handle when loaded modules use underscores (e.g. "sdhci_of_arasan") but the on-disk modules use dashes (e.g. "sdhci-of-arasan"). Some modules even use a mix of underscores and dashes, just to keep it interesting. The workaround is to use --skip-checks, but this may skip other important checks. Putting the "sdhci_of_arasan" in my system config, it fails because it cannot find the kernel module on-disk by that name. Ideally, it would find some way of mapping the loaded module names to the on-disk module filenames, and detect appropriately, ideally allowing either the on-disk filename or the loaded module name in the config. In my config: (initrd-modules (append (list ... "sdhci-of-arasan" ... ) %base-initrd-modules)) When I run: $ sudo -E guix system reconfigure /etc/config.scm : error: you may need these modules in the initrd for /dev/mmcblk1p1: sdhci_of_arasan hint: Try adding them to the `initrd-modules' field of your `operating-system' declaration, along these lines: (operating-system ;; ... (initrd-modules (append (list "sdhci_of_arasan") %base-initrd-modules))) Since the on-disk module name uses "-" instead of underscores: $ find /gnu/store/*linux-libre* -name '*'arasan.ko /gnu/store/nilzipm6fpicvlzfv1w8yj1j8mm1xlan-linux-libre-4.16.11/lib/modules/4.16.11-gnu/kernel/drivers/mmc/host/sdhci-of-arasan.ko But the loaded module uses "_" in the name: $ lsmod | grep arasan sdhci_of_arasan 20480 1 cqhci 24576 1 sdhci_of_arasan sdhci_pltfm 16384 1 sdhci_of_arasan sdhci 61440 2 sdhci_pltfm,sdhci_of_arasan live well, vagrant