forked from mirrors/nixpkgs
afed882503
https://github.com/NixOS/nixpkgs/pull/207804 removed git from nativeBuildInputs for buildRustPackage, which is apparently what allowed the build.rs to work here. Bring it back for this single package.
87 lines
2.1 KiB
Nix
87 lines
2.1 KiB
Nix
{ lib
|
|
, stdenv
|
|
, writeText
|
|
, rustPlatform
|
|
, fetchFromGitHub
|
|
, pkg-config
|
|
, protobuf
|
|
, makeWrapper
|
|
, git
|
|
, dbus
|
|
, libnftnl
|
|
, libmnl
|
|
, libwg
|
|
, openvpn-mullvad
|
|
, shadowsocks-rust
|
|
}:
|
|
rustPlatform.buildRustPackage rec {
|
|
pname = "mullvad";
|
|
version = "2022.5";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "mullvad";
|
|
repo = "mullvadvpn-app";
|
|
rev = version;
|
|
hash = "sha256-LiaELeEBIn/GZibKf25W3DHe+IkpaTY8UC7ca/7lp8k=";
|
|
};
|
|
|
|
cargoHash = "sha256-KpBhdZce8Ug3ws7f1qg+5LtOMQw2Mf/uJsBg/TZSYyk=";
|
|
|
|
nativeBuildInputs = [
|
|
pkg-config
|
|
protobuf
|
|
makeWrapper
|
|
git
|
|
];
|
|
|
|
buildInputs = [
|
|
dbus.dev
|
|
libnftnl
|
|
libmnl
|
|
];
|
|
|
|
# talpid-core wants libwg.a in build/lib/{triple}
|
|
preBuild = ''
|
|
dest=build/lib/${stdenv.targetPlatform.config}
|
|
mkdir -p $dest
|
|
ln -s ${libwg}/lib/libwg.a $dest
|
|
'';
|
|
|
|
postFixup =
|
|
# Place all binaries in the 'mullvad-' namespace, even though these
|
|
# specific binaries aren't used in the lifetime of the program.
|
|
''
|
|
for bin in relay_list translations-converter; do
|
|
mv "$out/bin/$bin" "$out/bin/mullvad-$bin"
|
|
done
|
|
'' +
|
|
# Files necessary for OpenVPN tunnels to work.
|
|
''
|
|
mkdir -p $out/share/mullvad
|
|
cp dist-assets/ca.crt $out/share/mullvad
|
|
ln -s ${openvpn-mullvad}/bin/openvpn $out/share/mullvad
|
|
ln -s ${shadowsocks-rust}/bin/sslocal $out/share/mullvad
|
|
ln -s $out/lib/libtalpid_openvpn_plugin.so $out/share/mullvad
|
|
'' +
|
|
# Set the directory where Mullvad will look for its resources by default to
|
|
# `$out/share`, so that we can avoid putting the files in `$out/bin` --
|
|
# Mullvad defaults to looking inside the directory its binary is located in
|
|
# for its resources.
|
|
''
|
|
wrapProgram $out/bin/mullvad-daemon \
|
|
--set-default MULLVAD_RESOURCE_DIR "$out/share/mullvad"
|
|
'';
|
|
|
|
passthru = {
|
|
inherit libwg;
|
|
inherit openvpn-mullvad;
|
|
};
|
|
|
|
meta = with lib; {
|
|
description = "Mullvad VPN command-line client tools";
|
|
homepage = "https://github.com/mullvad/mullvadvpn-app";
|
|
license = licenses.gpl3Only;
|
|
maintainers = with maintainers; [ cole-h ];
|
|
};
|
|
}
|