diff --git a/pkgs/applications/science/math/sage/default.nix b/pkgs/applications/science/math/sage/default.nix
index 8ef1f5189e5..4a18d1e88a6 100644
--- a/pkgs/applications/science/math/sage/default.nix
+++ b/pkgs/applications/science/math/sage/default.nix
@@ -38,14 +38,16 @@ let
logo64 = "${sage-src}/doc/common/themes/sage/static/sageicon.png";
};
+ three = callPackage ./threejs-sage.nix { };
+
# A bash script setting various environment variables to tell sage where
# the files its looking fore are located. Also see `sage-env`.
env-locations = callPackage ./env-locations.nix {
inherit pari_data;
inherit singular maxima-ecl;
+ inherit three;
ecl = maxima-ecl.ecl;
cysignals = python3.pkgs.cysignals;
- three = nodePackages.three;
mathjax = nodePackages.mathjax;
};
@@ -70,8 +72,8 @@ let
inherit python3 pythonEnv;
inherit sage-env;
inherit pynac singular maxima-ecl;
+ inherit three;
pkg-config = pkgs.pkg-config; # not to confuse with pythonPackages.pkg-config
- three = nodePackages.three;
};
# Doesn't actually build anything, just runs sages testsuite. This is a
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
deleted file mode 100644
index 88cb66506b1..00000000000
--- a/pkgs/applications/science/math/sage/patches/dont-grep-threejs-version-from-minified-js.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-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 1fb605b3599..8ac5143f443 100644
--- a/pkgs/applications/science/math/sage/sage-src.nix
+++ b/pkgs/applications/science/math/sage/sage-src.nix
@@ -131,9 +131,6 @@ 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
-
# updated eclib output has punctuation changes and tidier whitespace
./patches/eclib-20210223-test-formatting.patch
diff --git a/pkgs/applications/science/math/sage/threejs-sage.nix b/pkgs/applications/science/math/sage/threejs-sage.nix
new file mode 100644
index 00000000000..0e4ad4dee95
--- /dev/null
+++ b/pkgs/applications/science/math/sage/threejs-sage.nix
@@ -0,0 +1,18 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+ pname = "threejs-sage";
+ version = "r122";
+
+ src = fetchFromGitHub {
+ owner = "sagemath";
+ repo = "threejs-sage";
+ rev = version;
+ sha256 = "sha256-xPAPt36Fon3hYQq6SOmGkIyUzAII2LMl10nqYG4UPI0=";
+ };
+
+ installPhase = ''
+ mkdir -p $out/lib/node_modules/three
+ cp -r build version $out/lib/node_modules/three
+ '';
+}