maintainer="Joakim Hulthe <joakim@hulthe.net>"
pkgname=mullvad-vpn-daemon
pkgver=2026.3
pkgrel=1
pkgdesc="Mullvad VPN client (daemon and CLI)"
url="https://mullvad.net/"
# Mullvad depends on old versions of the `nix` library
# which are broken on on loongarch64 and s390x
arch="all !loongarch64 !s390x"
license="GPL-3.0-or-later"
makedepends="
	cargo-auditable
	git
	protobuf-dev
	dbus-dev
	libmnl-dev
	libnftnl-dev
"
install="
	$pkgname.post-install
	$pkgname.post-upgrade
	$pkgname.pre-upgrade
	$pkgname-systemd.post-install
	$pkgname-systemd.post-upgrade
"
subpackages="
	$pkgname-systemd
	$pkgname-suid
"
source="
	$pkgname-$pkgver.tar.gz::https://github.com/mullvad/mullvadvpn-app/archive/refs/tags/${pkgver//_/-}.tar.gz
"
builddir="$srcdir/mullvadvpn-app-${pkgver//_/-}/"
options="net suid"

_cargo_target_dir="${CARGO_TARGET_DIR:-$builddir/target}"
_cargo_release_dir="$_cargo_target_dir/$CHOST/release"

prepare() {
	default_prepare

	cargo fetch --target "$CHOST" --locked
}

build() {
	# Specify `--target` so that build artifacts will be in target/<target>/release
	# This avoids clashes with host system when building in a container.

	# Compile all binaries
	cargo auditable build --release --frozen \
		--target "$CHOST" \
		-p mullvad-cli \
		-p mullvad-daemon \
		-p mullvad-exclude \
		-p mullvad-problem-report \
		-p mullvad-setup
}

check() {
	cargo test --target "$CHOST" --frozen
}

package() {
	install -m755 -Dt "$pkgdir/usr/bin/" \
		"$_cargo_release_dir/mullvad" \
		"$_cargo_release_dir/mullvad-daemon" \
		"$_cargo_release_dir/mullvad-problem-report" \
		"$_cargo_release_dir/mullvad-setup"

	# Bundle the relay list.
	install -m644 -D "$builddir/dist-assets/relays/relays.json" \
		"$pkgdir/usr/share/mullvad-vpn/relays.json"

	# Files in /usr/lib/systemd/ are automatically put in systemd subpackage
	install -m755 -Dt "$pkgdir/usr/lib/systemd/system/" \
		"$builddir/dist-assets/linux/mullvad-daemon.service" \
		"$builddir/dist-assets/linux/mullvad-early-boot-blocking.service"
}

suid() {
	pkgdesc="mullvad-exclude cli for split tunneling"
	depends="$pkgname=$pkgver-r$pkgrel"

	install -m4755 -Dt "$subpkgdir/usr/bin/" \
		"$_cargo_release_dir/mullvad-exclude"
}

sha512sums="
e5587233ae7a82960022d50431d83eb49d0bca8c0b87593d6040b216d2106e0f0cafae50652d1d8b6db77dd99cd93e810040ef51b7fa0145e8d7df49264c920c  mullvad-vpn-daemon-2026.3.tar.gz
"
