about summary refs log tree commit diff
path: root/pkgs/applications/science
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/science')
-rw-r--r--pkgs/applications/science/biology/N3/default.nix11
-rw-r--r--pkgs/applications/science/biology/igv/default.nix4
-rw-r--r--pkgs/applications/science/biology/inormalize/default.nix11
-rw-r--r--pkgs/applications/science/biology/spades/default.nix5
-rw-r--r--pkgs/applications/science/biology/stacks/default.nix4
-rw-r--r--pkgs/applications/science/chemistry/gwyddion/default.nix4
-rw-r--r--pkgs/applications/science/chemistry/jmol/default.nix4
-rw-r--r--pkgs/applications/science/chemistry/molden/default.nix2
-rw-r--r--pkgs/applications/science/chemistry/openmolcas/default.nix3
-rw-r--r--pkgs/applications/science/chemistry/openmolcas/pyparsing.patch37
-rw-r--r--pkgs/applications/science/electronics/magic-vlsi/default.nix4
-rw-r--r--pkgs/applications/science/electronics/nanovna-saver/default.nix6
-rw-r--r--pkgs/applications/science/electronics/simulide/default.nix129
-rw-r--r--pkgs/applications/science/logic/easycrypt/default.nix4
-rw-r--r--pkgs/applications/science/math/eigenmath/default.nix6
-rw-r--r--pkgs/applications/science/math/sage/default.nix3
-rw-r--r--pkgs/applications/science/math/sage/patches/disable-slow-glpk-test.patch6
-rw-r--r--pkgs/applications/science/math/sage/patches/numpy-1.25-deprecation.patch18
-rw-r--r--pkgs/applications/science/math/sage/python-modules/sage-setup.nix4
-rw-r--r--pkgs/applications/science/math/sage/sage-src.nix113
-rw-r--r--pkgs/applications/science/math/sage/sagedoc.nix25
-rw-r--r--pkgs/applications/science/math/sage/sagelib.nix24
-rw-r--r--pkgs/applications/science/misc/cwltool/default.nix26
-rw-r--r--pkgs/applications/science/misc/snakemake/default.nix8
-rw-r--r--pkgs/applications/science/physics/nnpdf/default.nix4
-rw-r--r--pkgs/applications/science/robotics/mujoco/default.nix9
26 files changed, 273 insertions, 201 deletions
diff --git a/pkgs/applications/science/biology/N3/default.nix b/pkgs/applications/science/biology/N3/default.nix
index 2f4aa4ce3927e..e7ae8fb3cea3d 100644
--- a/pkgs/applications/science/biology/N3/default.nix
+++ b/pkgs/applications/science/biology/N3/default.nix
@@ -1,6 +1,6 @@
 { lib, stdenv, fetchFromGitHub, cmake, makeWrapper,
   perlPackages,
-  libminc, EBTKS }:
+  libminc, ebtks }:
 
 stdenv.mkDerivation rec {
   pname = "N3";
@@ -13,11 +13,16 @@ stdenv.mkDerivation rec {
     sha256 = "06hci7gzhy8p34ggvx7gah2k9yxpwhgmq1cgw8pcd1r82g4rg6kd";
   };
 
+  postPatch = ''
+    substituteInPlace src/VolumeHist/DHistogram.cc \
+      --replace "register " ""
+  '';
+
   nativeBuildInputs = [ cmake makeWrapper ];
-  buildInputs = [ libminc EBTKS ];
+  buildInputs = [ libminc ebtks ];
   propagatedBuildInputs = with perlPackages; [ perl MNI-Perllib GetoptTabular ];
 
-  cmakeFlags = [ "-DLIBMINC_DIR=${libminc}/lib/cmake" "-DEBTKS_DIR=${EBTKS}/lib/" ];
+  cmakeFlags = [ "-DLIBMINC_DIR=${libminc}/lib/cmake" "-DEBTKS_DIR=${ebtks}/lib/" ];
 
   postFixup = ''
     for p in $out/bin/*; do
diff --git a/pkgs/applications/science/biology/igv/default.nix b/pkgs/applications/science/biology/igv/default.nix
index 827fdb6fa1abf..f7be7119b85df 100644
--- a/pkgs/applications/science/biology/igv/default.nix
+++ b/pkgs/applications/science/biology/igv/default.nix
@@ -2,10 +2,10 @@
 
 stdenv.mkDerivation rec {
   pname = "igv";
-  version = "2.17.0";
+  version = "2.17.1";
   src = fetchzip {
     url = "https://data.broadinstitute.org/igv/projects/downloads/${lib.versions.majorMinor version}/IGV_${version}.zip";
-    sha256 = "sha256-nOwaeVIvqfHrvykfTyOdnMN6+QpsvNN14jXBQx7THsE=";
+    sha256 = "sha256-EXI1jVr8cJPYLLe81hzqLpP3IypHBZ0cb6z+WrDeFKQ=";
   };
 
   installPhase = ''
diff --git a/pkgs/applications/science/biology/inormalize/default.nix b/pkgs/applications/science/biology/inormalize/default.nix
index b4999193e177e..bf24f0ce19bf9 100644
--- a/pkgs/applications/science/biology/inormalize/default.nix
+++ b/pkgs/applications/science/biology/inormalize/default.nix
@@ -1,6 +1,6 @@
 { lib, stdenv, fetchFromGitHub, cmake, makeWrapper,
   perlPackages,
-  libminc, EBTKS }:
+  libminc, ebtks }:
 
 stdenv.mkDerivation rec {
   pname = "inormalize";
@@ -15,11 +15,16 @@ stdenv.mkDerivation rec {
 
   patches = [ ./lgmask-interp.patch ./nu_correct_norm-interp.patch ];
 
+  postPatch = ''
+    substituteInPlace inormalize.cc \
+      --replace "clamp" "::clamp"
+  '';
+
   nativeBuildInputs = [ cmake makeWrapper ];
-  buildInputs = [ libminc EBTKS ];
+  buildInputs = [ libminc ebtks ];
   propagatedBuildInputs = with perlPackages; [ perl GetoptTabular MNI-Perllib ];
 
-  cmakeFlags = [ "-DLIBMINC_DIR=${libminc}/lib/cmake" "-DEBTKS_DIR=${EBTKS}/lib/" ];
+  cmakeFlags = [ "-DLIBMINC_DIR=${libminc}/lib/cmake" "-DEBTKS_DIR=${ebtks}/lib/" ];
 
   postFixup = ''
     for p in $out/bin/*; do
diff --git a/pkgs/applications/science/biology/spades/default.nix b/pkgs/applications/science/biology/spades/default.nix
index 976dd65ef2232..0b0491a71aaef 100644
--- a/pkgs/applications/science/biology/spades/default.nix
+++ b/pkgs/applications/science/biology/spades/default.nix
@@ -17,6 +17,11 @@ stdenv.mkDerivation rec {
 
   sourceRoot = "${pname}-${version}/src";
 
+  env.CXXFLAGS = toString [
+    # GCC 13: error: 'uint32_t' does not name a type
+    "-include cstdint"
+  ];
+
   meta = with lib; {
     description = "St. Petersburg genome assembler: assembly toolkit containing various assembly pipelines";
     license = licenses.gpl2Only;
diff --git a/pkgs/applications/science/biology/stacks/default.nix b/pkgs/applications/science/biology/stacks/default.nix
index 0a18c5f40fdaa..3d385b54d469e 100644
--- a/pkgs/applications/science/biology/stacks/default.nix
+++ b/pkgs/applications/science/biology/stacks/default.nix
@@ -2,10 +2,10 @@
 
 stdenv.mkDerivation rec {
   pname = "stacks";
-  version = "2.65";
+  version = "2.66";
   src = fetchurl {
     url = "http://catchenlab.life.illinois.edu/stacks/source/${pname}-${version}.tar.gz";
-    sha256 = "sha256-/9a9PWKVq5yJzEUfOF03zR1Hp3AZw9MF8xICoriV4uo=";
+    sha256 = "sha256-9pHmcLYMdn9xy3vhlOU42Io/4L61auoncfpZNRPUN/I=";
   };
 
   buildInputs = [ zlib ];
diff --git a/pkgs/applications/science/chemistry/gwyddion/default.nix b/pkgs/applications/science/chemistry/gwyddion/default.nix
index 5794d7077af96..7c1312f27f25b 100644
--- a/pkgs/applications/science/chemistry/gwyddion/default.nix
+++ b/pkgs/applications/science/chemistry/gwyddion/default.nix
@@ -21,10 +21,10 @@ in
 
 stdenv.mkDerivation rec {
   pname = "gwyddion";
-   version = "2.64";
+   version = "2.65";
   src = fetchurl {
     url = "mirror://sourceforge/gwyddion/gwyddion-${version}.tar.xz";
-    sha256 = "sha256-FDL4XDHH6WYF47OsnhxpM7s7YadutiCDjcJKCF8ZlCw=";
+    sha256 = "sha256-kRX7CoPJY8YkYNode5g0OCyWmL+5sM8puCmk9ZE2nqM=";
   };
 
   nativeBuildInputs = [ pkg-config file ];
diff --git a/pkgs/applications/science/chemistry/jmol/default.nix b/pkgs/applications/science/chemistry/jmol/default.nix
index ce3b279deab1a..2d41342ff5858 100644
--- a/pkgs/applications/science/chemistry/jmol/default.nix
+++ b/pkgs/applications/science/chemistry/jmol/default.nix
@@ -25,14 +25,14 @@ let
   };
 in
 stdenv.mkDerivation rec {
-  version = "16.1.47";
+  version = "16.1.49";
   pname = "jmol";
 
   src = let
     baseVersion = "${lib.versions.major version}.${lib.versions.minor version}";
   in fetchurl {
     url = "mirror://sourceforge/jmol/Jmol/Version%20${baseVersion}/Jmol%20${version}/Jmol-${version}-binary.tar.gz";
-    hash = "sha256-3hsH+RkPPoViKp1bc/88GDVSG8jf9hiPKPkUfe9PIkk=";
+    hash = "sha256-rzW0dB6LkKnbqHMLII6u3a6iJ1nz6gys/TN0fZFcrBk=";
   };
 
   patchPhase = ''
diff --git a/pkgs/applications/science/chemistry/molden/default.nix b/pkgs/applications/science/chemistry/molden/default.nix
index fc5c18e4ccdff..7a15ef9363b59 100644
--- a/pkgs/applications/science/chemistry/molden/default.nix
+++ b/pkgs/applications/science/chemistry/molden/default.nix
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
      mkdir -p $out/bin
   '';
 
-  enableParallelBuilding = true;
+  enableParallelBuilding = false;
 
   meta = with lib; {
      description = "Display and manipulate molecular structures";
diff --git a/pkgs/applications/science/chemistry/openmolcas/default.nix b/pkgs/applications/science/chemistry/openmolcas/default.nix
index 33c77c063bf91..0aeb01c2916b5 100644
--- a/pkgs/applications/science/chemistry/openmolcas/default.nix
+++ b/pkgs/applications/science/chemistry/openmolcas/default.nix
@@ -59,6 +59,9 @@ stdenv.mkDerivation {
 
     # Required for a local QCMaquis build
     ./qcmaquis.patch
+
+    # PyParsing >= 3.11 compatibility, can be removed on next release
+    ./pyparsing.patch
   ];
 
   postPatch = ''
diff --git a/pkgs/applications/science/chemistry/openmolcas/pyparsing.patch b/pkgs/applications/science/chemistry/openmolcas/pyparsing.patch
new file mode 100644
index 0000000000000..271b52840ff93
--- /dev/null
+++ b/pkgs/applications/science/chemistry/openmolcas/pyparsing.patch
@@ -0,0 +1,37 @@
+diff --git a/Tools/pymolcas/emil_grammar.py b/Tools/pymolcas/emil_grammar.py
+index acbbae8..509c56f 100644
+--- a/Tools/pymolcas/emil_grammar.py
++++ b/Tools/pymolcas/emil_grammar.py
+@@ -15,6 +15,14 @@
+ 
+ from __future__ import (unicode_literals, division, absolute_import, print_function)
+ 
++try:
++  u = unicode
++  del u
++  py2 = True
++except NameError:
++  pass
++
++
+ from re import sub
+ from pyparsing import *
+ 
+@@ -24,6 +32,8 @@ def chomp(s):
+ 
+ def chompAction(s, l, t):
+   try:
++    if (py2):
++      pass
+     return list(map(lambda s: chomp(unicode(s)), t))
+   except NameError:
+     return list(map(chomp, t))
+@@ -33,6 +43,8 @@ def removeEMILEnd(s):
+ 
+ def removeEMILEndAction(s, l, t):
+   try:
++    if (py2):
++      pass
+     return list(map(lambda s: removeEMILEnd(unicode(s)), t))
+   except NameError:
+     return list(map(removeEMILEnd, t))
diff --git a/pkgs/applications/science/electronics/magic-vlsi/default.nix b/pkgs/applications/science/electronics/magic-vlsi/default.nix
index 1c9ef55e1e016..be1050a4dd3a0 100644
--- a/pkgs/applications/science/electronics/magic-vlsi/default.nix
+++ b/pkgs/applications/science/electronics/magic-vlsi/default.nix
@@ -13,11 +13,11 @@
 
 stdenv.mkDerivation rec {
   pname = "magic-vlsi";
-  version = "8.3.454";
+  version = "8.3.456";
 
   src = fetchurl {
     url    = "http://opencircuitdesign.com/magic/archive/magic-${version}.tgz";
-    sha256 = "sha256-nHZJ2L54J2x+H7S29TeGPInTgjEhRFv3h2ki0ccGYB0=";
+    sha256 = "sha256-PrKbLecFJ+th0x9A0fp550RnA8w9oWETMtFpQZP8tzw=";
   };
 
   nativeBuildInputs = [ python3 ];
diff --git a/pkgs/applications/science/electronics/nanovna-saver/default.nix b/pkgs/applications/science/electronics/nanovna-saver/default.nix
index e9e693fcf5118..61788938e40ab 100644
--- a/pkgs/applications/science/electronics/nanovna-saver/default.nix
+++ b/pkgs/applications/science/electronics/nanovna-saver/default.nix
@@ -7,13 +7,13 @@
 }:
 python3.pkgs.buildPythonApplication rec {
   pname = "nanovna-saver";
-  version = "0.6.0";
+  version = "0.6.3";
 
   src = fetchFromGitHub {
     owner = "NanoVNA-Saver";
     repo = pname;
-    rev = "v${version}";
-    sha256 = "sha256-2vDjAdEL8eNje5bm/1m+Fdi+PCGxpXwpxe2KvlLYB58=";
+    rev = "refs/tags/v${version}";
+    sha256 = "sha256-lL6n3hcsIbLmrRKPi/ckWW2XUAtmBqvMSplkWOF4VKQ=";
   };
 
    nativeBuildInputs = [
diff --git a/pkgs/applications/science/electronics/simulide/default.nix b/pkgs/applications/science/electronics/simulide/default.nix
new file mode 100644
index 0000000000000..fbd76a0e0ffc6
--- /dev/null
+++ b/pkgs/applications/science/electronics/simulide/default.nix
@@ -0,0 +1,129 @@
+{ lib
+, fetchbzr
+, mkDerivation
+, qmake
+, qtserialport
+, qtmultimedia
+, qttools
+, qtscript
+}:
+
+let
+  generic =
+    { version
+    , release
+    , branch
+    , rev
+    , sha256
+    , extraPostPatch ? ""
+    , extraBuildInputs ? [ ]
+    , iconPath ? "resources/icons/simulide.png"
+    , installFiles ? ''
+        cp -r data examples $out/share/simulide
+        cp simulide $out/bin/simulide
+      ''
+    }:
+    mkDerivation {
+      pname = "simulide";
+      version = "${version}-${release}";
+
+      src = fetchbzr {
+        url = "https://code.launchpad.net/~arcachofo/simulide/${branch}";
+        inherit rev sha256;
+      };
+
+      postPatch = ''
+        sed -i resources/simulide.desktop \
+          -e "s|^Exec=.*$|Exec=simulide|" \
+          -e "s|^Icon=.*$|Icon=simulide|"
+
+        # Note: older versions don't have REV_NO
+        sed -i SimulIDE.pro \
+          -e "s|^VERSION = .*$|VERSION = ${version}|" \
+          -e "s|^RELEASE = .*$|RELEASE = -${release}|" \
+          -e "s|^REV_NO = .*$|REV_NO = ${rev}|" \
+          -e "s|^BUILD_DATE = .*$|BUILD_DATE = ??-??-??|"
+
+        ${extraPostPatch}
+      '';
+
+      preConfigure = ''
+        cd build_XX
+      '';
+
+      nativeBuildInputs = [
+        qmake
+      ];
+
+      buildInputs = [
+        qtserialport
+        qtmultimedia
+        qttools
+      ] ++ extraBuildInputs;
+
+      installPhase = ''
+        runHook preInstall
+
+        install -Dm644 ../resources/simulide.desktop $out/share/applications/simulide.desktop
+        install -Dm644 ../${iconPath} $out/share/icons/hicolor/256x256/apps/simulide.png
+
+        mkdir -p $out/share/simulide $out/bin
+        pushd executables/SimulIDE_*
+        ${installFiles}
+        popd
+
+        runHook postInstall
+      '';
+
+      meta = {
+        description = "A simple real time electronic circuit simulator";
+        longDescription = ''
+          SimulIDE is a simple real time electronic circuit simulator, intended for hobbyist or students
+          to learn and experiment with analog and digital electronic circuits and microcontrollers.
+          It supports PIC, AVR, Arduino and other MCUs and MPUs.
+        '';
+        homepage = "https://simulide.com/";
+        license = lib.licenses.gpl3Only;
+        mainProgram = "simulide";
+        maintainers = with lib.maintainers; [ carloscraveiro tomasajt ];
+        platforms = [ "x86_64-linux" ];
+      };
+    };
+in
+{
+  simulide_0_4_15 = generic {
+    version = "0.4.15";
+    release = "SR10";
+    branch = "simulide_0.4.14"; # the branch name does not mach the version for some reason
+    rev = "291";
+    sha256 = "sha256-BBoZr/S2pif0Jft5wrem8y00dXl08jq3kFiIUtOr3LM=";
+    extraPostPatch = ''
+      # GCC 13 needs the <cstdint> header explicitly included
+      sed -i src/gpsim/value.h -e '1i #include <cstdint>'
+      sed -i src/gpsim/modules/watchdog.h -e '1i #include <cstdint>'
+    '';
+    extraBuildInputs = [ qtscript ];
+    iconPath = "resources/icons/hicolor/256x256/simulide.png"; # upstream had a messed up icon path in this release
+    installFiles = ''
+      cp -r share/simulide/* $out/share/simulide
+      cp bin/simulide $out/bin/simulide
+    '';
+  };
+
+  simulide_1_0_0 = generic {
+    version = "1.0.0";
+    release = "SR2";
+    branch = "1.0.0";
+    rev = "1449";
+    sha256 = "sha256-rJWZvnjVzaKXU2ktbde1w8LSNvu0jWkDIk4dq2l7t5g=";
+    extraBuildInputs = [ qtscript ];
+  };
+
+  simulide_1_1_0 = generic {
+    version = "1.1.0";
+    release = "RC1";
+    branch = "1.1.0";
+    rev = "1912";
+    sha256 = "sha256-bgRAqt7h2LtU2Ze6Jiz8APhyPcV15v4ofxIilIeZV9E=";
+  };
+}
diff --git a/pkgs/applications/science/logic/easycrypt/default.nix b/pkgs/applications/science/logic/easycrypt/default.nix
index 2ea2dea70718c..36ff9f2046f8b 100644
--- a/pkgs/applications/science/logic/easycrypt/default.nix
+++ b/pkgs/applications/science/logic/easycrypt/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "easycrypt";
-  version = "2023.09";
+  version = "2024.01";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = "r${version}";
-    hash = "sha256-9xavU9jRisZekPqC87EyiLXtZCGu/9QeGzq6BJGt1+Y=";
+    hash = "sha256-UYDoVMi5TtYxgPq5nkp/oRtcMcHl2p7KAG8ptvuOL5U=";
   };
 
   nativeBuildInputs = with ocamlPackages; [
diff --git a/pkgs/applications/science/math/eigenmath/default.nix b/pkgs/applications/science/math/eigenmath/default.nix
index 561c9c66a50ec..3cd9384ecf1fd 100644
--- a/pkgs/applications/science/math/eigenmath/default.nix
+++ b/pkgs/applications/science/math/eigenmath/default.nix
@@ -7,13 +7,13 @@
 
 stdenv.mkDerivation rec {
   pname = "eigenmath";
-  version = "unstable-2023-12-31";
+  version = "unstable-2024-01-22";
 
   src = fetchFromGitHub {
     owner = "georgeweigt";
     repo = pname;
-    rev = "cc92936e226b0a4c77cdc5d00b7a02c472746f6f";
-    hash = "sha256-wY06pZzqcgYdBS7ecB3ZnvmK74ve651n6aHHAN5DWdw=";
+    rev = "db4b22cd536cefbdf0b6c928f11c793a5580da0b";
+    hash = "sha256-T1GXh1go08XVTToEg5Dq4BuwTCxxqYwQsx+c8g1RPxg=";
   };
 
   checkPhase = let emulator = stdenv.hostPlatform.emulator buildPackages; in ''
diff --git a/pkgs/applications/science/math/sage/default.nix b/pkgs/applications/science/math/sage/default.nix
index a4173d1f5e6d8..765c691c95551 100644
--- a/pkgs/applications/science/math/sage/default.nix
+++ b/pkgs/applications/science/math/sage/default.nix
@@ -32,6 +32,7 @@ let
     });
   };
 
+  # matches src/sage/repl/ipython_kernel/install.py:kernel_spec
   jupyter-kernel-definition = {
     displayName = "SageMath ${sage-src.version}";
     argv = [
@@ -42,7 +43,7 @@ let
       "-f"
       "{connection_file}"
     ];
-    language = "sagemath";
+    language = "sage";
     # just one 16x16 logo is available
     logo32 = "${sage-src}/src/doc/common/themes/sage/static/sageicon.png";
     logo64 = "${sage-src}/src/doc/common/themes/sage/static/sageicon.png";
diff --git a/pkgs/applications/science/math/sage/patches/disable-slow-glpk-test.patch b/pkgs/applications/science/math/sage/patches/disable-slow-glpk-test.patch
index c04463e7e99c4..89f0613589d4c 100644
--- a/pkgs/applications/science/math/sage/patches/disable-slow-glpk-test.patch
+++ b/pkgs/applications/science/math/sage/patches/disable-slow-glpk-test.patch
@@ -1,12 +1,12 @@
 diff --git a/src/sage/graphs/generic_graph.py b/src/sage/graphs/generic_graph.py
-index 0070705f78..ac19818f1b 100644
+index 2deb533f7f..663ff2cd13 100644
 --- a/src/sage/graphs/generic_graph.py
 +++ b/src/sage/graphs/generic_graph.py
-@@ -6699,12 +6699,6 @@ class GenericGraph(GenericGraph_pyx):
+@@ -6953,12 +6953,6 @@ class GenericGraph(GenericGraph_pyx):
              sage: G = DiGraph(d6, format='dig6')
              sage: G.edge_connectivity()
              5
--            sage: G.edge_disjoint_spanning_trees(5)  # long time
+-            sage: G.edge_disjoint_spanning_trees(5)     # long time                     # needs sage.numerical.mip
 -            [Digraph on 28 vertices,
 -             Digraph on 28 vertices,
 -             Digraph on 28 vertices,
diff --git a/pkgs/applications/science/math/sage/patches/numpy-1.25-deprecation.patch b/pkgs/applications/science/math/sage/patches/numpy-1.25-deprecation.patch
deleted file mode 100644
index 539afc4b3b77d..0000000000000
--- a/pkgs/applications/science/math/sage/patches/numpy-1.25-deprecation.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-diff --git a/src/sage/tests/books/computational-mathematics-with-sagemath/graphique_doctest.py b/src/sage/tests/books/computational-mathematics-with-sagemath/graphique_doctest.py
-index aa153fd4cd..eebbe87aff 100644
---- a/src/sage/tests/books/computational-mathematics-with-sagemath/graphique_doctest.py
-+++ b/src/sage/tests/books/computational-mathematics-with-sagemath/graphique_doctest.py
-@@ -134,11 +134,11 @@ Sage example in ./graphique.tex, line 1120::
-   sage: t = srange(0, 5, 0.1); p = Graphics()
-   sage: for k in srange(0, 10, 0.15):
-   ....:       y = integrate.odeint(f, k, t)
--  ....:       p += line(zip(t, flatten(y)))
-+  ....:       p += line(zip(t, y.flatten()))
-   sage: t = srange(0, -5, -0.1); q = Graphics()
-   sage: for k in srange(0, 10, 0.15):
-   ....:       y = integrate.odeint(f, k, t)
--  ....:       q += line(zip(t, flatten(y)))
-+  ....:       q += line(zip(t, y.flatten()))
-   sage: y = var('y')
-   sage: v = plot_vector_field((1, -cos(x*y)), (x,-5,5), (y,-2,11))
-   sage: g = p + q + v; g.show()
diff --git a/pkgs/applications/science/math/sage/python-modules/sage-setup.nix b/pkgs/applications/science/math/sage/python-modules/sage-setup.nix
index e1c497678d50b..a96f7ccd5d4c0 100644
--- a/pkgs/applications/science/math/sage/python-modules/sage-setup.nix
+++ b/pkgs/applications/science/math/sage/python-modules/sage-setup.nix
@@ -1,7 +1,7 @@
 { lib
 , buildPythonPackage
 , sage-src
-, cython
+, cython_3
 , jinja2
 , pkgconfig # the python module, not the pkg-config alias
 }:
@@ -11,7 +11,7 @@ buildPythonPackage rec {
   pname = "sage-setup";
   src = sage-src;
 
-  nativeBuildInputs = [ cython ];
+  nativeBuildInputs = [ cython_3 ];
   buildInputs = [ pkgconfig ];
   propagatedBuildInputs = [ jinja2 ];
 
diff --git a/pkgs/applications/science/math/sage/sage-src.nix b/pkgs/applications/science/math/sage/sage-src.nix
index 96b1adb562f49..4149e9163a363 100644
--- a/pkgs/applications/science/math/sage/sage-src.nix
+++ b/pkgs/applications/science/math/sage/sage-src.nix
@@ -1,6 +1,7 @@
 { stdenv
 , fetchFromGitHub
 , fetchpatch
+, fetchurl
 }:
 
 # This file is responsible for fetching the sage source and adding necessary patches.
@@ -9,14 +10,23 @@
 # all get the same sources with the same patches applied.
 
 stdenv.mkDerivation rec {
-  version = "10.0";
+  version = "10.2";
   pname = "sage-src";
 
   src = fetchFromGitHub {
     owner = "sagemath";
     repo = "sage";
     rev = version;
-    sha256 = "sha256-zN/Lo/GBCjYGemuaYpgG3laufN8te3wPjXMQ+Me9zgY=";
+    sha256 = "sha256-VXnPdJhtw5Y/anecrVpevJDCyBVfnjksyuuZslNipm4=";
+  };
+
+  # contains essential files (e.g., setup.cfg) generated by the bootstrap script.
+  # TODO: investigate https://github.com/sagemath/sage/pull/35950
+  configure-src = fetchurl {
+    # the hash below is the tagged commit's _parent_. it can also be found by looking for
+    # the "configure" asset at https://github.com/sagemath/sage/releases/tag/${version}
+    url = "mirror://sageupstream/configure/configure-b2813506039143e6f0abe859ab67a343abf72c2e.tar.gz";
+    sha256 = "sha256-a1v0XyoKI+zO6Sjm8DzEwItRHbIgRDbpj4UfwVH+/hw=";
   };
 
   # Patches needed because of particularities of nix or the way this is packaged.
@@ -52,99 +62,6 @@ stdenv.mkDerivation rec {
   # should come from or be proposed to upstream. This list will probably never
   # be empty since dependencies update all the time.
   packageUpgradePatches = [
-    # https://github.com/sagemath/sage/pull/35584, landed in 10.1.beta1
-    (fetchpatch {
-      name = "networkx-3.1-upgrade.patch";
-      url = "https://github.com/sagemath/sage/commit/be0aab74fd7e399e146988ef27260d2837baebae.diff";
-      sha256 = "sha256-xBGrylNaiF7CpfmX9/4lTioP2LSYKoRCkKlKSGZuv9U=";
-    })
-
-    # https://github.com/sagemath/sage/pull/35612, landed in 10.1.beta1
-    (fetchpatch {
-      name = "linbox-1.7-upgrade.patch";
-      url = "https://github.com/sagemath/sage/commit/35cbd2f2a2c4c355455d39b1424f05ea0aa4349b.diff";
-      sha256 = "sha256-/TpvIQZUqmbUuz6wvp3ni9oRir5LBA2FKDJcmnHI1r4=";
-    })
-
-    # https://github.com/sagemath/sage/pull/35619, landed in 10.1.beta1
-    (fetchpatch {
-      name = "maxima-5.46.0-upgrade.patch";
-      url = "https://github.com/sagemath/sage/commit/4ddf9328e7598284d4bc03cd2ed890f0be6b6399.diff";
-      sha256 = "sha256-f6YaZiLSj+E0LJMsMZHDt6vecWffSAuUHYVkegBEhno=";
-    })
-
-    # https://github.com/sagemath/sage/pull/35635, landed in 10.1.beta1
-    (fetchpatch {
-      name = "sympy-1.12-upgrade.patch";
-      url = "https://github.com/sagemath/sage/commit/1a73b3bbbfa0f4a297e05d49305070e1ed5ae598.diff";
-      sha256 = "sha256-k8Oam+EiRcfXC7qCdLacCx+7vpUAw2K1wsjKcQbeGb4=";
-    })
-
-    # https://github.com/sagemath/sage/pull/35826, landed in 10.1.beta5
-    (fetchpatch {
-      name = "numpy-1.25.0-upgrade.patch";
-      url = "https://github.com/sagemath/sage/commit/ecfe06b8f1fe729b07e885f0de55244467e5c137.diff";
-      sha256 = "sha256-G0xhl+LyNdDYPzRqSHK3fHaepcIzpuwmqRiussraDf0=";
-    })
-
-    # https://github.com/sagemath/sage/pull/35826#issuecomment-1658569891
-    ./patches/numpy-1.25-deprecation.patch
-
-    # https://github.com/sagemath/sage/pull/35842, landed in 10.1.beta5
-    (fetchpatch {
-      name = "scipy-1.11-upgrade.patch";
-      url = "https://github.com/sagemath/sage/commit/90ece168c3c61508baa36659b0027b7dd8b43add.diff";
-      sha256 = "sha256-Y5TmuJcUJR+veb2AuSVODGs+xkVV+pTM8fWTm4q+NDs=";
-    })
-
-    # https://github.com/sagemath/sage/pull/35825, landed in 10.1.beta6
-    (fetchpatch {
-      name = "singular-4.3.2p2-upgrade.patch";
-      url = "https://github.com/sagemath/sage/commit/1a1b49f814cdf4c4c8d0ac8930610f3fef6af5b0.diff";
-      sha256 = "sha256-GqMgoi0tsP7zcCcPumhdsbvhPB6fgw1ufx6gHlc6iSc=";
-    })
-
-    # https://github.com/sagemath/sage/pull/36006, landed in 10.2.beta2
-    (fetchpatch {
-      name = "gmp-6.3-upgrade.patch";
-      url = "https://github.com/sagemath/sage/commit/5e841de46c3baa99cd1145b36ff9163e9340a55c.diff";
-      sha256 = "sha256-fJPDryLtGBQz9qHDiCkBwjiW2lN6v7HiHgxY7CTeHcs=";
-    })
-
-    # https://github.com/sagemath/sage/pull/36279, landed in 10.2.beta4
-    (fetchpatch {
-       name = "matplotlib-3.8-upgrade.patch";
-       url = "https://github.com/sagemath/sage/commit/0fcf88935908440930c5f79202155aca4ad57518.diff";
-       sha256 = "sha256-mvqAHaTCXsxPv901L8HSTnrfghfXYdq0wfLoP/cYQZI=";
-    })
-
-    # https://github.com/sagemath/sage/pull/35658, landed in 10.1.beta2
-    (fetchpatch {
-      name = "sphinx-7-upgrade.patch";
-      url = "https://github.com/sagemath/sage/commit/cacd9a89b5c4fdcf84a8dd2b7d5bdc10cc78109a.diff";
-      sha256 = "sha256-qJvliTJjR3XBc5pH6Q0jtm8c4bhtZcTcF3O04Ro1uaU=";
-    })
-
-    # https://github.com/sagemath/sage/pull/36296, landed in 10.2.beta4
-    (fetchpatch {
-      name = "duplicate-args-region_plot.patch";
-      url = "https://github.com/sagemath/sage/commit/461727b453712550a2c5dc0ae11933523255aaed.diff";
-      sha256 = "sha256-mC8084VQoUBk4hocALF+Y9Cwb38Zt360eldi/SSjna8=";
-    })
-
-    # https://github.com/sagemath/sage/pull/36218, landed in 10.2.beta3
-    (fetchpatch {
-      name = "sageenv-disable-file-validation.patch";
-      url = "https://github.com/sagemath/sage/commit/31a764f4a9ec54d3ea970aa9514a088c4e603ebd.diff";
-      sha256 = "sha256-NhYUTTmYlyjss3eS8HZXP8U11TElQY0cv6KW4wBOaJY=";
-    })
-
-    # https://github.com/sagemath/sage/pull/36235, landed in 10.2.beta3
-    (fetchpatch {
-      name = "ecl-23.9.9.patch";
-      url = "https://github.com/sagemath/sage/commit/b6b50a80e9660c002d069019f5b8f04e9324a423.diff";
-      sha256 = "sha256-nF+5oKad1VYms6Dxr1t9/V0XBkoMfhy0KCY/ZPddrm0=";
-    })
   ];
 
   patches = nixPatches ++ bugfixPatches ++ packageUpgradePatches;
@@ -158,11 +75,17 @@ stdenv.mkDerivation rec {
     sed -i \
       "s|var(\"SAGE_ROOT\".*|var(\"SAGE_ROOT\", \"$out\")|" \
       src/sage/env.py
+
+    # sage --docbuild unsets JUPYTER_PATH, which breaks our docbuilding
+    # https://trac.sagemath.org/ticket/33650#comment:32
+    sed -i "/export JUPYTER_PATH/d" src/bin/sage
   '';
 
   buildPhase = "# do nothing";
 
   installPhase = ''
     cp -r . "$out"
+    tar xkzf ${configure-src} -C "$out"
+    rm "$out/configure"
   '';
 }
diff --git a/pkgs/applications/science/math/sage/sagedoc.nix b/pkgs/applications/science/math/sage/sagedoc.nix
index 228b5aa2c609c..5e2191486bf08 100644
--- a/pkgs/applications/science/math/sage/sagedoc.nix
+++ b/pkgs/applications/science/math/sage/sagedoc.nix
@@ -11,11 +11,6 @@ stdenv.mkDerivation rec {
 
   strictDeps = true;
 
-  nativeBuildInputs = [
-    # for patchShebangs below
-    python3
-  ];
-
   unpackPhase = ''
     export SAGE_DOC_OVERRIDE="$PWD/share/doc/sage"
     export SAGE_DOC_SRC_OVERRIDE="$PWD/docsrc"
@@ -29,18 +24,6 @@ stdenv.mkDerivation rec {
     export HOME="$TMPDIR/sage_home"
     mkdir -p "$HOME"
 
-    # run bootstrap script to generate Sage spkg docs, because unfortunately some unrelated doc
-    # pages link to them. it needs a few ugly (but self-contained) hacks for a standalone run.
-    cp -r "${src}/build" "$HOME"
-    chmod -R 755 "$HOME/build"
-    sed -i "/assert/d" "$HOME/build/sage_bootstrap/env.py"
-    sed -i "s|sage-bootstrap-python|python3|" "$HOME/build/bin/sage-package"
-    patchShebangs "$HOME/build/bin/sage-package"
-    pushd "$SAGE_DOC_SRC_OVERRIDE"
-    sed -i "s|OUTPUT_DIR=\"src/doc/|OUTPUT_DIR=\"$SAGE_DOC_SRC_OVERRIDE/|" bootstrap
-    PATH="$HOME/build/bin:$PATH" SAGE_ROOT="${src}" ./bootstrap
-    popd
-
     # adapted from src/doc/Makefile (doc-src target), which tries to call Sage from PATH
     mkdir -p $SAGE_DOC_SRC_OVERRIDE/en/reference/repl
     ${sage-with-env}/bin/sage -advanced > $SAGE_DOC_SRC_OVERRIDE/en/reference/repl/options.txt
@@ -51,12 +34,10 @@ stdenv.mkDerivation rec {
     # jupyter-sphinx calls the sagemath jupyter kernel during docbuild
     export JUPYTER_PATH=${jupyter-kernel-specs}
 
-    # sage --docbuild unsets JUPYTER_PATH, so we call sage_docbuild directly
-    # https://trac.sagemath.org/ticket/33650#comment:32
-    ${sage-with-env}/bin/sage --python3 -m sage_docbuild \
+    ${sage-with-env}/bin/sage --docbuild \
       --mathjax \
       --no-pdf-links \
-      all html < /dev/null
+      all html
   '';
 
   installPhase = ''
@@ -80,7 +61,7 @@ stdenv.mkDerivation rec {
     # sagemath_doc_html tests assume sage tests are being run, so we
     # compromise: we run standard tests, but only on files containing
     # relevant tests. as of Sage 9.6, there are only 4 such files.
-    grep -PRl "#.*optional.*sagemath_doc_html" ${src}/src/sage{,_docbuild} | \
+    grep -PRl "#.*(optional|needs).*sagemath_doc_html" ${src}/src/sage{,_docbuild} | \
       xargs ${sage-with-env}/bin/sage -t --optional=sage,sagemath_doc_html
   '';
 }
diff --git a/pkgs/applications/science/math/sage/sagelib.nix b/pkgs/applications/science/math/sage/sagelib.nix
index f8beabaac1ffa..5a1f4ee473c9b 100644
--- a/pkgs/applications/science/math/sage/sagelib.nix
+++ b/pkgs/applications/science/math/sage/sagelib.nix
@@ -48,7 +48,7 @@
 , cvxopt
 , cypari2
 , cysignals
-, cython
+, cython_3
 , fpylll
 , gmpy2
 , importlib-metadata
@@ -152,7 +152,7 @@ buildPythonPackage rec {
     cvxopt
     cypari2
     cysignals
-    cython
+    cython_3
     fpylll
     gmpy2
     importlib-metadata
@@ -202,29 +202,13 @@ buildPythonPackage rec {
     mkdir -p "$SAGE_SHARE/sage/ext/notebook-ipython"
     mkdir -p "var/lib/sage/installed"
 
-    cd build/pkgs/sagelib
-
-    # some files, like Pipfile, pyproject.toml, requirements.txt and setup.cfg
-    # are generated by the bootstrap script using m4. these can fetch data from
-    # build/pkgs, either directly or via sage-get-system-packages.
-    sed -i '/sage_conf/d' src/setup.cfg.m4
-    sed -i '/sage_conf/d' src/requirements.txt.m4
-
     # version lower bounds are useful, but upper bounds are a hassle because
     # Sage tests already catch any relevant API breakage.
     # according to the discussion at https://trac.sagemath.org/ticket/33520,
     # upper bounds will be less noisy starting from Sage 9.6.
-    sed -i 's/==0.5.1/>=0.5.1/' ../ptyprocess/install-requires.txt
-    sed -i 's/, <[^, ]*//' ../*/install-requires.txt
-
-    for infile in src/*.m4; do
-        if [ -f "$infile" ]; then
-            outfile="src/$(basename $infile .m4)"
-            m4 "$infile" > "$outfile"
-        fi
-    done
+    sed -i 's/, <[^, ]*//' build/pkgs/*/install-requires.txt
 
-    cd src
+    cd build/pkgs/sagelib/src
   '';
 
   postInstall = ''
diff --git a/pkgs/applications/science/misc/cwltool/default.nix b/pkgs/applications/science/misc/cwltool/default.nix
index 7c28f65f3bf7b..fb3b26a12edf1 100644
--- a/pkgs/applications/science/misc/cwltool/default.nix
+++ b/pkgs/applications/science/misc/cwltool/default.nix
@@ -7,32 +7,40 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "cwltool";
-  version = "3.1.20230213100550";
-  format = "setuptools";
+  version = "3.1.20240112164112";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "common-workflow-language";
-    repo = pname;
+    repo = "cwltool";
     rev = "refs/tags/${version}";
-    hash = "sha256-BtHkIVadcccnYYX8lRqiCzO+/qFeBaZfdUuu6qrjysk=";
+    hash = "sha256-Y0DORypXlTDv04qh796oXPSTxCXGb7rLQ8Su+/As7Lo=";
   };
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "ruamel.yaml >= 0.15, < 0.17.22" "ruamel.yaml" \
+      --replace "ruamel.yaml >= 0.16, < 0.19" "ruamel.yaml" \
       --replace "prov == 1.5.1" "prov" \
