From 0f73b2afa549900cf15fb0aa9626ed84a3e4132f Mon Sep 17 00:00:00 2001 From: Peder Bergebakken Sundt Date: Fri, 30 May 2025 01:08:20 +0200 Subject: [PATCH 01/10] freecad: unpin python311 (cherry picked from commit 7139b502d10f1f378360e46d77abf31b4010f1ab) --- pkgs/by-name/fr/freecad/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/fr/freecad/package.nix b/pkgs/by-name/fr/freecad/package.nix index 6fbaa35e6b18b..ee90db03fcf27 100644 --- a/pkgs/by-name/fr/freecad/package.nix +++ b/pkgs/by-name/fr/freecad/package.nix @@ -23,7 +23,7 @@ opencascade-occt_7_6, opencascade-occt, pkg-config, - python311Packages, + python3Packages, spaceNavSupport ? stdenv.hostPlatform.isLinux, ifcSupport ? false, stdenv, @@ -40,7 +40,7 @@ nix-update-script, }: let - inherit (python311Packages) + inherit (python3Packages) boost gitpython ifcopenshell From ec3180da1b5647538a6c617f5d1b590d4032191e Mon Sep 17 00:00:00 2001 From: Grimmauld Date: Sat, 14 Jun 2025 20:53:06 +0200 Subject: [PATCH 02/10] freecad: avoid duplicate wrapping (cherry picked from commit d72cbf576f98d6756d08565166f9803ba28f0d59) --- pkgs/by-name/fr/freecad/package.nix | 98 +++++++++++++---------------- 1 file changed, 44 insertions(+), 54 deletions(-) diff --git a/pkgs/by-name/fr/freecad/package.nix b/pkgs/by-name/fr/freecad/package.nix index ee90db03fcf27..3e515e9875742 100644 --- a/pkgs/by-name/fr/freecad/package.nix +++ b/pkgs/by-name/fr/freecad/package.nix @@ -40,26 +40,35 @@ nix-update-script, }: let - inherit (python3Packages) - boost - gitpython - ifcopenshell - matplotlib - opencamlib - pivy - ply - py-slvs - pybind11 - pycollada - pyside2 - pyside2-tools - pyside6 - python - pyyaml - scipy - shiboken2 - shiboken6 - ; + pythonDeps = + with python3Packages; + [ + boost + gitpython # for addon manager + matplotlib + opencamlib + pivy + ply # for openSCAD file support + py-slvs + pybind11 + pycollada + python + pyyaml # (at least for) PyrateWorkbench + scipy + ] + ++ lib.optionals ifcSupport [ + ifcopenshell + ] + ++ lib.optionals (qtVersion == 5) [ + pyside2 + pyside2-tools + shiboken2 + ] + ++ lib.optionals (qtVersion == 6) [ + pyside6 + shiboken6 + ]; + freecad-utils = callPackage ./freecad-utils.nix { }; in freecad-utils.makeCustomizable ( @@ -85,34 +94,22 @@ freecad-utils.makeCustomizable ( wrapGAppsHook3 ] ++ lib.optionals (qtVersion == 5) [ - pyside2-tools + python3Packages.pyside2-tools qt5.wrapQtAppsHook ] ++ lib.optionals (qtVersion == 6) [ qt6.wrapQtAppsHook ]; buildInputs = [ - boost coin3d eigen fmt - gitpython # for addon manager gts hdf5 libGLU libXmu - matplotlib medfile mpi ode - opencamlib - pivy - ply # for openSCAD file support - py-slvs - pybind11 - pycollada - python - pyyaml # (at least for) PyrateWorkbench - scipy vtk xercesc yaml-cpp @@ -121,9 +118,6 @@ freecad-utils.makeCustomizable ( ++ lib.optionals (qtVersion == 5) [ libsForQt5.soqt opencascade-occt_7_6 - pyside2 - pyside2-tools - shiboken2 qt5.qtbase qt5.qttools qt5.qtwayland @@ -132,17 +126,13 @@ freecad-utils.makeCustomizable ( ] ++ lib.optionals (qtVersion == 6) [ opencascade-occt - pyside6 - shiboken6 qt6.qtbase qt6.qtsvg qt6.qttools qt6.qtwayland qt6.qtwebengine ] - ++ lib.optionals ifcSupport [ - ifcopenshell - ] + ++ pythonDeps ++ lib.optionals spaceNavSupport ( [ libspnav ] ++ lib.optionals (qtVersion == 5) [ libsForQt5.qtx11extras ] ); @@ -169,26 +159,26 @@ freecad-utils.makeCustomizable ( ] ++ lib.optionals (qtVersion == 5) [ "-DBUILD_QT5=ON" - "-DSHIBOKEN_INCLUDE_DIR=${shiboken2}/include" + "-DSHIBOKEN_INCLUDE_DIR=${python3Packages.shiboken2}/include" "-DSHIBOKEN_LIBRARY=Shiboken2::libshiboken" ( - "-DPYSIDE_INCLUDE_DIR=${pyside2}/include" - + ";${pyside2}/include/PySide2/QtCore" - + ";${pyside2}/include/PySide2/QtWidgets" - + ";${pyside2}/include/PySide2/QtGui" + "-DPYSIDE_INCLUDE_DIR=${python3Packages.pyside2}/include" + + ";${python3Packages.pyside2}/include/PySide2/QtCore" + + ";${python3Packages.pyside2}/include/PySide2/QtWidgets" + + ";${python3Packages.pyside2}/include/PySide2/QtGui" ) "-DPYSIDE_LIBRARY=PySide2::pyside2" ] ++ lib.optionals (qtVersion == 6) [ "-DBUILD_QT5=OFF" "-DBUILD_QT6=ON" - "-DSHIBOKEN_INCLUDE_DIR=${shiboken6}/include" + "-DSHIBOKEN_INCLUDE_DIR=${python3Packages.shiboken6}/include" "-DSHIBOKEN_LIBRARY=Shiboken6::libshiboken" ( - "-DPYSIDE_INCLUDE_DIR=${pyside6}/include" - + ";${pyside6}/include/PySide6/QtCore" - + ";${pyside6}/include/PySide6/QtWidgets" - + ";${pyside6}/include/PySide6/QtGui" + "-DPYSIDE_INCLUDE_DIR=${python3Packages.pyside6}/include" + + ";${python3Packages.pyside6}/include/PySide6/QtCore" + + ";${python3Packages.pyside6}/include/PySide6/QtWidgets" + + ";${python3Packages.pyside6}/include/PySide6/QtGui" ) "-DPYSIDE_LIBRARY=PySide6::pyside6" ]; @@ -198,13 +188,13 @@ freecad-utils.makeCustomizable ( export NIX_LDFLAGS="-L${gfortran.cc.lib}/lib64 -L${gfortran.cc.lib}/lib $NIX_LDFLAGS"; ''; - preConfigure = '' - qtWrapperArgs+=(--prefix PYTHONPATH : "$PYTHONPATH") - ''; + dontWrapGApps = true; qtWrapperArgs = [ "--set COIN_GL_NO_CURRENT_CONTEXT_CHECK 1" "--prefix PATH : ${libredwg}/bin" + "--prefix PYTHONPATH : ${python3Packages.makePythonPath pythonDeps}" + "\${gappsWrapperArgs[@]}" ] ++ lib.optionals (!withWayland) [ "--set QT_QPA_PLATFORM xcb" ]; From 0855dc4cf56d967c94402b3502cd094378d455f7 Mon Sep 17 00:00:00 2001 From: qbisi Date: Mon, 30 Jun 2025 23:30:17 +0800 Subject: [PATCH 03/10] freecad: remove duplicated cmakeFlag (cherry picked from commit c002f9ae8dd52d847915c71838007f11d279fe5b) --- pkgs/by-name/fr/freecad/package.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/pkgs/by-name/fr/freecad/package.nix b/pkgs/by-name/fr/freecad/package.nix index 3e515e9875742..62aa3685e367e 100644 --- a/pkgs/by-name/fr/freecad/package.nix +++ b/pkgs/by-name/fr/freecad/package.nix @@ -151,7 +151,6 @@ freecad-utils.makeCustomizable ( cmakeFlags = [ "-Wno-dev" # turns off warnings which otherwise makes it hard to see what is going on - "-DBUILD_FLAT_MESH:BOOL=ON" "-DBUILD_DRAWING=ON" "-DBUILD_FLAT_MESH:BOOL=ON" "-DINSTALL_TO_SITEPACKAGES=OFF" From f2f4c2f98af6e5cc934f55b6b348aba241d44252 Mon Sep 17 00:00:00 2001 From: qbisi Date: Mon, 30 Jun 2025 23:34:15 +0800 Subject: [PATCH 04/10] freecad: fix build with vtk 9.5 (cherry picked from commit 51fb016f9d7096334a7f1a6a007c94c7746aca8e) --- pkgs/by-name/fr/freecad/package.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkgs/by-name/fr/freecad/package.nix b/pkgs/by-name/fr/freecad/package.nix index 62aa3685e367e..215101d9a4c66 100644 --- a/pkgs/by-name/fr/freecad/package.nix +++ b/pkgs/by-name/fr/freecad/package.nix @@ -147,6 +147,11 @@ freecad-utils.makeCustomizable ( url = "https://github.com/FreeCAD/FreeCAD/commit/8e04c0a3dd9435df0c2dec813b17d02f7b723b19.patch?full_index=1"; hash = "sha256-H6WbJFTY5/IqEdoi5N+7D4A6pVAmZR4D+SqDglwS18c="; }) + # https://github.com/FreeCAD/FreeCAD/pull/22221 + (fetchpatch { + url = "https://github.com/FreeCAD/FreeCAD/commit/3d2b7dc9c7ac898b30fe469b7cbd424ed1bca0a2.patch?full_index=1"; + hash = "sha256-XCQdv/+dYdJ/ptA2VKrD63qYILyaP276ISMkmWLtT30="; + }) ]; cmakeFlags = [ From e4732a88f3d9df3790c224f158cac8c38bfed49e Mon Sep 17 00:00:00 2001 From: Grimmauld Date: Sat, 5 Jul 2025 12:01:32 +0200 Subject: [PATCH 05/10] freecad: enable ifc unconditionally closes #370121 follow-up to #330190 The BIM workspace depends on ifc, there is little reason why it should be conditional to a flag that causes a from-source rebuild. It should just be always enabled. (cherry picked from commit f772e38277b387b1e225987fb84ed61af38174b3) --- pkgs/by-name/fr/freecad/package.nix | 6 ++---- pkgs/by-name/fr/freecad/tests/default.nix | 2 -- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/pkgs/by-name/fr/freecad/package.nix b/pkgs/by-name/fr/freecad/package.nix index 215101d9a4c66..e8b3cf5279e70 100644 --- a/pkgs/by-name/fr/freecad/package.nix +++ b/pkgs/by-name/fr/freecad/package.nix @@ -25,7 +25,7 @@ pkg-config, python3Packages, spaceNavSupport ? stdenv.hostPlatform.isLinux, - ifcSupport ? false, + ifcSupport ? false, # Now a no-op, retained on 25.05 branch for backport compat. stdenv, swig, vtk, @@ -45,6 +45,7 @@ let [ boost gitpython # for addon manager + ifcopenshell matplotlib opencamlib pivy @@ -56,9 +57,6 @@ let pyyaml # (at least for) PyrateWorkbench scipy ] - ++ lib.optionals ifcSupport [ - ifcopenshell - ] ++ lib.optionals (qtVersion == 5) [ pyside2 pyside2-tools diff --git a/pkgs/by-name/fr/freecad/tests/default.nix b/pkgs/by-name/fr/freecad/tests/default.nix index 954aadaf17fff..26fa5db076404 100644 --- a/pkgs/by-name/fr/freecad/tests/default.nix +++ b/pkgs/by-name/fr/freecad/tests/default.nix @@ -1,9 +1,7 @@ { callPackage, - freecad, }: { python-path = callPackage ./python-path.nix { }; modules = callPackage ./modules.nix { }; - withIfcSupport = freecad.override { ifcSupport = true; }; } From ec15024fc8651f9257696631ea843a192822cb9b Mon Sep 17 00:00:00 2001 From: mivorasu Date: Thu, 31 Jul 2025 06:38:56 +0000 Subject: [PATCH 06/10] freecad: replace `rev` with `tag` in fetchFromGitHub (cherry picked from commit 7091e75f78a96fe617a1711eb9f13f4a58c439d1) --- pkgs/by-name/fr/freecad/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/by-name/fr/freecad/package.nix b/pkgs/by-name/fr/freecad/package.nix index e8b3cf5279e70..48dc25c531ad3 100644 --- a/pkgs/by-name/fr/freecad/package.nix +++ b/pkgs/by-name/fr/freecad/package.nix @@ -77,7 +77,7 @@ freecad-utils.makeCustomizable ( src = fetchFromGitHub { owner = "FreeCAD"; repo = "FreeCAD"; - rev = finalAttrs.version; + tag = finalAttrs.version; hash = "sha256-VFTNawXxu2ofjj2Frg4OfVhiMKFywBhm7lZunP85ZEQ="; fetchSubmodules = true; }; From e134cdb936073e62f6fcd16ec9066261c989cfec Mon Sep 17 00:00:00 2001 From: Nick Cao Date: Fri, 15 Aug 2025 19:52:32 -0400 Subject: [PATCH 07/10] freecad: apply patch fixing crash on wayland (cherry picked from commit 3d0c9bbafc65260634b71a50bf8897d2ceab0090) --- pkgs/by-name/fr/freecad/package.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkgs/by-name/fr/freecad/package.nix b/pkgs/by-name/fr/freecad/package.nix index 48dc25c531ad3..ae2b22adb2bbe 100644 --- a/pkgs/by-name/fr/freecad/package.nix +++ b/pkgs/by-name/fr/freecad/package.nix @@ -150,6 +150,12 @@ freecad-utils.makeCustomizable ( url = "https://github.com/FreeCAD/FreeCAD/commit/3d2b7dc9c7ac898b30fe469b7cbd424ed1bca0a2.patch?full_index=1"; hash = "sha256-XCQdv/+dYdJ/ptA2VKrD63qYILyaP276ISMkmWLtT30="; }) + # Inform Coin to use EGL when on Wayland + # https://github.com/FreeCAD/FreeCAD/pull/21917 + (fetchpatch { + url = "https://github.com/FreeCAD/FreeCAD/commit/60aa5ff3730d77037ffad0c77ba96b99ef0c7df3.patch?full_index=1"; + hash = "sha256-K6PWQ1U+/fsjDuir7MiAKq71CAIHar3nKkO6TKYl32k="; + }) ]; cmakeFlags = [ From 58df9c0d18844c3a97007e355cefe2c042e036d8 Mon Sep 17 00:00:00 2001 From: Grimmauld Date: Sat, 16 Aug 2025 11:36:33 +0200 Subject: [PATCH 08/10] freecad: 1.0.1 -> 1.0.2 Tag: https://github.com/FreeCAD/FreeCAD/releases/tag/1.0.2 (cherry picked from commit 8a57bfa841e77a171161376986e224657a48eaeb) --- pkgs/by-name/fr/freecad/package.nix | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/pkgs/by-name/fr/freecad/package.nix b/pkgs/by-name/fr/freecad/package.nix index ae2b22adb2bbe..c0842dcc7c702 100644 --- a/pkgs/by-name/fr/freecad/package.nix +++ b/pkgs/by-name/fr/freecad/package.nix @@ -72,13 +72,13 @@ in freecad-utils.makeCustomizable ( stdenv.mkDerivation (finalAttrs: { pname = "freecad"; - version = "1.0.1"; + version = "1.0.2"; src = fetchFromGitHub { owner = "FreeCAD"; repo = "FreeCAD"; tag = finalAttrs.version; - hash = "sha256-VFTNawXxu2ofjj2Frg4OfVhiMKFywBhm7lZunP85ZEQ="; + hash = "sha256-J//O/ABMFa3TFYwR0wc8d1UTA5iSFnEP2thOjuCN+uE="; fetchSubmodules = true; }; @@ -145,11 +145,6 @@ freecad-utils.makeCustomizable ( url = "https://github.com/FreeCAD/FreeCAD/commit/8e04c0a3dd9435df0c2dec813b17d02f7b723b19.patch?full_index=1"; hash = "sha256-H6WbJFTY5/IqEdoi5N+7D4A6pVAmZR4D+SqDglwS18c="; }) - # https://github.com/FreeCAD/FreeCAD/pull/22221 - (fetchpatch { - url = "https://github.com/FreeCAD/FreeCAD/commit/3d2b7dc9c7ac898b30fe469b7cbd424ed1bca0a2.patch?full_index=1"; - hash = "sha256-XCQdv/+dYdJ/ptA2VKrD63qYILyaP276ISMkmWLtT30="; - }) # Inform Coin to use EGL when on Wayland # https://github.com/FreeCAD/FreeCAD/pull/21917 (fetchpatch { From 07cfe2fb833153f836a2ada19da2d49f2b364a32 Mon Sep 17 00:00:00 2001 From: Grimmauld Date: Wed, 6 Aug 2025 15:10:14 +0200 Subject: [PATCH 09/10] freecad: remove mpi dependency According to upstream, "Med Fichier can require MPI". We do not have Med Fichier, so we can remove mpi. If this causes issues, it should be reverted. However, FEM still works, so this is probably fine. (cherry picked from commit 7138517a7375b593a317cdabf10bf09081e444ed) --- pkgs/by-name/fr/freecad/package.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkgs/by-name/fr/freecad/package.nix b/pkgs/by-name/fr/freecad/package.nix index c0842dcc7c702..e53a07da29702 100644 --- a/pkgs/by-name/fr/freecad/package.nix +++ b/pkgs/by-name/fr/freecad/package.nix @@ -17,7 +17,6 @@ libspnav, libXmu, medfile, - mpi, ninja, ode, opencascade-occt_7_6, @@ -106,7 +105,6 @@ freecad-utils.makeCustomizable ( libGLU libXmu medfile - mpi ode vtk xercesc From 02e44a75c8b99d760c702935c4b90232dad53c3e Mon Sep 17 00:00:00 2001 From: Grimmauld Date: Tue, 12 Aug 2025 20:08:59 +0200 Subject: [PATCH 10/10] freecad: enable gmsh integration (cherry picked from commit c7e08edcf0761463a2d89a9688c96fc07cb30de4) --- pkgs/by-name/fr/freecad/package.nix | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/pkgs/by-name/fr/freecad/package.nix b/pkgs/by-name/fr/freecad/package.nix index e53a07da29702..0e12c0d1ca102 100644 --- a/pkgs/by-name/fr/freecad/package.nix +++ b/pkgs/by-name/fr/freecad/package.nix @@ -37,6 +37,8 @@ qt5, qt6, nix-update-script, + gmsh, + which, }: let pythonDeps = @@ -151,6 +153,11 @@ freecad-utils.makeCustomizable ( }) ]; + postPatch = '' + substituteInPlace src/Mod/Fem/femmesh/gmshtools.py \ + --replace-fail 'self.gmsh_bin = "gmsh"' 'self.gmsh_bin = "${lib.getExe gmsh}"' + ''; + cmakeFlags = [ "-Wno-dev" # turns off warnings which otherwise makes it hard to see what is going on "-DBUILD_DRAWING=ON" @@ -191,13 +198,20 @@ freecad-utils.makeCustomizable ( dontWrapGApps = true; - qtWrapperArgs = [ - "--set COIN_GL_NO_CURRENT_CONTEXT_CHECK 1" - "--prefix PATH : ${libredwg}/bin" - "--prefix PYTHONPATH : ${python3Packages.makePythonPath pythonDeps}" - "\${gappsWrapperArgs[@]}" - ] - ++ lib.optionals (!withWayland) [ "--set QT_QPA_PLATFORM xcb" ]; + qtWrapperArgs = + let + binPath = lib.makeBinPath [ + libredwg + which # for locating tools + ]; + in + [ + "--set COIN_GL_NO_CURRENT_CONTEXT_CHECK 1" + "--prefix PATH : ${binPath}" + "--prefix PYTHONPATH : ${python3Packages.makePythonPath pythonDeps}" + "\${gappsWrapperArgs[@]}" + ] + ++ lib.optionals (!withWayland) [ "--set QT_QPA_PLATFORM xcb" ]; postFixup = '' mv $out/share/doc $out