anchor.diff:      systemd.services.systemd-ask-password-plymouth.wantedBy = [ "multi-user.target" ];
       systemd.paths.systemd-ask-password-plymouth.wantedBy = [ "multi-user.target" ];
   
  -    boot.initrd.extraUtilsCommands = ''
  +    boot.initrd.systemd = {
  +      extraBin.plymouth = "${plymouth}/bin/plymouth"; # for the recovery shell
  +      storePaths = [
  +        "${lib.getBin config.boot.initrd.systemd.package}/bin/systemd-tty-ask-password-agent"
  +        "${plymouth}/bin/plymouthd"
  +        "${plymouth}/sbin/plymouthd"
  +      ];
  +      packages = [ plymouth ]; # systemd units
  +      contents = {
  +        # Files
  +        "/etc/plymouth/plymouthd.conf".source = configFile;
  +        "/etc/plymouth/plymouthd.defaults".source = "${plymouth}/share/plymouth/plymouthd.defaults";
  +        "/etc/plymouth/logo.png".source = cfg.logo;
  +        # Directories
  +        "/etc/plymouth/plugins".source = pkgs.runCommand "plymouth-initrd-plugins" {} ''
  +          # Check if the actual requested theme is here
  +          if [[ ! -d ${themesEnv}/share/plymouth/themes/${cfg.theme} ]]; then
  +              echo "The requested theme: ${cfg.theme} is not provided by any of the packages in boot.plymouth.themePackages"
  +              exit 1
  +          fi
  +
  +          moduleName="$(sed -n 's,ModuleName *= *,,p' ${themesEnv}/share/plymouth/themes/${cfg.theme}/${cfg.theme}.plymouth)"
  +
  +          mkdir -p $out/renderers
  +          # module might come from a theme
  +          cp ${themesEnv}/lib/plymouth/{text,details,label,$moduleName}.so $out
  +          cp ${plymouth}/lib/plymouth/renderers/{drm,frame-buffer}.so $out/renderers
  +        '';
  +        "/etc/plymouth/themes".source = pkgs.runCommand "plymouth-initrd-themes" {} ''
  +          # Check if the actual requested theme is here
  +          if [[ ! -d ${themesEnv}/share/plymouth/themes/${cfg.theme} ]]; then
  +              echo "The requested theme: ${cfg.theme} is not provided by any of the packages in boot.plymouth.themePackages"
  +              exit 1
  +          fi
  +
  +          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
  +              fi
  +          done
  +        '';
  +
  +        # Fonts
  +        "/etc/plymouth/fonts".source = pkgs.runCommand "plymouth-initrd-fonts" {} ''
  +          mkdir -p $out
  +          cp ${cfg.font} $out
  +        '';
  +        "/etc/fonts/fonts.conf".text = ''
  +          <?xml version="1.0"?>
  +          <!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
  +          <fontconfig>
  +              <dir>/etc/plymouth/fonts</dir>
  +          </fontconfig>
  +        '';
  +      };
  +      # Properly enable units. These are the units that arch copies
  +      services = {
  +        plymouth-halt.wantedBy = [ "halt.target" ];
  +        plymouth-kexec.wantedBy = [ "kexec.target" ];
  +        plymouth-poweroff.wantedBy = [ "poweroff.target" ];
  +        plymouth-quit-wait.wantedBy = [ "multi-user.target" ];
  +        plymouth-quit.wantedBy = [ "multi-user.target" ];
  +        plymouth-read-write.wantedBy = [ "sysinit.target" ];
  +        plymouth-reboot.wantedBy = [ "reboot.target" ];
  +        plymouth-start.wantedBy = [ "initrd-switch-root.target" "sysinit.target" ];
  +        plymouth-switch-root-initramfs.wantedBy = [ "halt.target" "kexec.target" "plymouth-switch-root-initramfs.service" "poweroff.target" "reboot.target" ];
  +        plymouth-switch-root.wantedBy = [ "initrd-switch-root.target" ];
  +      };
  +    };
  +
  +    # Insert required udev rules. We take stage 2 systemd because the udev
  +    # rules are only generated when building with logind.
  +    boot.initrd.services.udev.packages = [ (pkgs.runCommand "initrd-plymouth-udev-rules" {} ''
  +      mkdir -p $out/etc/udev/rules.d
  +      cp ${config.systemd.package.out}/lib/udev/rules.d/{70-uaccess,71-seat}.rules $out/etc/udev/rules.d
  +      sed -i '/loginctl/d' $out/etc/udev/rules.d/71-seat.rules
  +    '') ];
  +
  +    boot.initrd.extraUtilsCommands = lib.mkIf (!config.boot.initrd.systemd.enable) ''
         copy_bin_and_libs ${plymouth}/bin/plymouth
         copy_bin_and_libs ${plymouth}/bin/plymouthd
   
  
positive.code: 
  let
  
    inherit (pkgs) plymouth nixos-icons;
  
    cfg = config.boot.plymouth;
    opt = options.boot.plymouth;
  
negative.code:       EOF
      '';
  
      boot.initrd.extraUtilsCommandsTest = mkIf (!config.boot.initrd.enable) ''
        $out/bin/plymouthd --help >/dev/null
        $out/bin/plymouth --help >/dev/null
      '';
  
      boot.initrd.extraUdevRulesCommands = mkIf (!config.boot.initrd.enable) ''
        cp ${config.systemd.package}/lib/udev/rules.d/{70-uaccess,71-seat}.rules $out
        sed -i '/loginctl/d' $out/71-seat.rules
      '';
  
      # We use `mkAfter` to ensure that LUKS password prompt would be shown earlier than the splash screen.
      boot.initrd.preLVMCommands = mkIf (!config.boot.initrd.enable) (mkAfter ''
        mkdir -p /etc/plymouth
        mkdir -p /run/plymouth
        ln -s ${configFile} /etc/plymouth/plymouthd.conf
  