blob: 02495c8569f9929e5eef52e36c9b8c60cde83344 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit linux-info shell-completion 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/${PN}/archive/refs/tags/v${PV/_p/-}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/${PN}-${PV/_p/-}"
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
}
|