signalbackup-tools: 20241220 -> 20250106 (#371523)
[NixPkgs.git] / pkgs / development / r-modules / default.nix
blobeeed47dc2152b49d57084ecdc2f437ae2357bab0
1 /* This file defines the composition for R packages. */
3 let
4   importJSON = f: builtins.fromJSON (builtins.readFile f);
6   biocPackagesGenerated =  importJSON ./bioc-packages.json;
7   biocAnnotationPackagesGenerated = importJSON ./bioc-annotation-packages.json;
8   biocExperimentPackagesGenerated = importJSON ./bioc-experiment-packages.json;
9   cranPackagesGenerated = importJSON ./cran-packages.json;
12 { R, pkgs, overrides }:
14 let
15   inherit (pkgs) cacert fetchurl stdenv lib;
17   buildRPackage = pkgs.callPackage ./generic-builder.nix {
18     inherit R;
19     inherit (pkgs.darwin.apple_sdk.frameworks) Cocoa Foundation;
20     inherit (pkgs) gettext gfortran;
21   };
23   # Generates package templates given per-repository settings
24   #
25   # some packages, e.g. cncaGUI, require X running while installation,
26   # so that we use xvfb-run if requireX is true.
27   mkDerive = {mkHomepage, mkUrls, hydraPlatforms ? null}: args:
28     let hydraPlatforms' = hydraPlatforms; in
29       lib.makeOverridable ({
30         name, version, sha256,
31         depends ? [],
32         doCheck ? true,
33         requireX ? false,
34         broken ? false,
35         platforms ? R.meta.platforms,
36         hydraPlatforms ? if hydraPlatforms' != null then hydraPlatforms' else platforms,
37         maintainers ? []
38       }: buildRPackage {
39     name = "${name}-${version}";
40     src = fetchurl {
41       inherit sha256;
42       urls = mkUrls (args // { inherit name version; });
43     };
44     inherit doCheck requireX;
45     propagatedBuildInputs = depends;
46     nativeBuildInputs = depends;
47     meta.homepage = mkHomepage (args // { inherit name; });
48     meta.platforms = platforms;
49     meta.hydraPlatforms = hydraPlatforms;
50     meta.broken = broken;
51     meta.maintainers = maintainers;
52   });
54   # Templates for generating Bioconductor and CRAN packages
55   # from the name, version, sha256, and optional per-package arguments above
56   #
57   deriveBioc = mkDerive {
58     mkHomepage = {name, biocVersion}: "https://bioconductor.org/packages/${biocVersion}/bioc/html/${name}.html";
59     mkUrls = {name, version, biocVersion}: [
60       "mirror://bioc/${biocVersion}/bioc/src/contrib/${name}_${version}.tar.gz"
61       "mirror://bioc/${biocVersion}/bioc/src/contrib/Archive/${name}/${name}_${version}.tar.gz"
62       "mirror://bioc/${biocVersion}/bioc/src/contrib/Archive/${name}_${version}.tar.gz"
63     ];
64   };
65   deriveBiocAnn = mkDerive {
66     mkHomepage = {name, ...}: "http://www.bioconductor.org/packages/${name}.html";
67     mkUrls = {name, version, biocVersion}: [
68       "mirror://bioc/${biocVersion}/data/annotation/src/contrib/${name}_${version}.tar.gz"
69     ];
70     hydraPlatforms = [];
71   };
72   deriveBiocExp = mkDerive {
73     mkHomepage = {name, ...}: "http://www.bioconductor.org/packages/${name}.html";
74     mkUrls = {name, version, biocVersion}: [
75       "mirror://bioc/${biocVersion}/data/experiment/src/contrib/${name}_${version}.tar.gz"
76     ];
77     hydraPlatforms = [];
78   };
79   deriveCran = mkDerive {
80     mkHomepage = {name}: "https://cran.r-project.org/web/packages/${name}/";
81     mkUrls = {name, version}: [
82       "mirror://cran/${name}_${version}.tar.gz"
83       "mirror://cran/Archive/${name}/${name}_${version}.tar.gz"
84     ];
85   };
87   # Overrides package definitions with nativeBuildInputs.
88   # For example,
89   #
90   # overrideNativeBuildInputs {
91   #   foo = [ pkgs.bar ]
92   # } old
93   #
94   # results in
95   #
96   # {
97   #   foo = old.foo.overrideAttrs (attrs: {
98   #     nativeBuildInputs = attrs.nativeBuildInputs ++ [ pkgs.bar ];
99   #   });
100   # }
101   overrideNativeBuildInputs = overrides: old:
102     lib.mapAttrs (name: value:
103       (builtins.getAttr name old).overrideAttrs (attrs: {
104         nativeBuildInputs = attrs.nativeBuildInputs ++ value;
105       })
106     ) overrides;
108   # Overrides package definitions with buildInputs.
109   # For example,
110   #
111   # overrideBuildInputs {
112   #   foo = [ pkgs.bar ]
113   # } old
114   #
115   # results in
116   #
117   # {
118   #   foo = old.foo.overrideAttrs (attrs: {
119   #     buildInputs = attrs.buildInputs ++ [ pkgs.bar ];
120   #   });
121   # }
122   overrideBuildInputs = overrides: old:
123     lib.mapAttrs (name: value:
124       (builtins.getAttr name old).overrideAttrs (attrs: {
125         buildInputs = attrs.buildInputs ++ value;
126       })
127     ) overrides;
129   # Overrides package definitions with maintainers.
130   # For example,
131   #
132   # overrideMaintainers {
133   #   foo = [ lib.maintainers.jsmith ]
134   # } old
135   #
136   # results in
137   #
138   # {
139   #   foo = old.foo.override {
140   #     maintainers = [ lib.maintainers.jsmith ];
141   #   };
142   # }
143   overrideMaintainers = overrides: old:
144     lib.mapAttrs (name: value:
145       (builtins.getAttr name old).override {
146         maintainers = value;
147       }) overrides;
149   # Overrides package definitions with new R dependencies.
150   # For example,
151   #
152   # overrideRDepends {
153   #   foo = [ self.bar ]
154   # } old
155   #
156   # results in
157   #
158   # {
159   #   foo = old.foo.overrideAttrs (attrs: {
160   #     nativeBuildInputs = attrs.nativeBuildInputs ++ [ self.bar ];
161   #     propagatedNativeBuildInputs = attrs.propagatedNativeBuildInputs ++ [ self.bar ];
162   #   });
163   # }
164   overrideRDepends = overrides: old:
165     lib.mapAttrs (name: value:
166       (builtins.getAttr name old).overrideAttrs (attrs: {
167         nativeBuildInputs = (attrs.nativeBuildInputs or []) ++ value;
168         propagatedNativeBuildInputs = (attrs.propagatedNativeBuildInputs or []) ++ value;
169       })
170     ) overrides;
172   # Overrides package definition requiring X running to install.
173   # For example,
174   #
175   # overrideRequireX [
176   #   "foo"
177   # ] old
178   #
179   # results in
180   #
181   # {
182   #   foo = old.foo.override {
183   #     requireX = true;
184   #   };
185   # }
186   overrideRequireX = packageNames: old:
187     let
188       nameValuePairs = map (name: {
189         inherit name;
190         value = (builtins.getAttr name old).override {
191           requireX = true;
192         };
193       }) packageNames;
194     in
195       builtins.listToAttrs nameValuePairs;
197   # Overrides package definition requiring a home directory to install or to
198   # run tests.
199   # For example,
200   #
201   # overrideRequireHome [
202   #   "foo"
203   # ] old
204   #
205   # results in
206   #
207   # {
208   #   foo = old.foo.overrideAttrs (oldAttrs:  {
209   #     preInstall = ''
210   #       ${oldAttrs.preInstall or ""}
211   #       export HOME=$(mktemp -d)
212   #     '';
213   #   });
214   # }
215   overrideRequireHome = packageNames: old:
216     let
217       nameValuePairs = map (name: {
218         inherit name;
219         value = (builtins.getAttr name old).overrideAttrs (oldAttrs: {
220           preInstall = ''
221             ${oldAttrs.preInstall or ""}
222             export HOME=$(mktemp -d)
223           '';
224         });
225       }) packageNames;
226     in
227       builtins.listToAttrs nameValuePairs;
229   # Overrides package definition to skip check.
230   # For example,
231   #
232   # overrideSkipCheck [
233   #   "foo"
234   # ] old
235   #
236   # results in
237   #
238   # {
239   #   foo = old.foo.override {
240   #     doCheck = false;
241   #   };
242   # }
243   overrideSkipCheck = packageNames: old:
244     let
245       nameValuePairs = map (name: {
246         inherit name;
247         value = (builtins.getAttr name old).override {
248           doCheck = false;
249         };
250       }) packageNames;
251     in
252       builtins.listToAttrs nameValuePairs;
254   # Overrides package definition to mark it broken.
255   # For example,
256   #
257   # overrideBroken [
258   #   "foo"
259   # ] old
260   #
261   # results in
262   #
263   # {
264   #   foo = old.foo.override {
265   #     broken = true;
266   #   };
267   # }
268   overrideBroken = packageNames: old:
269     let
270       nameValuePairs = map (name: {
271         inherit name;
272         value = (builtins.getAttr name old).override {
273           broken = true;
274         };
275       }) packageNames;
276     in
277       builtins.listToAttrs nameValuePairs;
279   defaultOverrides = old: new:
280     let old0 = old; in
281     let
282       old1 = old0 // (overrideRequireX packagesRequiringX old0);
283       old2 = old1 // (overrideRequireHome packagesRequiringHome old1);
284       old3 = old2 // (overrideSkipCheck packagesToSkipCheck old2);
285       old4 = old3 // (overrideRDepends packagesWithRDepends old3);
286       old5 = old4 // (overrideNativeBuildInputs packagesWithNativeBuildInputs old4);
287       old6 = old5 // (overrideBuildInputs packagesWithBuildInputs old5);
288       old7 = old6 // (overrideBroken brokenPackages old6);
289       old8 = old7 // (overrideMaintainers packagesWithMaintainers old7);
290       old = old8;
291     in old // (otherOverrides old new);
293   # Recursive override pattern.
294   # `_self` is a collection of packages;
295   # `self` is `_self` with overridden packages;
296   # packages in `_self` may depends on overridden packages.
297   self = (defaultOverrides _self self) // overrides;
298   _self = { inherit buildRPackage; } //
299           mkPackageSet deriveBioc biocPackagesGenerated //
300           mkPackageSet deriveBiocAnn biocAnnotationPackagesGenerated //
301           mkPackageSet deriveBiocExp biocExperimentPackagesGenerated //
302           mkPackageSet deriveCran cranPackagesGenerated;
304   # Takes in a generated JSON file's imported contents
305   # and transforms it by swapping each element of the depends array with the dependency's derivation
306   # and passing this new object to the provided derive function
307   mkPackageSet = derive: packagesJSON: lib.mapAttrs (
308     k: v: derive packagesJSON.extraArgs (v // { depends = lib.map (name: builtins.getAttr name self) v.depends; })
309   ) packagesJSON.packages;
312   # tweaks for the individual packages and "in self" follow
314   packagesWithMaintainers = with lib.maintainers; {
315     data_table = [ jbedo ];
316     BiocManager = [ jbedo ];
317     ggplot2 = [ jbedo ];
318     svaNUMT = [ jbedo ];
319     svaRetro = [ jbedo ];
320     StructuralVariantAnnotation = [ jbedo ];
321     RQuantLib = [ kupac ];
322   };
324   packagesWithRDepends = {
325     spectralGraphTopology = [ self.CVXR ];
326     FactoMineR = [ self.car ];
327     pander = [ self.codetools ];
328     rmsb = [ self.rstantools ];
329     gastempt = [ self.rstantools ];
330     interactiveDisplay = [ self.BiocManager ];
331     disbayes = [ self.rstantools ];
332     tipsae = [ self.rstantools ];
333     TriDimRegression = [ self.rstantools ];
334     bbmix = [ self.rstantools ];
335   };
337   packagesWithNativeBuildInputs = {
338     adbcpostgresql = [ pkgs.postgresql ];
339     adimpro = [ pkgs.imagemagick ];
340     animation = [ pkgs.which ];
341     Apollonius = with pkgs; [ pkg-config gmp.dev mpfr.dev ];
342     arrow = with pkgs; [ pkg-config cmake ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ intltool ];
343     alcyon = with pkgs; [ cmake which ];
344     audio = [ pkgs.portaudio ];
345     BayesSAE = [ pkgs.gsl ];
346     BayesVarSel = [ pkgs.gsl ];
347     BayesXsrc = with pkgs; [ readline.dev ncurses gsl ];
348     bioacoustics = [ pkgs.fftw.dev pkgs.cmake ];
349     bigGP = [ pkgs.mpi ];
350     bigrquerystorage = with pkgs; [ grpc protobuf which ];
351     bio3d = [ pkgs.zlib ];
352     BiocCheck = [ pkgs.which ];
353     Biostrings = [ pkgs.zlib ];
354     CellBarcode = [ pkgs.zlib ];
355     cld3 = [ pkgs.protobuf ];
356     cpp11qpdf = with pkgs; [ zlib.dev libjpeg ];
357     bnpmr = [ pkgs.gsl ];
358     caviarpd = [ pkgs.cargo ];
359     cairoDevice = [ pkgs.gtk2.dev ];
360     Cairo = with pkgs; [ libtiff libjpeg cairo.dev xorg.libXt.dev fontconfig.lib ];
361     Cardinal = [ pkgs.which ];
362     chebpol = [ pkgs.fftw.dev ];
363     ChemmineOB = [ pkgs.pkg-config ];
364     interpolation = [ pkgs.pkg-config ];
365     clarabel = [ pkgs.cargo ];
366     curl = [ pkgs.curl.dev ];
367     CytoML = [ pkgs.libxml2.dev ];
368     data_table = with pkgs; [ pkg-config zlib.dev ] ++ lib.optional stdenv.hostPlatform.isDarwin pkgs.llvmPackages.openmp;
369     devEMF = with pkgs; [ xorg.libXft.dev ];
370     diversitree = with pkgs; [ gsl fftw ];
371     exactextractr = [ pkgs.geos ];
372     EMCluster = [ pkgs.lapack ];
373     fangs = [ pkgs.cargo ];
374     fastpng = [ pkgs.zlib.dev ];
375     fcl = [ pkgs.cargo ];
376     fftw = [ pkgs.fftw.dev ];
377     fftwtools = with pkgs; [ fftw.dev pkg-config ];
378     fingerPro = [ pkgs.gsl ];
379     Formula = [ pkgs.gmp ];
380     frailtyMMpen = [ pkgs.gsl ];
381     gamstransfer = [ pkgs.zlib ];
382     gdalraster = [ pkgs.pkg-config ];
383     gdtools = with pkgs; [ cairo.dev fontconfig.lib freetype.dev ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ expat xorg.libXdmcp ];
384     GeneralizedWendland = [ pkgs.gsl ];
385     ggiraph = with pkgs; [ pkgs.libpng.dev ];
386     git2r = with pkgs; [ zlib.dev openssl.dev libssh2.dev libgit2 pkg-config ];
387     GLAD = [ pkgs.gsl ];
388     glpkAPI = with pkgs; [ gmp glpk ];
389     gmp = [ pkgs.gmp.dev ];
390     GPBayes = [ pkgs.gsl ];
391     graphscan = [ pkgs.gsl ];
392     gsl = [ pkgs.gsl ];
393     gslnls = [ pkgs.gsl ];
394     gert = [ pkgs.libgit2 ];
395     haven = with pkgs; [ zlib.dev ];
396     hellorust = [ pkgs.cargo ];
397     hgwrr = [ pkgs.gsl ];
398     h5vc = with pkgs; [ zlib.dev bzip2.dev xz.dev ];
399     yyjsonr = with pkgs; [ zlib.dev ];
400     RNifti = with pkgs; [ zlib.dev ];
401     RNiftyReg = with pkgs; [ zlib.dev ];
402     highs = [ pkgs.which pkgs.cmake ];
403     crc32c = [ pkgs.which pkgs.cmake ];
404     rbedrock = [ pkgs.zlib.dev pkgs.which pkgs.cmake ];
405     HiCseg = [ pkgs.gsl ];
406     imager = [ pkgs.xorg.libX11.dev ];
407     imbibe = [ pkgs.zlib.dev ];
408     image_CannyEdges = with pkgs; [ fftw.dev libpng.dev ];
409     iBMQ = [ pkgs.gsl ];
410     jack = [ pkgs.pkg-config ];
411     JavaGD = [ pkgs.jdk ];
412     jpeg = [ pkgs.libjpeg.dev ];
413     jqr = [ pkgs.jq.dev ];
414     KFKSDS = [ pkgs.gsl ];
415     KSgeneral = with pkgs; [ pkg-config ];
416     kza = [ pkgs.fftw.dev ];
417     leidenAlg = [ pkgs.gmp.dev ];
418     Libra = [ pkgs.gsl ];
419     libstable4u = [ pkgs.gsl ];
420     heck = [ pkgs.cargo ];
421     LOMAR = [ pkgs.gmp.dev ];
422     littler = [ pkgs.libdeflate ];
423     lpsymphony = with pkgs; [ pkg-config gfortran gettext ];
424     lwgeom = with pkgs; [ proj geos gdal ];
425     rsbml = [ pkgs.pkg-config ];
426     rvg = [ pkgs.libpng.dev ];
427     MAGEE = [ pkgs.zlib.dev pkgs.bzip2.dev ];
428     magick = [ pkgs.imagemagick.dev ];
429     ModelMetrics = lib.optional stdenv.hostPlatform.isDarwin pkgs.llvmPackages.openmp;
430     mvabund = [ pkgs.gsl ];
431     mcrPioda = [ pkgs.gsl ];
432     mwaved = [ pkgs.fftw.dev ];
433     mzR = with pkgs; [ zlib netcdf ];
434     nanonext = with pkgs; [ mbedtls nng ];
435     ncdf4 = [ pkgs.netcdf ];
436     neojags = [ pkgs.jags ];
437     nloptr = with pkgs; [ nlopt pkg-config ];
438     n1qn1 = [ pkgs.gfortran ];
439     odbc = [ pkgs.unixODBC ];
440     opencv = [ pkgs.pkg-config ];
441     pak = [ pkgs.curl.dev ];
442     pander = with pkgs; [ pandoc which ];
443     pbdMPI = [ pkgs.mpi ];
444     pbdPROF = [ pkgs.mpi ];
445     pbdZMQ = [ pkgs.pkg-config ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ pkgs.which ];
446     pcaL1 = [ pkgs.pkg-config pkgs.clp ];
447     pdftools = [ pkgs.poppler.dev ];
448     PEPBVS = [ pkgs.gsl ];
449     phytools = [ pkgs.which ];
450     PKI = [ pkgs.openssl.dev ];
451     png = [ pkgs.libpng.dev ];
452     protolite = [ pkgs.protobuf ];
453     R2SWF = with pkgs; [ zlib libpng freetype.dev ];
454     RAppArmor = [ pkgs.libapparmor ];
455     rapportools = [ pkgs.which ];
456     rapport = [ pkgs.which ];
457     rcdd = [ pkgs.gmp.dev ];
458     RcppCNPy = [ pkgs.zlib.dev ];
459     RcppGSL = [ pkgs.gsl ];
460     RcppZiggurat = [ pkgs.gsl ];
461     reprex = [ pkgs.which ];
462     resultant = with pkgs; [ gmp.dev mpfr.dev pkg-config ];
463     rgdal = with pkgs; [ proj.dev gdal ];
464     Rhisat2 = [ pkgs.which pkgs.hostname ];
465     gdalcubes = [ pkgs.pkg-config ];
466     rgeos = [ pkgs.geos ];
467     Rglpk = [ pkgs.glpk ];
468     RGtk2 = [ pkgs.gtk2.dev ];
469     rhdf5 = [ pkgs.zlib ];
470     Rhdf5lib = with pkgs; [ zlib.dev ];
471     Rhpc = with pkgs; [ zlib bzip2.dev icu xz.dev mpi pcre.dev ];
472     Rhtslib = with pkgs; [ zlib.dev automake autoconf bzip2.dev xz.dev curl.dev ];
473     rjags = [ pkgs.jags ];
474     rJava = with pkgs; [ zlib bzip2.dev icu xz.dev pcre.dev jdk libzip libdeflate ];
475     Rlibeemd = [ pkgs.gsl ];
476     rmatio = [ pkgs.zlib.dev pkgs.pkg-config ];
477     Rmpfr = with pkgs; [ gmp mpfr.dev ];
478     Rmpi = [ pkgs.mpi ];
479     RMySQL = with pkgs; [ zlib libmysqlclient openssl.dev ];
480     RNetCDF = with pkgs; [ netcdf udunits ];
481     RODBC = [ pkgs.libiodbc ];
482     rpanel = [ pkgs.tclPackages.bwidget ];
483     Rpoppler = [ pkgs.poppler ];
484     RPostgres = with pkgs; [ postgresql ];
485     RPostgreSQL = with pkgs; [ postgresql postgresql ];
486     RProtoBuf = [ pkgs.protobuf ];
487     RSclient = [ pkgs.openssl.dev ];
488     Rserve = [ pkgs.openssl ];
489     Rssa = [ pkgs.fftw.dev ];
490     rsvg = [ pkgs.pkg-config ];
491     runjags = [ pkgs.jags ];
492     xslt = [ pkgs.pkg-config ];
493     RVowpalWabbit = with pkgs; [ zlib.dev boost ];
494     rzmq = with pkgs; [ zeromq pkg-config ];
495     httpuv = [ pkgs.zlib.dev ];
496     clustermq = [ pkgs.zeromq ];
497     SAVE = with pkgs; [ zlib bzip2 icu xz pcre ];
498     salso = [ pkgs.cargo ];
499     ymd = with pkgs; [ cargo rustc ];
500     arcpbf = [ pkgs.cargo ];
501     sdcTable = with pkgs; [ gmp glpk ];
502     seewave = with pkgs; [ fftw.dev libsndfile.dev ];
503     seqinr = [ pkgs.zlib.dev ];
504     smcryptoR = with pkgs; [ cargo rustc which ];
505     webp = [ pkgs.pkg-config ];
506     seqminer = with pkgs; [ zlib.dev bzip2 ];
507     sf = with pkgs; [ gdal proj geos libtiff curl ];
508     strawr = with pkgs; [ curl.dev ];
509     string2path = [ pkgs.cargo ];
510     terra = with pkgs; [ gdal proj geos ];
511     tok = [ pkgs.cargo ];
512     rshift = [ pkgs.cargo ];
513     arcgisutils = with pkgs; [ cargo rustc ];
514     arcgisgeocode = with pkgs; [ cargo rustc ];
515     arcgisplaces = with pkgs; [ pkg-config openssl.dev cargo rustc ];
516     apcf = with pkgs; [ geos ];
517     SemiCompRisks = [ pkgs.gsl ];
518     showtext = with pkgs; [ zlib libpng icu freetype.dev ];
519     simplexreg = [ pkgs.gsl ];
520     spate = [ pkgs.fftw.dev ];
521     ssanv = [ pkgs.proj ];
522     stsm = [ pkgs.gsl ];
523     stringi = [ pkgs.icu.dev ];
524     survSNP = [ pkgs.gsl ];
525     svglite = [ pkgs.libpng.dev ];
526     sysfonts = with pkgs; [ zlib libpng freetype.dev ];
527     systemfonts = with pkgs; [ fontconfig.dev freetype.dev ];
528     TAQMNGR = [ pkgs.zlib.dev ];
529     TDA = [ pkgs.gmp ];
530     tesseract = with pkgs; [ tesseract leptonica ];
531     tiff = [ pkgs.libtiff.dev ];
532     tkrplot = with pkgs; [ xorg.libX11 tk.dev ];
533     topicmodels = [ pkgs.gsl ];
534     udunits2 = with pkgs; [ udunits expat ];
535     units = [ pkgs.udunits ];
536     unigd = [ pkgs.pkg-config ];
537     vdiffr = [ pkgs.libpng.dev ];
538     V8 = [ pkgs.nodejs.libv8 ];
539     XBRL = with pkgs; [ zlib libxml2.dev ];
540     XLConnect = [ pkgs.jdk ];
541     xml2 = [ pkgs.libxml2.dev ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ pkgs.perl ];
542     XML = with pkgs; [ libtool libxml2.dev xmlsec libxslt ];
543     affyPLM = [ pkgs.zlib.dev ];
544     BitSeq = [ pkgs.zlib.dev ];
545     DiffBind = with pkgs; [ zlib.dev xz.dev bzip2.dev ];
546     ShortRead = [ pkgs.zlib.dev ];
547     oligo = [ pkgs.zlib.dev ];
548     gmapR = [ pkgs.zlib.dev ];
549     Rsubread = [ pkgs.zlib.dev ];
550     XVector = [ pkgs.zlib.dev ];
551     Rsamtools = with pkgs; [ zlib.dev curl.dev bzip2 xz ];
552     rtracklayer = with pkgs; [ zlib.dev curl.dev ];
553     affyio = [ pkgs.zlib.dev ];
554     snpStats = [ pkgs.zlib.dev ];
555     vcfppR = [ pkgs.curl.dev pkgs.bzip2 pkgs.zlib.dev pkgs.xz];
556     httpgd = with pkgs; [ cairo.dev ];
557     SymTS = [ pkgs.gsl ];
558     VBLPCM = [ pkgs.gsl ];
559     dynr = [ pkgs.gsl ];
560     mixlink = [ pkgs.gsl ];
561     ridge = [ pkgs.gsl ];
562     smam = [ pkgs.gsl ];
563     rnetcarto = [ pkgs.gsl ];
564     rGEDI = [ pkgs.gsl ];
565     mmpca = [ pkgs.gsl ];
566     monoreg = [ pkgs.gsl ];
567     mvst = [ pkgs.gsl ];
568     mixture = [ pkgs.gsl ];
569     jSDM = [ pkgs.gsl ];
570     immunoClust = [ pkgs.gsl ];
571     hSDM = [ pkgs.gsl ];
572     flowPeaks = [ pkgs.gsl ];
573     fRLR = [ pkgs.gsl ];
574     eaf = [ pkgs.gsl ];
575     diseq = [ pkgs.gsl ];
576     cit = [ pkgs.gsl ];
577     abn = [ pkgs.gsl ];
578     SimInf = [ pkgs.gsl ];
579     RJMCMCNucleosomes = [ pkgs.gsl ];
580     RDieHarder = [ pkgs.gsl ];
581     QF = [ pkgs.gsl ];
582     PICS = [ pkgs.gsl ];
583     RationalMatrix = [ pkgs.pkg-config pkgs.gmp.dev];
584     RcppCWB = [ pkgs.pkg-config pkgs.pcre2 ];
585     redux = [ pkgs.pkg-config ];
586     rswipl = with pkgs; [ cmake pkg-config ];
587     scorematchingad = [ pkgs.cmake ];
588     rrd = [ pkgs.pkg-config ];
589     surveyvoi = [ pkgs.pkg-config ];
590     Rbwa = [ pkgs.zlib.dev ];
591     trackViewer = [ pkgs.zlib.dev ];
592     themetagenomics = [ pkgs.zlib.dev ];
593     Rsymphony = [ pkgs.pkg-config ];
594     NanoMethViz = [ pkgs.zlib.dev ];
595     RcppMeCab = [ pkgs.pkg-config ];
596     HilbertVisGUI = with pkgs; [ pkg-config which ];
597     textshaping = [ pkgs.pkg-config ];
598     ragg = [ pkgs.pkg-config ];
599     qqconf = [ pkgs.pkg-config ];
600     qspray = [ pkgs.pkg-config ];
601     ratioOfQsprays = [ pkgs.pkg-config ];
602     symbolicQspray = [ pkgs.pkg-config ];
603     sphereTessellation = [ pkgs.pkg-config ];
604     vapour = [ pkgs.pkg-config ];
605   };
607   packagesWithBuildInputs = {
608     # sort -t '=' -k 2
609     adbcpostgresql = with pkgs; [ readline.dev zlib.dev openssl.dev libkrb5.dev openpam ];
610     asciicast = with pkgs; [ xz.dev bzip2.dev zlib.dev icu.dev libdeflate ];
611     island = [ pkgs.gsl.dev ];
612     svKomodo = [ pkgs.which ];
613     ulid = [ pkgs.zlib.dev ];
614     unrtf = with pkgs; [ xz.dev bzip2.dev zlib.dev icu.dev libdeflate ];
615     nat = [ pkgs.which ];
616     nat_templatebrains = [ pkgs.which ];
617     pbdZMQ = [ pkgs.zeromq ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ pkgs.darwin.binutils ];
618     bigmemory = lib.optionals stdenv.hostPlatform.isLinux [ pkgs.libuuid.dev ];
619     bayesWatch = [ pkgs.boost.dev ];
620     clustermq = [  pkgs.pkg-config ];
621     coga = [ pkgs.gsl.dev ];
622     mBvs = [ pkgs.gsl.dev ];
623     rcontroll = [ pkgs.gsl.dev ];
624     deepSNV = with pkgs; [ xz.dev bzip2.dev zlib.dev ];
625     epialleleR = with pkgs; [ xz.dev bzip2.dev zlib.dev ];
626     gdalraster = with pkgs; [ gdal proj.dev sqlite.dev ];
627     mitoClone2 = with pkgs; [ xz.dev bzip2.dev zlib.dev ];
628     gpg = [ pkgs.gpgme ];
629     webp = [ pkgs.libwebp ];
630     RMark = [ pkgs.which ];
631     RPushbullet = [ pkgs.which ];
632     stpphawkes = [ pkgs.gsl ];
633     registr = with pkgs; [ icu.dev zlib.dev bzip2.dev xz.dev libdeflate ];
634     RCurl = [ pkgs.curl.dev ];
635     R2SWF = [ pkgs.pkg-config ];
636     rDEA = [ pkgs.glpk ];
637     rgl = with pkgs; [ libGLU libGL xorg.libX11.dev freetype.dev libpng.dev ];
638     RGtk2 = [ pkgs.pkg-config ];
639     RProtoBuf = [ pkgs.pkg-config ];
640     Rpoppler = [ pkgs.pkg-config ];
641     XML = [ pkgs.pkg-config ];
642     apsimx = [ pkgs.which ];
643     cairoDevice = [ pkgs.pkg-config ];
644     chebpol = [ pkgs.pkg-config ];
645     eds = [ pkgs.zlib.dev ];
646     pgenlibr = [ pkgs.zlib.dev ];
647     fftw = [ pkgs.pkg-config ];
648     gdtools = [ pkgs.pkg-config ];
649     archive = [ pkgs.libarchive];
650     gdalcubes = with pkgs; [ proj.dev gdal sqlite.dev netcdf ];
651     rsbml = [ pkgs.libsbml ];
652     SuperGauss = [ pkgs.pkg-config pkgs.fftw.dev];
653     ravetools = with pkgs; [ pkg-config fftw.dev];
654     specklestar = [ pkgs.fftw.dev ];
655     cartogramR = [ pkgs.fftw.dev ];
656     jqr = [ pkgs.jq.out ];
657     kza = [ pkgs.pkg-config ];
658     igraph = with pkgs; [ gmp libxml2.dev glpk ];
659     interpolation = [ pkgs.gmp ];
660     image_textlinedetector = with pkgs; [ pkg-config opencv ];
661     lwgeom = with pkgs; [ pkg-config proj.dev sqlite.dev ];
662     magick = [ pkgs.pkg-config ];
663     mwaved = [ pkgs.pkg-config ];
664     odbc = [ pkgs.pkg-config ];
665     openssl = [ pkgs.pkg-config ];
666     pdftools = [ pkgs.pkg-config ];
667     qckitfastq = [ pkgs.zlib.dev ];
668     raer = with pkgs; [ zlib.dev xz.dev bzip2.dev ];
669     RQuantLib = with pkgs; [ quantlib.dev boost.dev ];
670     sf = with pkgs; [ pkg-config sqlite.dev proj.dev ];
671     terra = with pkgs; [ pkg-config sqlite.dev proj.dev ];
672     showtext = [ pkgs.pkg-config ];
673     spate = [ pkgs.pkg-config ];
674     stringi = [ pkgs.pkg-config ];
675     sysfonts = [ pkgs.pkg-config ];
676     systemfonts = [ pkgs.pkg-config ];
677     tesseract = [ pkgs.pkg-config ];
678     Cairo = [ pkgs.pkg-config ];
679     CLVTools = [ pkgs.gsl ];
680     excursions = [ pkgs.gsl ];
681     OpenCL = with pkgs; [ opencl-clhpp ocl-icd ];
682     gpuMagic = [ pkgs.ocl-icd ];
683     JMcmprsk = [ pkgs.gsl ];
684     KSgeneral = [ pkgs.fftw.dev ];
685     mashr = [ pkgs.gsl ];
686     hadron = [ pkgs.gsl ];
687     AMOUNTAIN = [ pkgs.gsl ];
688     Rsymphony = with pkgs; [ symphony doxygen graphviz subversion cgl clp];
689     tcltk2 = with pkgs; [ tcl tk ];
690     rswipl = with pkgs; [ ncurses.dev libxcrypt zlib.dev ];
691     GrafGen = [ pkgs.zlib ];
692     tikzDevice = with pkgs; [ which texliveMedium ];
693     gridGraphics = [ pkgs.which ];
694     adimpro = with pkgs; [ which xorg.xdpyinfo ];
695     tfevents = [ pkgs.protobuf ];
696     rsvg = [ pkgs.librsvg.dev ];
697     ssh = with pkgs; [ libssh ];
698     s2 = [ pkgs.openssl.dev ];
699     ArrayExpressHTS = with pkgs; [ zlib.dev curl.dev which ];
700     bbl = with pkgs; [ gsl ];
701     diffHic = with pkgs; [ xz.dev bzip2.dev ];
702     writexl = with pkgs; [ zlib.dev ];
703     xslt = with pkgs; [ libxslt libxml2 ];
704     qpdf = with pkgs; [ libjpeg.dev zlib.dev ];
705     vcfR = with pkgs; [ zlib.dev ];
706     bio3d = with pkgs; [ zlib.dev ];
707     arrangements = with pkgs; [ gmp.dev ];
708     gfilogisreg = [ pkgs.gmp.dev ];
709     spp = with pkgs; [ zlib.dev ];
710     bamsignals = with pkgs; [ zlib.dev xz.dev bzip2 ];
711     Rbowtie = with pkgs; [ zlib.dev ];
712     gaston = with pkgs; [ zlib.dev ];
713     csaw = with pkgs; [ zlib.dev xz.dev bzip2.dev curl ];
714     DirichletMultinomial = with pkgs; [ gsl ];
715     DiffBind = with pkgs; [ zlib.dev ];
716     CNEr = with pkgs; [ zlib ];
717     GMMAT = with pkgs; [ zlib.dev bzip2.dev ];
718     rmumps = with pkgs; [ zlib.dev ];
719     HiCDCPlus = [ pkgs.zlib.dev ];
720     PopGenome = [ pkgs.zlib.dev ];
721     QuasR = with pkgs; [ zlib.dev xz.dev bzip2.dev ];
722     Rarr = [ pkgs.zlib.dev ];
723     Rbowtie2 = [ pkgs.zlib.dev ];
724     Rfastp = with pkgs; [ xz.dev bzip2.dev zlib.dev ];
725     maftools = with pkgs; [ zlib.dev bzip2 xz.dev ];
726     Rmmquant = [ pkgs.zlib.dev ];
727     SICtools = with pkgs; [ zlib.dev ncurses.dev ];
728     Signac = [ pkgs.zlib.dev ];
729     TransView = with pkgs; [ xz.dev bzip2.dev zlib.dev ];
730     bigsnpr = [ pkgs.zlib.dev ];
731     zlib = [ pkgs.zlib.dev ];
732     divest = [ pkgs.zlib.dev ];
733     hipread = [ pkgs.zlib.dev ];
734     jack = with pkgs; [ gmp.dev mpfr.dev ];
735     jackalope = with pkgs; [ zlib.dev xz.dev bzip2.dev ];
736     largeList = [ pkgs.zlib.dev ];
737     mappoly = [ pkgs.zlib.dev ];
738     VariantAnnotation = with pkgs; [ zlib.dev curl.dev bzip2.dev xz.dev ];
739     matchingMarkets = [ pkgs.zlib.dev ];
740     methylKit = with pkgs; [ zlib.dev bzip2.dev xz.dev ];
741     ndjson = [ pkgs.zlib.dev ];
742     podkat = with pkgs; [ zlib.dev xz.dev bzip2.dev ];
743     qrqc = [ pkgs.zlib.dev ];
744     rJPSGCS = [ pkgs.zlib.dev ];
745     rhdf5filters = with pkgs; [ zlib.dev bzip2.dev ];
746     symengine = with pkgs; [ mpfr symengine flint ];
747     rtk = [ pkgs.zlib.dev ];
748     scPipe = with pkgs; [ bzip2.dev xz.dev zlib.dev ];
749     seqTools = [ pkgs.zlib.dev ];
750     seqbias = with pkgs; [ zlib.dev bzip2.dev xz.dev ];
751     sparkwarc = [ pkgs.zlib.dev ];
752     RoBMA = [ pkgs.jags ];
753     RoBSA = [ pkgs.jags ];
754     pexm = [ pkgs.jags ];
755     rGEDI = with pkgs; [ libgeotiff.dev libaec zlib.dev hdf5.dev ];
756     rawrr = [ pkgs.mono ];
757     HDF5Array = [ pkgs.zlib.dev ];
758     FLAMES = with pkgs; [ zlib.dev bzip2.dev xz.dev ];
759     ncdfFlow = [ pkgs.zlib.dev ];
760     proj4 = [ pkgs.proj.dev ];
761     rtmpt = [ pkgs.gsl ];
762     mixcat = [ pkgs.gsl ];
763     libstableR = [ pkgs.gsl ];
764     landsepi = [ pkgs.gsl ];
765     flan = [ pkgs.gsl ];
766     econetwork = [ pkgs.gsl ];
767     crandep = [ pkgs.gsl ];
768     catSurv = [ pkgs.gsl ];
769     ccfindR = [ pkgs.gsl ];
770     screenCounter = [ pkgs.zlib.dev ];
771     SPARSEMODr = [ pkgs.gsl ];
772     RKHSMetaMod = [ pkgs.gsl ];
773     LCMCR = [ pkgs.gsl ];
774     BNSP = [ pkgs.gsl ];
775     scModels = [ pkgs.mpfr.dev ];
776     multibridge = with pkgs; [ pkg-config mpfr.dev ];
777     RcppCWB = with pkgs; [ pcre.dev glib.dev ];
778     redux = [ pkgs.hiredis ];
779     RmecabKo = [ pkgs.mecab ];
780     markets = [ pkgs.gsl ];
781     rlas = [ pkgs.boost ];
782     bgx = [ pkgs.boost ];
783     PoissonBinomial = [ pkgs.fftw.dev ];
784     poisbinom = [ pkgs.fftw.dev ];
785     PoissonMultinomial = [ pkgs.fftw.dev ];
786     psbcGroup = [ pkgs.gsl.dev ];
787     rrd = [ pkgs.rrdtool ];
788     flowWorkspace = [ pkgs.zlib.dev ];
789     RITCH = [ pkgs.zlib.dev ];
790     RcppMeCab = [ pkgs.mecab ];
791     PING = [ pkgs.gsl ];
792     PROJ = [ pkgs.proj.dev ];
793     RcppAlgos = [ pkgs.gmp.dev ];
794     RcppBigIntAlgos = [ pkgs.gmp.dev ];
795     spaMM = [ pkgs.gsl ];
796     shrinkTVP = [ pkgs.gsl ];
797     sbrl = with pkgs; [ gsl gmp.dev ];
798     surveyvoi = with pkgs; [ gmp.dev mpfr.dev ];
799     unigd = with pkgs; [ cairo.dev libpng.dev ];
800     HilbertVisGUI = [ pkgs.gtkmm2.dev ];
801     textshaping = with pkgs; [ harfbuzz.dev freetype.dev fribidi libpng ];
802     DropletUtils = [ pkgs.zlib.dev ];
803     RMariaDB = [ pkgs.libmysqlclient.dev ];
804     ijtiff = [ pkgs.libtiff ];
805     ragg = with pkgs; [ freetype.dev libpng.dev libtiff.dev zlib.dev libjpeg.dev bzip2.dev ] ++ lib.optional stdenv.hostPlatform.isDarwin lerc.dev;
806     qqconf = [ pkgs.fftw.dev ];
807     spFW = [ pkgs.fftw.dev ];
808     qspray = with pkgs; [ gmp.dev mpfr.dev ];
809     ratioOfQsprays = with pkgs; [ gmp.dev mpfr.dev ];
810     symbolicQspray = with pkgs; [ gmp.dev mpfr.dev ];
811     sphereTessellation = with pkgs; [ gmp.dev mpfr.dev ];
812     vapour = with pkgs; [ proj.dev gdal ];
813     MedianaDesigner = [ pkgs.zlib.dev ];
814     ChemmineOB = with pkgs; [ eigen openbabel ];
815     DGP4LCF = [ pkgs.lapack pkgs.blas ];
816   };
818   packagesRequiringX = [
819     "analogueExtra"
820     "AnalyzeFMRI"
821     "AnnotLists"
822     "asbio"
823     "BCA"
824     "biplotbootGUI"
825     "cairoDevice"
826     "cncaGUI"
827     "CommunityCorrelogram"
828     "dave"
829     "DeducerPlugInExample"
830     "DeducerPlugInScaling"
831     "DeducerSpatial"
832     "DeducerSurvival"
833     "DeducerText"
834     "Demerelate"
835     "diveR"
836     "dpa"
837     "dynamicGraph"
838     "EasyqpcR"
839     "exactLoglinTest"
840     "fisheyeR"
841     "forams"
842     "forensim"
843     "GGEBiplotGUI"
844     "gsubfn"
845     "gWidgets2RGtk2"
846     "gWidgets2tcltk"
847     "HiveR"
848     "ic50"
849     "iDynoR"
850     "iplots"
851     "likeLTD"
852     "loon"
853     "loon_ggplot"
854     "loon_shiny"
855     "loon_tourr"
856     "Meth27QC"
857     "mixsep"
858     "multibiplotGUI"
859     "OligoSpecificitySystem"
860     "optbdmaeAT"
861     "optrcdmaeAT"
862     "paleoMAS"
863     "RandomFields"
864     "rfviz"
865     "RclusTool"
866     "RcmdrPlugin_coin"
867     "RcmdrPlugin_FuzzyClust"
868     "RcmdrPlugin_IPSUR"
869     "RcmdrPlugin_lfstat"
870     "RcmdrPlugin_PcaRobust"
871     "RcmdrPlugin_plotByGroup"
872     "RcmdrPlugin_pointG"
873     "RcmdrPlugin_sampling"
874     "RcmdrPlugin_SCDA"
875     "RcmdrPlugin_SLC"
876     "RcmdrPlugin_steepness"
877     "rich"
878     "RSurvey"
879     "simba"
880     "SimpleTable"
881     "SOLOMON"
882     "soptdmaeA"
883     "strvalidator"
884     "stylo"
885     "SyNet"
886     "switchboard"
887     "tkImgR"
888     "TTAinterfaceTrendAnalysis"
889     "twiddler"
890     "uHMM"
891     "VecStatGraphs3D"
892   ];
894   packagesRequiringHome = [
895     "aroma_affymetrix"
896     "aroma_cn"
897     "aroma_core"
898     "avotrex"
899     "beer"
900     "ceramic"
901     "connections"
902     "covidmx"
903     "csodata"
904     "DiceView"
905     "facmodTS"
906     "gasanalyzer"
907     "margaret"
908     "MSnID"
909     "OmnipathR"
910     "orthGS"
911     "precommit"
912     "protGear"
913     "PCRA"
914     "PSCBS"
915     "iemisc"
916     "repmis"
917     "R_cache"
918     "R_filesets"
919     "RKorAPClient"
920     "R_rsp"
921     "salso"
922     "scholar"
923     "SpatialDecon"
924     "stepR"
925     "styler"
926     "teal_code"
927     "TreeTools"
928     "TreeSearch"
929     "ACNE"
930     "APAlyzer"
931     "EstMix"
932     "Patterns"
933     "PECA"
934     "Quartet"
935     "ShinyQuickStarter"
936     "TIN"
937     "cfdnakit"
938     "CaDrA"
939     "GNOSIS"
940     "TotalCopheneticIndex"
941     "TreeDist"
942     "biocthis"
943     "calmate"
944     "fgga"
945     "fulltext"
946     "immuneSIM"
947     "mastif"
948     "shinymeta"
949     "shinyobjects"
950     "wppi"
951     "pins"
952     "CoTiMA"
953     "TBRDist"
954     "Rogue"
955     "fixest"
956     "paxtoolsr"
957     "systemPipeShiny"
958     "matlab2r"
959     "GNOSIS"
960   ];
962   packagesToSkipCheck = [
963     "MsDataHub" # tries to connect to ExperimentHub
964     "Rmpi"     # tries to run MPI processes
965     "ReactomeContentService4R" # tries to connect to Reactome
966     "PhIPData" # tries to download something from a DB
967     "RBioFormats" # tries to download jar during load test
968     "pbdMPI"   # tries to run MPI processes
969     "CTdata" # tries to connect to ExperimentHub
970     "rfaRm" # tries to connect to Ebi
971     "data_table" # fails to rename shared library before check
972     "coMethDMR" # tries to connect to ExperimentHub
973     "multiMiR" # tries to connect to DB
974     "snapcount" # tries to connect to snaptron.cs.jhu.edu
975   ];
977   # Packages which cannot be installed due to lack of dependencies or other reasons.
978   brokenPackages = [
979     "av"
980     "NetLogoR"
981     "valse"
982     "HierO"
983     "HIBAG"
984     "HiveR"
986     # Impure network access during build
987     "waddR"
988     "tiledb"
989     "x13binary"
990     "switchr"
992     # ExperimentHub dependents, require net access during build
993     "DuoClustering2018"
994     "FieldEffectCrc"
995     "GenomicDistributionsData"
996     "hpar"
997     "HDCytoData"
998     "HMP16SData"
999     "PANTHER_db"
1000     "RNAmodR_Data"
1001     "SCATEData"
1002     "SingleMoleculeFootprintingData"
1003     "TabulaMurisData"
1004     "benchmarkfdrData2019"
1005     "bodymapRat"
1006     "clustifyrdatahub"
1007     "CTexploreR"
1008     "depmap"
1009     "emtdata"
1010     "metaboliteIDmapping"
1011     "msigdb"
1012     "muscData"
1013     "org_Mxanthus_db"
1014     "scpdata"
1015     "signatureSearch"
1016     "nullrangesData"
1017   ];
1019   otherOverrides = old: new: {
1020     # it can happen that the major version of arrow-cpp is ahead of the
1021     # rPackages.arrow that would be built from CRAN sources; therefore, to avoid
1022     # build failures and manual updates of the hash, we use the R source at
1023     # the GitHub release state of libarrow (arrow-cpp) in Nixpkgs. This may
1024     # not exactly represent the CRAN sources, but because patching of the
1025     # CRAN R package is mostly done to meet special CRAN build requirements,
1026     # this is a straightforward approach. Example where patching was necessary
1027     # -> arrow 14.0.0.2 on CRAN; was lagging behind libarrow release:
1028     #   https://github.com/apache/arrow/issues/39698 )
1030     vegan3d = old.vegan3d.overrideAttrs (attrs: {
1031       RGL_USE_NULL = "true";
1032     });
1034     arrow = old.arrow.overrideAttrs (attrs: {
1035       src = pkgs.arrow-cpp.src;
1036       name = "r-arrow-${pkgs.arrow-cpp.version}";
1037       prePatch = "cd r";
1038       postPatch = ''
1039         patchShebangs configure
1040       '';
1041       buildInputs = attrs.buildInputs ++ [
1042         pkgs.arrow-cpp
1043       ];
1044     });
1046     gifski = old.gifski.overrideAttrs (attrs: {
1047       cargoDeps = pkgs.rustPlatform.fetchCargoTarball {
1048         src = attrs.src;
1049         sourceRoot = "gifski/src/myrustlib";
1050         hash = "sha256-tVbuYzGdBzWVeQ26Imq6y5gA0R/CjuNCZtQgfd3/qwA=";
1051       };
1053       cargoRoot = "src/myrustlib";
1055       nativeBuildInputs = attrs.nativeBuildInputs ++ [
1056         pkgs.rustPlatform.cargoSetupHook
1057         pkgs.cargo
1058         pkgs.rustc
1059       ];
1060     });
1062     timeless = old.timeless.overrideAttrs (attrs: {
1063       preConfigure = "patchShebangs configure";
1064       cargoDeps = pkgs.rustPlatform.fetchCargoTarball {
1065         src = attrs.src;
1066         sourceRoot = "timeless/src/rust";
1067         hash = "sha256-AccuRY3lfTXzaMnaYieKCEJErKo5132oSXgILbFhePI=";
1068       };
1070       cargoRoot = "src/rust";
1072       nativeBuildInputs = attrs.nativeBuildInputs ++ [
1073         pkgs.rustPlatform.cargoSetupHook
1074         pkgs.cargo
1075       ];
1076     });
1078     stringi = old.stringi.overrideAttrs (attrs: {
1079       postInstall = let
1080         icuName = "icudt52l";
1081         icuSrc = pkgs.fetchzip {
1082           url = "http://static.rexamine.com/packages/${icuName}.zip";
1083           sha256 = "0hvazpizziq5ibc9017i1bb45yryfl26wzfsv05vk9mc1575r6xj";
1084           stripRoot = false;
1085         };
1086         in ''
1087           ${attrs.postInstall or ""}
1088           cp ${icuSrc}/${icuName}.dat $out/library/stringi/libs
1089         '';
1090     });
1092     xml2 = old.xml2.overrideAttrs (attrs: {
1093       preConfigure = ''
1094         export LIBXML_INCDIR=${pkgs.libxml2.dev}/include/libxml2
1095         patchShebangs configure
1096         '';
1097     });
1099     alcyon = old.alcyon.overrideAttrs (attrs: {
1100       configureFlags = [
1101         "--enable-force-openmp"
1102       ];
1103     });
1105     lwgeom = old.lwgeom.overrideAttrs (attrs: {
1106       configureFlags = [
1107         "--with-proj-lib=${pkgs.lib.getLib pkgs.proj}/lib"
1108       ];
1109     });
1111     sf = old.sf.overrideAttrs (attrs: {
1112       configureFlags = [
1113         "--with-proj-lib=${pkgs.lib.getLib pkgs.proj}/lib"
1114       ];
1115     });
1117     terra = old.terra.overrideAttrs (attrs: {
1118       configureFlags = [
1119         "--with-proj-lib=${pkgs.lib.getLib pkgs.proj}/lib"
1120       ];
1121     });
1123     vapour = old.vapour.overrideAttrs (attrs: {
1124       configureFlags = [
1125         "--with-proj-lib=${pkgs.lib.getLib pkgs.proj}/lib"
1126       ];
1127     });
1129     rzmq = old.rzmq.overrideAttrs (attrs: {
1130       preConfigure = "patchShebangs configure";
1131     });
1133     clustermq = old.clustermq.overrideAttrs (attrs: {
1134       preConfigure = "patchShebangs configure";
1135     });
1137     Cairo = old.Cairo.overrideAttrs (attrs: {
1138       NIX_LDFLAGS = "-lfontconfig";
1139     });
1141     curl = old.curl.overrideAttrs (attrs: {
1142       preConfigure = "patchShebangs configure";
1143     });
1145     Cyclops = old.Cyclops.overrideAttrs (attrs: {
1146       preConfigure = "patchShebangs configure";
1147     });
1149     RcppParallel = old.RcppParallel.overrideAttrs (attrs: {
1150       preConfigure = "patchShebangs configure";
1151     });
1153     Colossus = old.Colossus.overrideAttrs (_: {
1154       postPatch = "patchShebangs configure";
1155     });
1157     arcgisutils = old.arcgisutils.overrideAttrs (_: {
1158       postPatch = "patchShebangs configure";
1159     });
1161     arcgisgeocode = old.arcgisgeocode.overrideAttrs (_: {
1162       postPatch = "patchShebangs configure";
1163     });
1165    gmailr = old.gmailr.overrideAttrs (attrs: {
1166       postPatch = "patchShebangs configure";
1167     });
1169     pingr = old.pingr.overrideAttrs (_: {
1170       postPatch = "patchShebangs configure";
1171     });
1173     heck = old.heck.overrideAttrs (attrs: {
1174       postPatch = "patchShebangs configure";
1175     });
1177    surtvep = old.surtvep.overrideAttrs (attrs: {
1178       postPatch = "patchShebangs configure";
1179     });
1181    rtiktoken = old.rtiktoken.overrideAttrs (attrs: {
1182       postPatch = "patchShebangs configure";
1183       nativeBuildInputs = attrs.nativeBuildInputs ++ [
1184         pkgs.cargo
1185         pkgs.rustc
1186       ];
1187     });
1189     purrr = old.purrr.overrideAttrs (attrs: {
1190       patchPhase = "patchShebangs configure";
1191     });
1193     luajr = old.luajr.overrideAttrs (attrs: {
1194       hardeningDisable = [ "format" ];
1195       postPatch = "patchShebangs configure";
1196     });
1198     RcppArmadillo = old.RcppArmadillo.overrideAttrs (attrs: {
1199       patchPhase = "patchShebangs configure";
1200     });
1202     RcppGetconf = old.RcppGetconf.overrideAttrs (attrs: {
1203       postPatch = "patchShebangs configure";
1204     });
1206     SpliceWiz = old.SpliceWiz.overrideAttrs (attrs: {
1207       postPatch = "patchShebangs configure";
1208     });
1210     zoomerjoin = old.zoomerjoin.overrideAttrs (attrs: {
1211       nativeBuildInputs = [ pkgs.cargo ] ++ attrs.nativeBuildInputs;
1212       postPatch = "patchShebangs configure";
1213     });
1215     b64 = old.b64.overrideAttrs (attrs: {
1216       nativeBuildInputs = with pkgs; [ cargo rustc ] ++ attrs.nativeBuildInputs;
1217       postPatch = "patchShebangs configure";
1218     });
1220    ocf = old.ocf.overrideAttrs (attrs: {
1221       postPatch = "patchShebangs configure";
1222     });
1224     data_table = old.data_table.overrideAttrs (attrs: {
1225       env = (attrs.env or { }) // {
1226         NIX_CFLAGS_COMPILE = attrs.env.NIX_CFLAGS_COMPILE + " -fopenmp";
1227       };
1228       patchPhase = "patchShebangs configure";
1229     });
1231     cisPath = old.cisPath.overrideAttrs (attrs: {
1232       hardeningDisable = [ "format" ];
1233     });
1235     HilbertVis = old.HilbertVis.overrideAttrs (attrs: {
1236       hardeningDisable = [ "format" ];
1237     });
1239     HilbertVisGUI = old.HilbertVisGUI.overrideAttrs (attrs: {
1240       hardeningDisable = [ "format" ];
1241     });
1243     MANOR = old.MANOR.overrideAttrs (attrs: {
1244       hardeningDisable = [ "format" ];
1245     });
1247     rGADEM = old.rGADEM.overrideAttrs (attrs: {
1248       hardeningDisable = [ "format" ];
1249     });
1251    rsgeo = old.rsgeo.overrideAttrs (attrs: {
1252       nativeBuildInputs = [ pkgs.cargo ] ++ attrs.nativeBuildInputs;
1253       postPatch = "patchShebangs configure";
1254     });
1256    instantiate = old.instantiate.overrideAttrs (attrs: {
1257       postPatch = "patchShebangs configure";
1258     });
1260     exifr = old.exifr.overrideAttrs (attrs: {
1261       postPatch = ''
1262         for f in .onLoad .onAttach ; do
1263           substituteInPlace R/load_hook.R \
1264             --replace-fail \
1265             "$f <- function(libname, pkgname) {" \
1266             "$f <- function(libname, pkgname) {
1267                  options(
1268                      exifr.perlpath = \"${lib.getBin pkgs.perl}/bin/perl\",
1269                      exifr.exiftoolcommand = \"${lib.getBin pkgs.exiftool}/bin/exiftool\"
1270                  )"
1271         done
1272       '';
1273     });
1275     NGCHM = old.NGCHM.overrideAttrs (attrs: {
1276       postPatch = ''
1277           substituteInPlace "inst/base.config/conf.d/01-server-protocol-scl.R" \
1278             --replace-fail \
1279             "/bin/hostname" "${lib.getBin pkgs.hostname}/bin/hostname"
1280       '';
1281     });
1283     ModelMetrics = old.ModelMetrics.overrideAttrs (attrs: {
1284       env = (attrs.env or { }) // {
1285         NIX_CFLAGS_COMPILE = attrs.env.NIX_CFLAGS_COMPILE + lib.optionalString stdenv.hostPlatform.isDarwin " -fopenmp";
1286       };
1287     });
1289     rawrr = old.rawrr.overrideAttrs (attrs: {
1290       postPatch = ''
1291         substituteInPlace "R/zzz.R" "R/dotNetAssembly.R" --replace-warn \
1292           "Sys.which('mono')" "'${lib.getBin pkgs.mono}/bin/mono'"
1294         substituteInPlace "R/dotNetAssembly.R" --replace-warn \
1295           "Sys.which(\"xbuild\")" "\"${lib.getBin pkgs.mono}/bin/xbuild\""
1297         substituteInPlace "R/dotNetAssembly.R" --replace-warn \
1298           "cmd <- ifelse(Sys.which(\"msbuild\") != \"\", \"msbuild\", \"xbuild\")" \
1299           "cmd <- \"${lib.getBin pkgs.mono}/bin/xbuild\""
1301         substituteInPlace "R/rawrr.R" --replace-warn \
1302           "Sys.which(\"mono\")" "\"${lib.getBin pkgs.mono}/bin/mono\""
1303       '';
1304     });
1306     rpf = old.rpf.overrideAttrs (attrs: {
1307       patchPhase = "patchShebangs configure";
1308     });
1310     rJava = old.rJava.overrideAttrs (attrs: {
1311       preConfigure = ''
1312         export JAVA_CPPFLAGS=-I${pkgs.jdk}/include/
1313         export JAVA_HOME=${pkgs.jdk}
1314         substituteInPlace R/zzz.R.in \
1315           --replace-fail ".onLoad <- function(libname, pkgname) {" \
1316             ".onLoad <- function(libname, pkgname) {
1317              Sys.setenv(\"JAVA_HOME\" = Sys.getenv(\"JAVA_HOME\", unset = \"${pkgs.jdk}\"))"
1318       '';
1319     });
1321     JavaGD = old.JavaGD.overrideAttrs (attrs: {
1322       preConfigure = ''
1323         export JAVA_CPPFLAGS=-I${pkgs.jdk}/include/
1324         export JAVA_HOME=${pkgs.jdk}
1325       '';
1326     });
1328     jqr = old.jqr.overrideAttrs (attrs: {
1329       preConfigure = ''
1330         patchShebangs configure
1331         '';
1332     });
1334     pathfindR = old.pathfindR.overrideAttrs (attrs: {
1335       postPatch = ''
1336         substituteInPlace "R/zzz.R" \
1337           --replace-fail "    check_java_version()" "    Sys.setenv(JAVA_HOME = \"${lib.getBin pkgs.jre_minimal}\"); check_java_version()"
1338         substituteInPlace "R/active_snw_search.R" \
1339           --replace-fail "system(paste0(\"java" "system(paste0(\"${lib.getBin pkgs.jre_minimal}/bin/java"
1340       '';
1341     });
1343     pbdZMQ = old.pbdZMQ.overrideAttrs (attrs: {
1344       postPatch = lib.optionalString stdenv.hostPlatform.isDarwin ''
1345         for file in R/*.{r,r.in}; do
1346             sed -i 's#system("which \(\w\+\)"[^)]*)#"${pkgs.cctools}/bin/\1"#g' $file
1347         done
1348       '';
1349     });
1351     quarto = old.quarto.overrideAttrs (attrs: {
1352       propagatedBuildInputs = attrs.propagatedBuildInputs ++ [ pkgs.quarto ];
1353       postPatch = ''
1354         substituteInPlace "R/quarto.R" \
1355           --replace-fail "Sys.getenv(\"QUARTO_PATH\", unset = NA_character_)" "Sys.getenv(\"QUARTO_PATH\", unset = '${lib.getBin pkgs.quarto}/bin/quarto')"
1356       '';
1357     });
1359     Rhisat2 = old.Rhisat2.overrideAttrs (attrs: {
1360       enableParallelBuilding = false;
1361     });
1363     s2 = old.s2.overrideAttrs (attrs: {
1364       PKGCONFIG_CFLAGS = "-I${pkgs.openssl.dev}/include";
1365       PKGCONFIG_LIBS = "-Wl,-rpath,${lib.getLib pkgs.openssl}/lib -L${lib.getLib pkgs.openssl}/lib -lssl -lcrypto";
1366     });
1368     Rmpi = old.Rmpi.overrideAttrs (attrs: {
1369       configureFlags = [
1370         "--with-Rmpi-type=OPENMPI"
1371       ];
1372     });
1374     Rmpfr = old.Rmpfr.overrideAttrs (attrs: {
1375       configureFlags = [
1376         "--with-mpfr-include=${pkgs.mpfr.dev}/include"
1377       ];
1378     });
1380     covidsymptom = old.covidsymptom.overrideAttrs (attrs: {
1381       preConfigure = "rm R/covidsymptomdata.R";
1382     });
1384     cubature = old.cubature.overrideAttrs (attrs: {
1385       enableParallelBuilding = false;
1386     });
1388     RVowpalWabbit = old.RVowpalWabbit.overrideAttrs (attrs: {
1389       configureFlags = [
1390         "--with-boost=${pkgs.boost.dev}" "--with-boost-libdir=${pkgs.boost.out}/lib"
1391       ];
1392     });
1394     RAppArmor = old.RAppArmor.overrideAttrs (attrs: {
1395       patches = [ ./patches/RAppArmor.patch ];
1396       LIBAPPARMOR_HOME = pkgs.libapparmor;
1397     });
1399     RMySQL = old.RMySQL.overrideAttrs (attrs: {
1400       MYSQL_DIR = "${pkgs.libmysqlclient}";
1401       PKGCONFIG_CFLAGS = "-I${pkgs.libmysqlclient.dev}/include/mysql";
1402       NIX_CFLAGS_LINK = "-L${pkgs.libmysqlclient}/lib/mysql -lmysqlclient";
1403       preConfigure = ''
1404         patchShebangs configure
1405       '';
1406     });
1408     devEMF = old.devEMF.overrideAttrs (attrs: {
1409       NIX_CFLAGS_LINK = "-L${pkgs.xorg.libXft.out}/lib -lXft";
1410       NIX_LDFLAGS = "-lX11";
1411     });
1413     hdf5r = old.hdf5r.overrideAttrs (attrs: {
1414       buildInputs = attrs.buildInputs ++ [ new.Rhdf5lib.hdf5 ];
1415     });
1417     slfm = old.slfm.overrideAttrs (attrs: {
1418       PKG_LIBS = "-L${pkgs.blas}/lib -lblas -L${pkgs.lapack}/lib -llapack";
1419     });
1421     SamplerCompare = old.SamplerCompare.overrideAttrs (attrs: {
1422       PKG_LIBS = "-L${pkgs.blas}/lib -lblas -L${pkgs.lapack}/lib -llapack";
1423     });
1425     FLAMES = old.FLAMES.overrideAttrs (attrs: {
1426       patches = [ ./patches/FLAMES.patch ];
1427     });
1429     openssl = old.openssl.overrideAttrs (attrs: {
1430       preConfigure = ''
1431         patchShebangs configure
1432       '';
1433       PKGCONFIG_CFLAGS = "-I${pkgs.openssl.dev}/include";
1434       PKGCONFIG_LIBS = "-Wl,-rpath,${lib.getLib pkgs.openssl}/lib -L${lib.getLib pkgs.openssl}/lib -lssl -lcrypto";
1435     });
1437     websocket = old.websocket.overrideAttrs (attrs: {
1438       PKGCONFIG_CFLAGS = "-I${pkgs.openssl.dev}/include";
1439       PKGCONFIG_LIBS = "-Wl,-rpath,${lib.getLib pkgs.openssl}/lib -L${lib.getLib pkgs.openssl}/lib -lssl -lcrypto";
1440     });
1442     Rserve = old.Rserve.overrideAttrs (attrs: {
1443       patches = [ ./patches/Rserve.patch ];
1444       configureFlags = [
1445         "--with-server" "--with-client"
1446       ];
1447     });
1449     universalmotif = old.universalmotif.overrideAttrs (attrs: {
1450       patches = [ ./patches/universalmotif.patch];
1451     });
1453     V8 = old.V8.overrideAttrs (attrs: {
1454       postPatch = ''
1455         substituteInPlace configure \
1456           --replace-fail " -lv8_libplatform" ""
1457         # Bypass the test checking if pointer compression is needed
1458         substituteInPlace configure \
1459           --replace-fail "./pctest1" "true"
1460       '';
1462       preConfigure = ''
1463         export INCLUDE_DIR=${pkgs.nodejs.libv8}/include
1464         export LIB_DIR=${pkgs.nodejs.libv8}/lib
1465         patchShebangs configure
1466       '';
1468       R_MAKEVARS_SITE = lib.optionalString (pkgs.stdenv.system == "aarch64-linux")
1469         (pkgs.writeText "Makevars" ''
1470           CXX14PICFLAGS = -fPIC
1471         '');
1472     });
1474     acs = old.acs.overrideAttrs (attrs: {
1475       preConfigure = ''
1476         patchShebangs configure
1477         '';
1478     });
1480     gdtools = old.gdtools.overrideAttrs (attrs: {
1481       preConfigure = ''
1482         patchShebangs configure
1483         '';
1484       NIX_LDFLAGS = "-lfontconfig -lfreetype";
1485     });
1487     magick = old.magick.overrideAttrs (attrs: {
1488       preConfigure = ''
1489         patchShebangs configure
1490         '';
1491     });
1493     libgeos = old.libgeos.overrideAttrs (attrs: {
1494       preConfigure = ''
1495         patchShebangs configure
1496         '';
1497     });
1499     protolite = old.protolite.overrideAttrs (attrs: {
1500       preConfigure = ''
1501         patchShebangs configure
1502         '';
1503     });
1505     rgoslin = old.rgoslin.overrideAttrs (attrs: {
1506       enableParallelBuilding = false;
1507     });
1509     rpanel = old.rpanel.overrideAttrs (attrs: {
1510       preConfigure = ''
1511         export TCLLIBPATH="${pkgs.tclPackages.bwidget}/lib/bwidget${pkgs.tclPackages.bwidget.version}"
1512       '';
1513       TCLLIBPATH = "${pkgs.tclPackages.bwidget}/lib/bwidget${pkgs.tclPackages.bwidget.version}";
1514     });
1516     networkscaleup = old.networkscaleup.overrideAttrs (attrs: {
1517       env = (attrs.env or { }) // {
1518         # needed to avoid "log limit exceeded" on Hydra
1519         NIX_CFLAGS_COMPILE = attrs.env.NIX_CFLAGS_COMPILE + " -Wno-ignored-attributes";
1520       };
1522       # consumes a lot of resources in parallel
1523       enableParallelBuilding = false;
1524     });
1526     RPostgres = old.RPostgres.overrideAttrs (attrs: {
1527       preConfigure = ''
1528         export INCLUDE_DIR=${pkgs.postgresql}/include
1529         export LIB_DIR=${pkgs.postgresql.lib}/lib
1530         patchShebangs configure
1531         '';
1532     });
1534     OpenMx = old.OpenMx.overrideAttrs (attrs: {
1535       env = (attrs.env or { }) // {
1536         # needed to avoid "log limit exceeded" on Hydra
1537         NIX_CFLAGS_COMPILE = attrs.env.NIX_CFLAGS_COMPILE + " -Wno-ignored-attributes";
1538       };
1539       preConfigure = ''
1540         patchShebangs configure
1541         '';
1542     });
1544     odbc = old.odbc.overrideAttrs (attrs: {
1545       preConfigure = ''
1546         patchShebangs configure
1547         '';
1548     });
1550     x13binary = old.x13binary.overrideAttrs (attrs: {
1551       preConfigure = ''
1552         patchShebangs configure
1553         '';
1554     });
1556     FlexReg = old.FlexReg.overrideAttrs (attrs: {
1557       env = (attrs.env or { }) // {
1558         # needed to avoid "log limit exceeded" on Hydra
1559         NIX_CFLAGS_COMPILE = attrs.env.NIX_CFLAGS_COMPILE + " -Wno-ignored-attributes";
1560       };
1562       # consumes a lot of resources in parallel
1563       enableParallelBuilding = false;
1564     });
1566     geojsonio = old.geojsonio.overrideAttrs (attrs: {
1567       buildInputs = [ cacert ] ++ attrs.buildInputs;
1568     });
1571     immunotation = let
1572       MHC41alleleList = fetchurl {
1573         url = "https://services.healthtech.dtu.dk/services/NetMHCpan-4.1/allele.list";
1574         hash = "sha256-CRZ+0uHzcq5zK5eONucAChXIXO8tnq5sSEAS80Z7jhg=";
1575       };
1577       MHCII40alleleList = fetchurl {
1578         url = "https://services.healthtech.dtu.dk/services/NetMHCIIpan-4.0/alleles_name.list";
1579         hash = "sha256-K4Ic2NUs3P4IkvOODwZ0c4Yh8caex5Ih0uO5jXRHp40=";
1580       };
1582       # List of valid countries, regions and ethnic groups
1583       # The original page is changing a bit every day, but the relevant
1584       # content does not. Use archive.org to get a stable snapshot.
1585       # It can be updated from time to time, or when the package becomes
1586       # deficient. This may be difficult to know.
1587       # Update the snapshot date, and add id_ after it, as described here:
1588       # https://web.archive.org/web/20130806040521/http://faq.web.archive.org/page-without-wayback-code/
1589       validGeographics = fetchurl {
1590         url = "https://web.archive.org/web/20240418194005id_/http://www.allelefrequencies.net/hla6006a.asp";
1591         hash = "sha256-m7Wkmh/cPxeqn94LwoznIh+fcFXskmSGErUYj6kTqak=";
1592       };
1593     in old.immunotation.overrideAttrs (attrs: {
1594       patches = [ ./patches/immunotation.patch ];
1595       postPatch = ''
1596         substituteInPlace "R/external_resources_input.R" --replace-fail \
1597           "nix-NetMHCpan-4.1-allele-list" ${MHC41alleleList}
1599         substituteInPlace "R/external_resources_input.R" --replace-fail \
1600           "nix-NETMHCIIpan-4.0-alleles-name-list" ${MHCII40alleleList}
1602         substituteInPlace "R/AFND_interface.R" --replace-fail \
1603           "nix-valid-geographics" ${validGeographics}
1604       '';
1605     });
1607     nearfar = let
1608       angrist = fetchurl {
1609         url = "https://raw.githubusercontent.com/joerigdon/nearfar/master/angrist.csv";
1610         hash = "sha256-lb+HMHnRGonc26merFGB0B7Vk1Lk+sIJlay+JtQC8m4=";
1611       };
1612     in old.nearfar.overrideAttrs (attrs: {
1613       postPatch = ''
1614         substituteInPlace "R/nearfar.R" --replace-fail \
1615          'url("https://raw.githubusercontent.com/joerigdon/nearfar/master/angrist.csv")'  '"${angrist}"'
1616       '';
1617     });
1619     BiocParallel = old.BiocParallel.overrideAttrs (attrs: {
1620       env = (attrs.env or { }) // {
1621         NIX_CFLAGS_COMPILE = attrs.env.NIX_CFLAGS_COMPILE + lib.optionalString stdenv.hostPlatform.isDarwin " -Wno-error=missing-template-arg-list-after-template-kw";
1622       };
1623     });
1625     rstan = old.rstan.overrideAttrs (attrs: {
1626       env = (attrs.env or { }) // {
1627         NIX_CFLAGS_COMPILE = attrs.env.NIX_CFLAGS_COMPILE + " -DBOOST_PHOENIX_NO_VARIADIC_EXPRESSION";
1628       };
1629     });
1631     mongolite = old.mongolite.overrideAttrs (attrs: {
1632       preConfigure = ''
1633         patchShebangs configure
1634         '';
1635       PKGCONFIG_CFLAGS = "-I${pkgs.openssl.dev}/include -I${pkgs.cyrus_sasl.dev}/include -I${pkgs.zlib.dev}/include";
1636       PKGCONFIG_LIBS = "-Wl,-rpath,${lib.getLib pkgs.openssl}/lib -L${lib.getLib pkgs.openssl}/lib -L${pkgs.cyrus_sasl.out}/lib -L${pkgs.zlib.out}/lib -lssl -lcrypto -lsasl2 -lz";
1637     });
1639     ChemmineOB = old.ChemmineOB.overrideAttrs (attrs: {
1640       # pkg-config knows openbabel-3 without the .0
1641       # Eigen3 is also looked for in the wrong location
1642       # pointer was changed in newer version of openbabel:
1643       #   https://github.com/openbabel/openbabel/commit/305a6fd3183540e4a8ae1d79d10bf1860e6aa373
1644       postPatch = ''
1645         substituteInPlace configure \
1646           --replace-fail openbabel-3.0 openbabel-3
1647         substituteInPlace src/Makevars.in \
1648           --replace-fail "-I/usr/include/eigen3" "-I${pkgs.eigen}/include/eigen3"
1649         substituteInPlace src/ChemmineOB.cpp \
1650           --replace-fail "obsharedptr<" "std::shared_ptr<"
1651       '';
1653       # copied from fastnlo-toolkit:
1654       # None of our currently packaged versions of swig are C++17-friendly
1655       # Use a workaround from https://github.com/swig/swig/issues/1538
1656       env = (attrs.env or { }) // {
1657         NIX_CFLAGS_COMPILE = (attrs.env.NIX_CFLAGS_COMPILE or "") + lib.optionalString stdenv.hostPlatform.isDarwin " -D_LIBCPP_ENABLE_CXX17_REMOVED_FEATURES";
1658       };
1659     });
1661     ps = old.ps.overrideAttrs (attrs: {
1662       preConfigure = "patchShebangs configure";
1663     });
1665     rlang = old.rlang.overrideAttrs (attrs: {
1666       preConfigure = "patchShebangs configure";
1667     });
1669     systemfonts = old.systemfonts.overrideAttrs (attrs: {
1670       preConfigure = "patchShebangs configure";
1671     });
1673     littler = old.littler.overrideAttrs (attrs: with pkgs; {
1674       buildInputs = [ pcre xz zlib bzip2 icu which ] ++ attrs.buildInputs;
1675       postInstall = ''
1676         install -d $out/bin $out/share/man/man1
1677         ln -s ../library/littler/bin/r $out/bin/r
1678         ln -s ../library/littler/bin/r $out/bin/lr
1679         ln -s ../../../library/littler/man-page/r.1 $out/share/man/man1
1680         # these won't run without special provisions, so better remove them
1681         rm -r $out/library/littler/script-tests
1682       '';
1683     });
1685     lpsymphony = old.lpsymphony.overrideAttrs (attrs: {
1686       preConfigure = ''
1687         patchShebangs configure
1688       '';
1689     });
1691     sodium = old.sodium.overrideAttrs (attrs: with pkgs; {
1692       preConfigure = ''
1693         patchShebangs configure
1694       '';
1695       nativeBuildInputs = [ pkg-config ] ++ attrs.nativeBuildInputs;
1696       buildInputs = [ libsodium.dev ] ++ attrs.buildInputs;
1697     });
1699     keyring = old.keyring.overrideAttrs (attrs: {
1700       preConfigure = ''
1701         patchShebangs configure
1702       '';
1703     });
1705     Rhtslib = old.Rhtslib.overrideAttrs (attrs: {
1706       preConfigure = ''
1707         substituteInPlace R/zzz.R --replace "-lcurl" "-L${pkgs.curl.out}/lib -lcurl"
1708       '';
1709     });
1711     h2o = old.h2o.overrideAttrs (attrs: {
1712       preConfigure = ''
1713         # prevent download of jar file during install and postpone to first use
1714         sed -i '/downloadJar()/d' R/zzz.R
1716         # during runtime the package directory is not writable as it's in the
1717         # nix store, so store the jar in the user's cache directory instead
1718         substituteInPlace R/connection.R --replace \
1719           'dest_file <- file.path(dest_folder, "h2o.jar")' \
1720           'dest_file <- file.path("~/.cache/", "h2o.jar")'
1721       '';
1722     });
1724     SICtools = old.SICtools.overrideAttrs (attrs: {
1725       postPatch = ''
1726         substituteInPlace src/Makefile --replace-fail "-lcurses" "-lncurses"
1727       '';
1728       hardeningDisable = [ "format" ];
1729     });
1731     Rbwa = old.Rbwa.overrideAttrs (attrs: {
1732       # Parallel build cleans up *.o before they can be packed in a library
1733       postPatch = ''
1734         substituteInPlace src/Makefile --replace-fail \
1735           "all:\$(PROG) ../inst/bwa clean" \
1736           "all:\$(PROG) ../inst/bwa" \
1737       '';
1738     });
1740     ROracle = old.ROracle.overrideAttrs (attrs: {
1741       configureFlags = [
1742         "--with-oci-lib=${pkgs.oracle-instantclient.lib}/lib"
1743         "--with-oci-inc=${pkgs.oracle-instantclient.dev}/include"
1744       ];
1745     });
1747     xslt = old.xslt.overrideAttrs (attrs: {
1748       env = (attrs.env or { }) // {
1749         NIX_CFLAGS_COMPILE = attrs.env.NIX_CFLAGS_COMPILE + " -fpermissive";
1750       };
1751     });
1753     sparklyr = old.sparklyr.overrideAttrs (attrs: {
1754       # Pyspark's spark is full featured and better maintained than pkgs.spark
1755       preConfigure = ''
1756         substituteInPlace R/zzz.R \
1757           --replace ".onLoad <- function(...) {" \
1758             ".onLoad <- function(...) {
1759           Sys.setenv(\"SPARK_HOME\" = Sys.getenv(\"SPARK_HOME\", unset = \"${pkgs.python3Packages.pyspark}/${pkgs.python3Packages.python.sitePackages}/pyspark\"))
1760           Sys.setenv(\"JAVA_HOME\" = Sys.getenv(\"JAVA_HOME\", unset = \"${pkgs.jdk}\"))"
1761       '';
1762     });
1764     proj4 = old.proj4.overrideAttrs (attrs: {
1765       preConfigure = ''
1766         substituteInPlace configure \
1767           --replace "-lsqlite3" "-L${lib.makeLibraryPath [ pkgs.sqlite ]} -lsqlite3"
1768       '';
1769     });
1771     rrd = old.rrd.overrideAttrs (attrs: {
1772       preConfigure = ''
1773         patchShebangs configure
1774       '';
1775     });
1777     ChIPXpress = old.ChIPXpress.override { hydraPlatforms = []; };
1779     rgl = old.rgl.overrideAttrs (attrs: {
1780       RGL_USE_NULL = "true";
1781     });
1783     Rrdrand = old.Rrdrand.override { platforms = lib.platforms.x86_64 ++ lib.platforms.x86; };
1785     symengine = old.symengine.overrideAttrs (_: {
1786       preConfigure = ''
1787         rm configure
1788         cat > src/Makevars << EOF
1789         PKG_LIBS=-lsymengine
1790         all: $(SHLIB)
1791         EOF
1792       '';
1793     });
1795     RandomFieldsUtils = old.RandomFieldsUtils.override { platforms = lib.platforms.x86_64 ++ lib.platforms.x86; };
1797     flowClust = old.flowClust.override { platforms = lib.platforms.x86_64 ++ lib.platforms.x86; };
1799     RcppCGAL = old.RcppCGAL.overrideAttrs (_: {
1800       postPatch = "patchShebangs configure";
1801     });
1803     SharedObject = old.SharedObject.overrideAttrs (attrs: {
1804       # backport PR resolving build issues: https://github.com/Jiefei-Wang/SharedObject/pull/17
1805       patches = let inherit (pkgs) fetchpatch; in [
1806         (fetchpatch {
1807           url = "https://github.com/Jiefei-Wang/SharedObject/pull/17/commits/50c4b2964649d7f5a14d843bd7089ab62650fcd3.patch";
1808           sha256 = "sha256-zn535IeOYRvyQ2yxgoGEq2wccrl9xdu9nREmy7sV+PQ=";
1809         })
1810         (fetchpatch {
1811           url = "https://github.com/Jiefei-Wang/SharedObject/pull/17/commits/bf096a39858e9210cbe246d4b136905d4cfbfaf4.patch";
1812           sha256 = "sha256-Z+BZOkFnLgIBiVuPsAHp7bMXzADcvuHV4hILdmLvd+k=";
1813         })
1814       ];
1815     });
1817     httr2 = old.httr2.overrideAttrs (attrs: {
1818       preConfigure = "patchShebangs configure";
1819     });
1821     dbarts = old.dbarts.override { platforms = lib.platforms.x86_64 ++ lib.platforms.x86; };
1823     geomorph = old.geomorph.overrideAttrs (attrs: {
1824       RGL_USE_NULL = "true";
1825     });
1827     gpuMagic = old.gpuMagic.overrideAttrs (_: {
1828       hardeningDisable = ["format"];
1829     });
1831     Rdisop = old.Rdisop.overrideAttrs (_: {
1832       hardeningDisable = ["format"];
1833     });
1835     opencv = let
1836       opencvGtk = pkgs.opencv.override (old : { enableGtk2 = true; });
1837     in old.opencv.overrideAttrs (attrs: {
1838       buildInputs = attrs.buildInputs ++ [ opencvGtk ];
1839     });
1841     Rhdf5lib = let
1842       hdf5 = pkgs.hdf5_1_10;
1843     in old.Rhdf5lib.overrideAttrs (attrs: {
1844       propagatedBuildInputs = attrs.propagatedBuildInputs ++ [ hdf5.dev pkgs.libaec ];
1845       patches = [ ./patches/Rhdf5lib.patch ];
1846       passthru.hdf5 = hdf5;
1847     });
1849     rhdf5filters = old.rhdf5filters.overrideAttrs (attrs: {
1850       patches = [ ./patches/rhdf5filters.patch ];
1851     });
1853     rhdf5= old.rhdf5.overrideAttrs (attrs: {
1854       patches = [ ./patches/rhdf5.patch ];
1855       env.NIX_CFLAGS_COMPILE = "-Wno-error=implicit-function-declaration";
1856     });
1858     rmarkdown = old.rmarkdown.overrideAttrs (_: {
1859       preConfigure = ''
1860         substituteInPlace R/pandoc.R \
1861           --replace '"~/opt/pandoc"' '"~/opt/pandoc", "${pkgs.pandoc}/bin"'
1862       '';
1863     });
1865     redland = old.redland.overrideAttrs (_: {
1866       PKGCONFIG_CFLAGS="-I${pkgs.redland}/include -I${pkgs.librdf_raptor2}/include/raptor2 -I${pkgs.librdf_rasqal}/include/rasqal";
1867       PKGCONFIG_LIBS="-L${pkgs.redland}/lib -L${pkgs.librdf_raptor2}/lib -L${pkgs.librdf_rasqal}/lib -lrdf -lraptor2 -lrasqal";
1868     });
1870     textshaping = old.textshaping.overrideAttrs (attrs: {
1871       env.NIX_LDFLAGS = "-lfribidi -lharfbuzz";
1872     });
1874     httpuv = old.httpuv.overrideAttrs (_: {
1875       preConfigure = ''
1876         patchShebangs configure
1877       '';
1878     });
1880     oligo = old.oligo.overrideAttrs (_: {
1881       hardeningDisable = ["format"];
1882     });
1884     tesseract = old.tesseract.overrideAttrs (_: {
1885       preConfigure = ''
1886         substituteInPlace configure \
1887           --replace 'PKG_CONFIG_NAME="tesseract"' 'PKG_CONFIG_NAME="tesseract lept"'
1888       '';
1889     });
1891     ijtiff = old.ijtiff.overrideAttrs (_: {
1892       preConfigure = ''
1893         patchShebangs configure
1894       '';
1895     });
1897     torch = old.torch.overrideAttrs (attrs: {
1898       preConfigure = ''
1899         patchShebangs configure
1900       '';
1901     });
1903     pak = old.pak.overrideAttrs (attrs: {
1904       preConfigure = ''
1905         patchShebangs configure
1906         patchShebangs src/library/curl/configure
1907         patchShebangs src/library/pkgdepends/configure
1908         patchShebangs src/library/ps/configure
1909       '';
1910     });
1912     pkgdepends = old.pkgdepends.overrideAttrs (attrs: {
1913       postPatch = ''
1914         patchShebangs configure
1915       '';
1916     });
1917   };
1919   self