nixpkgs/pkgs/applications/misc/houdini/runtime.nix
2021-06-20 14:42:25 +01:00

88 lines
2.8 KiB
Nix

{ lib, stdenv, requireFile, zlib, libpng, libSM, libICE, fontconfig, xorg, libGLU, libGL, alsa-lib, dbus, xkeyboardconfig, nss, nspr, expat, pciutils, libxkbcommon, bc, addOpenGLRunpath }:
let
# NOTE: Some dependencies only show in errors when run with QT_DEBUG_PLUGINS=1
ld_library_path = builtins.concatStringsSep ":" [
"${stdenv.cc.cc.lib}/lib64"
(lib.makeLibraryPath [
libGLU
libGL
xorg.libXmu
xorg.libXi
xorg.libXext
xorg.libX11
xorg.libXrender
xorg.libXcursor
xorg.libXfixes
xorg.libXrender
xorg.libXcomposite
xorg.libXdamage
xorg.libXtst
xorg.libxcb
xorg.libXScrnSaver
alsa-lib
fontconfig
libSM
libICE
zlib
libpng
dbus
addOpenGLRunpath.driverLink
nss
nspr
expat
pciutils
libxkbcommon
])
];
license_dir = "~/.config/houdini";
in
stdenv.mkDerivation rec {
version = "18.0.460";
pname = "houdini-runtime";
src = requireFile rec {
name = "houdini-${version}-linux_x86_64_gcc6.3.tar.gz";
sha256 = "18rbwszcks2zfn9zbax62rxmq50z9mc3h39b13jpd39qjqdd3jsd";
url = meta.homepage;
};
buildInputs = [ bc ];
installPhase = ''
patchShebangs houdini.install
mkdir -p $out
sed -i "s|/usr/lib/sesi|${license_dir}|g" houdini.install
./houdini.install --install-houdini \
--no-install-menus \
--no-install-bin-symlink \
--auto-install \
--no-root-check \
--accept-EULA \
$out
echo -e "localValidatorDir = ${license_dir}\nlicensingMode = localValidator" > $out/houdini/Licensing.opt
sed -i "s|/usr/lib/sesi|${license_dir}|g" $out/houdini/sbin/sesinetd_safe
sed -i "s|/usr/lib/sesi|${license_dir}|g" $out/houdini/sbin/sesinetd.startup
echo "export LD_LIBRARY_PATH=${ld_library_path}" >> $out/bin/app_init.sh
echo "export QT_XKB_CONFIG_ROOT="${xkeyboardconfig}/share/X11/xkb"" >> $out/bin/app_init.sh
echo "export LD_LIBRARY_PATH=${ld_library_path}" >> $out/houdini/sbin/app_init.sh
echo "export QT_XKB_CONFIG_ROOT="${xkeyboardconfig}/share/X11/xkb"" >> $out/houdini/sbin/app_init.sh
'';
postFixup = ''
INTERPRETER="$(cat "$NIX_CC"/nix-support/dynamic-linker)"
for BIN in $(find $out/bin -type f -executable); do
if patchelf $BIN 2>/dev/null ; then
echo "Patching ELF $BIN"
patchelf --set-interpreter "$INTERPRETER" "$BIN"
fi
done
'';
meta = {
description = "3D animation application software";
homepage = "https://www.sidefx.com";
license = lib.licenses.unfree;
platforms = lib.platforms.linux;
hydraPlatforms = [ ]; # requireFile src's should be excluded
maintainers = [ lib.maintainers.canndrew ];
};
}