From 4df232e986319dd8ea13d89da135a4c8da5fa932 Mon Sep 17 00:00:00 2001 From: Summer Tea Date: Sun, 26 Jul 2026 00:11:49 -0400 Subject: [PATCH 1/4] freecad: add `versionCheckHook` (cherry picked from commit 8e41b2756684e628bc2192cb48e8003602b3b5de) --- pkgs/by-name/fr/freecad/package.nix | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/pkgs/by-name/fr/freecad/package.nix b/pkgs/by-name/fr/freecad/package.nix index a6c61d1c4bd2..db050e4daf3a 100644 --- a/pkgs/by-name/fr/freecad/package.nix +++ b/pkgs/by-name/fr/freecad/package.nix @@ -32,6 +32,8 @@ which, gtk3, gsettings-desktop-schemas, + versionCheckHook, + writeShellScript, }: let pythonDeps = with python3Packages; [ @@ -150,6 +152,28 @@ freecad-utils.makeCustomizable ( }; }; + nativeInstallCheckInputs = [ versionCheckHook ]; + doInstallCheck = true; + + versionCheckProgram = writeShellScript "version-check.sh" '' + # As of 2026-07-26, the way FreeCAD handles `--version` is awful. + # - The main program, `freecad`, opens a GUI prompt for `--version`, + # unless `--console` is also given. + # - Even with `--version --console`, `freecad` crashes if there is no + # display server, so we need to use `freecadcmd` instead, which is a + # separate binary, for unknown reasons. + # - `freecadcmd --version` crashes if it cannot create a directory under + # `$HOME/.local/share/FreeCAD/` + # Adding `--safe-mode` appears to fix this, but `versionCheckProgramArg` + # only allows for a single argument (as a list gets concaternated), + # so we need this script. + + # The path to `freecadcmd` gets passed in via $1, to allow the `out` + # placeholder to function properly + exec "$1" --version --safe-mode + ''; + versionCheckProgramArg = "${placeholder "out"}/bin/freecadcmd"; + # 6.9k object files, cuts down build time from 2-3 hours to 15 minutes requiredSystemFeatures = [ "big-parallel" ]; From 78747c321e6a6f6b38ca437e3ce41e11fd34ec31 Mon Sep 17 00:00:00 2001 From: Summer Tea Date: Sun, 26 Jul 2026 01:53:47 -0400 Subject: [PATCH 2/4] freecad: set `meta.mainProgram` (cherry picked from commit dfb33d7ba60526373aaefcfa473f38edb1452ebf) --- pkgs/by-name/fr/freecad/package.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/by-name/fr/freecad/package.nix b/pkgs/by-name/fr/freecad/package.nix index db050e4daf3a..5b92344dd86a 100644 --- a/pkgs/by-name/fr/freecad/package.nix +++ b/pkgs/by-name/fr/freecad/package.nix @@ -202,6 +202,7 @@ freecad-utils.makeCustomizable ( grimmauld ]; platforms = lib.platforms.linux; + mainProgram = "freecad"; }; }) ) From 70d9875ee16df98afa38d35a7cce2734ee1e7315 Mon Sep 17 00:00:00 2001 From: Summer Tea Date: Sun, 26 Jul 2026 03:17:59 -0400 Subject: [PATCH 3/4] freecad: 1.1.1 -> 1.1.3 (cherry picked from commit 70adbe787e16f2e0dad3f539db8bd4988c4c95b3) --- 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 5b92344dd86a..4344c541dd0d 100644 --- a/pkgs/by-name/fr/freecad/package.nix +++ b/pkgs/by-name/fr/freecad/package.nix @@ -60,13 +60,13 @@ in freecad-utils.makeCustomizable ( stdenv.mkDerivation (finalAttrs: { pname = "freecad"; - version = "1.1.1"; + version = "1.1.3"; src = fetchFromGitHub { owner = "FreeCAD"; repo = "FreeCAD"; tag = finalAttrs.version; - hash = "sha256-7/VEbs8YDM1Xwc819ab6av5fgRSIbbB6LeCM0V08vRU="; + hash = "sha256-RP68rd19wX4gDD5PuRQ1J4Z9Qmp5HpEg6sC94RRMEdI="; fetchSubmodules = true; }; From a43caec1cd0971f3d293ef7b1a12018308298ec3 Mon Sep 17 00:00:00 2001 From: Summer Tea Date: Sun, 26 Jul 2026 03:18:29 -0400 Subject: [PATCH 4/4] freecad: add acuteaangle to maintainers I use this program and am subscribed to releases and security alerts upstream; I'd be happy to assist in keeping this up to date and tested :) (cherry picked from commit d9ec8ea40b4242164756360fc7720a7e71e357b4) --- pkgs/by-name/fr/freecad/package.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/by-name/fr/freecad/package.nix b/pkgs/by-name/fr/freecad/package.nix index 4344c541dd0d..3511cebc57e5 100644 --- a/pkgs/by-name/fr/freecad/package.nix +++ b/pkgs/by-name/fr/freecad/package.nix @@ -200,6 +200,7 @@ freecad-utils.makeCustomizable ( maintainers = with lib.maintainers; [ srounce grimmauld + acuteaangle ]; platforms = lib.platforms.linux; mainProgram = "freecad";