139 lines
2.9 KiB
Nix
139 lines
2.9 KiB
Nix
{
|
|
autoPatchelfHook,
|
|
buildFHSEnvChroot ? false,
|
|
buildFHSUserEnv ? false,
|
|
dpkg,
|
|
fetchurl,
|
|
lib,
|
|
stdenv,
|
|
sysctl,
|
|
iptables,
|
|
iproute2,
|
|
procps,
|
|
cacert,
|
|
libxml2,
|
|
libidn2,
|
|
libnl,
|
|
libcap,
|
|
libcap_ng,
|
|
zlib,
|
|
makeWrapper,
|
|
wireguard-tools,
|
|
}:
|
|
|
|
let
|
|
buildEnv = if builtins.typeOf buildFHSEnvChroot == "set" then buildFHSEnvChroot else buildFHSUserEnv;
|
|
pname = "nordvpn";
|
|
version = "4.0.0";
|
|
janis-bhm = {
|
|
name = "Janis B.";
|
|
email = "janis@nirgendwo.xyz";
|
|
github = "janis-bhm";
|
|
};
|
|
|
|
libxml2_13 = libxml2.overrideAttrs rec {
|
|
version = "2.13.8";
|
|
src = fetchurl {
|
|
url = "mirror://gnome/sources/libxml2/${lib.versions.majorMinor version}/libxml2-${version}.tar.xz";
|
|
hash = "sha256-J3KUyzMRmrcbK8gfL0Rem8lDW4k60VuyzSsOhZoO6Eo=";
|
|
};
|
|
};
|
|
|
|
nordvpnd = buildEnv {
|
|
name = "nordvpnd";
|
|
runScript = "nordvpnd";
|
|
|
|
extraBuildCommands = ''
|
|
mkdir -p $out/usr/lib
|
|
ln -s ${nordvpn}/lib/nordvpn $out/usr/lib/nordvpn
|
|
'';
|
|
|
|
targetPkgs = pkgs: with pkgs; [
|
|
nordvpn
|
|
iproute2
|
|
iptables
|
|
procps
|
|
sysctl
|
|
makeWrapper
|
|
wireguard-tools
|
|
zlib
|
|
cacert
|
|
];
|
|
};
|
|
|
|
nordvpn = stdenv.mkDerivation {
|
|
inherit pname version;
|
|
|
|
src = fetchurl {
|
|
url = "https://repo.nordvpn.com/deb/nordvpn/debian/pool/main/n/nordvpn/nordvpn_${version}_amd64.deb";
|
|
hash = "sha256-elKREKiFrx2TgJPJl1ARtEebsv4PNG9fMq2mrV9xngs=";
|
|
};
|
|
|
|
buildInputs = [
|
|
libxml2_13
|
|
libidn2
|
|
libnl
|
|
libcap
|
|
libcap_ng
|
|
];
|
|
|
|
nativeBuildInputs = [
|
|
dpkg
|
|
autoPatchelfHook
|
|
stdenv.cc.cc.lib
|
|
libxml2
|
|
];
|
|
|
|
dontConfigure = true;
|
|
dontBuild = true;
|
|
|
|
unpackPhase = ''
|
|
runHook preUnpack
|
|
dpkg --extract $src .
|
|
runHook postUnpack
|
|
'';
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
mkdir -p $out
|
|
mv usr/sbin/nordvpnd usr/bin/nordvpnd
|
|
mv usr/* $out/
|
|
mv var/ $out/
|
|
runHook postInstall
|
|
'';
|
|
|
|
# wrap nordvpnd with iproute2, procps, sysctl, iptables path prefixes
|
|
# postInstall = ''
|
|
# wrapProgram $out/bin/nordvpnd \
|
|
# --prefix PATH : "${lib.makeBinPath [ iproute2 ]}" \
|
|
# --prefix PATH : "${lib.makeBinPath [ procps ]}" \
|
|
# --prefix PATH : "${lib.makeBinPath [ sysctl ]}" \
|
|
# --prefix PATH : "${lib.makeBinPath [ iptables ]}" '';
|
|
|
|
};
|
|
in stdenv.mkDerivation {
|
|
inherit pname version;
|
|
|
|
dontConfigure = true;
|
|
dontBuild = true;
|
|
dontUnpack = true;
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
mkdir -p $out/bin $out/share
|
|
ln -s ${nordvpn}/bin/nordvpn $out/bin
|
|
ln -s ${nordvpnd}/bin/nordvpnd $out/bin
|
|
ln -s ${nordvpn}/share* $out/share
|
|
ln -s ${nordvpn}/var $out
|
|
runHook postInstall
|
|
'';
|
|
|
|
meta = with lib; {
|
|
description = "CLI client for NordVPN";
|
|
homepage = "https://www.nordvpn.com";
|
|
license = licenses.unfree;
|
|
maintainers = with maintainers; [ janis-bhm ];
|
|
platforms = [ "x86_64-linux" ];
|
|
};
|
|
}
|