···11+# CUDA {#cuda}
22+33+CUDA-only packages are stored in the `cudaPackages` packages set. This set
44+includes the `cudatoolkit`, portions of the toolkit in separate derivations,
55+`cudnn`, `cutensor` and `nccl`.
66+77+A package set is available for each CUDA version, so for example
88+`cudaPackages_11_6`. Within each set is a matching version of the above listed
99+packages. Additionally, other versions of the packages that are packaged and
1010+compatible are available as well. For example, there can be a
1111+`cudaPackages.cudnn_8_3_2` package.
1212+1313+To use one or more CUDA packages in an expression, give the expression a `cudaPackages` parameter, and in case CUDA is optional
1414+```nix
1515+cudaSupport ? false
1616+cudaPackages ? {}
1717+```
1818+1919+When using `callPackage`, you can choose to pass in a different variant, e.g.
2020+when a different version of the toolkit suffices
2121+```nix
2222+mypkg = callPackage { cudaPackages = cudaPackages_11_5; }
2323+```
2424+2525+If another version of say `cudnn` or `cutensor` is needed, you can override the
2626+package set to make it the default. This guarantees you get a consistent package
2727+set.
2828+```nix
2929+mypkg = let
3030+ cudaPackages = cudaPackages_11_5.overrideScope' (final: prev {
3131+ cudnn = prev.cudnn_8_3_2;
3232+ }});
3333+in callPackage { inherit cudaPackages; };
3434+```
···11-diff --git a/retroarch.cfg b/retroarch.cfg
22-index cdcb199c9f..ab72f3920f 100644
33---- a/retroarch.cfg
44-+++ b/retroarch.cfg
55-@@ -681,7 +681,7 @@
66- # menu_show_online_updater = true
77-88- # If disabled, will hide the ability to update cores (and core info files) inside the menu.
99--# menu_show_core_updater = true
1010-+menu_show_core_updater = false
1111-1212- # If disabled, the libretro core will keep running in the background when we
1313- # are in the menu.
···8899 buildCommand = ''
1010 mkdir -p $out/lib
1111- for coreDir in $cores
1212- do
1111+ for coreDir in $cores; do
1312 ln -s $coreDir/* $out/lib/.
1413 done
1514···29283029 meta = with retroarch.meta; {
3130 inherit changelog description homepage license maintainers platforms;
3232- longDescription =
3333- "RetroArch is the reference frontend for the libretro API. The following cores are included: "
3434- + lib.concatStringsSep ", " (map (x: "${x.name}") cores)
3535- + ".";
3131+ longDescription = ''
3232+ RetroArch is the reference frontend for the libretro API.
3333+3434+ The following cores are included:
3535+ ${lib.concatStringsSep "\n" (map (x: " - ${x.name}") cores)}
3636+ '';
3737+ # FIXME: exits with error on macOS:
3838+ # No Info.plist file in application bundle or no NSPrincipalClass in the Info.plist file, exiting
3939+ broken = stdenv.isDarwin;
3640 };
3741}
···11+final: prev: let
22+ ### Cuda Toolkit
33+44+ # Function to build the class cudatoolkit package
55+ buildCudaToolkitPackage = final.callPackage ./common.nix;
66+77+ # Version info for the classic cudatoolkit packages that contain everything that is in redist.
88+ cudatoolkitVersions = final.lib.importTOML ./versions.toml;
99+1010+ ### Add classic cudatoolkit package
1111+ cudatoolkit = buildCudaToolkitPackage ((attrs: attrs // { gcc = prev.pkgs.${attrs.gcc}; }) cudatoolkitVersions.${final.cudaVersion});
1212+1313+in {
1414+ inherit cudatoolkit;
1515+}
···11+final: prev: let
22+33+ inherit (final) callPackage;
44+ inherit (prev) cudaVersion lib pkgs;
55+66+ ### Cuda Toolkit Redist
77+88+ # Manifest files for redist cudatoolkit. These can be found at
99+ # https://developer.download.nvidia.com/compute/cuda/redist/
1010+ cudaToolkitRedistManifests = {
1111+ "11.4" = ./manifests/redistrib_11.4.4.json;
1212+ "11.5" = ./manifests/redistrib_11.5.2.json;
1313+ "11.6" = ./manifests/redistrib_11.6.2.json;
1414+ };
1515+1616+ # Function to build a single cudatoolkit redist package
1717+ buildCudaToolkitRedistPackage = callPackage ./build-cuda-redist-package.nix { };
1818+1919+ # Function that builds all cudatoolkit redist packages given a cuda version and manifest file
2020+ buildCudaToolkitRedistPackages = { version, manifest }: let
2121+ attrs = lib.filterAttrs (key: value: key != "release_date") (lib.importJSON manifest);
2222+ in lib.mapAttrs buildCudaToolkitRedistPackage attrs;
2323+2424+ redistExists = cudaToolkitRedistManifests ? "${cudaVersion}";
2525+2626+ # All cudatoolkit redist packages for the current cuda version
2727+ cudaToolkitRedistPackages = if
2828+ lib.hasAttr cudaVersion cudaToolkitRedistManifests
2929+ then buildCudaToolkitRedistPackages { version = cudaVersion; manifest = cudaToolkitRedistManifests.${cudaVersion}; }
3030+ else {};
3131+3232+in cudaToolkitRedistPackages
···11+--- a/src/tools/rustfmt/src/ignore_path.rs
22++++ b/src/tools/rustfmt/src/ignore_path.rs
33+@@ -37,9 +37,9 @@
44+ #[nightly_only_test]
55+ #[test]
66+ fn test_ignore_path_set() {
77+- use std::path::{Path, PathBuf};
88+ use crate::config::{Config, FileName};
99+ use crate::ignore_path::IgnorePathSet;
1010++ use std::path::{Path, PathBuf};
1111+1212+ let config =
1313+ Config::from_toml(r#"ignore = ["foo.rs", "bar_dir/*"]"#, Path::new("")).unwrap();
+6-3
pkgs/development/compilers/rust/rustfmt.nix
···11-{ lib, stdenv, rustPlatform, Security }:
11+{ lib, stdenv, rustPlatform, Security, asNightly ? false }:
2233rustPlatform.buildRustPackage rec {
44- pname = "rustfmt";
44+ pname = "rustfmt" + lib.optionalString asNightly "-nightly";
55 inherit (rustPlatform.rust.rustc) version src;
6677 # the rust source tarball already has all the dependencies vendored, no need to fetch them again
···1919 # As of rustc 1.45.0, these env vars are required to build rustfmt (due to
2020 # https://github.com/rust-lang/rust/pull/72001)
2121 CFG_RELEASE = rustPlatform.rust.rustc.version;
2222- CFG_RELEASE_CHANNEL = "stable";
2222+ CFG_RELEASE_CHANNEL = if asNightly then "nightly" else "stable";
2323+2424+ # FIXME: seems fixed upstream, remove after the next update
2525+ patches = [ ./rustfmt-fix-self-tests.patch ];
23262427 meta = with lib; {
2528 description = "A tool for formatting Rust code according to style guidelines";
···3939 ] ++ lib.optionals isPy27 [ pysparse ]
4040 ++ lib.optionals (!stdenv.isDarwin) [ gmsh ];
41414242+ # Reading version string from Gmsh is broken in latest release of FiPy
4343+ # This issue is repaired on master branch of FiPy
4444+ # Fixed with: https://github.com/usnistgov/fipy/pull/848/files
4545+ # Remove patch with next release.
4646+ patches = [ ./gmsh.patch ];
4747+4848+ checkInputs = lib.optionals (!stdenv.isDarwin) [ gmsh ];
4949+4250 checkPhase = ''
4351 export OMPI_MCA_plm_rsh_agent=${openssh}/bin/ssh
4452 ${python.interpreter} setup.py test --modules
+182
pkgs/development/python-modules/fipy/gmsh.patch
···11+diff --git a/fipy/meshes/gmshMesh.py b/fipy/meshes/gmshMesh.py
22+index fc3ff6c8..d529d532 100755
33+--- a/fipy/meshes/gmshMesh.py
44++++ b/fipy/meshes/gmshMesh.py
55+@@ -13,11 +13,11 @@ import sys
66+ import tempfile
77+ from textwrap import dedent
88+ import warnings
99+-from distutils.version import StrictVersion
1010+1111+ from fipy.tools import numerix as nx
1212+ from fipy.tools import parallelComm
1313+ from fipy.tools import serialComm
1414++from fipy.tools.version import Version, parse_version
1515+ from fipy.tests.doctestPlus import register_skipper
1616+1717+ from fipy.meshes.mesh import Mesh
1818+@@ -38,7 +38,7 @@ def _checkForGmsh():
1919+ hasGmsh = True
2020+ try:
2121+ version = _gmshVersion(communicator=parallelComm)
2222+- hasGmsh = version >= StrictVersion("2.0")
2323++ hasGmsh = version >= Version("2.0")
2424+ except Exception:
2525+ hasGmsh = False
2626+ return hasGmsh
2727+@@ -68,6 +68,7 @@ def gmshVersion(communicator=parallelComm):
2828+ while True:
2929+ try:
3030+ # gmsh returns version in stderr (Why?!?)
3131++ # (newer versions of gmsh return the version in stdout)
3232+ # spyder on Windows throws
3333+ # OSError: [WinError 6] The handle is invalid
3434+ # if we don't PIPE stdout, too
3535+@@ -77,8 +78,11 @@ def gmshVersion(communicator=parallelComm):
3636+ break
3737+3838+ try:
3939+- out, verStr = p.communicate()
4040+- verStr = verStr.decode('ascii').strip()
4141++ out, err = p.communicate()
4242++ verStr = err.decode('ascii').strip()
4343++ if not verStr:
4444++ # newer versions of gmsh return the version in stdout
4545++ verStr = out.decode('ascii').strip()
4646+ break
4747+ except IOError:
4848+ # some weird conflict with things like PyQT can cause
4949+@@ -93,12 +97,12 @@ def gmshVersion(communicator=parallelComm):
5050+ def _gmshVersion(communicator=parallelComm):
5151+ version = gmshVersion(communicator) or "0.0"
5252+ try:
5353+- version = StrictVersion(version)
5454++ version = parse_version(version)
5555+ except ValueError:
5656+ # gmsh returns the version string in stderr,
5757+ # which means it's often unparsable due to irrelevant warnings
5858+ # assume it's OK and move on
5959+- version = StrictVersion("3.0")
6060++ version = Version("3.0")
6161+6262+ return version
6363+6464+@@ -133,7 +137,7 @@ def openMSHFile(name, dimensions=None, coordDimensions=None, communicator=parall
6565+6666+ # Enforce gmsh version to be either >= 2 or 2.5, based on Nproc.
6767+ version = _gmshVersion(communicator=communicator)
6868+- if version < StrictVersion("2.0"):
6969++ if version < Version("2.0"):
7070+ raise EnvironmentError("Gmsh version must be >= 2.0.")
7171+7272+ # If we're being passed a .msh file, leave it be. Otherwise,
7373+@@ -176,9 +180,11 @@ def openMSHFile(name, dimensions=None, coordDimensions=None, communicator=parall
7474+ gmshFlags = ["-%d" % dimensions, "-nopopup"]
7575+7676+ if communicator.Nproc > 1:
7777+- if not (StrictVersion("2.5") < version <= StrictVersion("4.0")):
7878+- warnstr = "Cannot partition with Gmsh version < 2.5 or >= 4.0. " \
7979+- + "Reverting to serial."
8080++ if ((version < Version("2.5"))
8181++ or (Version("4.0") <= version < Version("4.5.2"))):
8282++ warnstr = ("Cannot partition with Gmsh version < 2.5 "
8383++ "or 4.0 <= version < 4.5.2. "
8484++ "Reverting to serial.")
8585+ warnings.warn(warnstr, RuntimeWarning, stacklevel=2)
8686+ communicator = serialComm
8787+8888+@@ -188,13 +194,13 @@ def openMSHFile(name, dimensions=None, coordDimensions=None, communicator=parall
8989+ raise ValueError("'dimensions' must be specified to generate a mesh from a geometry script")
9090+ else: # gmsh version is adequate for partitioning
9191+ gmshFlags += ["-part", "%d" % communicator.Nproc]
9292+- if version >= StrictVersion("4.0"):
9393++ if version >= Version("4.0"):
9494+ # Gmsh 4.x needs to be told to generate ghost cells
9595+- # Unfortunately, the ghosts are broken
9696++ # Unfortunately, the ghosts are broken in Gmsh 4.0--4.5.1
9797+ # https://gitlab.onelab.info/gmsh/gmsh/issues/733
9898+ gmshFlags += ["-part_ghosts"]
9999+100100+- gmshFlags += ["-format", "msh2"]
101101++ gmshFlags += ["-format", "msh2", "-smooth", "8"]
102102+103103+ if background is not None:
104104+ if communicator.procID == 0:
105105+@@ -1387,6 +1393,11 @@ class _GmshTopology(_MeshTopology):
106106+ class Gmsh2D(Mesh2D):
107107+ """Construct a 2D Mesh using Gmsh
108108+109109++ If called in parallel, the mesh will be partitioned based on the value
110110++ of `parallelComm.Nproc`. If an `MSH` file is supplied, it must have
111111++ been previously partitioned with the number of partitions matching
112112++ `parallelComm.Nproc`.
113113++
114114+ >>> radius = 5.
115115+ >>> side = 4.
116116+ >>> squaredCircle = Gmsh2D('''
117117+@@ -1875,6 +1886,11 @@ class Gmsh2D(Mesh2D):
118118+ class Gmsh2DIn3DSpace(Gmsh2D):
119119+ """Create a topologically 2D Mesh in 3D coordinates using Gmsh
120120+121121++ If called in parallel, the mesh will be partitioned based on the value
122122++ of `parallelComm.Nproc`. If an `MSH` file is supplied, it must have
123123++ been previously partitioned with the number of partitions matching
124124++ `parallelComm.Nproc`.
125125++
126126+ Parameters
127127+ ----------
128128+ arg : str
129129+@@ -1959,6 +1975,11 @@ class Gmsh2DIn3DSpace(Gmsh2D):
130130+ class Gmsh3D(Mesh):
131131+ """Create a 3D Mesh using Gmsh
132132+133133++ If called in parallel, the mesh will be partitioned based on the value
134134++ of `parallelComm.Nproc`. If an `MSH` file is supplied, it must have
135135++ been previously partitioned with the number of partitions matching
136136++ `parallelComm.Nproc`.
137137++
138138+ Parameters
139139+ ----------
140140+ arg : str
141141+@@ -2225,7 +2246,7 @@ class GmshGrid2D(Gmsh2D):
142142+ width = nx * dx
143143+ numLayers = int(ny / float(dy))
144144+145145+- if _gmshVersion() < StrictVersion("2.7"):
146146++ if _gmshVersion() < Version("2.7"):
147147+ # kludge: must offset cellSize by `eps` to work properly
148148+ eps = float(dx)/(nx * 10)
149149+ else:
150150+@@ -2299,7 +2320,7 @@ class GmshGrid3D(Gmsh3D):
151151+ width = nx * dx
152152+ depth = nz * dz
153153+154154+- if _gmshVersion() < StrictVersion("2.7"):
155155++ if _gmshVersion() < Version("2.7"):
156156+ # kludge: must offset cellSize by `eps` to work properly
157157+ eps = float(dx)/(nx * 10)
158158+ else:
159159+diff --git a/fipy/tools/version.py b/fipy/tools/version.py
160160+new file mode 100644
161161+index 00000000..93d89c18
162162+--- /dev/null
163163++++ b/fipy/tools/version.py
164164+@@ -0,0 +1,18 @@
165165++"""Shim for version checking
166166++
167167++`distutils.version` is deprecated, but `packaging.version` is unavailable
168168++in Python 2.7
169169++"""
170170++from __future__ import unicode_literals
171171++
172172++__docformat__ = 'restructuredtext'
173173++
174174++
175175++__all__ = ["Version", "parse_version"]
176176++from future.utils import text_to_native_str
177177++__all__ = [text_to_native_str(n) for n in __all__]
178178++
179179++try:
180180++ from packaging.version import Version, parse as parse_version
181181++except ImportError:
182182++ from distutils.version import StrictVersion as Version, StrictVersion as parse_version
···1717# that in nix as well. It would make some things easier and less confusing, but
1818# it would also make the default tensorflow package unfree. See
1919# https://groups.google.com/a/tensorflow.org/forum/#!topic/developers/iRCt5m4qUz0
2020-, cudaSupport ? false, cudatoolkit ? null, cudnn ? null, nccl ? null
2020+, cudaSupport ? false, cudaPackages ? {}
2121, mklSupport ? false, mkl ? null
2222, tensorboardSupport ? true
2323# XLA without CUDA is broken
···3030# Darwin deps
3131, Foundation, Security, cctools, llvmPackages_11
3232}:
3333+3434+let
3535+ inherit (cudaPackages) cudatoolkit cudnn nccl;
3636+in
33373438assert cudaSupport -> cudatoolkit != null
3539 && cudnn != null;
···514518 # Regression test for #77626 removed because not more `tensorflow.contrib`.
515519516520 passthru = {
521521+ inherit cudaPackages;
517522 deps = bazel-build.deps;
518523 libtensorflow = bazel-build.out;
519524 };
···195195 cryptol = throw "cryptol was removed due to prolonged broken build"; # Added 2020-08-21
196196197197 # CUDA Toolkit
198198-199198 cudatoolkit_6 = throw "cudatoolkit_6 has been removed in favor of newer versions"; # Added 2021-02-14
200199 cudatoolkit_65 = throw "cudatoolkit_65 has been removed in favor of newer versions"; # Added 2021-02-14
201200 cudatoolkit_7 = throw "cudatoolkit_7 has been removed in favor of newer versions"; # Added 2021-02-14
···205204 cudatoolkit_9_0 = throw "cudatoolkit_9_0 has been removed in favor of newer versions"; # Added 2021-04-18
206205 cudatoolkit_9_1 = throw "cudatoolkit_9_1 has been removed in favor of newer versions"; # Added 2021-04-18
207206 cudatoolkit_9_2 = throw "cudatoolkit_9_2 has been removed in favor of newer versions"; # Added 2021-04-18
207207+ cudatoolkit_10 = throw "cudatoolkit_10 has been renamed to cudaPackages_10.cudatoolkit"; # Added 2022-04-04
208208+ cudatoolkit_10_0 = throw "cudatoolkit_10_0 has been renamed to cudaPackages_10_0.cudatoolkit"; # Added 2022-04-04
209209+ cudatoolkit_10_1 = throw "cudatoolkit_10_1 has been renamed to cudaPackages_10_1.cudatoolkit"; # Added 2022-04-04
210210+ cudatoolkit_10_2 = throw "cudatoolkit_10_2 has been renamed to cudaPackages_10_2.cudatoolkit"; # Added 2022-04-04
211211+ cudatoolkit_11_0 = throw "cudatoolkit_11_0 has been renamed to cudaPackages_11_0.cudatoolkit"; # Added 2022-04-04
212212+ cudatoolkit_11_1 = throw "cudatoolkit_11_1 has been renamed to cudaPackages_11_1.cudatoolkit"; # Added 2022-04-04
213213+ cudatoolkit_11_2 = throw "cudatoolkit_11_2 has been renamed to cudaPackages_11_2.cudatoolkit"; # Added 2022-04-04
214214+ cudatoolkit_11_3 = throw "cudatoolkit_11_3 has been renamed to cudaPackages_11_3.cudatoolkit"; # Added 2022-04-04
215215+ cudatoolkit_11_4 = throw "cudatoolkit_11_4 has been renamed to cudaPackages_11_4.cudatoolkit"; # Added 2022-04-04
216216+ cudatoolkit_11_5 = throw "cudatoolkit_11_5 has been renamed to cudaPackages_11_5.cudatoolkit"; # Added 2022-04-04
217217+ cudatoolkit_11_6 = throw "cudatoolkit_11_6 has been renamed to cudaPackages_11_6.cudatoolkit"; # Added 2022-04-04
218218+219219+ cudnn = throw "cudnn is now part of cudaPackages*"; # Added 2022-04-04
208220 cudnn6_cudatoolkit_8 = throw "cudnn6_cudatoolkit_8 has been removed in favor of newer versions"; # Added 2021-02-14
209221 cudnn_cudatoolkit_7 = throw "cudnn_cudatoolkit_7 has been removed in favor of newer versions"; # Added 2021-02-14
222222+ cudnn_7_4_cudatoolkit_10_0 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
210223 cudnn_cudatoolkit_7_5 = throw "cudnn_cudatoolkit_7_5 has been removed in favor of newer versions"; # Added 2021-02-14
224224+ cudnn_7_6_cudatoolkit_10_0 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
225225+ cudnn_7_6_cudatoolkit_10_1 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
211226 cudnn_cudatoolkit_8 = throw "cudnn_cudatoolkit_8 has been removed in favor of newer versions"; # Added 2021-02-14
227227+ cudnn_8_1_cudatoolkit_10_2 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
228228+ cudnn_8_1_cudatoolkit_11_0 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
229229+ cudnn_8_1_cudatoolkit_11_1 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
230230+ cudnn_8_1_cudatoolkit_11_2 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
231231+ cudnn_8_1_cudatoolkit_10 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
232232+ cudnn_8_3_cudatoolkit_10_2 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
233233+ cudnn_8_3_cudatoolkit_11_0 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
234234+ cudnn_8_3_cudatoolkit_11_1 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
235235+ cudnn_8_3_cudatoolkit_11_2 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
236236+ cudnn_8_3_cudatoolkit_11_3 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
237237+ cudnn_8_3_cudatoolkit_11_4 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
238238+ cudnn_8_3_cudatoolkit_11_5 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
239239+ cudnn_8_3_cudatoolkit_10 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
240240+ cudnn_8_3_cudatoolkit_11 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
212241 cudnn_cudatoolkit_9 = throw "cudnn_cudatoolkit_9 has been removed in favor of newer versions"; # Added 2021-04-18
213242 cudnn_cudatoolkit_9_0 = throw "cudnn_cudatoolkit_9_0 has been removed in favor of newer versions"; # Added 2021-04-18
214243 cudnn_cudatoolkit_9_1 = throw "cudnn_cudatoolkit_9_1 has been removed in favor of newer versions"; # Added 2021-04-18
215244 cudnn_cudatoolkit_9_2 = throw "cudnn_cudatoolkit_9_2 has been removed in favor of newer versions"; # Added 2021-04-18
245245+246246+ cutensor = throw "cutensor is now part of cudaPackages*"; # Added 2022-04-04
247247+ cutensor_cudatoolkit_10 = throw "cutensor* is now part of cudaPackages*"; # Added 2022-04-04
248248+ cutensor_cudatoolkit_10_1 = throw "cutensor* is now part of cudaPackages*"; # Added 2022-04-04
249249+ cutensor_cudatoolkit_10_2 = throw "cutensor* is now part of cudaPackages*"; # Added 2022-04-04
250250+ cutensor_cudatoolkit_11 = throw "cutensor* is now part of cudaPackages*"; # Added 2022-04-04
251251+ cutensor_cudatoolkit_11_0 = throw "cutensor* is now part of cudaPackages*"; # Added 2022-04-04
252252+ cutensor_cudatoolkit_11_1 = throw "cutensor* is now part of cudaPackages*"; # Added 2022-04-04
253253+ cutensor_cudatoolkit_11_2 = throw "cutensor* is now part of cudaPackages*"; # Added 2022-04-04
254254+ cutensor_cudatoolkit_11_3 = throw "cutensor* is now part of cudaPackages*"; # Added 2022-04-04
255255+ cutensor_cudatoolkit_11_4 = throw "cutensor* is now part of cudaPackages*"; # Added 2022-04-04
216256217257 cloud-print-connector = throw "Google Cloudprint is officially discontinued since Jan 2021, more info https://support.google.com/chrome/a/answer/9633006";
218258 cquery = throw "cquery has been removed because it is abandoned by upstream. Consider switching to clangd or ccls instead"; # Added 2020-06-15
···782822 mysqlWorkbench = throw "'mysqlWorkbench' has been renamed to/replaced by 'mysql-workbench'"; # Converted to throw 2022-02-22
783823784824 ### N ###
825825+826826+ nccl = throw "nccl has been renamed to cudaPackages.nccl"; # Added 2022-04-04
827827+ nccl_cudatoolkit_10 = throw "nccl_cudatoolkit_10 has been renamed to cudaPackages_10.nccl"; # Added 2022-04-04
828828+ nccl_cudatoolkit_11 = throw "nccl_cudatoolkit_11 has been renamed to cudaPackages_11.nccl"; # Added 2022-04-04
785829786830 net_snmp = net-snmp; # Added 2019-12-21
787831 nagiosPluginsOfficial = monitoring-plugins;