# Maintainer: Vladislav Minakov <v@minakov.pro>

pkgname=amneziawg-dkms
pkgdesc="AmneziaWG is a contemporary version of the popular VPN protocol, WireGuard."
url="https://github.com/amnezia-vpn/amneziawg-linux-kernel-module"
arch=('x86_64')
pkgver=1.0.20260210
pkgrel=1
license=('GPLv2')

depends=('dkms' 'wget')

provides=("amneziawg=${pkgver}")

source=(
  "$pkgname-$pkgver.tar.gz::https://github.com/amnezia-vpn/amneziawg-linux-kernel-module/archive/refs/tags/v${pkgver}.tar.gz"
  "blake2s.patch::https://raw.githubusercontent.com/babiulep/my-kernel-patches/refs/heads/main/AMNEZIAWG/blake2s.patch"
)

sha512sums=(
  '705fbbb13e5d2f456fb321942ecd404420c5e54c75fbd28b7fd34583c9d6b0ca3b63e3eb18ddbb49f34354ffa0c042745fe2a0c97946a4dab65b52ebc864d5b5'
  'SKIP'
)

prepare() {
  local _moddir="${srcdir}/amneziawg-linux-kernel-module-${pkgver}"

  cat > "${_moddir}/kernel-tree-scripts/prepare-sources.sh" <<'EOF'
#!/bin/bash -eux
kernel="${1%%[^0-9.]*}"
if [[ "$kernel" =~ .0$ ]]; then kernel="${kernel%.0}"; fi
kernel_major="${1%%[^0-9]*}"
wget "https://cdn.kernel.org/pub/linux/kernel/v${kernel_major}.x/linux-${kernel}.tar.xz" -O- | tar -xvJf - --wildcards linux-${kernel}/drivers/net/wireguard "linux-${kernel}/K*" linux-${kernel}/include/uapi/linux/
ln -sf linux-${kernel} kernel;
EOF

  cat > "${_moddir}/kernel-tree-scripts/cleanup-sources.sh" <<'EOF'
#!/bin/bash
AWG_TEMP_DIR="$(cat /var/lib/amnezia/amneziawg/.tempdir 2>/dev/null)"
PREFIX=${AWG_TEMP_DIR:-/tmp}
WORKDIR="${PREFIX}/amneziawg"
[ -e kernel ] && rm -rf kernel
if [[ -d "${WORKDIR}" ]]; then
rm -rf "${WORKDIR}";
fi
EOF

  chmod +x "${_moddir}/kernel-tree-scripts/prepare-sources.sh" \
           "${_moddir}/kernel-tree-scripts/cleanup-sources.sh"

  mkdir -p "${_moddir}/src/patches"
  cp -f "${srcdir}/blake2s.patch" "${_moddir}/src/patches/blake2s.patch"

  sed -i 's|DKMS_SOURCES :=|DKMS_SOURCES := patches/blake2s.patch |' \
    "${_moddir}/src/Makefile"
  sed -i "s|^WIREGUARD_VERSION = .*|WIREGUARD_VERSION = ${pkgver}|" \
    "${_moddir}/src/Makefile"
  sed -i "s|^PACKAGE_VERSION=.*|PACKAGE_VERSION=\"${pkgver}\"|" \
    "${_moddir}/src/dkms.conf"

  if ! grep -q '^PATCH\[0\]=' "${_moddir}/src/dkms.conf"; then
    printf '\nPATCH[0]="blake2s.patch"\n' >> "${_moddir}/src/dkms.conf"
  fi
}

package() {
  local _moddir="${srcdir}/amneziawg-linux-kernel-module-${pkgver}"
  cd "${_moddir}/src"
  sed -i 's/MODERN_KERNEL_SOURCES_NOT_FOUND_ERROR/KERNEL_SRC_ABSENT_ERR/g' Makefile
  make DESTDIR="${pkgdir}" dkms-install
}
