commit:     a945e1822f796bafa3df40dfead1c2928965cae5
Author:     Pavel Sobolev <contact <AT> paveloom <DOT> dev>
AuthorDate: Fri Oct 24 14:45:49 2025 +0000
Commit:     Pavel Sobolev <contact <AT> paveloom <DOT> dev>
CommitDate: Fri Oct 24 16:32:06 2025 +0000
URL:        https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=a945e182

net-vpn/amneziawg-tools: new package, add 1.0.20250903

Signed-off-by: Pavel Sobolev <contact <AT> paveloom.dev>

 net-vpn/amneziawg-tools/Manifest                   |  1 +
 .../amneziawg-tools-1.0.20250903.ebuild            | 88 ++++++++++++++++++++++
 net-vpn/amneziawg-tools/files/awg-quick.init       | 38 ++++++++++
 net-vpn/amneziawg-tools/metadata.xml               | 15 ++++
 4 files changed, 142 insertions(+)

diff --git a/net-vpn/amneziawg-tools/Manifest b/net-vpn/amneziawg-tools/Manifest
new file mode 100644
index 0000000000..2d01fa9e69
--- /dev/null
+++ b/net-vpn/amneziawg-tools/Manifest
@@ -0,0 +1 @@
+DIST amneziawg-tools-1.0.20250903.tar.gz 160214 BLAKE2B 
ec32969cf32b0c75179a3c53702997963c176e61958d4cc166706d8439ae736e191be488e7dc93e3c2f9d8657e67deee674359b15e19ca473ddfc19f5fe3767d
 SHA512 
a69f3911b18cd5abb73ba1f695802c87205ed6be10be035a5d06ca266c5de3c0b88c0aeac7670bc302112288f1b58937608e7b2835a22d2b4fc45a8f63b218ad

diff --git a/net-vpn/amneziawg-tools/amneziawg-tools-1.0.20250903.ebuild 
b/net-vpn/amneziawg-tools/amneziawg-tools-1.0.20250903.ebuild
new file mode 100644
index 0000000000..85c4f8cdcb
--- /dev/null
+++ b/net-vpn/amneziawg-tools/amneziawg-tools-1.0.20250903.ebuild
@@ -0,0 +1,88 @@
+# 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 ~arm ~arm64 ~x86"
+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
+}

diff --git a/net-vpn/amneziawg-tools/files/awg-quick.init 
b/net-vpn/amneziawg-tools/files/awg-quick.init
new file mode 100644
index 0000000000..792c131f11
--- /dev/null
+++ b/net-vpn/amneziawg-tools/files/awg-quick.init
@@ -0,0 +1,38 @@
+#!/sbin/openrc-run
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+name="AmneziaWG"
+description="AmneziaWG via awg-quick(8)"
+
+depend() {
+       need net
+       use dns
+}
+
+CONF="${SVCNAME#*.}"
+
+checkconfig() {
+       if [ "$CONF" = "$SVCNAME" ]; then
+               eerror "You cannot call this init script directly. You must 
create a symbolic link to it with the configuration name:"
+               eerror "    ln -s /etc/init.d/awg-quick 
/etc/init.d/awg-quick.vpn0"
+               eerror "And then call it instead:"
+               eerror "    /etc/init.d/awg-quick.vpn0 start"
+               return 1
+       fi
+       return 0
+}
+
+start() {
+       checkconfig || return 1
+       ebegin "Starting $description for $CONF"
+       awg-quick up "$CONF"
+       eend $? "Failed to start $description for $CONF"
+}
+
+stop() {
+       checkconfig || return 1
+       ebegin "Stopping $description for $CONF"
+       awg-quick down "$CONF"
+       eend $? "Failed to stop $description for $CONF"
+}

diff --git a/net-vpn/amneziawg-tools/metadata.xml 
b/net-vpn/amneziawg-tools/metadata.xml
new file mode 100644
index 0000000000..ad302208d9
--- /dev/null
+++ b/net-vpn/amneziawg-tools/metadata.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd";>
+<pkgmetadata>
+  <maintainer type="person">
+    <name>Pavel Sobolev</name>
+    <email>[email protected]</email>
+  </maintainer>
+  <use>
+    <flag name="awg-quick">Install the awg-quick(8) helper tool. Most users 
want to use this.</flag>
+  </use>
+  <upstream>
+    <bugs-to>https://github.com/amnezia-vpn/amneziawg-tools/issues</bugs-to>
+    <remote-id type="github">amnezia-vpn/amneziawg-tools</remote-id>
+  </upstream>
+</pkgmetadata>

Reply via email to