diff --git a/pkgs/applications/misc/blender/default.nix b/pkgs/applications/misc/blender/default.nix index 0033d3e1bd2a..2e1294a4080c 100644 --- a/pkgs/applications/misc/blender/default.nix +++ b/pkgs/applications/misc/blender/default.nix @@ -19,6 +19,7 @@ darwin, dbus, embree, + fetchpatch, fetchurl, fetchzip, ffmpeg, @@ -71,7 +72,7 @@ pkg-config, potrace, pugixml, - python311Packages, # must use instead of python3.pkgs, see https://github.com/NixOS/nixpkgs/issues/211340 + python3Packages, # must use instead of python3.pkgs, see https://github.com/NixOS/nixpkgs/issues/211340 rocmPackages, # comes with a significantly larger closure size runCommand, spaceNavSupport ? stdenv.isLinux, @@ -86,7 +87,6 @@ }: let - python3Packages = python311Packages; python3 = python3Packages.python; pyPkgsOpenusd = python3Packages.openusd.override { withOsl = false; }; @@ -111,7 +111,13 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-T7s69k0/hN9ccQN0hFQibBiFwawu1Tc9DOoegOgsCEg="; }; - patches = [ ./draco.patch ] ++ lib.optional stdenv.isDarwin ./darwin.patch; + patches = [ + ./draco.patch + (fetchpatch { + url = "https://projects.blender.org/blender/blender/commit/ae35b5758791bebb21741f9b505b9fca347ae50e.patch"; + hash = "sha256-xUi55+7aiwEjtjqOi8to1YxdPlsBUThCCkCa5T6LIQc="; + }) + ] ++ lib.optional stdenv.isDarwin ./darwin.patch; postPatch = ( @@ -177,7 +183,9 @@ stdenv.mkDerivation (finalAttrs: { "-DWITH_GHOST_WAYLAND_DYNLOAD=OFF" "-DWITH_GHOST_WAYLAND_LIBDECOR=ON" ] - ++ lib.optionals (stdenv.hostPlatform.isAarch64 && stdenv.hostPlatform.isLinux) [ "-DWITH_CYCLES_EMBREE=OFF" ] + ++ lib.optionals (stdenv.hostPlatform.isAarch64 && stdenv.hostPlatform.isLinux) [ + "-DWITH_CYCLES_EMBREE=OFF" + ] ++ lib.optionals stdenv.isDarwin [ "-DLIBDIR=/does-not-exist" "-DWITH_CYCLES_OSL=OFF" # causes segfault on aarch64-darwin @@ -320,15 +328,16 @@ stdenv.mkDerivation (finalAttrs: { # Set RUNPATH so that libcuda and libnvrtc in /run/opengl-driver(-32)/lib can be # found. See the explanation in libglvnd. - postFixup = lib.optionalString cudaSupport '' - for program in $out/bin/blender $out/bin/.blender-wrapped; do - isELF "$program" || continue - addOpenGLRunpath "$program" - done - '' - + lib.optionalString stdenv.isDarwin '' - makeWrapper $out/Applications/Blender.app/Contents/MacOS/Blender $out/bin/blender - ''; + postFixup = + lib.optionalString cudaSupport '' + for program in $out/bin/blender $out/bin/.blender-wrapped; do + isELF "$program" || continue + addOpenGLRunpath "$program" + done + '' + + lib.optionalString stdenv.isDarwin '' + makeWrapper $out/Applications/Blender.app/Contents/MacOS/Blender $out/bin/blender + ''; passthru = { python = python3; @@ -342,9 +351,7 @@ stdenv.mkDerivation (finalAttrs: { }; tests = { - render = runCommand "${finalAttrs.pname}-test" { - nativeBuildInputs = [ mesa.llvmpipeHook ]; - } '' + render = runCommand "${finalAttrs.pname}-test" { nativeBuildInputs = [ mesa.llvmpipeHook ]; } '' set -euo pipefail cat <<'PYTHON' > scene-config.py import bpy @@ -396,7 +403,9 @@ stdenv.mkDerivation (finalAttrs: { # They comment two licenses: GPLv2 and Blender License, but they # say: "We've decided to cancel the BL offering for an indefinite period." # OptiX, enabled with cudaSupport, is non-free. - license = with lib.licenses; [ gpl2Plus ] ++ lib.optional cudaSupport (unfree // { shortName = "NVidia OptiX EULA"; }); + license = + with lib.licenses; + [ gpl2Plus ] ++ lib.optional cudaSupport (unfree // { shortName = "NVidia OptiX EULA"; }); platforms = [ "aarch64-linux"