From 348b88545c26245701d3f8b5ff33ac19310a7c46 Mon Sep 17 00:00:00 2001 From: Piotr Dobrowolski Date: Wed, 29 Jun 2022 21:37:46 +0200 Subject: [PATCH] nixos/plymouth: fix theme dependency resolution in systemd stage 1 Some plymouth themes use assets of others, like is the case with our default bgrt depending on spinner. Missing assets would cause the splashscreen to not render at all in stage 1. Preliminary dependency resolution code seemed to be broken, and this should fix it. Only direct dependencies of selected theme are pulled in. --- nixos/modules/system/boot/plymouth.nix | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/nixos/modules/system/boot/plymouth.nix b/nixos/modules/system/boot/plymouth.nix index 59037d4e6b4d86a..132b073112f940a 100644 --- a/nixos/modules/system/boot/plymouth.nix +++ b/nixos/modules/system/boot/plymouth.nix @@ -184,9 +184,14 @@ in mkdir $out cp -r ${themesEnv}/share/plymouth/themes/${cfg.theme} $out # Copy more themes if the theme depends on others - for theme in $(grep -hRo '/etc/plymouth/themes/.*$' ${themesEnv} | xargs -n1 basename); do - if [[ -d "${themesEnv}/theme" ]]; then - cp -r "${themesEnv}/theme" $out + for theme in $(grep -hRo '/etc/plymouth/themes/.*$' $out | xargs -n1 basename); do + if [[ -d "${themesEnv}/share/plymouth/themes/$theme" ]]; then + if [[ ! -d "$out/$theme" ]]; then + echo "Adding dependent theme: $theme" + cp -r "${themesEnv}/share/plymouth/themes/$theme" $out + fi + else + echo "Missing theme dependency: $theme" fi done '';