#!/usr/bin/env bash
# shellcheck disable=SC2034
# This file contains a set of device profiles for openwrtbuilder
# bash doesn't like nested arrays so we use strings instead

# Packages to install for all profiles
default_packages="\
	luci \
	luci-ssl \
	nano \
	htop \
	diffutils \
	tar \
	iperf3 \
	bash \
	rsync \
	luci-app-statistics \
	luci-app-attendedsysupgrade \
	collectd-mod-sensors \
	collectd-mod-thermal \
	collectd-mod-conntrack \
	collectd-mod-cpu"

#################
# Current devices
#################

# Main router
declare -Ag r4s
r4s['device']="friendlyarm_nanopi-r4s"
r4s['target']="rockchip/armv8"
r4s['filesystem']="ext4"
r4s['packages']="\
	$default_packages \
	luci-app-wireguard \
	luci-proto-wireguard \
	luci-app-ddns \
	luci-app-sqm \
	irqbalance \
	collectd-mod-df \
	usbutils \
	kmod-usb-storage \
	kmod-usb-storage-uas \
	kmod-fs-btrfs \
	btrfs-progs \
	block-mount \
	smcroute \
	avahi-daemon \
	curl \
	ethtool \
	ca-bundle \
	-libustream-wolfssl"
# The following are source mode only
r4s['config']="\
	CONFIG_KERNEL_BTRFS_FS_POSIX_ACL=y \
	CONFIG_BTRFS_PROGS_ZSTD=y \
	CONFIG_TARGET_ROOTFS_PARTSIZE=512 \
	CONFIG_TARGET_KERNEL_PARTSIZE=32"
r4s['files']="\
	/mnt/backup"

# WDS mesh nodes
declare -Ag ax6000
ax6000['device']="xiaomi_redmi-router-ax6000-stock"
ax6000['target']="mediatek/filogic"
ax6000['release']="snapshot"
ax6000['filesystem']="squashfs"
ax6000['packages']="\
	$default_packages \
	-dnsmasq \
	-odhcpd-ipv6only \
	-nftables \
	-firewall4"
	# for 802.11s
	# mesh11sd \
	# -wpad-basic-mbedtls \
	# wpad-mesh-mbedtls"

# WDS mesh nodes
declare -Ag ax6000_ap
ax6000_ap['device']="xiaomi_redmi-router-ax6000-stock"
ax6000_ap['target']="mediatek/filogic"
ax6000_ap['release']="snapshot"
ax6000_ap['filesystem']="squashfs"
ax6000_ap['packages']="\
	$default_packages \
	avahi-daemon \
	smcroute \
	ca-bundle"

# For converted uboots
# declare -Ag ax6000_uboot
# ax6000_uboot['device']="xiaomi_redmi-router-ax6000-ubootmod"
# ax6000_uboot['target']="mediatek/filogic"
# ax6000_uboot['release']="snapshot"
# ax6000_uboot['filesystem']="squashfs"
# ax6000_uboot['packages']="\
# 	$default_packages \
# 	-dnsmasq \
# 	-odhcpd-ipv6only \
# 	-nftables \
# 	-firewall4 \
# 	-kmod-nft-offload \
# 	collectd-mod-iwinfo"

# Remote NAS
declare -Ag n5100
n5100['device']="generic"
n5100['target']="x86/64"
n5100['filesystem']="squashfs"
n5100['packages']="\
	$default_packages \
	luci-app-wireguard \
	luci-proto-wireguard \
	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 \
	curl \
	ethtool \
	ca-bundle \
	smartmontools \
	intel-microcode \
	lm-sensors \
	samba4-server \
	luci-app-samba4 \
	tailscale \
	shadow-useradd"
# The following are source mode only
n5100['config']="\
	CONFIG_KERNEL_BTRFS_FS_POSIX_ACL=y \
	CONFIG_BTRFS_PROGS_ZSTD=y \
	CONFIG_TARGET_ROOTFS_PARTSIZE=512 \
	CONFIG_TARGET_KERNEL_PARTSIZE=32"
n5100['files']="\
	/mnt/backup"

# Dusty drawer
declare -Ag rpi4
rpi4['device']="rpi-4"
rpi4['target']="bcm27xx/bcm2711"
rpi4['filesystem']="ext4"
rpi4['packages']="\
	$default_packages \
	kmod-usb-net-asix-ax88179 \
	kmod-usb-net-rtl8152 \
	luci-app-upnp \
	luci-app-wireguard \
	luci-app-pbr \
	-dnsmasq \
	dnsmasq-full \
	luci-app-ddns \
	luci-app-sqm"


#################
# Stock builds
#################
declare -Ag r4s_stock
r4s_stock['device']="friendlyarm_nanopi-r4s"
r4s_stock['target']="rockchip/armv8"
r4s_stock['filesystem']="ext4"
r4s_stock['release']="snapshot"


#################
# Old devices
#################
declare -Ag totolink
totolink['device']="totolink_x5000r"
totolink['target']="ramips/mt7621"
totolink['filesystem']="squashfs"
totolink['packages']="\
	$default_packages \
	-dnsmasq \
	-odhcpd-ipv6only \
	-nftables \
	-firewall4 \
	-kmod-nft-offload \
	collectd-mod-iwinfo"

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

declare -Ag linksys
linksys['device']="linksys_ea8300"
linksys['target']="ipq40xx/generic"
linksys['filesystem']="squashfs"
linksys['packages']="\
	$default_packages \
	-dnsmasq \
	-odhcpd \
	-iptables"

declare -Ag r2s
r2s['device']="friendlyarm_nanopi-r2s"
r2s['target']="rockchip/armv8"
r2s['filesystem']="ext4"
r2s['packages']="\
	$default_packages \
	luci-app-upnp \
	luci-app-wireguard \
	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
r2s_tr['device']="friendlyarm_nanopi-r2s"
r2s_tr['target']="rockchip/armv8"
r2s_tr['filesystem']="ext4"
r2s_tr['packages']="\
	$default_packages \
	luci-app-upnp \
	luci-app-wireguard \
	luci-app-pbr \
	luci-app-ddns \
	luci-app-statistics \
	collectd-mod-sensors \
	collectd-mod-thermal \
	collectd-mod-conntrack \
	curl \
	ethtool \
	travelmate"