#!/usr/bin/env bash
# Device profiles for openwrtbuilder
# shellcheck disable=SC2034

DEFAULT_RELEASE="25.12.3" # overrides default release in openwrtbuilder

# Default packages (precede with "-" to exclude)
default_packages=(
  ca-bundle nano vim htop diffutils tar iperf3 zsh rsync tcpdump ethtool
  openssh-sftp-server 
  luci luci-ssl luci-proto-wireguard luci-app-statistics luci-app-filemanager
  collectd-mod-sensors collectd-mod-thermal collectd-mod-conntrack collectd-mod-cpu
)

# Default kernel configs
default_kconfigs=(
)

# Current devices
declare -Ag r4s=(
  [mode]="source"
  [device]="friendlyarm_nanopi-r4s"
  [target]="rockchip/armv8"
  [filesystem]="ext4"
  [packages]="${default_packages[*]} \
    adblock luci-app-adblock \
    luci-app-sqm \
    collectd-mod-df usbutils kmod-usb-storage kmod-usb-storage-uas \
    kmod-fs-btrfs btrfs-progs block-mount smcroute avahi-daemon \
    ethtool ca-bundle tailscale"
  [kconfigs]="${default_kconfigs[*]} \
    CONFIG_TARGET_ROOTFS_PARTSIZE=512 CONFIG_TARGET_KERNEL_PARTSIZE=32 \
    CONFIG_KERNEL_BTRFS_FS_POSIX_ACL=y CONFIG_BTRFS_PROGS_ZSTD=y"
  # For 24.10 branch (Linux 6.6)
  # [cherrypicks]="https://github.com/wurzerj/openwrt.git:59d6e31 \
  # https://github.com/wurzerj/openwrt.git:bb251b8" # fix inconsistent reboot
)

declare -Ag ax6000=(
  [mode]="imagebuilder"
  [device]="xiaomi_redmi-router-ax6000-stock"
  [target]="mediatek/filogic"
  [filesystem]="squashfs"
  [packages]="${default_packages[*]} \
    tailscale"
)

declare -Ag ax6000_uboot_ap=(
  [mode]="imagebuilder"
  [device]="xiaomi_redmi-router-ax6000-ubootmod"
  [target]="mediatek/filogic"
  [release]="snapshot"
  [filesystem]="squashfs"
  [packages]="${default_packages[*]} \
    -dnsmasq -odhcpd-ipv6only -nftables -firewall4"
)

declare -Ag n5100=(
  [device]="generic"
  [target]="x86/64"
  [filesystem]="squashfs"
  [packages]="${default_packages[*]} \
    luci-app-ddns irqbalance collectd-mod-df \
    usbutils kmod-usb-storage kmod-usb-storage-uas kmod-fs-btrfs \
    btrfs-progs block-mount cryptsetup kmod-crypto-xts smcroute \
    avahi-daemon ethtool ca-bundle smartmontools intel-microcode \
    lm-sensors samba4-server luci-app-samba4 tailscale shadow-useradd"
  [kconfigs]="${default_kconfigs[*]} \
    CONFIG_KERNEL_BTRFS_FS_POSIX_ACL=y CONFIG_BTRFS_PROGS_ZSTD=y \
    CONFIG_TARGET_ROOTFS_PARTSIZE=512 CONFIG_TARGET_KERNEL_PARTSIZE=32"
)

