biome: 1.9.2 -> 1.9.3
[NixPkgs.git] / pkgs / tools / networking / cloudflare-warp / default.nix
blobfb03bee688a6159fd2a7bdb447904302c32b8948
1 { stdenv
2 , lib
3 , autoPatchelfHook
4 , copyDesktopItems
5 , dbus
6 , dpkg
7 , fetchurl
8 , gtk3
9 , libpcap
10 , makeDesktopItem
11 , makeWrapper
12 , nftables
13 , nss
14 , openssl
17 stdenv.mkDerivation rec {
18   pname = "cloudflare-warp";
19   version = "2024.9.346";
21   suffix = {
22     aarch64-linux = "arm64";
23     x86_64-linux = "amd64";
24   }.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
26   src = fetchurl {
27     url = "https://pkg.cloudflareclient.com/pool/noble/main/c/cloudflare-warp/cloudflare-warp_${version}.0_${suffix}.deb";
28     hash = {
29       aarch64-linux = "sha256-dgu/OiQPT7bkPnhrDArQg2lDAcOyhzZ5nJrjS2dqpFo=";
30       x86_64-linux = "sha256-KwxLF7LWB49M+kZPJ9M4OcDSF1f3MX4S0dTtTkzQVRQ=";
31     }.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
32   };
34   nativeBuildInputs = [
35     dpkg
36     autoPatchelfHook
37     makeWrapper
38     copyDesktopItems
39   ];
41   buildInputs = [
42     dbus
43     gtk3
44     libpcap
45     openssl
46     nss
47     stdenv.cc.cc.lib
48   ];
50   desktopItems = [
51     (makeDesktopItem {
52       name = "com.cloudflare.WarpCli";
53       desktopName = "Cloudflare Zero Trust Team Enrollment";
54       categories = [ "Utility" "Security" "ConsoleOnly" ];
55       noDisplay = true;
56       mimeTypes = [ "x-scheme-handler/com.cloudflare.warp" ];
57       exec = "warp-cli teams-enroll-token %u";
58       startupNotify = false;
59       terminal = true;
60     })
61   ];
63   autoPatchelfIgnoreMissingDeps = [
64     "libpcap.so.0.8"
65   ];
67   installPhase = ''
68     runHook preInstall
70     mv usr $out
71     mv bin $out
72     mv etc $out
73     patchelf --replace-needed libpcap.so.0.8 ${libpcap}/lib/libpcap.so $out/bin/warp-dex
74     mv lib/systemd/system $out/lib/systemd/
75     substituteInPlace $out/lib/systemd/system/warp-svc.service \
76       --replace "ExecStart=" "ExecStart=$out"
77     substituteInPlace $out/lib/systemd/user/warp-taskbar.service \
78       --replace "ExecStart=" "ExecStart=$out"
80     cat >>$out/lib/systemd/user/warp-taskbar.service <<EOF
82     [Service]
83     BindReadOnlyPaths=$out:/usr:
84     EOF
86     runHook postInstall
87   '';
89   postInstall = ''
90     wrapProgram $out/bin/warp-svc --prefix PATH : ${lib.makeBinPath [ nftables ]}
91   '';
93   meta = with lib; {
94     description = "Replaces the connection between your device and the Internet with a modern, optimized, protocol";
95     homepage = "https://pkg.cloudflareclient.com/packages/cloudflare-warp";
96     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
97     license = licenses.unfree;
98     mainProgram = "warp-cli";
99     maintainers = with maintainers; [
100       devpikachu
101       marcusramberg
102     ];
103     platforms = [ "x86_64-linux" "aarch64-linux" ];
104   };