{ pkgs, config, ... }:
{
  environment.systemPackages = with pkgs; [
    grub2_efi
  ];
 
  system.activationScripts = {
    # This, has to be the LAST GRUB script to run.
    # The reason is that a standalone GRUB image takes with it
    # the configuration too, apparently.
    # "90-generate-standalone-grub" = {
    #   text = ''
    #     if [ "$NIXOS_ACTION" = "switch" ] || [ "$NIXOS_ACTION" = "boot" ]; then
    #       echo "Generating standalone GRUB EFI entry..."
 
    #       ESP="${config.boot.loader.efi.efiSysMountPoint}"
    #       OUT_DIR="$ESP/EFI/NixOS-boot"
    #       FALLBACK_DIR="$ESP/EFI/BOOT"
    #       mkdir -p "$OUT_DIR" "$FALLBACK_DIR"
 
    #       OUT="$OUT_DIR/grubx64.efi"
    #       FALLBACK="$FALLBACK_DIR/BOOTX64.EFI"
 
    #       # GPT-5 told me to add all those modules, idk.
    #       ${pkgs.grub2_efi}/bin/grub-mkstandalone -O x86_64-efi -o "$OUT" \
    #         "boot/grub/grub.cfg=${pkgs.writeText "grub-standalone-template.cfg" ''
    #           search --file --no-floppy --set=esp /EFI/NixOS-boot/grubx64.efi
    #           set prefix=($esp)/grub
    #           if [ -f ($esp)/grub/grubenv ]; then
    #             load_env ($esp)/grub/grubenv
    #           fi
    #           if [ -f ($esp)/grub/grub.cfg ]; then
    #             configfile ($esp)/grub/grub.cfg
    #           else
    #             echo "Error: ($esp)/grub/grub.cfg not found."
    #             sleep 5
    #           fi
    #           ''}" \
    #         --modules="part_gpt part_msdos fat normal search search_fs_uuid search_label configfile linux gzio efi_gop efi_uga all_video gfxterm gfxmenu png jpeg tga font" \
    #         --disable-shim-lock
 
    #       # It's so stupid but otherwise it won't boot:
    #       # https://wejn.org/2021/09/fixing-grub-verification-requested-nobody-cares/
    #       ${pkgs.gnused}/bin/sed -i 's/SecureBoot/SecureB00t/' "$OUT"
 
    #       cp -f "$OUT" "$FALLBACK"
    #     fi
    #   '';
    # };
    "99-sign-all" = {
      text = ''
        if [ "$NIXOS_ACTION" = "switch" ] || [ "$NIXOS_ACTION" = "boot" ]; then
          echo "Signing all EFI binaries with sbctl..."
          
          # 1. 파일이 존재하는지 먼저 확인하고, 
          # 2. 이미 등록되어 있다면 sign-all로 한 번에 처리하거나,
          # 3. 개별 파일에 대해 에러가 나도 스크립트가 중단되지 않도록 || true를 붙입니다.

          # 주요 바이너리들을 DB에 등록 (이미 등록되어 있으면 sbctl이 알아서 스킵하거나 에러를 낼 텐데, 그걸 무시합니다)
          ${pkgs.sbctl}/bin/sbctl sign -s /boot/EFI/NixOS-boot/grubx64.efi || true
          ${pkgs.sbctl}/bin/sbctl sign -s /boot/EFI/BOOT/BOOTX64.EFI || true
          
          # Windows 부트로더 등 다른 파일들도 필요한 경우 추가
          if [ -f /boot/EFI/Microsoft/Boot/bootmgfw.efi ]; then
            ${pkgs.sbctl}/bin/sbctl sign -s /boot/EFI/Microsoft/Boot/bootmgfw.efi || true
          fi

          # 4. 마지막으로 전체 서명 수행
          ${pkgs.sbctl}/bin/sbctl sign-all || echo "Some files failed to sign, but continuing..."
        fi
      '';
    };
  };
}