declare -Ag w1700k=(
  [mode]="source"
  [device]="gemtek_w1700k"
  [target]="airoha/an7581"
  [filesystem]="squashfs"
  [release]="snapshot"
  [packages]="${default_packages[*]} \
    luci-app-sqm \
    smcroute avahi-daemon \
    lm-sensors samba4-server luci-app-samba4 shadow-useradd \
    ca-bundle tailscale"
  # [cherrypicks]="\
  #   https://github.com/OpenWRT-fanboy/OpenW1700k.git@lumos:8d449e968cfaa774ab7a219b3a5ab4251b2f9352 \
  #   https://github.com/OpenWRT-fanboy/OpenW1700k.git@lumos:3033241393ef6eb562539c6a3ccb9d3cf1a25d05 \
  #   https://github.com/OpenWRT-fanboy/OpenW1700k.git@lumos:79a21e0986a9efe6de3a07394a71ac15a2107b16 \
  #   https://github.com/OpenWRT-fanboy/OpenW1700k.git@lumos:2f8a1cbf901df0d325dfe112fdfe8013a72c8305 \
  #   https://github.com/OpenWRT-fanboy/OpenW1700k.git@lumos:71b09bc5852797cdbf7cb3b56a7d8fcd9d4ca9db \
  #   https://github.com/OpenWRT-fanboy/OpenW1700k.git@lumos:fe0135f0b7037a9cc1985d5937dd24cb99bfccb1 \
  #   https://github.com/OpenWRT-fanboy/OpenW1700k.git@lumos:cdb937180fb971fe702078f0e0fef63f2fcce337 \
  #   https://github.com/OpenWRT-fanboy/OpenW1700k.git@lumos:6dc847c802b9dc597fc2c64711ca85499f128d1d \
  #   https://github.com/OpenWRT-fanboy/OpenW1700k.git@lumos:b6e6cf911915dd987eecde908a2013419565cff4 \
  #   https://github.com/OpenWRT-fanboy/OpenW1700k.git@lumos:708089948949e66f5234249fc631e0453b58942e \
  #   https://github.com/OpenWRT-fanboy/OpenW1700k.git@lumos:9841a707a577385498591bcfb56b836176325c2f \
  #   https://github.com/OpenWRT-fanboy/OpenW1700k.git@lumos:8446ec6431a3247683a27070d3c69f2789b52c70 \
  #   https://github.com/OpenWRT-fanboy/OpenW1700k.git@lumos:05380e2ef5fb96c171da23453ba32aa349a4b126"
  # [branches]="https://github.com/OpenWRT-fanboy/OpenW1700k.git@minimal"
)

declare -Ag w1700k_ap=(
  [mode]="source"
  [device]="gemtek_w1700k"
  [target]="airoha/an7581"
  [filesystem]="squashfs"
  [release]="snapshot"
  [packages]="${default_packages[*]} \
    -dnsmasq -odhcpd-ipv6only -nftables -firewall4 \
    wpad-openssl libiwinfo-data tailscale bridger switch smp_util \
    kmod-crypto-hw-eip93"
  # [branches]="https://github.com/OpenWRT-fanboy/OpenW1700k.git@minimal"
)

declare -Ag rpi4=(
  [device]="rpi-4"
  [target]="bcm27xx/bcm2711"
  [filesystem]="ext4"
  [packages]="${default_packages[*]} \
    luci-app-upnp luci-app-pbr -dnsmasq dnsmasq-full luci-app-ddns luci-app-sqm \
    kmod-usb-net-asix-ax88179 kmod-usb-net-rtl8152"
)

declare -Ag r4s_stock=(
  [device]="friendlyarm_nanopi-r4s"
  [target]="rockchip/armv8"
  [filesystem]="ext4"
  [release]="snapshot"
)

declare -Ag totolink=(
  [device]="totolink_x5000r"
  [target]="ramips/mt7621"
  [filesystem]="squashfs"
  [packages]="${default_packages[*]} \
    -dnsmasq -odhcpd-ipv6only -nftables -firewall4 \
    -kmod-nft-offload collectd-mod-iwinfo"
)

declare -Ag archer=(
  [device]="tplink_archer-c7-v2"
  [target]="ath79/generic"
  [filesystem]="squashfs"
  [packages]="${default_packages[*]} -dnsmasq -odhcpd -iptables \
    -ath10k-firmware-qca988x-ct ath10k-firmware-qca988x-ct-full-htt"
)

declare -Ag linksys=(
  [device]="linksys_ea8300"
  [target]="ipq40xx/generic"
  [filesystem]="squashfs"
  [packages]="${default_packages[*]} \
    -dnsmasq -odhcpd -iptables"
)

declare -Ag r2s=(
  [device]="friendlyarm_nanopi-r2s"
  [target]="rockchip/armv8"
  [filesystem]="ext4"
  [packages]="${default_packages[*]} \
    luci-app-upnp luci-app-pbr -dnsmasq dnsmasq-full \
    luci-app-ddns luci-app-sqm luci-app-statistics collectd-mod-sensors \
    collectd-mod-thermal collectd-mod-conntrack smcroute curl ethtool"
)

declare -Ag r2s_tr=(
  [device]="friendlyarm_nanopi-r2s"
  [target]="rockchip/armv8"
  [filesystem]="ext4"
  [packages]="${default_packages[*]} \
    luci-app-upnp luci-app-pbr luci-app-ddns \
    luci-app-statistics collectd-mod-sensors collectd-mod-thermal \
    collectd-mod-conntrack curl ethtool travelmate"
)