-      --replace "setup_requires=PYTEST_RUNNER," ""
+      --replace '"schema-salad >= 8.4.20230426093816, < 9",' "" \
+      --replace "PYTEST_RUNNER + " ""
+    substituteInPlace pyproject.toml \
+      --replace "mypy==1.8.0" "mypy" \
+      --replace "ruamel.yaml>=0.16.0,<0.18" "ruamel.yaml"
   '';
 
   nativeBuildInputs = [
     git
-  ];
+  ] ++ (with python3.pkgs; [
+    setuptools
+    setuptools-scm
+  ]);
 
   propagatedBuildInputs = with python3.pkgs; [
     argcomplete
     bagit
     coloredlogs
     cwl-utils
+    mypy
     mypy-extensions
     prov
     psutil
@@ -42,6 +50,10 @@ python3.pkgs.buildPythonApplication rec {
     ruamel-yaml
     schema-salad
     shellescape
+    spython
+    toml
+    types-psutil
+    types-requests
     typing-extensions
   ];
 
diff --git a/pkgs/applications/science/misc/snakemake/default.nix b/pkgs/applications/science/misc/snakemake/default.nix
index d279bd1e2cfd1..085b44bf586cd 100644
--- a/pkgs/applications/science/misc/snakemake/default.nix
+++ b/pkgs/applications/science/misc/snakemake/default.nix
@@ -6,14 +6,18 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "snakemake";
-  version = "8.0.1";
+  version = "8.2.1";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "snakemake";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-F4c/lgp7J6LLye+f3FpzaXz3zM7R+jXxTziPlVbxFxA=";
+    hash = "sha256-NpsDJuxH+NHvE735OCHaISPSOhYDxWiKqCb4Yk9DHf4=";
+    # https://github.com/python-versioneer/python-versioneer/issues/217
+    postFetch = ''
+      sed -i "$out"/snakemake/_version.py -e 's#git_refnames = ".*"#git_refnames = " (tag: v${version})"#'
+    '';
   };
 
   postPatch = ''
