# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 inherit linux-info bash-completion-r1 systemd toolchain-funcs DESCRIPTION="Required tools for AmneziaWG, such as awg(8) and awg-quick(8)" HOMEPAGE="https://github.com/amnezia-vpn/amneziawg-tools" SRC_URI="https://github.com/amnezia-vpn/amneziawg-tools/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz" LICENSE="GPL-2" SLOT="0" KEYWORDS="~amd64" IUSE="+awg-quick selinux" BDEPEND="virtual/pkgconfig" RDEPEND="${DEPEND} awg-quick? ( || ( net-firewall/nftables net-firewall/iptables ) virtual/resolvconf ) selinux? ( sec-policy/selinux-wireguard ) " awg_quick_optional_config_nob() { CONFIG_CHECK="$CONFIG_CHECK ~$1" declare -g ERROR_$1="CONFIG_$1: This option is required for automatic routing of default routes inside of awg-quick(8), though it is not required for general AmneziaWG usage." } pkg_setup() { if use awg-quick; then awg_quick_optional_config_nob IP_ADVANCED_ROUTER awg_quick_optional_config_nob IP_MULTIPLE_TABLES awg_quick_optional_config_nob IPV6_MULTIPLE_TABLES if has_version net-firewall/nftables; then awg_quick_optional_config_nob NF_TABLES awg_quick_optional_config_nob NF_TABLES_IPV4 awg_quick_optional_config_nob NF_TABLES_IPV6 awg_quick_optional_config_nob NFT_CT awg_quick_optional_config_nob NFT_FIB awg_quick_optional_config_nob NFT_FIB_IPV4 awg_quick_optional_config_nob NFT_FIB_IPV6 awg_quick_optional_config_nob NF_CONNTRACK_MARK elif has_version net-firewall/iptables; then awg_quick_optional_config_nob NETFILTER_XTABLES awg_quick_optional_config_nob NETFILTER_XT_MARK awg_quick_optional_config_nob NETFILTER_XT_CONNMARK awg_quick_optional_config_nob NETFILTER_XT_MATCH_COMMENT awg_quick_optional_config_nob NETFILTER_XT_MATCH_ADDRTYPE awg_quick_optional_config_nob IP6_NF_RAW awg_quick_optional_config_nob IP_NF_RAW awg_quick_optional_config_nob IP6_NF_FILTER awg_quick_optional_config_nob IP_NF_FILTER fi fi get_version if ! has_version net-vpn/amneziawg-modules; then ewarn ewarn "Linux kernel does not have upstream support for AmneziaWG." ewarn "However, the net-vpn/amneziawg-modules ebuild" ewarn "contains a module that should work for your kernel." ewarn "It is highly recommended to install it:" ewarn ewarn " emerge -av net-vpn/amneziawg-modules" ewarn fi linux-info_pkg_setup } src_compile() { emake RUNSTATEDIR="${EPREFIX}/run" -C src CC="$(tc-getCC)" LD="$(tc-getLD)" } src_install() { dodoc README.md dodoc -r contrib emake \ WITH_BASHCOMPLETION=yes \ WITH_SYSTEMDUNITS=yes \ WITH_WGQUICK=$(usex awg-quick) \ DESTDIR="${D}" \ BASHCOMPDIR="$(get_bashcompdir)" \ SYSTEMDUNITDIR="$(systemd_get_systemunitdir)" \ PREFIX="${EPREFIX}/usr" \ -C src install use awg-quick && newinitd "${FILESDIR}/awg-quick.init" awg-quick }