#!/usr/bin/env bash

# Architecture Check
check_v3="$(/lib/ld-linux-x86-64.so.2 --help | grep 'x86-64-v3 (' | awk '{print $1}')"
check_v4="$(/lib/ld-linux-x86-64.so.2 --help | grep 'x86-64-v4 (' | awk '{print $1}')"

is_zen45() {
    local family="$(grep -Po 'cpu family\s+:\s+\K([0-9]+)' /proc/cpuinfo | head -n1)"
    local model="$(grep -Po 'model\s+:\s+\K([0-9]+)' /proc/cpuinfo | head -n1)"

    case "$family" in
        $((0x19))) # Zen 4
            if ((model <= 0x0f)); then
                return 1
            elif ((model >= 0x10 && model <= 0x1f)) ||
                ((model >= 0x60 && model <= 0xaf)); then
                return 0
            elif grep -q -w "avx512f" /proc/cpuinfo; then
                return 0
            fi
            ;;
        $((0x1a))) # Zen 5+
            return 0
            ;;
    esac

    return 1
}

if is_zen45; then
  sed -i '/^\[cachyos\]$/i \
[cachyos-znver4] \
Include = /etc/pacman.d/cachyos-v4-mirrorlist \
\
[cachyos-core-znver4] \
Include = /etc/pacman.d/cachyos-v4-mirrorlist \
\
[cachyos-extra-znver4] \
Include = /etc/pacman.d/cachyos-v4-mirrorlist\n' "$1"

  echo "znver4 or znver5 is supported (but we only have znver4 available)"
elif [ "$check_v4" == "x86-64-v4" ]; then
  sed -i '/^\[cachyos\]$/i \
[cachyos-v4] \
Include = /etc/pacman.d/cachyos-v4-mirrorlist \
\
[cachyos-extra-v4] \
Include = /etc/pacman.d/cachyos-v4-mirrorlist \
\
[cachyos-core-v4] \
Include = /etc/pacman.d/cachyos-v4-mirrorlist\n' "$1"

  echo "x86-64-v4 is supported"
elif [ "$check_v3" == "x86-64-v3" ]; then
  sed -i '/^\[cachyos\]$/i \
[cachyos-v3] \
Include = /etc/pacman.d/cachyos-v3-mirrorlist \
\
[cachyos-extra-v3] \
Include = /etc/pacman.d/cachyos-v3-mirrorlist \
\
[cachyos-core-v3] \
Include = /etc/pacman.d/cachyos-v3-mirrorlist\n' "$1"

  echo "x86-64-v3 is supported"
fi
