connman-gtk: fix FTBFS with GCC-14 (incompatible pointer types) (#376077)
[NixPkgs.git] / pkgs / by-name / mu / mullvad-vpn / package.nix
blob22a105f17df87dfa769dc2fd7955046bb55a2fde
2   stdenv,
3   lib,
4   fetchurl,
5   dpkg,
6   alsa-lib,
7   atk,
8   cairo,
9   cups,
10   dbus,
11   expat,
12   fontconfig,
13   freetype,
14   gdk-pixbuf,
15   glib,
16   pango,
17   nspr,
18   nss,
19   gtk3,
20   libgbm,
21   libGL,
22   wayland,
23   xorg,
24   autoPatchelfHook,
25   systemd,
26   libnotify,
27   libappindicator,
28   makeWrapper,
29   coreutils,
30   gnugrep,
32   versionCheckHook,
35 let
36   deps = [
37     alsa-lib
38     atk
39     cairo
40     cups
41     dbus
42     expat
43     fontconfig
44     freetype
45     gdk-pixbuf
46     glib
47     pango
48     gtk3
49     libappindicator
50     libnotify
51     libgbm
52     xorg.libX11
53     xorg.libXScrnSaver
54     xorg.libXcomposite
55     xorg.libXcursor
56     xorg.libXdamage
57     xorg.libXext
58     xorg.libXfixes
59     xorg.libXi
60     xorg.libXrandr
61     xorg.libXrender
62     xorg.libXtst
63     xorg.libxcb
64     xorg.libxshmfence
65     nspr
66     nss
67     systemd
68   ];
70   version = "2025.2";
72   selectSystem =
73     attrs:
74     attrs.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
76   platform = selectSystem {
77     x86_64-linux = "amd64";
78     aarch64-linux = "arm64";
79   };
81   hash = selectSystem {
82     x86_64-linux = "sha256-jOE6Nsna1R6kNp/wXaY60rNmgy4y2UViHiK+KphSNFo=";
83     aarch64-linux = "sha256-yemy1Eajq7uHfGGEf3bgnp2Uz+NcI0cSp65ZvKUQAEg=";
84   };
87 stdenv.mkDerivation {
88   pname = "mullvad-vpn";
89   inherit version;
91   src = fetchurl {
92     url = "https://github.com/mullvad/mullvadvpn-app/releases/download/${version}/MullvadVPN-${version}_${platform}.deb";
93     inherit hash;
94   };
96   nativeBuildInputs = [
97     autoPatchelfHook
98     dpkg
99     makeWrapper
100   ];
102   buildInputs = deps;
104   dontBuild = true;
105   dontConfigure = true;
107   runtimeDependencies = [
108     (lib.getLib systemd)
109     libGL
110     libnotify
111     libappindicator
112     wayland
113   ];
115   installPhase = ''
116     runHook preInstall
118     mkdir -p $out/share/mullvad $out/bin
120     mv usr/share/* $out/share
121     mv usr/bin/* $out/bin
122     mv opt/Mullvad\ VPN/* $out/share/mullvad
124     ln -s $out/share/mullvad/mullvad-{gui,vpn} $out/bin/
125     ln -sf $out/share/mullvad/resources/mullvad-problem-report $out/bin/mullvad-problem-report
127     wrapProgram $out/bin/mullvad-vpn \
128       --set MULLVAD_DISABLE_UPDATE_NOTIFICATION 1 \
129       --prefix PATH : ${
130         lib.makeBinPath [
131           coreutils
132           gnugrep
133         ]
134       }
136     wrapProgram $out/bin/mullvad-daemon \
137         --set-default MULLVAD_RESOURCE_DIR "$out/share/mullvad/resources"
139     wrapProgram $out/bin/mullvad-gui \
140       --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime=true}}"
142     sed -i "s|Exec.*$|Exec=$out/bin/mullvad-vpn $U|" $out/share/applications/mullvad-vpn.desktop
144     runHook postInstall
145   '';
147   nativeInstallCheckInputs = [
148     versionCheckHook
149   ];
150   versionCheckProgramArg = [ "--version" ];
151   doInstallCheck = true;
153   passthru.updateScript = ./update.sh;
155   meta = {
156     homepage = "https://github.com/mullvad/mullvadvpn-app";
157     description = "Client for Mullvad VPN";
158     changelog = "https://github.com/mullvad/mullvadvpn-app/blob/${version}/CHANGELOG.md";
159     sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
160     license = lib.licenses.gpl3Only;
161     platforms = lib.platforms.unix;
162     badPlatforms = [ lib.systems.inspect.patterns.isDarwin ];
163     maintainers = with lib.maintainers; [
164       Br1ght0ne
165       ymarkus
166       ataraxiasjel
167     ];
168   };