#!/bin/sh
PREREQ=""
prereqs() {
    echo "$PREREQ";
}
case $1 in
    prereqs)
        prereqs;
        exit 0
         ;;
esac

. /usr/share/initramfs-tools/hook-functions

# GSP-Firmware
if [ -d /usr/lib/firmware/nvidia ]; then
    for fw_dir in /usr/lib/firmware/nvidia/[0-9]*; do
        if [ -d "$fw_dir" ]; then
            version_name=$(basename "$fw_dir")
            mkdir -p "${DESTDIR}/usr/lib/firmware/nvidia/${version_name}"
            cp -r "$fw_dir"/* "${DESTDIR}/usr/lib/firmware/nvidia/${version_name}/" 2>/dev/null || true
        fi
    done
fi

# Module
TARGET_KVER=$(basename "$(ls -d ${DESTDIR}/lib/modules/[0-9]* 2>/dev/null | head -n 1)")

if [ -n "$TARGET_KVER" ]; then
    MOD_TARGET="${DESTDIR}/lib/modules/${TARGET_KVER}/updates/dkms"
    mkdir -p "$MOD_TARGET"

    SRC_MOD_DIR="/lib/modules/${TARGET_KVER}/updates/dkms"
    if [ ! -d "$SRC_MOD_DIR" ]; then
        SRC_MOD_DIR="/lib/modules/$(uname -r)/updates/dkms"
    fi

    for mod_file in "$SRC_MOD_DIR"/nvidia*.ko*; do
        if [ -f "$mod_file" ]; then
            cp "$mod_file" "$MOD_TARGET/"
        fi
    done

    for f in modules.order modules.builtin modules.builtin.modinfo; do
        if [ -f "/lib/modules/${TARGET_KVER}/$f" ]; then
            cp "/lib/modules/${TARGET_KVER}/$f" "${DESTDIR}/lib/modules/${TARGET_KVER}/"
        fi
    done

    if command -v depmod >/dev/null 2>&1; then
        depmod -b "${DESTDIR}" "${TARGET_KVER}"
    fi
fi
