From 3c9627c22d33be10488828c8c26369388b8e6e1b Mon Sep 17 00:00:00 2001 From: Julien Moutinho Date: Tue, 24 Feb 2026 14:27:59 +0100 Subject: [PATCH 1/3] riseup-vpn: workaround build failures Fixes https://github.com/NixOS/nixpkgs/issues/493601 --- pkgs/tools/networking/bitmask-vpn/default.nix | 13 +++++++++++++ pkgs/tools/networking/bitmask-vpn/fix_paths.patch | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/pkgs/tools/networking/bitmask-vpn/default.nix b/pkgs/tools/networking/bitmask-vpn/default.nix index 4242ac59a666..c2155696a775 100644 --- a/pkgs/tools/networking/bitmask-vpn/default.nix +++ b/pkgs/tools/networking/bitmask-vpn/default.nix @@ -125,6 +125,19 @@ buildGoModule rec { ] ++ lib.optionals stdenv.hostPlatform.isLinux [ qtwayland ]; + # Workaround qmake looking for lrelease in wrong package + # Issue: https://github.com/NixOS/nixpkgs/issues/214765 + qmakeFlags = [ + "QT_TOOL.lrelease.binary=${lib.getDev qttools}/bin/lrelease" + ]; + + preConfigure = '' + # Workaround QMAKE being set by qtbase-setup-hook.sh + # https://github.com/NixOS/nixpkgs/blob/f6ca41c08b059c0836d6868a4e43be346d8e2a7c/pkgs/development/libraries/qt-6/hooks/qtbase-setup-hook.sh#L19 + # to @qttools@/bin/qmake, which does not exist. + unset QMAKE + ''; + # FIXME: building on Darwin currently fails # due to missing debug symbols for Qt, # this should be fixable once darwin.apple_sdk >= 10.13 diff --git a/pkgs/tools/networking/bitmask-vpn/fix_paths.patch b/pkgs/tools/networking/bitmask-vpn/fix_paths.patch index afc444952fbb..87efa3fbaf51 100644 --- a/pkgs/tools/networking/bitmask-vpn/fix_paths.patch +++ b/pkgs/tools/networking/bitmask-vpn/fix_paths.patch @@ -10,4 +10,4 @@ index a858a81..ac43f52 100755 + sed -i 's|@qtbase@/bin/lrelease|@qttools@/bin/lrelease|g' $QTBUILD/Makefile } - function renameOutput { \ No newline at end of file + function renameOutput { From f87b09365091030e6f11761d3601cb87dcf4f305 Mon Sep 17 00:00:00 2001 From: Julien Moutinho Date: Wed, 25 Feb 2026 04:55:45 +0100 Subject: [PATCH 2/3] riseup-vpn: use finalAttrs instead of rec --- pkgs/tools/networking/bitmask-vpn/default.nix | 86 +++++++++---------- 1 file changed, 41 insertions(+), 45 deletions(-) diff --git a/pkgs/tools/networking/bitmask-vpn/default.nix b/pkgs/tools/networking/bitmask-vpn/default.nix index c2155696a775..70c52da296f9 100644 --- a/pkgs/tools/networking/bitmask-vpn/default.nix +++ b/pkgs/tools/networking/bitmask-vpn/default.nix @@ -23,9 +23,10 @@ qtwayland, provider ? "riseup", }: -let - version = "0.24.8"; +buildGoModule (finalAttrs: { + pname = "${provider}-vpn"; + version = "0.24.8"; src = fetchFromGitLab { domain = "0xacab.org"; owner = "leap"; @@ -34,39 +35,6 @@ let leaveDotGit = true; sha256 = "sha256-XUgCVHnTLZXFU+r0s1yuYryWNBJRgQrFlf3g1iRrLWs="; }; - - # bitmask-root is only used on GNU/Linux - # and may one day be replaced by pkg/helper - bitmask-root = stdenv.mkDerivation { - inherit src version; - sourceRoot = "${src.name}/helpers"; - pname = "bitmask-root"; - nativeBuildInputs = [ python3Packages.wrapPython ]; - postPatch = '' - substituteInPlace bitmask-root \ - --replace 'swhich("ip")' '"${iproute2}/bin/ip"' \ - --replace 'swhich("iptables")' '"${iptables}/bin/iptables"' \ - --replace 'swhich("ip6tables")' '"${iptables}/bin/ip6tables"' \ - --replace 'swhich("sysctl")' '"${procps}/bin/sysctl"' \ - --replace /usr/sbin/openvpn ${openvpn}/bin/openvpn - substituteInPlace se.leap.bitmask.policy \ - --replace /usr/sbin/bitmask-root $out/bin/bitmask-root - ''; - installPhase = '' - runHook preInstall - - install -m 755 -D -t $out/bin bitmask-root - install -m 444 -D -t $out/share/polkit-1/actions se.leap.bitmask.policy - wrapPythonPrograms - - runHook postInstall - ''; - }; -in - -buildGoModule rec { - inherit src version; - pname = "${provider}-vpn"; vendorHash = null; patches = [ @@ -90,7 +58,7 @@ buildGoModule rec { --replace "provider = bitmask" "provider = ${provider}" substituteInPlace branding/templates/debian/app.desktop-template \ - --replace "Icon=icon" "Icon=${pname}" + --replace "Icon=icon" "Icon=${finalAttrs.pname}" patchShebangs gui/build.sh wrapPythonProgramsIn branding/scripts @@ -100,7 +68,7 @@ buildGoModule rec { --replace /usr/sbin/openvpn ${openvpn}/bin/openvpn substituteInPlace pkg/launcher/launcher_linux.go \ --replace /usr/sbin/openvpn ${openvpn}/bin/openvpn \ - --replace /usr/sbin/bitmask-root ${bitmask-root}/bin/bitmask-root \ + --replace /usr/sbin/bitmask-root ${finalAttrs.passthru.bitmask-root}/bin/bitmask-root \ --replace /usr/bin/lxpolkit /run/wrappers/bin/polkit-agent-helper-1 \ --replace '"polkit-gnome-authentication-agent-1",' '"polkit-gnome-authentication-agent-1","polkitd",' ''; @@ -162,22 +130,50 @@ buildGoModule rec { ''; postInstall = '' - install -m 755 -D -t $out/bin build/qt/release/${pname} + install -m 755 -D -t $out/bin build/qt/release/${finalAttrs.pname} - VERSION=${version} VENDOR_PATH=providers branding/scripts/generate-debian branding/templates/debian/data.json + VERSION=${finalAttrs.version} VENDOR_PATH=providers branding/scripts/generate-debian branding/templates/debian/data.json (cd branding/templates/debian && ${python3Packages.python}/bin/python3 generate.py) - install -m 444 -D branding/templates/debian/app.desktop $out/share/applications/${pname}.desktop - install -m 444 -D providers/${provider}/assets/icon.svg $out/share/icons/hicolor/scalable/apps/${pname}.svg + install -m 444 -D branding/templates/debian/app.desktop $out/share/applications/${finalAttrs.pname}.desktop + install -m 444 -D providers/${provider}/assets/icon.svg $out/share/icons/hicolor/scalable/apps/${finalAttrs.pname}.svg '' + lib.optionalString stdenv.hostPlatform.isLinux '' - install -m 444 -D -t $out/share/polkit-1/actions ${bitmask-root}/share/polkit-1/actions/se.leap.bitmask.policy + install -m 444 -D -t $out/share/polkit-1/actions ${finalAttrs.passthru.bitmask-root}/share/polkit-1/actions/se.leap.bitmask.policy ''; # Some tests need access to the Internet: # Post "https://api.black.riseup.net/3/cert": dial tcp: lookup api.black.riseup.net on [::1]:53: read udp [::1]:56553->[::1]:53: read: connection refused doCheck = false; - passthru = { inherit bitmask-root; }; + passthru = { + # bitmask-root is only used on GNU/Linux + # and may one day be replaced by pkg/helper + bitmask-root = stdenv.mkDerivation { + inherit (finalAttrs) src version; + sourceRoot = "${finalAttrs.src.name}/helpers"; + pname = "bitmask-root"; + nativeBuildInputs = [ python3Packages.wrapPython ]; + postPatch = '' + substituteInPlace bitmask-root \ + --replace 'swhich("ip")' '"${iproute2}/bin/ip"' \ + --replace 'swhich("iptables")' '"${iptables}/bin/iptables"' \ + --replace 'swhich("ip6tables")' '"${iptables}/bin/ip6tables"' \ + --replace 'swhich("sysctl")' '"${procps}/bin/sysctl"' \ + --replace /usr/sbin/openvpn ${openvpn}/bin/openvpn + substituteInPlace se.leap.bitmask.policy \ + --replace /usr/sbin/bitmask-root $out/bin/bitmask-root + ''; + installPhase = '' + runHook preInstall + + install -m 755 -D -t $out/bin bitmask-root + install -m 444 -D -t $out/share/polkit-1/actions se.leap.bitmask.policy + wrapPythonPrograms + + runHook postInstall + ''; + }; + }; meta = { description = "Generic VPN client by LEAP"; @@ -188,7 +184,7 @@ buildGoModule rec { a variety of trusted service provider all from one app. Current providers include Riseup Networks and The Calyx Institute, where the former is default. - The ${pname} executable should appear + The ${finalAttrs.pname} executable should appear in your desktop manager's XDG menu or could be launch in a terminal to get an execution log. A new icon should then appear in your systray to control the VPN and configure some options. @@ -199,4 +195,4 @@ buildGoModule rec { # darwin requires apple_sdk >= 10.13 platforms = lib.platforms.linux; }; -} +}) From 7cd3dfd84889219c04758a987cf70d605e9ea6b9 Mon Sep 17 00:00:00 2001 From: Julien Moutinho Date: Wed, 25 Feb 2026 05:20:25 +0100 Subject: [PATCH 3/3] maintainers: update julm --- maintainers/maintainer-list.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 70b6c5dfd56a..156bf579f2d9 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -13318,10 +13318,12 @@ name = "Julius Rickert"; }; julm = { - email = "julm+nixpkgs@sourcephile.fr"; + email = "julm@sourcephile.fr"; + matrix = "@julm:matrix.org"; github = "ju1m"; githubId = 21160136; name = "Julien Moutinho"; + keys = [ { fingerprint = "4FE4 6703 4C11 017B 429B AC53 A58C D81C 3863 926F"; } ]; }; Julow = { email = "jules@j3s.fr";