From 36d97f54b65064b56ce981b5d773cb3c394e8ed3 Mon Sep 17 00:00:00 2001 From: Andrew Marshall Date: Tue, 9 Sep 2025 11:46:42 -0400 Subject: [PATCH 1/4] blender: use release config This ensures that we at least default to the config that upstream Blender uses. Remove any config that we have that is redundant with [the current upstream][1]. Need to explicitly turn off `WITH_CYCLES_CUDA_BINARIES` in non-CUDA (as release build will turn it on) and turn off `WITH_CYCLES_DEVICE_ONEAPI` (as it was previously implicitly off and we do not currently support it). [1]: https://projects.blender.org/blender/blender/src/tag/v4.5.2/build_files/cmake/config/blender_release.cmake --- pkgs/by-name/bl/blender/package.nix | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/pkgs/by-name/bl/blender/package.nix b/pkgs/by-name/bl/blender/package.nix index 8645982537e9..0e5678977f98 100644 --- a/pkgs/by-name/bl/blender/package.nix +++ b/pkgs/by-name/bl/blender/package.nix @@ -146,6 +146,7 @@ stdenv'.mkDerivation (finalAttrs: { env.NIX_CFLAGS_COMPILE = "-I${python3}/include/${python3.libPrefix}"; cmakeFlags = [ + "-C../build_files/cmake/config/blender_release.cmake" "-DMaterialX_DIR=${python3Packages.materialx}/lib/cmake/MaterialX" "-DPYTHON_INCLUDE_DIR=${python3}/include/${python3.libPrefix}" "-DPYTHON_LIBPATH=${python3}/lib" @@ -153,36 +154,26 @@ stdenv'.mkDerivation (finalAttrs: { "-DPYTHON_NUMPY_INCLUDE_DIRS=${python3Packages.numpy_1}/${python3.sitePackages}/numpy/core/include" "-DPYTHON_NUMPY_PATH=${python3Packages.numpy_1}/${python3.sitePackages}" "-DPYTHON_VERSION=${python3.pythonVersion}" - "-DWITH_ALEMBIC=ON" - "-DWITH_ASSERT_ABORT=OFF" "-DWITH_BUILDINFO=OFF" - "-DWITH_CODEC_FFMPEG=ON" - "-DWITH_CODEC_SNDFILE=ON" "-DWITH_CPU_CHECK=OFF" + "-DWITH_CYCLES_CUDA_BINARIES=${if cudaSupport then "ON" else "OFF"}" "-DWITH_CYCLES_DEVICE_HIP=${if hipSupport then "ON" else "OFF"}" + "-DWITH_CYCLES_DEVICE_ONEAPI=OFF" "-DWITH_CYCLES_DEVICE_OPTIX=${if cudaSupport then "ON" else "OFF"}" "-DWITH_CYCLES_EMBREE=${if embreeSupport then "ON" else "OFF"}" "-DWITH_CYCLES_OSL=OFF" - "-DWITH_FFTW3=ON" "-DWITH_HYDRA=${if openUsdSupport then "ON" else "OFF"}" - "-DWITH_IMAGE_OPENJPEG=ON" "-DWITH_INSTALL_PORTABLE=OFF" "-DWITH_JACK=${if jackaudioSupport then "ON" else "OFF"}" "-DWITH_LIBS_PRECOMPILED=OFF" - "-DWITH_MOD_OCEANSIM=ON" "-DWITH_OPENCOLLADA=${if colladaSupport then "ON" else "OFF"}" - "-DWITH_OPENCOLORIO=ON" "-DWITH_OPENIMAGEDENOISE=${if openImageDenoiseSupport then "ON" else "OFF"}" - "-DWITH_OPENSUBDIV=ON" - "-DWITH_OPENVDB=ON" "-DWITH_PIPEWIRE=OFF" "-DWITH_PULSEAUDIO=OFF" "-DWITH_PYTHON_INSTALL=OFF" "-DWITH_PYTHON_INSTALL_NUMPY=OFF" "-DWITH_PYTHON_INSTALL_REQUESTS=OFF" - "-DWITH_SDL=OFF" "-DWITH_STRICT_BUILD_OPTIONS=ON" - "-DWITH_TBB=ON" "-DWITH_USD=${if openUsdSupport then "ON" else "OFF"}" # Blender supplies its own FindAlembic.cmake (incompatible with the Alembic-supplied config file) From 184edc5166eb33e2c06c5dfe5f134781c5dcbdcf Mon Sep 17 00:00:00 2001 From: Andrew Marshall Date: Sat, 8 Nov 2025 09:59:27 -0500 Subject: [PATCH 2/4] blender: 4.5.3 -> 4.5.4 Changelog: https://www.blender.org/download/lts/4-5/ --- pkgs/by-name/bl/blender/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/bl/blender/package.nix b/pkgs/by-name/bl/blender/package.nix index 0e5678977f98..f7c54e1451b7 100644 --- a/pkgs/by-name/bl/blender/package.nix +++ b/pkgs/by-name/bl/blender/package.nix @@ -116,12 +116,12 @@ in stdenv'.mkDerivation (finalAttrs: { pname = "blender"; - version = "4.5.3"; + version = "4.5.4"; src = fetchzip { name = "source"; url = "https://download.blender.org/source/blender-${finalAttrs.version}.tar.xz"; - hash = "sha256-DNVZUZpysCyB/Xt8yB352gO+UK8Cd4aDFGYuUDKyIrs="; + hash = "sha256-/cYMCWgojkO1mqzJ4BZwbwXPuBmg66T+gzpEuLiOskY="; }; postPatch = From 249e49e3890711299408b1e591cdee17f2f2134c Mon Sep 17 00:00:00 2001 From: Andrew Marshall Date: Tue, 14 Oct 2025 10:47:09 -0400 Subject: [PATCH 3/4] blender: alphabetize --- pkgs/by-name/bl/blender/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/by-name/bl/blender/package.nix b/pkgs/by-name/bl/blender/package.nix index f7c54e1451b7..5243b5fb15db 100644 --- a/pkgs/by-name/bl/blender/package.nix +++ b/pkgs/by-name/bl/blender/package.nix @@ -254,11 +254,11 @@ stdenv'.mkDerivation (finalAttrs: { openpgl (opensubdiv.override { inherit cudaSupport; }) openvdb + onetbb potrace pugixml python3 python3Packages.materialx - onetbb zlib zstd ] From e353d376026cea28562fb8c8e2652006ba2d7901 Mon Sep 17 00:00:00 2001 From: Andrew Marshall Date: Sun, 9 Nov 2025 10:12:34 -0500 Subject: [PATCH 4/4] blender: prefer lib.cmakeBool & lib.cmakeFeature Been putting this off for too long. --- pkgs/by-name/bl/blender/package.nix | 88 +++++++++++++++-------------- 1 file changed, 46 insertions(+), 42 deletions(-) diff --git a/pkgs/by-name/bl/blender/package.nix b/pkgs/by-name/bl/blender/package.nix index 5243b5fb15db..1cedbfce2aac 100644 --- a/pkgs/by-name/bl/blender/package.nix +++ b/pkgs/by-name/bl/blender/package.nix @@ -147,58 +147,62 @@ stdenv'.mkDerivation (finalAttrs: { cmakeFlags = [ "-C../build_files/cmake/config/blender_release.cmake" - "-DMaterialX_DIR=${python3Packages.materialx}/lib/cmake/MaterialX" - "-DPYTHON_INCLUDE_DIR=${python3}/include/${python3.libPrefix}" - "-DPYTHON_LIBPATH=${python3}/lib" - "-DPYTHON_LIBRARY=${python3.libPrefix}" - "-DPYTHON_NUMPY_INCLUDE_DIRS=${python3Packages.numpy_1}/${python3.sitePackages}/numpy/core/include" - "-DPYTHON_NUMPY_PATH=${python3Packages.numpy_1}/${python3.sitePackages}" - "-DPYTHON_VERSION=${python3.pythonVersion}" - "-DWITH_BUILDINFO=OFF" - "-DWITH_CPU_CHECK=OFF" - "-DWITH_CYCLES_CUDA_BINARIES=${if cudaSupport then "ON" else "OFF"}" - "-DWITH_CYCLES_DEVICE_HIP=${if hipSupport then "ON" else "OFF"}" - "-DWITH_CYCLES_DEVICE_ONEAPI=OFF" - "-DWITH_CYCLES_DEVICE_OPTIX=${if cudaSupport then "ON" else "OFF"}" - "-DWITH_CYCLES_EMBREE=${if embreeSupport then "ON" else "OFF"}" - "-DWITH_CYCLES_OSL=OFF" - "-DWITH_HYDRA=${if openUsdSupport then "ON" else "OFF"}" - "-DWITH_INSTALL_PORTABLE=OFF" - "-DWITH_JACK=${if jackaudioSupport then "ON" else "OFF"}" - "-DWITH_LIBS_PRECOMPILED=OFF" - "-DWITH_OPENCOLLADA=${if colladaSupport then "ON" else "OFF"}" - "-DWITH_OPENIMAGEDENOISE=${if openImageDenoiseSupport then "ON" else "OFF"}" - "-DWITH_PIPEWIRE=OFF" - "-DWITH_PULSEAUDIO=OFF" - "-DWITH_PYTHON_INSTALL=OFF" - "-DWITH_PYTHON_INSTALL_NUMPY=OFF" - "-DWITH_PYTHON_INSTALL_REQUESTS=OFF" - "-DWITH_STRICT_BUILD_OPTIONS=ON" - "-DWITH_USD=${if openUsdSupport then "ON" else "OFF"}" + + (lib.cmakeFeature "MaterialX_DIR" "${python3Packages.materialx}/lib/cmake/MaterialX") + (lib.cmakeFeature "PYTHON_INCLUDE_DIR" "${python3}/include/${python3.libPrefix}") + (lib.cmakeFeature "PYTHON_LIBPATH" "${python3}/lib") + (lib.cmakeFeature "PYTHON_LIBRARY" "${python3.libPrefix}") + (lib.cmakeFeature "PYTHON_NUMPY_INCLUDE_DIRS" "${python3Packages.numpy_1}/${python3.sitePackages}/numpy/core/include") + (lib.cmakeFeature "PYTHON_NUMPY_PATH" "${python3Packages.numpy_1}/${python3.sitePackages}") + (lib.cmakeFeature "PYTHON_VERSION" "${python3.pythonVersion}") + + (lib.cmakeBool "WITH_BUILDINFO" false) + (lib.cmakeBool "WITH_CPU_CHECK" false) + (lib.cmakeBool "WITH_CYCLES_CUDA_BINARIES" cudaSupport) + (lib.cmakeBool "WITH_CYCLES_DEVICE_HIP" hipSupport) + (lib.cmakeBool "WITH_CYCLES_DEVICE_ONEAPI" false) + (lib.cmakeBool "WITH_CYCLES_DEVICE_OPTIX" cudaSupport) + (lib.cmakeBool "WITH_CYCLES_EMBREE" embreeSupport) + (lib.cmakeBool "WITH_CYCLES_OSL" false) + (lib.cmakeBool "WITH_HYDRA" openUsdSupport) + (lib.cmakeBool "WITH_INSTALL_PORTABLE" false) + (lib.cmakeBool "WITH_JACK" jackaudioSupport) + (lib.cmakeBool "WITH_LIBS_PRECOMPILED" false) + (lib.cmakeBool "WITH_OPENCOLLADA" colladaSupport) + (lib.cmakeBool "WITH_OPENIMAGEDENOISE" openImageDenoiseSupport) + (lib.cmakeBool "WITH_PIPEWIRE" false) + (lib.cmakeBool "WITH_PULSEAUDIO" false) + (lib.cmakeBool "WITH_PYTHON_INSTALL" false) + (lib.cmakeBool "WITH_PYTHON_INSTALL_NUMPY" false) + (lib.cmakeBool "WITH_PYTHON_INSTALL_REQUESTS" false) + (lib.cmakeBool "WITH_STRICT_BUILD_OPTIONS" true) + (lib.cmakeBool "WITH_USD" openUsdSupport) # Blender supplies its own FindAlembic.cmake (incompatible with the Alembic-supplied config file) - "-DALEMBIC_INCLUDE_DIR=${lib.getDev alembic}/include" - "-DALEMBIC_LIBRARY=${lib.getLib alembic}/lib/libAlembic${stdenv.hostPlatform.extensions.sharedLibrary}" + (lib.cmakeFeature "ALEMBIC_INCLUDE_DIR" "${lib.getDev alembic}/include") + (lib.cmakeFeature "ALEMBIC_LIBRARY" "${lib.getLib alembic}/lib/libAlembic${stdenv.hostPlatform.extensions.sharedLibrary}") ] ++ lib.optionals cudaSupport [ - "-DOPTIX_ROOT_DIR=${optix}" - "-DWITH_CYCLES_CUDA_BINARIES=ON" + (lib.cmakeFeature "OPTIX_ROOT_DIR" "${optix}") + (lib.cmakeBool "WITH_CYCLES_CUDA_BINARIES" true) ] ++ lib.optionals hipSupport [ - "-DHIPRT_INCLUDE_DIR=${rocmPackages.hiprt}/include" - "-DWITH_CYCLES_DEVICE_HIPRT=ON" - "-DWITH_CYCLES_HIP_BINARIES=ON" + (lib.cmakeFeature "HIPRT_INCLUDE_DIR" "${rocmPackages.hiprt}/include") + (lib.cmakeBool "WITH_CYCLES_DEVICE_HIPRT" true) + (lib.cmakeBool "WITH_CYCLES_HIP_BINARIES" true) ] ++ lib.optionals waylandSupport [ - "-DWITH_GHOST_WAYLAND=ON" - "-DWITH_GHOST_WAYLAND_DBUS=ON" - "-DWITH_GHOST_WAYLAND_DYNLOAD=OFF" - "-DWITH_GHOST_WAYLAND_LIBDECOR=ON" + (lib.cmakeBool "WITH_GHOST_WAYLAND" true) + (lib.cmakeBool "WITH_GHOST_WAYLAND_DBUS" true) + (lib.cmakeBool "WITH_GHOST_WAYLAND_DYNLOAD" false) + (lib.cmakeBool "WITH_GHOST_WAYLAND_LIBDECOR" true) + ] + ++ lib.optionals stdenv.cc.isClang [ + (lib.cmakeFeature "PYTHON_LINKFLAGS" "") # Clang doesn't support "-export-dynamic" ] - ++ lib.optional stdenv.cc.isClang "-DPYTHON_LINKFLAGS=" # Clang doesn't support "-export-dynamic" ++ lib.optionals stdenv.hostPlatform.isDarwin [ - "-DLIBDIR=/does-not-exist" - "-DSSE2NEON_INCLUDE_DIR=${sse2neon}/include" + (lib.cmakeFeature "LIBDIR" "/does-not-exist") + (lib.cmakeFeature "SSE2NEON_INCLUDE_DIR" "${sse2neon}/include") ]; preConfigure = ''