{ config, pkgs, lib, ... }:

let
  nomarchy-plymouth = pkgs.stdenv.mkDerivation {
    pname = "nomarchy-plymouth";
    version = "1.0";

    src = ./plymouth;

    installPhase = ''
      mkdir -p $out/share/plymouth/themes/nomarchy
      cp * $out/share/plymouth/themes/nomarchy/
      # Fix path in the plymouth file to point to the nix store
      sed -i "s|/[a-z]*/share/plymouth/themes/nomarchy|$out/share/plymouth/themes/nomarchy|g" $out/share/plymouth/themes/nomarchy/nomarchy.plymouth
    '';
  };
in
{
  boot.initrd.systemd.enable = lib.mkDefault true;
  boot.initrd.verbose = lib.mkDefault false;
  console.earlySetup = lib.mkDefault true;
  boot.consoleLogLevel = lib.mkDefault 0;
  boot.plymouth = {
    enable = lib.mkDefault true;
    themePackages = lib.mkDefault [ nomarchy-plymouth ];
    theme = lib.mkDefault "nomarchy";
  };

  boot.kernelParams = lib.mkDefault [ "quiet" "splash" "loglevel=3" "rd.systemd.show_status=false" "rd.udev.log_level=3" "udev.log_priority=3" "boot.shell_on_fail" ];
}
