nixos-config/pkgs/nordvpn.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" ];
};
}