diff --git a/pkgs/applications/science/physics/nnpdf/default.nix b/pkgs/applications/science/physics/nnpdf/default.nix
index f6d3e94c1a057..a53940d38d74d 100644
--- a/pkgs/applications/science/physics/nnpdf/default.nix
+++ b/pkgs/applications/science/physics/nnpdf/default.nix
@@ -15,13 +15,13 @@
 
 stdenv.mkDerivation rec {
   pname = "nnpdf";
-  version = "4.0.7";
+  version = "4.0.8";
 
   src = fetchFromGitHub {
     owner = "NNPDF";
     repo = pname;
     rev = version;
-    hash = "sha256-J5l+ZO+5pfxKlpFuy4PEQynbqs1QIqMK6hhMFvmb/zs=";
+    hash = "sha256-hGCA2K/fD6UZa9WD42IDmZV1oxNgjFaXkjOZKGgGSBg=";
   };
 
   postPatch = ''
diff --git a/pkgs/applications/science/robotics/mujoco/default.nix b/pkgs/applications/science/robotics/mujoco/default.nix
index 95d3e12693507..266118e881bf7 100644
--- a/pkgs/applications/science/robotics/mujoco/default.nix
+++ b/pkgs/applications/science/robotics/mujoco/default.nix
@@ -129,15 +129,15 @@ let
 
 in stdenv.mkDerivation rec {
   pname = "mujoco";
-  version = "3.1.0";
+  version = "3.1.1";
 
   # Bumping version? Make sure to look though the MuJoCo's commit
   # history for bumped dependency pins!
   src = fetchFromGitHub {
     owner = "google-deepmind";
-    repo = pname;
-    rev = version;
-    hash = "sha256-a8h30psoAlj9dI4j8IfY3WzWjY4MrRosGbvgt79s1BQ=";
+    repo = "mujoco";
+    rev = "refs/tags/${version}";
+    hash = "sha256-+2nt7G8j6Pi60cfMBPYWPGwD8wpxDOSylenm0oCitzM=";
   };
 
   patches = [ ./mujoco-system-deps-dont-fetch.patch ];
@@ -180,6 +180,7 @@ in stdenv.mkDerivation rec {
   meta = with lib; {
     description = "Multi-Joint dynamics with Contact. A general purpose physics simulator.";
     homepage = "https://mujoco.org/";
+    changelog = "https://github.com/google-deepmind/mujoco/releases/tag/${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ samuela tmplt ];
   };