diff --git a/pkgs/applications/science/math/sage/patches/dont-grep-threejs-version-from-minified-js.patch b/pkgs/applications/science/math/sage/patches/dont-grep-threejs-version-from-minified-js.patch
new file mode 100644
index 00000000000..88cb66506b1
--- /dev/null
+++ b/pkgs/applications/science/math/sage/patches/dont-grep-threejs-version-from-minified-js.patch
@@ -0,0 +1,16 @@
+diff --git a/src/sage/repl/rich_output/display_manager.py b/src/sage/repl/rich_output/display_manager.py
+index fb21f7a9c9..f39470777d 100644
+--- a/src/sage/repl/rich_output/display_manager.py
++++ b/src/sage/repl/rich_output/display_manager.py
+@@ -749,9 +749,9 @@ class DisplayManager(SageObject):
+ import sage.env
+ import re
+ import os
+- with open(os.path.join(sage.env.THREEJS_DIR, 'build', 'three.min.js')) as f:
++ with open(os.path.join(sage.env.THREEJS_DIR, 'build', 'three.js')) as f:
+ text = f.read().replace('\n','')
+- version = re.search(r'REVISION="(\d+)"', text).group(1)
++ version = re.search(r"REVISION = '(\d+)'", text).group(1)
+ return """
+
+
diff --git a/pkgs/applications/science/math/sage/sage-src.nix b/pkgs/applications/science/math/sage/sage-src.nix
index a43efc5ebf1..ff8e53d4172 100644
--- a/pkgs/applications/science/math/sage/sage-src.nix
+++ b/pkgs/applications/science/math/sage/sage-src.nix
@@ -109,6 +109,9 @@ stdenv.mkDerivation rec {
# fix test output with sympy 1.7 (https://trac.sagemath.org/ticket/30985)
./patches/sympy-1.7-update.patch
+
+ # workaround until we use sage's fork of threejs, which contains a "version" file
+ ./patches/dont-grep-threejs-version-from-minified-js.patch
];
patches = nixPatches ++ bugfixPatches ++ packageUpgradePatches;