include $(TOPDIR)/rules.mk PKG_NAME:=nikki PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/MetaCubeX/mihomo.git PKG_SOURCE_DATE:=2025-04-18 PKG_SOURCE_VERSION:=619c9dc0c633c12ac46e38b7b423e7c01f06197f PKG_MIRROR_HASH:=907be1b4f33e71bd9aa36f0cd76aefbce39a1b346f80ff09730c47fa80be4658 PKG_LICENSE:=GPL3.0+ PKG_MAINTAINER:=Joseph Mory PKG_BUILD_DEPENDS:=golang/host PKG_BUILD_PARALLEL:=1 PKG_BUILD_FLAGS:=no-mips16 PKG_BUILD_VERSION:=alpha-619c9dc PKG_BUILD_TIME:=$(shell date -u -Iseconds) GO_PKG:=github.com/metacubex/mihomo GO_PKG_LDFLAGS_X:=$(GO_PKG)/constant.Version=$(PKG_BUILD_VERSION) $(GO_PKG)/constant.BuildTime=$(PKG_BUILD_TIME) GO_PKG_TAGS:=with_gvisor include $(INCLUDE_DIR)/package.mk include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk define Package/nikki SECTION:=net CATEGORY:=Network TITLE:=A rule based proxy in Go. URL:=https://wiki.metacubex.one DEPENDS:=$(GO_ARCH_DEPENDS) +ca-bundle +curl +yq firewall4 +ip-full +kmod-inet-diag +kmod-nft-socket +kmod-nft-tproxy +kmod-tun PROVIDES:=nikki mihomo endef define Package/nikki/description A rule based proxy in Go. endef define Package/nikki/conffiles /etc/config/nikki /etc/nikki/mixin.yaml /etc/nikki/nftables/reserved_ip.nft /etc/nikki/nftables/reserved_ip6.nft endef define Package/nikki/install $(call GoPackage/Package/Install/Bin,$(1)) $(INSTALL_DIR) $(1)/etc/nikki $(INSTALL_DIR) $(1)/etc/nikki/ucode $(INSTALL_DIR) $(1)/etc/nikki/scripts $(INSTALL_DIR) $(1)/etc/nikki/nftables $(INSTALL_DIR) $(1)/etc/nikki/profiles $(INSTALL_DIR) $(1)/etc/nikki/subscriptions $(INSTALL_DIR) $(1)/etc/nikki/run $(INSTALL_DIR) $(1)/etc/nikki/run/providers $(INSTALL_DIR) $(1)/etc/nikki/run/providers/rule $(INSTALL_DIR) $(1)/etc/nikki/run/providers/proxy $(INSTALL_DATA) $(CURDIR)/files/mixin.yaml $(1)/etc/nikki/mixin.yaml $(INSTALL_BIN) $(CURDIR)/files/ucode/include.uc $(1)/etc/nikki/ucode/include.uc $(INSTALL_BIN) $(CURDIR)/files/ucode/mixin.uc $(1)/etc/nikki/ucode/mixin.uc $(INSTALL_BIN) $(CURDIR)/files/ucode/hijack.ut $(1)/etc/nikki/ucode/hijack.ut $(INSTALL_BIN) $(CURDIR)/files/scripts/include.sh $(1)/etc/nikki/scripts/include.sh $(INSTALL_BIN) $(CURDIR)/files/scripts/firewall_include.sh $(1)/etc/nikki/scripts/firewall_include.sh $(INSTALL_BIN) $(CURDIR)/files/scripts/debug.sh $(1)/etc/nikki/scripts/debug.sh $(INSTALL_BIN) $(CURDIR)/files/nftables/reserved_ip.nft $(1)/etc/nikki/nftables/reserved_ip.nft $(INSTALL_BIN) $(CURDIR)/files/nftables/reserved_ip6.nft $(1)/etc/nikki/nftables/reserved_ip6.nft $(INSTALL_BIN) $(CURDIR)/files/nftables/geoip_cn.nft $(1)/etc/nikki/nftables/geoip_cn.nft $(INSTALL_BIN) $(CURDIR)/files/nftables/geoip6_cn.nft $(1)/etc/nikki/nftables/geoip6_cn.nft $(INSTALL_DIR) $(1)/etc/config $(INSTALL_CONF) $(CURDIR)/files/nikki.conf $(1)/etc/config/nikki $(INSTALL_DIR) $(1)/etc/init.d $(INSTALL_BIN) $(CURDIR)/files/nikki.init $(1)/etc/init.d/nikki $(INSTALL_DIR) $(1)/etc/uci-defaults $(INSTALL_BIN) $(CURDIR)/files/uci-defaults/firewall.sh $(1)/etc/uci-defaults/99_firewall_nikki $(INSTALL_BIN) $(CURDIR)/files/uci-defaults/init.sh $(1)/etc/uci-defaults/99_init_nikki $(INSTALL_BIN) $(CURDIR)/files/uci-defaults/migrate.sh $(1)/etc/uci-defaults/99_migrate_nikki $(INSTALL_DIR) $(1)/lib/upgrade/keep.d $(INSTALL_DATA) $(CURDIR)/files/nikki.upgrade $(1)/lib/upgrade/keep.d/nikki endef define Package/nikki/postrm #!/bin/sh if [ -z $${IPKG_INSTROOT} ]; then uci -q batch <<-EOF > /dev/null del firewall.nikki commit firewall EOF fi endef define Build/Prepare $(Build/Prepare/Default) $(RM) -r $(PKG_BUILD_DIR)/rules/logic_test endef $(eval $(call GoBinPackage,nikki)) $(eval $(call BuildPackage,nikki))