diff options
Diffstat (limited to 'nixpkgs/pkgs/applications/misc/blender/default.nix')
-rw-r--r-- | nixpkgs/pkgs/applications/misc/blender/default.nix | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/misc/blender/default.nix b/nixpkgs/pkgs/applications/misc/blender/default.nix new file mode 100644 index 000000000000..5445c7efb59b --- /dev/null +++ b/nixpkgs/pkgs/applications/misc/blender/default.nix @@ -0,0 +1,102 @@ +{ config, stdenv, lib, fetchurl, boost, cmake, ffmpeg, gettext, glew +, ilmbase, libXi, libX11, libXext, libXrender +, libjpeg, libpng, libsamplerate, libsndfile +, libtiff, libGLU_combined, openal, opencolorio, openexr, openimageio, openjpeg_1, pythonPackages +, zlib, fftw, opensubdiv, freetype, jemalloc, ocl-icd, addOpenGLRunpath +, jackaudioSupport ? false, libjack2 +, cudaSupport ? config.cudaSupport or false, cudatoolkit +, colladaSupport ? true, opencollada +, enableNumpy ? false, makeWrapper +}: + +with lib; + +let python = pythonPackages.python; in + +stdenv.mkDerivation rec { + name = "blender-2.79b"; + + src = fetchurl { + url = "https://download.blender.org/source/${name}.tar.gz"; + sha256 = "1g4kcdqmf67srzhi3hkdnr4z1ph4h9sza1pahz38mrj998q4r52c"; + }; + + nativeBuildInputs = [ cmake ] ++ optional cudaSupport addOpenGLRunpath; + buildInputs = + [ boost ffmpeg gettext glew ilmbase + libXi libX11 libXext libXrender + freetype libjpeg libpng libsamplerate libsndfile libtiff libGLU_combined openal + opencolorio openexr openimageio openjpeg_1 python zlib fftw jemalloc + (opensubdiv.override { inherit cudaSupport; }) + makeWrapper + ] + ++ optional jackaudioSupport libjack2 + ++ optional cudaSupport cudatoolkit + ++ optional colladaSupport opencollada; + + postPatch = + '' + substituteInPlace doc/manpage/blender.1.py --replace /usr/bin/python ${python}/bin/python3 + substituteInPlace extern/clew/src/clew.c --replace '"libOpenCL.so"' '"${ocl-icd}/lib/libOpenCL.so"' + ''; + + cmakeFlags = + [ "-DWITH_MOD_OCEANSIM=ON" + "-DWITH_CODEC_FFMPEG=ON" + "-DWITH_CODEC_SNDFILE=ON" + "-DWITH_INSTALL_PORTABLE=OFF" + "-DWITH_FFTW3=ON" + #"-DWITH_SDL=ON" + "-DWITH_GAMEENGINE=ON" + "-DWITH_OPENCOLORIO=ON" + "-DWITH_SYSTEM_OPENJPEG=ON" + "-DWITH_PLAYER=ON" + "-DWITH_OPENSUBDIV=ON" + "-DPYTHON_LIBRARY=${python.libPrefix}m" + "-DPYTHON_LIBPATH=${python}/lib" + "-DPYTHON_INCLUDE_DIR=${python}/include/${python.libPrefix}m" + "-DPYTHON_VERSION=${python.pythonVersion}" + "-DWITH_PYTHON_INSTALL=OFF" + "-DWITH_PYTHON_INSTALL_NUMPY=OFF" + ] + ++ optional jackaudioSupport "-DWITH_JACK=ON" + ++ optionals cudaSupport + [ "-DWITH_CYCLES_CUDA_BINARIES=ON" + # Disable architectures before sm_30 to support new CUDA toolkits. + "-DCYCLES_CUDA_BINARIES_ARCH=sm_30;sm_35;sm_37;sm_50;sm_52;sm_60;sm_61" + ] + ++ optional colladaSupport "-DWITH_OPENCOLLADA=ON"; + + NIX_CFLAGS_COMPILE = "-I${ilmbase.dev}/include/OpenEXR -I${python}/include/${python.libPrefix}"; + + # Since some dependencies are built with gcc 6, we need gcc 6's + # libstdc++ in our RPATH. Sigh. + NIX_LDFLAGS = optionalString cudaSupport "-rpath ${stdenv.cc.cc.lib}/lib"; + + enableParallelBuilding = true; + + postInstall = optionalString enableNumpy + '' + wrapProgram $out/bin/blender \ + --prefix PYTHONPATH : ${pythonPackages.numpy}/${python.sitePackages} + ''; + + # Set RUNPATH so that libcuda and libnvrtc in /run/opengl-driver(-32)/lib can be + # found. See the explanation in libglvnd. + postFixup = optionalString cudaSupport '' + for program in $out/bin/blender $out/bin/.blender-wrapped; do + isELF "$program" || continue + addOpenGLRunpath "$program" + done + ''; + + meta = with stdenv.lib; { + description = "3D Creation/Animation/Publishing System"; + homepage = https://www.blender.org; + # They comment two licenses: GPLv2 and Blender License, but they + # say: "We've decided to cancel the BL offering for an indefinite period." + license = licenses.gpl2Plus; + platforms = [ "x86_64-linux" ]; + maintainers = [ maintainers.goibhniu ]; + }; +} |