Skip to content

Instantly share code, notes, and snippets.

@dmjio
Created January 20, 2021 05:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dmjio/b5d91fb97b2e0184ed0d2ecfbf01cc94 to your computer and use it in GitHub Desktop.
Save dmjio/b5d91fb97b2e0184ed0d2ecfbf01cc94 to your computer and use it in GitHub Desktop.
{ pkgs ? import <nixpkgs> { config.allowUnfree = true; } }:
let
app = pkgs.stdenv.mkDerivation rec {
name = "anyconnect";
src = ./vpn;
buildInputs = with pkgs; [ makeWrapper autoPatchelfHook libxml2 webkitgtk libsoup gtk2-x11 networkmanager ];
installPhase = ''
ls -lah
mkdir -p $out/{bin/plugins,lib,profile,script,help}
mkdir -p $out/share/icons/hicolor/{48x48,128x128}
mkdir -p $out/share/applications
cp *.so* $out/lib
cp libvpnipsec.so $out/bin/plugins
cp libacfeedback.so $out/bin/plugins
ln -s $out/lib/libaccurl.so.4.5.0 $out/lib/libaccurl.so.4
cp vpn* $out/bin
cp ac* $out/bin
cp cisco* $out/
cp OpenSource.html $out
cp -v *.xml $out
cp manifesttool_vpn $out/bin
cp AnyConnectProfile.xsd $out/profile
cp AnyConnectLocalPolicy.xsd $out
cp update.txt $out
cp license.txt $out
cp *.pem $out
cp -r resources $out
mkdir -p $out/.cisco/certificates/ca
cp *.pem $out/.cisco/certificates/ca
cp -v $out/resources/vpnui48.png $out/share/icons/hicolor/48x48/apps
cp -v $out/resources/vpnui128.png $out/share/icons/hicolor/128x128/apps
cp -v cisco-anyconnect.desktop $out/share/applications
cp -v cisco-anyconnect.directory $out/share/applications
cp -v cisco-anyconnect.menu $out/share/applications
${pkgs.patchelf}/bin/patchelf --add-needed ${pkgs.networkmanager}/lib/libnm.so $out/bin/vpnagentd
wrapProgram $out/bin/vpnagentd \
--set LD_PRELOAD "${pkgs.libredirect}/lib/libredirect.so" \
--set NIX_REDIRECTS /opt/cisco/anyconnect/=$out/:/opt/.cisco/=$out/.cisco/
wrapProgram $out/bin/vpnui \
--set LD_PRELOAD "${pkgs.libredirect}/lib/libredirect.so" \
--set NIX_REDIRECTS /opt/cisco/anyconnect/=$out/:/opt/.cisco/=$out/.cisco/
'';
};
in
{
pkg = pkgs.makeDesktopItem
{ name = "Cisco AnyConnect Secure Mobility Client";
exec = "${app}/bin/vpnui";
desktopName = "AnyConnect";
genericName = "anyconnect";
categories = "Network";
icon = ./vpn/resources/vpnui128.png;
};
inherit app;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment