maintainer="Joakim Hulthe " pkgname=mullvad-vpn-daemon pkgver=2026.2_beta1 pkgrel=0 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.pre-upgrade $pkgname.pre-deinstall $pkgname-systemd.post-install $pkgname-systemd.post-upgrade $pkgname-systemd.pre-deinstall " subpackages=" $pkgname-systemd $pkgname-suid " source=" 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//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 -D "$_cargo_release_dir/mullvad" \ "$pkgdir/usr/bin/mullvad" install -m755 -D "$_cargo_release_dir/mullvad-daemon" \ "$pkgdir/usr/bin/mullvad-daemon" install -m755 -D "$_cargo_release_dir/mullvad-problem-report" \ "$pkgdir/usr/bin/mullvad-problem-report" install -m755 -D "$_cargo_release_dir/mullvad-setup" \ "$pkgdir/usr/bin/mullvad-setup" # TODO: Bundle a relay list. # We can't generate one at build time since that would break build reproducibility. # Once mullvad starts checking a relay list into their release branches, we can bundle that. #install -m644 -D "$builddir//relays.json" \ # "$pkgdir/usr/share/mullvad-vpn/relays.json" # TODO: Copy relay list into /var/cache/ in post-upgrade/post-install } systemd() { pkgdesc="systemd service files for Mullvad VPN" depends="$pkgname=$pkgver-r$pkgrel" install -m755 -D "$builddir/dist-assets/linux/mullvad-daemon.service" \ "$subpkgdir/usr/lib/systemd/system/mullvad-daemon.service" install -m755 -D "$builddir/dist-assets/linux/mullvad-early-boot-blocking.service" \ "$subpkgdir/usr/lib/systemd/system/mullvad-early-boot-blocking.service" } suid() { pkgdesc="mullvad-exclude cli for split tunneling" depends="$pkgname=$pkgver-r$pkgrel" install -m4755 -D "$_cargo_release_dir/mullvad-exclude" \ "$subpkgdir/usr/bin/mullvad-exclude" } sha512sums=" 9af0c263f0e5985d7842099f50a5070da0b23691f08ffe57c3b6d239d2c1c9acea89c07890f31d89bd75448a2dd1fd3c878b85be458baba0bcd90760e714b032 2026.2-beta1.tar.gz "