chore: improve code formatting and configuration across multiple files
The diff shows comprehensive code cleanup and formatting improvements across 18 files, including cleaner argument structures, additional package configurations, and improved formatting in the `home/terminal/software/git.nix` hook script.
This commit is contained in:
@@ -1,8 +1,18 @@
|
||||
{ lib, stdenv, fetchurl, dpkg, makeWrapper, patchelf
|
||||
, coreutils, systemd, glib, zlib, xz, curl, libxml2
|
||||
}:
|
||||
|
||||
let
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchurl,
|
||||
dpkg,
|
||||
makeWrapper,
|
||||
patchelf,
|
||||
coreutils,
|
||||
systemd,
|
||||
glib,
|
||||
zlib,
|
||||
xz,
|
||||
curl,
|
||||
libxml2,
|
||||
}: let
|
||||
version = "5.1.17.3394";
|
||||
# libxml2's "out" output has lib/libxml2.so.16
|
||||
libxml2_out = libxml2.out;
|
||||
@@ -10,117 +20,130 @@ let
|
||||
# System library RPATH for all bundled ELF binaries (cisco's own lib dir is
|
||||
# appended during fixupPhase via $out)
|
||||
sysRpath = lib.makeLibraryPath [
|
||||
systemd glib zlib xz stdenv.cc.cc.lib curl libxml2_out
|
||||
systemd
|
||||
glib
|
||||
zlib
|
||||
xz
|
||||
stdenv.cc.cc.lib
|
||||
curl
|
||||
libxml2_out
|
||||
];
|
||||
in stdenv.mkDerivation {
|
||||
pname = "cisco-secure-client";
|
||||
inherit version;
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
pname = "cisco-secure-client";
|
||||
inherit version;
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://archive.org/download/cisco-secure-client-linux64-${version}/cisco-secure-client-linux64-${version}-predeploy-deb-k9.tgz";
|
||||
sha256 = "5c4cafb4694e64cbf041481f5df3d70389399926f8aa2a469d480c0555b58c2c";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ dpkg makeWrapper patchelf ];
|
||||
|
||||
buildInputs = [
|
||||
systemd glib zlib xz stdenv.cc.cc.lib curl libxml2_out
|
||||
];
|
||||
|
||||
dontStrip = true;
|
||||
dontAutoPatchelf = true;
|
||||
|
||||
unpackPhase = ''
|
||||
tar xzf "$src"
|
||||
DEB_FILE=$(ls cisco-secure-client-vpn-cli_*_amd64.deb 2>/dev/null || true)
|
||||
if [ -z "$DEB_FILE" ]; then
|
||||
DEB_FILE=$(ls cisco-secure-client-vpn_*_amd64.deb 2>/dev/null || true)
|
||||
fi
|
||||
if [ -z "$DEB_FILE" ]; then
|
||||
echo "ERROR: No .deb file found"
|
||||
exit 1
|
||||
fi
|
||||
dpkg-deb -x "$DEB_FILE" .
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
mkdir -p "$out"
|
||||
cp -r opt/* "$out/"
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
# fixupPhase: patchelf corrupts Cisco's embedded code signatures on ALL
|
||||
# shipped ELF binaries and .so plugins. We skip patchelf entirely and
|
||||
# instead rely on LD_LIBRARY_PATH wrappers for system library resolution.
|
||||
# The binaries' original RPATH of /opt/cisco/secureclient/lib resolves
|
||||
# correctly at runtime via the /opt/cisco/secureclient -> store symlink.
|
||||
fixupPhase = ''
|
||||
runHook preFixup
|
||||
|
||||
# Fix absolute symlinks — the deb assumes install under /opt/cisco/secureclient/
|
||||
# but nix puts it in the store. Convert to relative symlinks.
|
||||
for link in $(find "$out" -type l); do
|
||||
target=$(readlink "$link")
|
||||
if echo "$target" | grep -q "^/opt/"; then
|
||||
rel=$(basename "$target")
|
||||
ln -sf "$rel" "$link"
|
||||
fi
|
||||
done
|
||||
|
||||
for f in "$out"/cisco/secureclient/bin/* "$out"/cisco/secureclient/lib/*.so*; do
|
||||
chmod +x "$f" 2>/dev/null || true
|
||||
done
|
||||
|
||||
# Create libxml2.so.2 symlink (SONAME mismatch: Cisco wants .2, nixpkgs provides .16)
|
||||
libxml2_so=$(find ${libxml2_out}/lib -name "libxml2.so.16*" 2>/dev/null | head -1)
|
||||
if [ -n "$libxml2_so" ]; then
|
||||
ln -sf "$libxml2_so" "$out/cisco/secureclient/lib/libxml2.so.2"
|
||||
fi
|
||||
|
||||
# NO patchelf on Cisco ELFs — their embedded code signatures are
|
||||
# verified at runtime (especially plugins loaded by vpnagentd).
|
||||
# All ELFs keep their original RPATH /opt/cisco/secureclient/lib
|
||||
# which resolves via the tmpfiles symlink.
|
||||
# System libs are provided via LD_LIBRARY_PATH in wrappers below.
|
||||
|
||||
ldPath="$out/cisco/secureclient/lib:${sysRpath}"
|
||||
|
||||
# Wrap vpn CLI — wrapProgram renames the original to .vpn-wrapped
|
||||
wrapProgram "$out/cisco/secureclient/bin/vpn" \
|
||||
--prefix LD_LIBRARY_PATH : "$ldPath" \
|
||||
--prefix PATH : ${lib.makeBinPath [ coreutils ]}
|
||||
|
||||
# Create $out/bin/ wrappers for all user-facing executables
|
||||
mkdir -p "$out/bin"
|
||||
|
||||
makeWrapper "$out/cisco/secureclient/bin/vpn" "$out/bin/vpn" \
|
||||
--prefix LD_LIBRARY_PATH : "$ldPath" \
|
||||
--prefix PATH : ${lib.makeBinPath [ coreutils ]}
|
||||
|
||||
makeWrapper "$out/cisco/secureclient/bin/vpnagentd" "$out/bin/vpnagentd" \
|
||||
--prefix LD_LIBRARY_PATH : "$ldPath" \
|
||||
--prefix PATH : ${lib.makeBinPath [ coreutils ]}
|
||||
|
||||
for cli in acinstallhelper manifesttool_vpn vpndownloader-cli; do
|
||||
if [ -f "$out/cisco/secureclient/bin/$cli" ]; then
|
||||
makeWrapper "$out/cisco/secureclient/bin/$cli" "$out/bin/$cli" \
|
||||
--prefix LD_LIBRARY_PATH : "$ldPath"
|
||||
fi
|
||||
done
|
||||
|
||||
runHook postFixup
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Cisco Secure Client (AnyConnect successor) VPN client";
|
||||
homepage = "https://www.cisco.com/site/us/en/products/security/secure-client/index.html";
|
||||
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
|
||||
license = {
|
||||
name = "Cisco Secure Client EULA — proprietary, not redistributable";
|
||||
url = "https://www.cisco.com/c/en/us/products/security/secure-client/eula.html";
|
||||
src = fetchurl {
|
||||
url = "https://archive.org/download/cisco-secure-client-linux64-${version}/cisco-secure-client-linux64-${version}-predeploy-deb-k9.tgz";
|
||||
sha256 = "5c4cafb4694e64cbf041481f5df3d70389399926f8aa2a469d480c0555b58c2c";
|
||||
};
|
||||
platforms = [ "x86_64-linux" ];
|
||||
maintainers = [ ];
|
||||
};
|
||||
}
|
||||
|
||||
nativeBuildInputs = [dpkg makeWrapper patchelf];
|
||||
|
||||
buildInputs = [
|
||||
systemd
|
||||
glib
|
||||
zlib
|
||||
xz
|
||||
stdenv.cc.cc.lib
|
||||
curl
|
||||
libxml2_out
|
||||
];
|
||||
|
||||
dontStrip = true;
|
||||
dontAutoPatchelf = true;
|
||||
|
||||
unpackPhase = ''
|
||||
tar xzf "$src"
|
||||
DEB_FILE=$(ls cisco-secure-client-vpn-cli_*_amd64.deb 2>/dev/null || true)
|
||||
if [ -z "$DEB_FILE" ]; then
|
||||
DEB_FILE=$(ls cisco-secure-client-vpn_*_amd64.deb 2>/dev/null || true)
|
||||
fi
|
||||
if [ -z "$DEB_FILE" ]; then
|
||||
echo "ERROR: No .deb file found"
|
||||
exit 1
|
||||
fi
|
||||
dpkg-deb -x "$DEB_FILE" .
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
mkdir -p "$out"
|
||||
cp -r opt/* "$out/"
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
# fixupPhase: patchelf corrupts Cisco's embedded code signatures on ALL
|
||||
# shipped ELF binaries and .so plugins. We skip patchelf entirely and
|
||||
# instead rely on LD_LIBRARY_PATH wrappers for system library resolution.
|
||||
# The binaries' original RPATH of /opt/cisco/secureclient/lib resolves
|
||||
# correctly at runtime via the /opt/cisco/secureclient -> store symlink.
|
||||
fixupPhase = ''
|
||||
runHook preFixup
|
||||
|
||||
# Fix absolute symlinks — the deb assumes install under /opt/cisco/secureclient/
|
||||
# but nix puts it in the store. Convert to relative symlinks.
|
||||
for link in $(find "$out" -type l); do
|
||||
target=$(readlink "$link")
|
||||
if echo "$target" | grep -q "^/opt/"; then
|
||||
rel=$(basename "$target")
|
||||
ln -sf "$rel" "$link"
|
||||
fi
|
||||
done
|
||||
|
||||
for f in "$out"/cisco/secureclient/bin/* "$out"/cisco/secureclient/lib/*.so*; do
|
||||
chmod +x "$f" 2>/dev/null || true
|
||||
done
|
||||
|
||||
# Create libxml2.so.2 symlink (SONAME mismatch: Cisco wants .2, nixpkgs provides .16)
|
||||
libxml2_so=$(find ${libxml2_out}/lib -name "libxml2.so.16*" 2>/dev/null | head -1)
|
||||
if [ -n "$libxml2_so" ]; then
|
||||
ln -sf "$libxml2_so" "$out/cisco/secureclient/lib/libxml2.so.2"
|
||||
fi
|
||||
|
||||
# NO patchelf on Cisco ELFs — their embedded code signatures are
|
||||
# verified at runtime (especially plugins loaded by vpnagentd).
|
||||
# All ELFs keep their original RPATH /opt/cisco/secureclient/lib
|
||||
# which resolves via the tmpfiles symlink.
|
||||
# System libs are provided via LD_LIBRARY_PATH in wrappers below.
|
||||
|
||||
ldPath="$out/cisco/secureclient/lib:${sysRpath}"
|
||||
|
||||
# Wrap vpn CLI — wrapProgram renames the original to .vpn-wrapped
|
||||
wrapProgram "$out/cisco/secureclient/bin/vpn" \
|
||||
--prefix LD_LIBRARY_PATH : "$ldPath" \
|
||||
--prefix PATH : ${lib.makeBinPath [coreutils]}
|
||||
|
||||
# Create $out/bin/ wrappers for all user-facing executables
|
||||
mkdir -p "$out/bin"
|
||||
|
||||
makeWrapper "$out/cisco/secureclient/bin/vpn" "$out/bin/vpn" \
|
||||
--prefix LD_LIBRARY_PATH : "$ldPath" \
|
||||
--prefix PATH : ${lib.makeBinPath [coreutils]}
|
||||
|
||||
makeWrapper "$out/cisco/secureclient/bin/vpnagentd" "$out/bin/vpnagentd" \
|
||||
--prefix LD_LIBRARY_PATH : "$ldPath" \
|
||||
--prefix PATH : ${lib.makeBinPath [coreutils]}
|
||||
|
||||
for cli in acinstallhelper manifesttool_vpn vpndownloader-cli; do
|
||||
if [ -f "$out/cisco/secureclient/bin/$cli" ]; then
|
||||
makeWrapper "$out/cisco/secureclient/bin/$cli" "$out/bin/$cli" \
|
||||
--prefix LD_LIBRARY_PATH : "$ldPath"
|
||||
fi
|
||||
done
|
||||
|
||||
runHook postFixup
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Cisco Secure Client (AnyConnect successor) VPN client";
|
||||
homepage = "https://www.cisco.com/site/us/en/products/security/secure-client/index.html";
|
||||
sourceProvenance = with sourceTypes; [binaryNativeCode];
|
||||
license = {
|
||||
name = "Cisco Secure Client EULA — proprietary, not redistributable";
|
||||
url = "https://www.cisco.com/c/en/us/products/security/secure-client/eula.html";
|
||||
};
|
||||
platforms = ["x86_64-linux"];
|
||||
maintainers = [];
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user