mirror of
https://github.com/CHN-beta/nixos.git
synced 2026-01-11 17:09:22 +08:00
70 lines
2.8 KiB
Nix
70 lines
2.8 KiB
Nix
{ inputs, localLib }:
|
|
let
|
|
pkgs = import inputs.nixpkgs (localLib.buildNixpkgsConfig
|
|
{
|
|
inputs = { inherit (inputs.nixpkgs) lib; topInputs = inputs; };
|
|
nixpkgs = { march = null; nixRoot = "/public/home/xmuhk/.nix"; nixos = false; };
|
|
});
|
|
lumericalLicenseManager =
|
|
let
|
|
ip = "${pkgs.iproute2}/bin/ip";
|
|
awk = "${pkgs.gawk}/bin/awk";
|
|
sed = "${pkgs.gnused}/bin/sed";
|
|
chmod = "${pkgs.coreutils}/bin/chmod";
|
|
sing = "/public/software/singularity/singularity-3.8.3/bin/singularity";
|
|
in pkgs.writeShellScriptBin "lumericalLicenseManager"
|
|
''
|
|
echo "Cleaning up..."
|
|
${sing} instance stop lumericalLicenseManager || true
|
|
[ -d /tmp/lumerical ] && chmod -R u+w /tmp/lumerical && rm -rf /tmp/lumerical || true
|
|
mkdir -p /tmp/lumerical
|
|
while true; do
|
|
if ! ss -tan | grep -q ".*TIME-WAIT .*:1084 "; then break; fi
|
|
sleep 10
|
|
done
|
|
|
|
echo "Extracting image..."
|
|
${sing} build --sandbox /tmp/lumerical/lumericalLicenseManager \
|
|
${inputs.self.src.lumerical.licenseManager.sifImageFile}
|
|
mkdir /tmp/lumerical/lumericalLicenseManager/public
|
|
|
|
echo 'Searching for en* interface...'
|
|
iface=$(${ip} -o link show | ${awk} -F': ' '/^[0-9]+: en/ {print $2; exit}')
|
|
if [ -n "$iface" ]; then
|
|
echo "Found interface: $iface"
|
|
echo 'Extracting MAC address...'
|
|
mac=$(${ip} link show "$iface" | ${awk} '/link\/ether/ {print $2}' | ${sed} 's/://g')
|
|
echo "Extracted MAC address: $mac"
|
|
else
|
|
echo "No interface starting with 'en' found." >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo 'Creating license file...'
|
|
${sed} -i "s|xxxxxxxxxxxxx|$mac|" \
|
|
/tmp/lumerical/lumericalLicenseManager/home/ansys_inc/shared_files/licensing/license_files/ansyslmd.lic
|
|
${sed} -i 's|2022.1231|2035.1231|g' \
|
|
/tmp/lumerical/lumericalLicenseManager/home/ansys_inc/shared_files/licensing/license_files/ansyslmd.lic
|
|
|
|
echo "Starting license manager..."
|
|
${sing} instance start --writable /tmp/lumerical/lumericalLicenseManager lumericalLicenseManager
|
|
${sing} exec instance://lumericalLicenseManager /bin/sh -c \
|
|
"pushd /home/ansys_inc/shared_files/licensing; (./start_ansysli &); (./start_lmcenter &); tail -f /dev/null"
|
|
|
|
cleanup() {
|
|
echo "Stopping license manager..."
|
|
${sing} instance stop lumericalLicenseManager
|
|
chmod -R u+w /tmp/lumerical && rm -rf /tmp/lumerical
|
|
}
|
|
trap cleanup SIGINT SIGTERM SIGHUP EXIT
|
|
tail -f /dev/null
|
|
'';
|
|
in pkgs.symlinkJoin
|
|
{
|
|
name = "xmuhk";
|
|
paths = (with pkgs; [ hello btop htop iotop pv localPackages.lumerical.lumerical.cmd ])
|
|
++ [ lumericalLicenseManager ];
|
|
postBuild = "echo ${inputs.self.rev or "dirty"} > $out/.version";
|
|
passthru = { inherit pkgs; };
|
|
}
|