···
79
+
# 'emergency.serivce' and 'rescue.service' have
80
+
# 'ExecStartPre=-plymouth quit --wait', but 'plymouth' is not on
81
+
# their 'ExecSearchPath'. We could set 'ExecSearchPath', but it
82
+
# overrides 'DefaultEnvironment=PATH=...', which is trouble for the
83
+
# initrd shell. It's simpler to just reset 'ExecStartPre' with an
84
+
# empty string and then set it to exactly what we want.
85
+
preStartQuitFixup = {
86
+
serviceConfig.ExecStartPre = [
88
+
"${plymouth}/bin/plymouth quit --wait"
···
systemd.services.plymouth-poweroff.wantedBy = [ "poweroff.target" ];
systemd.services.plymouth-reboot.wantedBy = [ "reboot.target" ];
systemd.services.plymouth-read-write.wantedBy = [ "sysinit.target" ];
179
-
systemd.services.systemd-ask-password-plymouth.wantedBy = [ "multi-user.target" ];
180
-
systemd.paths.systemd-ask-password-plymouth.wantedBy = [ "multi-user.target" ];
193
+
systemd.services.systemd-ask-password-plymouth.wantedBy = [ "sysinit.target" ];
194
+
systemd.paths.systemd-ask-password-plymouth.wantedBy = [ "sysinit.target" ];
# Prevent Plymouth taking over the screen during system updates.
systemd.services.plymouth-start.restartIfChanged = false;
199
+
systemd.services.rescue = preStartQuitFixup;
200
+
systemd.services.emergency = preStartQuitFixup;
extraBin.plymouth = "${plymouth}/bin/plymouth"; # for the recovery shell
···
"${plymouth}/sbin/plymouthd"
packages = [ plymouth ]; # systemd units
211
+
services.rescue = preStartQuitFixup;
212
+
services.emergency = preStartQuitFixup;
"/etc/plymouth/plymouthd.conf".source = configFile;