31 l10n = import ./l10ns.nix {
33 inherit requireFile lang;
35 dirName = "WolframEngine";
37 stdenv.mkDerivation rec {
38 inherit (l10n) version name src;
45 dontWrapQtApps = true;
82 # some bundled libs are found through LD_LIBRARY_PATH
83 autoPatchelfIgnoreMissingDeps = true;
85 ldpath = lib.makeLibraryPath buildInputs
86 + lib.optionalString (stdenv.hostPlatform.system == "x86_64-linux")
87 (":" + lib.makeSearchPathOutput "lib" "lib64" buildInputs);
90 # find offset from file
91 offset=$(${stdenv.shell} -c "$(grep -axm1 -e 'offset=.*' $src); echo \$offset" $src)
92 dd if="$src" ibs=$offset skip=1 | tar -xf -
98 sed -i -e 's/^PATH=/# PATH=/' -e 's/=`id -[ug]`/=0/' MathInstaller
100 # Installer wants to write default config in HOME
101 export HOME=$(mktemp -d)
103 # Fix the installation script
104 patchShebangs MathInstaller
105 substituteInPlace MathInstaller \
106 --replace '`hostname`' "" \
107 --replace "chgrp" "# chgrp" \
108 --replace "chown" ": # chown"
110 # Install the desktop items
111 export XDG_DATA_HOME="$out/share"
113 ./MathInstaller -auto -createdir=y -execdir=$out/bin -targetdir=$out/libexec/${dirName} -silent
116 cd $out/libexec/${dirName}/Executables
117 for path in MathKernel math mcc wolfram; do
118 makeWrapper $out/libexec/${dirName}/Executables/$path $out/bin/$path --set LD_LIBRARY_PATH "${zlib}/lib:${stdenv.cc.cc.lib}/lib:${libssh2}/lib:\''${LD_LIBRARY_PATH}"
121 for path in WolframKernel wolframscript; do
122 makeWrapper $out/libexec/${dirName}/SystemFiles/Kernel/Binaries/Linux-x86-64/$path $out/bin/$path --set LD_LIBRARY_PATH "${zlib}/lib:${stdenv.cc.cc.lib}/lib:${libssh2}/lib:\''${LD_LIBRARY_PATH}"
125 wrapQtApp "$out/libexec/${dirName}/SystemFiles/FrontEnd/Binaries/Linux-x86-64/WolframPlayer" \
126 --set LD_LIBRARY_PATH "${zlib}/lib:${stdenv.cc.cc.lib}/lib:${libssh2}/lib:\''${LD_LIBRARY_PATH}" \
127 --set QT_XKB_CONFIG_ROOT "${xkeyboard_config}/share/X11/xkb"
128 if ! isELF "$out/libexec/${dirName}/SystemFiles/FrontEnd/Binaries/Linux-x86-64/WolframPlayer"; then
129 substituteInPlace $out/libexec/${dirName}/SystemFiles/FrontEnd/Binaries/Linux-x86-64/WolframPlayer \
130 --replace "TopDirectory=" "TopDirectory=$out/libexec/${dirName} #";
133 for path in WolframPlayer wolframplayer; do
134 makeWrapper $out/libexec/${dirName}/Executables/$path $out/bin/$path
138 installManPage $out/libexec/${dirName}/SystemFiles/SystemDocumentation/Unix/*
141 # This is primarily an IO bound build; there's little benefit to building remotely.
142 preferLocalBuild = true;
144 # Stripping causes the program to core dump.
148 description = "Wolfram Engine computational software system";
149 homepage = "https://www.wolfram.com/engine/";
150 sourceProvenance = with sourceTypes; [ binaryNativeCode ];
151 license = licenses.unfree;
152 maintainers = with maintainers; [ fbeffa ];
153 platforms = [ "x86_64-linux" ];