acr-cli: init at 0.14 (#359508)
[NixPkgs.git] / pkgs / development / r-modules / default.nix
blob085a62509620406d7b9ca28cf4c37d974acb72dd
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     bnpmr = [ pkgs.gsl ];
357     caviarpd = [ pkgs.cargo ];
358     cairoDevice = [ pkgs.gtk2.dev ];
359     Cairo = with pkgs; [ libtiff libjpeg cairo.dev xorg.libXt.dev fontconfig.lib ];
360     Cardinal = [ pkgs.which ];
361     chebpol = [ pkgs.fftw.dev ];
362     ChemmineOB = [ pkgs.pkg-config ];
363     interpolation = [ pkgs.pkg-config ];
364     clarabel = [ pkgs.cargo ];
365     curl = [ pkgs.curl.dev ];
366     CytoML = [ pkgs.libxml2.dev ];
367     data_table = with pkgs; [ pkg-config zlib.dev ] ++ lib.optional stdenv.hostPlatform.isDarwin pkgs.llvmPackages.openmp;
368     devEMF = with pkgs; [ xorg.libXft.dev ];
369     diversitree = with pkgs; [ gsl fftw ];
370     exactextractr = [ pkgs.geos ];
371     EMCluster = [ pkgs.lapack ];
372     fangs = [ pkgs.cargo ];
373     fcl = [ pkgs.cargo ];
374     fftw = [ pkgs.fftw.dev ];
375     fftwtools = with pkgs; [ fftw.dev pkg-config ];
376     fingerPro = [ pkgs.gsl ];
377     Formula = [ pkgs.gmp ];
378     frailtyMMpen = [ pkgs.gsl ];
379     gamstransfer = [ pkgs.zlib ];
380     gdalraster = [ pkgs.pkg-config ];
381     gdtools = with pkgs; [ cairo.dev fontconfig.lib freetype.dev ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ expat xorg.libXdmcp ];
382     GeneralizedWendland = [ pkgs.gsl ];
383     ggiraph = with pkgs; [ pkgs.libpng.dev ];
384     git2r = with pkgs; [ zlib.dev openssl.dev libssh2.dev libgit2 pkg-config ];
385     GLAD = [ pkgs.gsl ];
386     glpkAPI = with pkgs; [ gmp glpk ];
387     gmp = [ pkgs.gmp.dev ];
388     GPBayes = [ pkgs.gsl ];
389     graphscan = [ pkgs.gsl ];
390     gsl = [ pkgs.gsl ];
391     gslnls = [ pkgs.gsl ];
392     gert = [ pkgs.libgit2 ];
393     haven = with pkgs; [ zlib.dev ];
394     hellorust = [ pkgs.cargo ];
395     hgwrr = [ pkgs.gsl ];
396     h5vc = with pkgs; [ zlib.dev bzip2.dev xz.dev ];
397     yyjsonr = with pkgs; [ zlib.dev ];
398     RNifti = with pkgs; [ zlib.dev ];
399     RNiftyReg = with pkgs; [ zlib.dev ];
400     highs = [ pkgs.which pkgs.cmake ];
401     crc32c = [ pkgs.which pkgs.cmake ];
402     rbedrock = [ pkgs.zlib.dev pkgs.which pkgs.cmake ];
403     HiCseg = [ pkgs.gsl ];
404     imager = [ pkgs.xorg.libX11.dev ];
405     imbibe = [ pkgs.zlib.dev ];
406     image_CannyEdges = with pkgs; [ fftw.dev libpng.dev ];
407     iBMQ = [ pkgs.gsl ];
408     jack = [ pkgs.pkg-config ];
409     JavaGD = [ pkgs.jdk ];
410     jpeg = [ pkgs.libjpeg.dev ];
411     jqr = [ pkgs.jq.dev ];
412     KFKSDS = [ pkgs.gsl ];
413     KSgeneral = with pkgs; [ pkg-config ];
414     kza = [ pkgs.fftw.dev ];
415     leidenAlg = [ pkgs.gmp.dev ];
416     Libra = [ pkgs.gsl ];
417     libstable4u = [ pkgs.gsl ];
418     heck = [ pkgs.cargo ];
419     LOMAR = [ pkgs.gmp.dev ];
420     littler = [ pkgs.libdeflate ];
421     lpsymphony = with pkgs; [ pkg-config gfortran gettext ];
422     lwgeom = with pkgs; [ proj geos gdal ];
423     rsbml = [ pkgs.pkg-config ];
424     rvg = [ pkgs.libpng.dev ];
425     MAGEE = [ pkgs.zlib.dev pkgs.bzip2.dev ];
426     magick = [ pkgs.imagemagick.dev ];
427     ModelMetrics = lib.optional stdenv.hostPlatform.isDarwin pkgs.llvmPackages.openmp;
428     mvabund = [ pkgs.gsl ];
429     mcrPioda = [ pkgs.gsl ];
430     mwaved = [ pkgs.fftw.dev ];
431     mzR = with pkgs; [ zlib netcdf ];
432     nanonext = with pkgs; [ mbedtls nng ];
433     ncdf4 = [ pkgs.netcdf ];
434     neojags = [ pkgs.jags ];
435     nloptr = with pkgs; [ nlopt pkg-config ];
436     n1qn1 = [ pkgs.gfortran ];
437     odbc = [ pkgs.unixODBC ];
438     opencv = [ pkgs.pkg-config ];
439     pak = [ pkgs.curl.dev ];
440     pander = with pkgs; [ pandoc which ];
441     pbdMPI = [ pkgs.mpi ];
442     pbdPROF = [ pkgs.mpi ];
443     pbdZMQ = [ pkgs.pkg-config ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ pkgs.which ];
444     pcaL1 = [ pkgs.pkg-config pkgs.clp ];
445     pdftools = [ pkgs.poppler.dev ];
446     PEPBVS = [ pkgs.gsl ];
447     phytools = [ pkgs.which ];
448     PKI = [ pkgs.openssl.dev ];
449     png = [ pkgs.libpng.dev ];
450     protolite = [ pkgs.protobuf ];
451     R2SWF = with pkgs; [ zlib libpng freetype.dev ];
452     RAppArmor = [ pkgs.libapparmor ];
453     rapportools = [ pkgs.which ];
454     rapport = [ pkgs.which ];
455     rcdd = [ pkgs.gmp.dev ];
456     RcppCNPy = [ pkgs.zlib.dev ];
457     RcppGSL = [ pkgs.gsl ];
458     RcppZiggurat = [ pkgs.gsl ];
459     reprex = [ pkgs.which ];
460     resultant = with pkgs; [ gmp.dev mpfr.dev pkg-config ];
461     rgdal = with pkgs; [ proj.dev gdal ];
462     Rhisat2 = [ pkgs.which pkgs.hostname ];
463     gdalcubes = [ pkgs.pkg-config ];
464     rgeos = [ pkgs.geos ];
465     Rglpk = [ pkgs.glpk ];
466     RGtk2 = [ pkgs.gtk2.dev ];
467     rhdf5 = [ pkgs.zlib ];
468     Rhdf5lib = with pkgs; [ zlib.dev ];
469     Rhpc = with pkgs; [ zlib bzip2.dev icu xz.dev mpi pcre.dev ];
470     Rhtslib = with pkgs; [ zlib.dev automake autoconf bzip2.dev xz.dev curl.dev ];
471     rjags = [ pkgs.jags ];
472     rJava = with pkgs; [ zlib bzip2.dev icu xz.dev pcre.dev jdk libzip libdeflate ];
473     Rlibeemd = [ pkgs.gsl ];
474     rmatio = [ pkgs.zlib.dev pkgs.pkg-config ];
475     Rmpfr = with pkgs; [ gmp mpfr.dev ];
476     Rmpi = [ pkgs.mpi ];
477     RMySQL = with pkgs; [ zlib libmysqlclient openssl.dev ];
478     RNetCDF = with pkgs; [ netcdf udunits ];
479     RODBC = [ pkgs.libiodbc ];
480     rpanel = [ pkgs.tclPackages.bwidget ];
481     Rpoppler = [ pkgs.poppler ];
482     RPostgres = with pkgs; [ postgresql ];
483     RPostgreSQL = with pkgs; [ postgresql postgresql ];
484     RProtoBuf = [ pkgs.protobuf ];
485     RSclient = [ pkgs.openssl.dev ];
486     Rserve = [ pkgs.openssl ];
487     Rssa = [ pkgs.fftw.dev ];
488     rsvg = [ pkgs.pkg-config ];
489     runjags = [ pkgs.jags ];
490     xslt = [ pkgs.pkg-config ];
491     RVowpalWabbit = with pkgs; [ zlib.dev boost ];
492     rzmq = with pkgs; [ zeromq pkg-config ];
493     httpuv = [ pkgs.zlib.dev ];
494     clustermq = [ pkgs.zeromq ];
495     SAVE = with pkgs; [ zlib bzip2 icu xz pcre ];
496     salso = [ pkgs.cargo ];
497     ymd = [ pkgs.cargo ];
498     arcpbf = [ pkgs.cargo ];
499     sdcTable = with pkgs; [ gmp glpk ];
500     seewave = with pkgs; [ fftw.dev libsndfile.dev ];
501     seqinr = [ pkgs.zlib.dev ];
502     smcryptoR = with pkgs; [ cargo rustc which ];
503     webp = [ pkgs.pkg-config ];
504     seqminer = with pkgs; [ zlib.dev bzip2 ];
505     sf = with pkgs; [ gdal proj geos libtiff curl ];
506     strawr = with pkgs; [ curl.dev ];
507     string2path = [ pkgs.cargo ];
508     terra = with pkgs; [ gdal proj geos ];
509     tok = [ pkgs.cargo ];
510     rshift = [ pkgs.cargo ];
511     arcgisutils = with pkgs; [ cargo rustc ];
512     arcgisgeocode = with pkgs; [ cargo rustc ];
513     arcgisplaces = with pkgs; [ pkg-config openssl.dev cargo rustc ];
514     apcf = with pkgs; [ geos ];
515     SemiCompRisks = [ pkgs.gsl ];
516     showtext = with pkgs; [ zlib libpng icu freetype.dev ];
517     simplexreg = [ pkgs.gsl ];
518     spate = [ pkgs.fftw.dev ];
519     ssanv = [ pkgs.proj ];
520     stsm = [ pkgs.gsl ];
521     stringi = [ pkgs.icu.dev ];
522     survSNP = [ pkgs.gsl ];
523     svglite = [ pkgs.libpng.dev ];
524     sysfonts = with pkgs; [ zlib libpng freetype.dev ];
525     systemfonts = with pkgs; [ fontconfig.dev freetype.dev ];
526     TAQMNGR = [ pkgs.zlib.dev ];
527     TDA = [ pkgs.gmp ];
528     tesseract = with pkgs; [ tesseract leptonica ];
529     tiff = [ pkgs.libtiff.dev ];
530     tkrplot = with pkgs; [ xorg.libX11 tk.dev ];
531     topicmodels = [ pkgs.gsl ];
532     udunits2 = with pkgs; [ udunits expat ];
533     units = [ pkgs.udunits ];
534     unigd = [ pkgs.pkg-config ];
535     vdiffr = [ pkgs.libpng.dev ];
536     V8 = [ pkgs.nodejs.libv8 ];
537     XBRL = with pkgs; [ zlib libxml2.dev ];
538     XLConnect = [ pkgs.jdk ];
539     xml2 = [ pkgs.libxml2.dev ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ pkgs.perl ];
540     XML = with pkgs; [ libtool libxml2.dev xmlsec libxslt ];
541     affyPLM = [ pkgs.zlib.dev ];
542     BitSeq = [ pkgs.zlib.dev ];
543     DiffBind = with pkgs; [ zlib.dev xz.dev bzip2.dev ];
544     ShortRead = [ pkgs.zlib.dev ];
545     oligo = [ pkgs.zlib.dev ];
546     gmapR = [ pkgs.zlib.dev ];
547     Rsubread = [ pkgs.zlib.dev ];
548     XVector = [ pkgs.zlib.dev ];
549     Rsamtools = with pkgs; [ zlib.dev curl.dev bzip2 xz ];
550     rtracklayer = with pkgs; [ zlib.dev curl.dev ];
551     affyio = [ pkgs.zlib.dev ];
552     snpStats = [ pkgs.zlib.dev ];
553     vcfppR = [ pkgs.curl.dev pkgs.bzip2 pkgs.zlib.dev pkgs.xz];
554     httpgd = with pkgs; [ cairo.dev ];
555     SymTS = [ pkgs.gsl ];
556     VBLPCM = [ pkgs.gsl ];
557     dynr = [ pkgs.gsl ];
558     mixlink = [ pkgs.gsl ];
559     ridge = [ pkgs.gsl ];
560     smam = [ pkgs.gsl ];
561     rnetcarto = [ pkgs.gsl ];
562     rGEDI = [ pkgs.gsl ];
563     mmpca = [ pkgs.gsl ];
564     monoreg = [ pkgs.gsl ];
565     mvst = [ pkgs.gsl ];
566     mixture = [ pkgs.gsl ];
567     jSDM = [ pkgs.gsl ];
568     immunoClust = [ pkgs.gsl ];
569     hSDM = [ pkgs.gsl ];
570     flowPeaks = [ pkgs.gsl ];
571     fRLR = [ pkgs.gsl ];
572     eaf = [ pkgs.gsl ];
573     diseq = [ pkgs.gsl ];
574     cit = [ pkgs.gsl ];
575     abn = [ pkgs.gsl ];
576     SimInf = [ pkgs.gsl ];
577     RJMCMCNucleosomes = [ pkgs.gsl ];
578     RDieHarder = [ pkgs.gsl ];
579     QF = [ pkgs.gsl ];
580     PICS = [ pkgs.gsl ];
581     RationalMatrix = [ pkgs.pkg-config pkgs.gmp.dev];
582     RcppCWB = [ pkgs.pkg-config pkgs.pcre2 ];
583     redux = [ pkgs.pkg-config ];
584     rswipl = with pkgs; [ cmake pkg-config ];
585     scorematchingad = [ pkgs.cmake ];
586     rrd = [ pkgs.pkg-config ];
587     surveyvoi = [ pkgs.pkg-config ];
588     Rbwa = [ pkgs.zlib.dev ];
589     trackViewer = [ pkgs.zlib.dev ];
590     themetagenomics = [ pkgs.zlib.dev ];
591     Rsymphony = [ pkgs.pkg-config ];
592     NanoMethViz = [ pkgs.zlib.dev ];
593     RcppMeCab = [ pkgs.pkg-config ];
594     HilbertVisGUI = with pkgs; [ pkg-config which ];
595     textshaping = [ pkgs.pkg-config ];
596     ragg = [ pkgs.pkg-config ];
597     qqconf = [ pkgs.pkg-config ];
598     qspray = [ pkgs.pkg-config ];
599     ratioOfQsprays = [ pkgs.pkg-config ];
600     symbolicQspray = [ pkgs.pkg-config ];
601     sphereTessellation = [ pkgs.pkg-config ];
602     vapour = [ pkgs.pkg-config ];
603   };
605   packagesWithBuildInputs = {
606     # sort -t '=' -k 2
607     asciicast = with pkgs; [ xz.dev bzip2.dev zlib.dev icu.dev libdeflate ];
608     island = [ pkgs.gsl.dev ];
609     svKomodo = [ pkgs.which ];
610     ulid = [ pkgs.zlib.dev ];
611     unrtf = with pkgs; [ xz.dev bzip2.dev zlib.dev icu.dev libdeflate ];
612     nat = [ pkgs.which ];
613     nat_templatebrains = [ pkgs.which ];
614     pbdZMQ = [ pkgs.zeromq ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ pkgs.darwin.binutils ];
615     bigmemory = lib.optionals stdenv.hostPlatform.isLinux [ pkgs.libuuid.dev ];
616     bayesWatch = [ pkgs.boost.dev ];
617     clustermq = [  pkgs.pkg-config ];
618     coga = [ pkgs.gsl.dev ];
619     mBvs = [ pkgs.gsl.dev ];
620     rcontroll = [ pkgs.gsl.dev ];
621     deepSNV = with pkgs; [ xz.dev bzip2.dev zlib.dev ];
622     epialleleR = with pkgs; [ xz.dev bzip2.dev zlib.dev ];
623     gdalraster = with pkgs; [ gdal proj.dev sqlite.dev ];
624     mitoClone2 = with pkgs; [ xz.dev bzip2.dev zlib.dev ];
625     gpg = [ pkgs.gpgme ];
626     webp = [ pkgs.libwebp ];
627     RMark = [ pkgs.which ];
628     RPushbullet = [ pkgs.which ];
629     stpphawkes = [ pkgs.gsl ];
630     registr = with pkgs; [ icu.dev zlib.dev bzip2.dev xz.dev libdeflate ];
631     RCurl = [ pkgs.curl.dev ];
632     R2SWF = [ pkgs.pkg-config ];
633     rDEA = [ pkgs.glpk ];
634     rgl = with pkgs; [ libGLU libGL xorg.libX11.dev freetype.dev libpng.dev ];
635     RGtk2 = [ pkgs.pkg-config ];
636     RProtoBuf = [ pkgs.pkg-config ];
637     Rpoppler = [ pkgs.pkg-config ];
638     XML = [ pkgs.pkg-config ];
639     apsimx = [ pkgs.which ];
640     cairoDevice = [ pkgs.pkg-config ];
641     chebpol = [ pkgs.pkg-config ];
642     eds = [ pkgs.zlib.dev ];
643     pgenlibr = [ pkgs.zlib.dev ];
644     fftw = [ pkgs.pkg-config ];
645     gdtools = [ pkgs.pkg-config ];
646     archive = [ pkgs.libarchive];
647     gdalcubes = with pkgs; [ proj.dev gdal sqlite.dev netcdf ];
648     rsbml = [ pkgs.libsbml ];
649     SuperGauss = [ pkgs.pkg-config pkgs.fftw.dev];
650     ravetools = with pkgs; [ pkg-config fftw.dev];
651     specklestar = [ pkgs.fftw.dev ];
652     cartogramR = [ pkgs.fftw.dev ];
653     jqr = [ pkgs.jq.out ];
654     kza = [ pkgs.pkg-config ];
655     igraph = with pkgs; [ gmp libxml2.dev glpk ];
656     interpolation = [ pkgs.gmp ];
657     image_textlinedetector = with pkgs; [ pkg-config opencv ];
658     lwgeom = with pkgs; [ pkg-config proj.dev sqlite.dev ];
659     magick = [ pkgs.pkg-config ];
660     mwaved = [ pkgs.pkg-config ];
661     odbc = [ pkgs.pkg-config ];
662     openssl = [ pkgs.pkg-config ];
663     pdftools = [ pkgs.pkg-config ];
664     qckitfastq = [ pkgs.zlib.dev ];
665     raer = with pkgs; [ zlib.dev xz.dev bzip2.dev ];
666     RQuantLib = with pkgs; [ quantlib.dev boost.dev ];
667     sf = with pkgs; [ pkg-config sqlite.dev proj.dev ];
668     terra = with pkgs; [ pkg-config sqlite.dev proj.dev ];
669     showtext = [ pkgs.pkg-config ];
670     spate = [ pkgs.pkg-config ];
671     stringi = [ pkgs.pkg-config ];
672     sysfonts = [ pkgs.pkg-config ];
673     systemfonts = [ pkgs.pkg-config ];
674     tesseract = [ pkgs.pkg-config ];
675     Cairo = [ pkgs.pkg-config ];
676     CLVTools = [ pkgs.gsl ];
677     excursions = [ pkgs.gsl ];
678     OpenCL = with pkgs; [ opencl-clhpp ocl-icd ];
679     gpuMagic = [ pkgs.ocl-icd ];
680     JMcmprsk = [ pkgs.gsl ];
681     KSgeneral = [ pkgs.fftw.dev ];
682     mashr = [ pkgs.gsl ];
683     hadron = [ pkgs.gsl ];
684     AMOUNTAIN = [ pkgs.gsl ];
685     Rsymphony = with pkgs; [ symphony doxygen graphviz subversion cgl clp];
686     tcltk2 = with pkgs; [ tcl tk ];
687     rswipl = with pkgs; [ ncurses.dev libxcrypt zlib.dev ];
688     GrafGen = [ pkgs.zlib ];
689     tikzDevice = with pkgs; [ which texliveMedium ];
690     gridGraphics = [ pkgs.which ];
691     adimpro = with pkgs; [ which xorg.xdpyinfo ];
692     tfevents = [ pkgs.protobuf ];
693     rsvg = [ pkgs.librsvg.dev ];
694     ssh = with pkgs; [ libssh ];
695     s2 = [ pkgs.openssl.dev ];
696     ArrayExpressHTS = with pkgs; [ zlib.dev curl.dev which ];
697     bbl = with pkgs; [ gsl ];
698     diffHic = with pkgs; [ xz.dev bzip2.dev ];
699     writexl = with pkgs; [ zlib.dev ];
700     xslt = with pkgs; [ libxslt libxml2 ];
701     qpdf = with pkgs; [ libjpeg.dev zlib.dev ];
702     vcfR = with pkgs; [ zlib.dev ];
703     bio3d = with pkgs; [ zlib.dev ];
704     arrangements = with pkgs; [ gmp.dev ];
705     gfilogisreg = [ pkgs.gmp.dev ];
706     spp = with pkgs; [ zlib.dev ];
707     bamsignals = with pkgs; [ zlib.dev xz.dev bzip2 ];
708     Rbowtie = with pkgs; [ zlib.dev ];
709     gaston = with pkgs; [ zlib.dev ];
710     csaw = with pkgs; [ zlib.dev xz.dev bzip2.dev curl ];
711     DirichletMultinomial = with pkgs; [ gsl ];
712     DiffBind = with pkgs; [ zlib.dev ];
713     CNEr = with pkgs; [ zlib ];
714     GMMAT = with pkgs; [ zlib.dev bzip2.dev ];
715     rmumps = with pkgs; [ zlib.dev ];
716     HiCDCPlus = [ pkgs.zlib.dev ];
717     PopGenome = [ pkgs.zlib.dev ];
718     QuasR = with pkgs; [ zlib.dev xz.dev bzip2.dev ];
719     Rarr = [ pkgs.zlib.dev ];
720     Rbowtie2 = [ pkgs.zlib.dev ];
721     Rfastp = with pkgs; [ xz.dev bzip2.dev zlib.dev ];
722     maftools = with pkgs; [ zlib.dev bzip2 xz.dev ];
723     Rmmquant = [ pkgs.zlib.dev ];
724     SICtools = with pkgs; [ zlib.dev ncurses.dev ];
725     Signac = [ pkgs.zlib.dev ];
726     TransView = with pkgs; [ xz.dev bzip2.dev zlib.dev ];
727     bigsnpr = [ pkgs.zlib.dev ];
728     zlib = [ pkgs.zlib.dev ];
729     divest = [ pkgs.zlib.dev ];
730     hipread = [ pkgs.zlib.dev ];
731     jack = with pkgs; [ gmp.dev mpfr.dev ];
732     jackalope = with pkgs; [ zlib.dev xz.dev bzip2.dev ];
733     largeList = [ pkgs.zlib.dev ];
734     mappoly = [ pkgs.zlib.dev ];
735     VariantAnnotation = with pkgs; [ zlib.dev curl.dev bzip2.dev xz.dev ];
736     matchingMarkets = [ pkgs.zlib.dev ];
737     methylKit = with pkgs; [ zlib.dev bzip2.dev xz.dev ];
738     ndjson = [ pkgs.zlib.dev ];
739     podkat = with pkgs; [ zlib.dev xz.dev bzip2.dev ];
740     qrqc = [ pkgs.zlib.dev ];
741     rJPSGCS = [ pkgs.zlib.dev ];
742     rhdf5filters = with pkgs; [ zlib.dev bzip2.dev ];
743     symengine = with pkgs; [ mpfr symengine flint ];
744     rtk = [ pkgs.zlib.dev ];
745     scPipe = with pkgs; [ bzip2.dev xz.dev zlib.dev ];
746     seqTools = [ pkgs.zlib.dev ];
747     seqbias = with pkgs; [ zlib.dev bzip2.dev xz.dev ];
748     sparkwarc = [ pkgs.zlib.dev ];
749     RoBMA = [ pkgs.jags ];
750     RoBSA = [ pkgs.jags ];
751     pexm = [ pkgs.jags ];
752     rGEDI = with pkgs; [ libgeotiff.dev libaec zlib.dev hdf5.dev ];
753     rawrr = [ pkgs.mono ];
754     HDF5Array = [ pkgs.zlib.dev ];
755     FLAMES = with pkgs; [ zlib.dev bzip2.dev xz.dev ];
756     ncdfFlow = [ pkgs.zlib.dev ];
757     proj4 = [ pkgs.proj.dev ];
758     rtmpt = [ pkgs.gsl ];
759     mixcat = [ pkgs.gsl ];
760     libstableR = [ pkgs.gsl ];
761     landsepi = [ pkgs.gsl ];
762     flan = [ pkgs.gsl ];
763     econetwork = [ pkgs.gsl ];
764     crandep = [ pkgs.gsl ];
765     catSurv = [ pkgs.gsl ];
766     ccfindR = [ pkgs.gsl ];
767     screenCounter = [ pkgs.zlib.dev ];
768     SPARSEMODr = [ pkgs.gsl ];
769     RKHSMetaMod = [ pkgs.gsl ];
770     LCMCR = [ pkgs.gsl ];
771     BNSP = [ pkgs.gsl ];
772     scModels = [ pkgs.mpfr.dev ];
773     multibridge = with pkgs; [ pkg-config mpfr.dev ];
774     RcppCWB = with pkgs; [ pcre.dev glib.dev ];
775     redux = [ pkgs.hiredis ];
776     RmecabKo = [ pkgs.mecab ];
777     markets = [ pkgs.gsl ];
778     rlas = [ pkgs.boost ];
779     bgx = [ pkgs.boost ];
780     PoissonBinomial = [ pkgs.fftw.dev ];
781     poisbinom = [ pkgs.fftw.dev ];
782     PoissonMultinomial = [ pkgs.fftw.dev ];
783     psbcGroup = [ pkgs.gsl.dev ];
784     rrd = [ pkgs.rrdtool ];
785     flowWorkspace = [ pkgs.zlib.dev ];
786     RITCH = [ pkgs.zlib.dev ];
787     RcppMeCab = [ pkgs.mecab ];
788     PING = [ pkgs.gsl ];
789     PROJ = [ pkgs.proj.dev ];
790     RcppAlgos = [ pkgs.gmp.dev ];
791     RcppBigIntAlgos = [ pkgs.gmp.dev ];
792     spaMM = [ pkgs.gsl ];
793     shrinkTVP = [ pkgs.gsl ];
794     sbrl = with pkgs; [ gsl gmp.dev ];
795     surveyvoi = with pkgs; [ gmp.dev mpfr.dev ];
796     unigd = with pkgs; [ cairo.dev libpng.dev ];
797     HilbertVisGUI = [ pkgs.gtkmm2.dev ];
798     textshaping = with pkgs; [ harfbuzz.dev freetype.dev fribidi libpng ];
799     DropletUtils = [ pkgs.zlib.dev ];
800     RMariaDB = [ pkgs.libmysqlclient.dev ];
801     ijtiff = [ pkgs.libtiff ];
802     ragg = with pkgs; [ freetype.dev libpng.dev libtiff.dev zlib.dev libjpeg.dev bzip2.dev ] ++ lib.optional stdenv.hostPlatform.isDarwin lerc.dev;
803     qqconf = [ pkgs.fftw.dev ];
804     spFW = [ pkgs.fftw.dev ];
805     qspray = with pkgs; [ gmp.dev mpfr.dev ];
806     ratioOfQsprays = with pkgs; [ gmp.dev mpfr.dev ];
807     symbolicQspray = with pkgs; [ gmp.dev mpfr.dev ];
808     sphereTessellation = with pkgs; [ gmp.dev mpfr.dev ];
809     vapour = with pkgs; [ proj.dev gdal ];
810     MedianaDesigner = [ pkgs.zlib.dev ];
811     ChemmineOB = with pkgs; [ eigen openbabel ];
812     DGP4LCF = [ pkgs.lapack pkgs.blas ];
813   };
815   packagesRequiringX = [
816     "analogueExtra"
817     "AnalyzeFMRI"
818     "AnnotLists"
819     "asbio"
820     "BCA"
821     "biplotbootGUI"
822     "cairoDevice"
823     "cncaGUI"
824     "CommunityCorrelogram"
825     "dave"
826     "DeducerPlugInExample"
827     "DeducerPlugInScaling"
828     "DeducerSpatial"
829     "DeducerSurvival"
830     "DeducerText"
831     "Demerelate"
832     "diveR"
833     "dpa"
834     "dynamicGraph"
835     "EasyqpcR"
836     "exactLoglinTest"
837     "fisheyeR"
838     "forams"
839     "forensim"
840     "GGEBiplotGUI"
841     "gsubfn"
842     "gWidgets2RGtk2"
843     "gWidgets2tcltk"
844     "HiveR"
845     "ic50"
846     "iDynoR"
847     "iplots"
848     "likeLTD"
849     "loon"
850     "loon_ggplot"
851     "loon_shiny"
852     "loon_tourr"
853     "Meth27QC"
854     "mixsep"
855     "multibiplotGUI"
856     "OligoSpecificitySystem"
857     "optbdmaeAT"
858     "optrcdmaeAT"
859     "paleoMAS"
860     "RandomFields"
861     "rfviz"
862     "RclusTool"
863     "RcmdrPlugin_coin"
864     "RcmdrPlugin_FuzzyClust"
865     "RcmdrPlugin_IPSUR"
866     "RcmdrPlugin_lfstat"
867     "RcmdrPlugin_PcaRobust"
868     "RcmdrPlugin_plotByGroup"
869     "RcmdrPlugin_pointG"
870     "RcmdrPlugin_sampling"
871     "RcmdrPlugin_SCDA"
872     "RcmdrPlugin_SLC"
873     "RcmdrPlugin_steepness"
874     "rich"
875     "RSurvey"
876     "simba"
877     "SimpleTable"
878     "SOLOMON"
879     "soptdmaeA"
880     "strvalidator"
881     "stylo"
882     "SyNet"
883     "switchboard"
884     "tkImgR"
885     "TTAinterfaceTrendAnalysis"
886     "twiddler"
887     "uHMM"
888     "VecStatGraphs3D"
889   ];
891   packagesRequiringHome = [
892     "aroma_affymetrix"
893     "aroma_cn"
894     "aroma_core"
895     "avotrex"
896     "beer"
897     "ceramic"
898     "connections"
899     "covidmx"
900     "csodata"
901     "DiceView"
902     "facmodTS"
903     "gasanalyzer"
904     "margaret"
905     "MSnID"
906     "OmnipathR"
907     "precommit"
908     "protGear"
909     "PCRA"
910     "PSCBS"
911     "iemisc"
912     "repmis"
913     "R_cache"
914     "R_filesets"
915     "RKorAPClient"
916     "R_rsp"
917     "salso"
918     "scholar"
919     "SpatialDecon"
920     "stepR"
921     "styler"
922     "teal_code"
923     "TreeTools"
924     "TreeSearch"
925     "ACNE"
926     "APAlyzer"
927     "EstMix"
928     "Patterns"
929     "PECA"
930     "Quartet"
931     "ShinyQuickStarter"
932     "TIN"
933     "cfdnakit"
934     "CaDrA"
935     "GNOSIS"
936     "TotalCopheneticIndex"
937     "TreeDist"
938     "biocthis"
939     "calmate"
940     "fgga"
941     "fulltext"
942     "immuneSIM"
943     "mastif"
944     "shinymeta"
945     "shinyobjects"
946     "wppi"
947     "pins"
948     "CoTiMA"
949     "TBRDist"
950     "Rogue"
951     "fixest"
952     "paxtoolsr"
953     "systemPipeShiny"
954     "matlab2r"
955     "GNOSIS"
956   ];
958   packagesToSkipCheck = [
959     "MsDataHub" # tries to connect to ExperimentHub
960     "Rmpi"     # tries to run MPI processes
961     "ReactomeContentService4R" # tries to connect to Reactome
962     "PhIPData" # tries to download something from a DB
963     "RBioFormats" # tries to download jar during load test
964     "pbdMPI"   # tries to run MPI processes
965     "CTdata" # tries to connect to ExperimentHub
966     "rfaRm" # tries to connect to Ebi
967     "data_table" # fails to rename shared library before check
968     "coMethDMR" # tries to connect to ExperimentHub
969     "multiMiR" # tries to connect to DB
970     "snapcount" # tries to connect to snaptron.cs.jhu.edu
971   ];
973   # Packages which cannot be installed due to lack of dependencies or other reasons.
974   brokenPackages = [
975     "av"
976     "NetLogoR"
977     "valse"
978     "HierO"
979     "HIBAG"
980     "HiveR"
982     # Impure network access during build
983     "waddR"
984     "tiledb"
985     "x13binary"
986     "switchr"
988     # ExperimentHub dependents, require net access during build
989     "DuoClustering2018"
990     "FieldEffectCrc"
991     "GenomicDistributionsData"
992     "hpar"
993     "HDCytoData"
994     "HMP16SData"
995     "PANTHER_db"
996     "RNAmodR_Data"
997     "SCATEData"
998     "SingleMoleculeFootprintingData"
999     "TabulaMurisData"
1000     "benchmarkfdrData2019"
1001     "bodymapRat"
1002     "clustifyrdatahub"
1003     "CTexploreR"
1004     "depmap"
1005     "emtdata"
1006     "metaboliteIDmapping"
1007     "msigdb"
1008     "muscData"
1009     "org_Mxanthus_db"
1010     "scpdata"
1011     "signatureSearch"
1012     "nullrangesData"
1013   ];
1015   otherOverrides = old: new: {
1016     # it can happen that the major version of arrow-cpp is ahead of the
1017     # rPackages.arrow that would be built from CRAN sources; therefore, to avoid
1018     # build failures and manual updates of the hash, we use the R source at
1019     # the GitHub release state of libarrow (arrow-cpp) in Nixpkgs. This may
1020     # not exactly represent the CRAN sources, but because patching of the
1021     # CRAN R package is mostly done to meet special CRAN build requirements,
1022     # this is a straightforward approach. Example where patching was necessary
1023     # -> arrow 14.0.0.2 on CRAN; was lagging behind libarrow release:
1024     #   https://github.com/apache/arrow/issues/39698 )
1026     vegan3d = old.vegan3d.overrideAttrs (attrs: {
1027       RGL_USE_NULL = "true";
1028     });
1030     arrow = old.arrow.overrideAttrs (attrs: {
1031       src = pkgs.arrow-cpp.src;
1032       name = "r-arrow-${pkgs.arrow-cpp.version}";
1033       prePatch = "cd r";
1034       postPatch = ''
1035         patchShebangs configure
1036       '';
1037       buildInputs = attrs.buildInputs ++ [
1038         pkgs.arrow-cpp
1039       ];
1040     });
1042     gifski = old.gifski.overrideAttrs (attrs: {
1043       cargoDeps = pkgs.rustPlatform.fetchCargoTarball {
1044         src = attrs.src;
1045         sourceRoot = "gifski/src/myrustlib";
1046         hash = "sha256-e6nuiQU22GiO2I+bu0muyICGrdkCLSZUDHDz2mM2hz0=";
1047       };
1049       cargoRoot = "src/myrustlib";
1051       nativeBuildInputs = attrs.nativeBuildInputs ++ [
1052         pkgs.rustPlatform.cargoSetupHook
1053         pkgs.cargo
1054         pkgs.rustc
1055       ];
1056     });
1058     timeless = old.timeless.overrideAttrs (attrs: {
1059       preConfigure = "patchShebangs configure";
1060       cargoDeps = pkgs.rustPlatform.fetchCargoTarball {
1061         src = attrs.src;
1062         sourceRoot = "timeless/src/rust";
1063         hash = "sha256-AccuRY3lfTXzaMnaYieKCEJErKo5132oSXgILbFhePI=";
1064       };
1066       cargoRoot = "src/rust";
1068       nativeBuildInputs = attrs.nativeBuildInputs ++ [
1069         pkgs.rustPlatform.cargoSetupHook
1070         pkgs.cargo
1071       ];
1072     });
1074     stringi = old.stringi.overrideAttrs (attrs: {
1075       postInstall = let
1076         icuName = "icudt52l";
1077         icuSrc = pkgs.fetchzip {
1078           url = "http://static.rexamine.com/packages/${icuName}.zip";
1079           sha256 = "0hvazpizziq5ibc9017i1bb45yryfl26wzfsv05vk9mc1575r6xj";
1080           stripRoot = false;
1081         };
1082         in ''
1083           ${attrs.postInstall or ""}
1084           cp ${icuSrc}/${icuName}.dat $out/library/stringi/libs
1085         '';
1086     });
1088     xml2 = old.xml2.overrideAttrs (attrs: {
1089       preConfigure = ''
1090         export LIBXML_INCDIR=${pkgs.libxml2.dev}/include/libxml2
1091         patchShebangs configure
1092         '';
1093     });
1095     alcyon = old.alcyon.overrideAttrs (attrs: {
1096       configureFlags = [
1097         "--enable-force-openmp"
1098       ];
1099     });
1101     lwgeom = old.lwgeom.overrideAttrs (attrs: {
1102       configureFlags = [
1103         "--with-proj-lib=${pkgs.lib.getLib pkgs.proj}/lib"
1104       ];
1105     });
1107     sf = old.sf.overrideAttrs (attrs: {
1108       configureFlags = [
1109         "--with-proj-lib=${pkgs.lib.getLib pkgs.proj}/lib"
1110       ];
1111     });
1113     terra = old.terra.overrideAttrs (attrs: {
1114       configureFlags = [
1115         "--with-proj-lib=${pkgs.lib.getLib pkgs.proj}/lib"
1116       ];
1117     });
1119     vapour = old.vapour.overrideAttrs (attrs: {
1120       configureFlags = [
1121         "--with-proj-lib=${pkgs.lib.getLib pkgs.proj}/lib"
1122       ];
1123     });
1125     rzmq = old.rzmq.overrideAttrs (attrs: {
1126       preConfigure = "patchShebangs configure";
1127     });
1129     clustermq = old.clustermq.overrideAttrs (attrs: {
1130       preConfigure = "patchShebangs configure";
1131     });
1133     Cairo = old.Cairo.overrideAttrs (attrs: {
1134       NIX_LDFLAGS = "-lfontconfig";
1135     });
1137     curl = old.curl.overrideAttrs (attrs: {
1138       preConfigure = "patchShebangs configure";
1139     });
1141     Cyclops = old.Cyclops.overrideAttrs (attrs: {
1142       preConfigure = "patchShebangs configure";
1143     });
1145     RcppParallel = old.RcppParallel.overrideAttrs (attrs: {
1146       preConfigure = "patchShebangs configure";
1147     });
1149     Colossus = old.Colossus.overrideAttrs (_: {
1150       postPatch = "patchShebangs configure";
1151     });
1153    gmailr = old.gmailr.overrideAttrs (attrs: {
1154       postPatch = "patchShebangs configure";
1155     });
1157     heck = old.heck.overrideAttrs (attrs: {
1158       postPatch = "patchShebangs configure";
1159     });
1161    surtvep = old.surtvep.overrideAttrs (attrs: {
1162       postPatch = "patchShebangs configure";
1163     });
1165     purrr = old.purrr.overrideAttrs (attrs: {
1166       patchPhase = "patchShebangs configure";
1167     });
1169     luajr = old.luajr.overrideAttrs (attrs: {
1170       hardeningDisable = [ "format" ];
1171       postPatch = "patchShebangs configure";
1172     });
1174     RcppArmadillo = old.RcppArmadillo.overrideAttrs (attrs: {
1175       patchPhase = "patchShebangs configure";
1176     });
1178     RcppGetconf = old.RcppGetconf.overrideAttrs (attrs: {
1179       postPatch = "patchShebangs configure";
1180     });
1182     SpliceWiz = old.SpliceWiz.overrideAttrs (attrs: {
1183       postPatch = "patchShebangs configure";
1184     });
1186     zoomerjoin = old.zoomerjoin.overrideAttrs (attrs: {
1187       nativeBuildInputs = [ pkgs.cargo ] ++ attrs.nativeBuildInputs;
1188       postPatch = "patchShebangs configure";
1189     });
1191     b64 = old.b64.overrideAttrs (attrs: {
1192       nativeBuildInputs = [ pkgs.cargo ] ++ attrs.nativeBuildInputs;
1193       postPatch = "patchShebangs configure";
1194     });
1196    ocf = old.ocf.overrideAttrs (attrs: {
1197       postPatch = "patchShebangs configure";
1198     });
1200     data_table = old.data_table.overrideAttrs (attrs: {
1201       env = (attrs.env or { }) // {
1202         NIX_CFLAGS_COMPILE = attrs.env.NIX_CFLAGS_COMPILE + " -fopenmp";
1203       };
1204       patchPhase = "patchShebangs configure";
1205     });
1207     cisPath = old.cisPath.overrideAttrs (attrs: {
1208       hardeningDisable = [ "format" ];
1209     });
1211     HilbertVis = old.HilbertVis.overrideAttrs (attrs: {
1212       hardeningDisable = [ "format" ];
1213     });
1215     HilbertVisGUI = old.HilbertVisGUI.overrideAttrs (attrs: {
1216       hardeningDisable = [ "format" ];
1217     });
1219     MANOR = old.MANOR.overrideAttrs (attrs: {
1220       hardeningDisable = [ "format" ];
1221     });
1223     rGADEM = old.rGADEM.overrideAttrs (attrs: {
1224       hardeningDisable = [ "format" ];
1225     });
1227    rsgeo = old.rsgeo.overrideAttrs (attrs: {
1228       nativeBuildInputs = [ pkgs.cargo ] ++ attrs.nativeBuildInputs;
1229       postPatch = "patchShebangs configure";
1230     });
1232    instantiate = old.instantiate.overrideAttrs (attrs: {
1233       postPatch = "patchShebangs configure";
1234     });
1236     exifr = old.exifr.overrideAttrs (attrs: {
1237       postPatch = ''
1238         for f in .onLoad .onAttach ; do
1239           substituteInPlace R/load_hook.R \
1240             --replace-fail \
1241             "$f <- function(libname, pkgname) {" \
1242             "$f <- function(libname, pkgname) {
1243                  options(
1244                      exifr.perlpath = \"${lib.getBin pkgs.perl}/bin/perl\",
1245                      exifr.exiftoolcommand = \"${lib.getBin pkgs.exiftool}/bin/exiftool\"
1246                  )"
1247         done
1248       '';
1249     });
1251     NGCHM = old.NGCHM.overrideAttrs (attrs: {
1252       postPatch = ''
1253           substituteInPlace "inst/base.config/conf.d/01-server-protocol-scl.R" \
1254             --replace-fail \
1255             "/bin/hostname" "${lib.getBin pkgs.hostname}/bin/hostname"
1256       '';
1257     });
1259     ModelMetrics = old.ModelMetrics.overrideAttrs (attrs: {
1260       env = (attrs.env or { }) // {
1261         NIX_CFLAGS_COMPILE = attrs.env.NIX_CFLAGS_COMPILE + lib.optionalString stdenv.hostPlatform.isDarwin " -fopenmp";
1262       };
1263     });
1265     rawrr = old.rawrr.overrideAttrs (attrs: {
1266       postPatch = ''
1267         substituteInPlace "R/zzz.R" "R/dotNetAssembly.R" --replace-warn \
1268           "Sys.which('mono')" "'${lib.getBin pkgs.mono}/bin/mono'"
1270         substituteInPlace "R/dotNetAssembly.R" --replace-warn \
1271           "Sys.which(\"xbuild\")" "\"${lib.getBin pkgs.mono}/bin/xbuild\""
1273         substituteInPlace "R/dotNetAssembly.R" --replace-warn \
1274           "cmd <- ifelse(Sys.which(\"msbuild\") != \"\", \"msbuild\", \"xbuild\")" \
1275           "cmd <- \"${lib.getBin pkgs.mono}/bin/xbuild\""
1277         substituteInPlace "R/rawrr.R" --replace-warn \
1278           "Sys.which(\"mono\")" "\"${lib.getBin pkgs.mono}/bin/mono\""
1279       '';
1280     });
1282     rpf = old.rpf.overrideAttrs (attrs: {
1283       patchPhase = "patchShebangs configure";
1284     });
1286     rJava = old.rJava.overrideAttrs (attrs: {
1287       preConfigure = ''
1288         export JAVA_CPPFLAGS=-I${pkgs.jdk}/include/
1289         export JAVA_HOME=${pkgs.jdk}
1290         substituteInPlace R/zzz.R.in \
1291           --replace-fail ".onLoad <- function(libname, pkgname) {" \
1292             ".onLoad <- function(libname, pkgname) {
1293              Sys.setenv(\"JAVA_HOME\" = Sys.getenv(\"JAVA_HOME\", unset = \"${pkgs.jdk}\"))"
1294       '';
1295     });
1297     JavaGD = old.JavaGD.overrideAttrs (attrs: {
1298       preConfigure = ''
1299         export JAVA_CPPFLAGS=-I${pkgs.jdk}/include/
1300         export JAVA_HOME=${pkgs.jdk}
1301       '';
1302     });
1304     jqr = old.jqr.overrideAttrs (attrs: {
1305       preConfigure = ''
1306         patchShebangs configure
1307         '';
1308     });
1310     pathfindR = old.pathfindR.overrideAttrs (attrs: {
1311       postPatch = ''
1312         substituteInPlace "R/zzz.R" \
1313           --replace-fail "    check_java_version()" "    Sys.setenv(JAVA_HOME = \"${lib.getBin pkgs.jre_minimal}\"); check_java_version()"
1314         substituteInPlace "R/active_snw_search.R" \
1315           --replace-fail "system(paste0(\"java" "system(paste0(\"${lib.getBin pkgs.jre_minimal}/bin/java"
1316       '';
1317     });
1319     pbdZMQ = old.pbdZMQ.overrideAttrs (attrs: {
1320       postPatch = lib.optionalString stdenv.hostPlatform.isDarwin ''
1321         for file in R/*.{r,r.in}; do
1322             sed -i 's#system("which \(\w\+\)"[^)]*)#"${pkgs.cctools}/bin/\1"#g' $file
1323         done
1324       '';
1325     });
1327     quarto = old.quarto.overrideAttrs (attrs: {
1328       propagatedBuildInputs = attrs.propagatedBuildInputs ++ [ pkgs.quarto ];
1329       postPatch = ''
1330         substituteInPlace "R/quarto.R" \
1331           --replace-fail "Sys.getenv(\"QUARTO_PATH\", unset = NA_character_)" "Sys.getenv(\"QUARTO_PATH\", unset = '${lib.getBin pkgs.quarto}/bin/quarto')"
1332       '';
1333     });
1335     Rhisat2 = old.Rhisat2.overrideAttrs (attrs: {
1336       enableParallelBuilding = false;
1337     });
1339     s2 = old.s2.overrideAttrs (attrs: {
1340       PKGCONFIG_CFLAGS = "-I${pkgs.openssl.dev}/include";
1341       PKGCONFIG_LIBS = "-Wl,-rpath,${lib.getLib pkgs.openssl}/lib -L${lib.getLib pkgs.openssl}/lib -lssl -lcrypto";
1342     });
1344     Rmpi = old.Rmpi.overrideAttrs (attrs: {
1345       configureFlags = [
1346         "--with-Rmpi-type=OPENMPI"
1347       ];
1348     });
1350     Rmpfr = old.Rmpfr.overrideAttrs (attrs: {
1351       configureFlags = [
1352         "--with-mpfr-include=${pkgs.mpfr.dev}/include"
1353       ];
1354     });
1356     covidsymptom = old.covidsymptom.overrideAttrs (attrs: {
1357       preConfigure = "rm R/covidsymptomdata.R";
1358     });
1360     cubature = old.cubature.overrideAttrs (attrs: {
1361       enableParallelBuilding = false;
1362     });
1364     RVowpalWabbit = old.RVowpalWabbit.overrideAttrs (attrs: {
1365       configureFlags = [
1366         "--with-boost=${pkgs.boost.dev}" "--with-boost-libdir=${pkgs.boost.out}/lib"
1367       ];
1368     });
1370     RAppArmor = old.RAppArmor.overrideAttrs (attrs: {
1371       patches = [ ./patches/RAppArmor.patch ];
1372       LIBAPPARMOR_HOME = pkgs.libapparmor;
1373     });
1375     RMySQL = old.RMySQL.overrideAttrs (attrs: {
1376       MYSQL_DIR = "${pkgs.libmysqlclient}";
1377       PKGCONFIG_CFLAGS = "-I${pkgs.libmysqlclient.dev}/include/mysql";
1378       NIX_CFLAGS_LINK = "-L${pkgs.libmysqlclient}/lib/mysql -lmysqlclient";
1379       preConfigure = ''
1380         patchShebangs configure
1381       '';
1382     });
1384     devEMF = old.devEMF.overrideAttrs (attrs: {
1385       NIX_CFLAGS_LINK = "-L${pkgs.xorg.libXft.out}/lib -lXft";
1386       NIX_LDFLAGS = "-lX11";
1387     });
1389     hdf5r = old.hdf5r.overrideAttrs (attrs: {
1390       buildInputs = attrs.buildInputs ++ [ new.Rhdf5lib.hdf5 ];
1391     });
1393     slfm = old.slfm.overrideAttrs (attrs: {
1394       PKG_LIBS = "-L${pkgs.blas}/lib -lblas -L${pkgs.lapack}/lib -llapack";
1395     });
1397     SamplerCompare = old.SamplerCompare.overrideAttrs (attrs: {
1398       PKG_LIBS = "-L${pkgs.blas}/lib -lblas -L${pkgs.lapack}/lib -llapack";
1399     });
1401     FLAMES = old.FLAMES.overrideAttrs (attrs: {
1402       patches = [ ./patches/FLAMES.patch ];
1403     });
1405     openssl = old.openssl.overrideAttrs (attrs: {
1406       preConfigure = ''
1407         patchShebangs configure
1408       '';
1409       PKGCONFIG_CFLAGS = "-I${pkgs.openssl.dev}/include";
1410       PKGCONFIG_LIBS = "-Wl,-rpath,${lib.getLib pkgs.openssl}/lib -L${lib.getLib pkgs.openssl}/lib -lssl -lcrypto";
1411     });
1413     websocket = old.websocket.overrideAttrs (attrs: {
1414       PKGCONFIG_CFLAGS = "-I${pkgs.openssl.dev}/include";
1415       PKGCONFIG_LIBS = "-Wl,-rpath,${lib.getLib pkgs.openssl}/lib -L${lib.getLib pkgs.openssl}/lib -lssl -lcrypto";
1416     });
1418     Rserve = old.Rserve.overrideAttrs (attrs: {
1419       patches = [ ./patches/Rserve.patch ];
1420       configureFlags = [
1421         "--with-server" "--with-client"
1422       ];
1423     });
1425     universalmotif = old.universalmotif.overrideAttrs (attrs: {
1426       patches = [ ./patches/universalmotif.patch];
1427     });
1429     V8 = old.V8.overrideAttrs (attrs: {
1430       postPatch = ''
1431         substituteInPlace configure \
1432           --replace-fail " -lv8_libplatform" ""
1433         # Bypass the test checking if pointer compression is needed
1434         substituteInPlace configure \
1435           --replace-fail "./pctest1" "true"
1436       '';
1438       preConfigure = ''
1439         export INCLUDE_DIR=${pkgs.nodejs.libv8}/include
1440         export LIB_DIR=${pkgs.nodejs.libv8}/lib
1441         patchShebangs configure
1442       '';
1444       R_MAKEVARS_SITE = lib.optionalString (pkgs.stdenv.system == "aarch64-linux")
1445         (pkgs.writeText "Makevars" ''
1446           CXX14PICFLAGS = -fPIC
1447         '');
1448     });
1450     acs = old.acs.overrideAttrs (attrs: {
1451       preConfigure = ''
1452         patchShebangs configure
1453         '';
1454     });
1456     gdtools = old.gdtools.overrideAttrs (attrs: {
1457       preConfigure = ''
1458         patchShebangs configure
1459         '';
1460       NIX_LDFLAGS = "-lfontconfig -lfreetype";
1461     });
1463     magick = old.magick.overrideAttrs (attrs: {
1464       preConfigure = ''
1465         patchShebangs configure
1466         '';
1467     });
1469     libgeos = old.libgeos.overrideAttrs (attrs: {
1470       preConfigure = ''
1471         patchShebangs configure
1472         '';
1473     });
1475     protolite = old.protolite.overrideAttrs (attrs: {
1476       preConfigure = ''
1477         patchShebangs configure
1478         '';
1479     });
1481     rgoslin = old.rgoslin.overrideAttrs (attrs: {
1482       enableParallelBuilding = false;
1483     });
1485     rpanel = old.rpanel.overrideAttrs (attrs: {
1486       preConfigure = ''
1487         export TCLLIBPATH="${pkgs.tclPackages.bwidget}/lib/bwidget${pkgs.tclPackages.bwidget.version}"
1488       '';
1489       TCLLIBPATH = "${pkgs.tclPackages.bwidget}/lib/bwidget${pkgs.tclPackages.bwidget.version}";
1490     });
1492     networkscaleup = old.networkscaleup.overrideAttrs (attrs: {
1493       env = (attrs.env or { }) // {
1494         # needed to avoid "log limit exceeded" on Hydra
1495         NIX_CFLAGS_COMPILE = attrs.env.NIX_CFLAGS_COMPILE + " -Wno-ignored-attributes";
1496       };
1498       # consumes a lot of resources in parallel
1499       enableParallelBuilding = false;
1500     });
1502     RPostgres = old.RPostgres.overrideAttrs (attrs: {
1503       preConfigure = ''
1504         export INCLUDE_DIR=${pkgs.postgresql}/include
1505         export LIB_DIR=${pkgs.postgresql.lib}/lib
1506         patchShebangs configure
1507         '';
1508     });
1510     OpenMx = old.OpenMx.overrideAttrs (attrs: {
1511       env = (attrs.env or { }) // {
1512         # needed to avoid "log limit exceeded" on Hydra
1513         NIX_CFLAGS_COMPILE = attrs.env.NIX_CFLAGS_COMPILE + " -Wno-ignored-attributes";
1514       };
1515       preConfigure = ''
1516         patchShebangs configure
1517         '';
1518     });
1520     odbc = old.odbc.overrideAttrs (attrs: {
1521       preConfigure = ''
1522         patchShebangs configure
1523         '';
1524     });
1526     x13binary = old.x13binary.overrideAttrs (attrs: {
1527       preConfigure = ''
1528         patchShebangs configure
1529         '';
1530     });
1532     FlexReg = old.FlexReg.overrideAttrs (attrs: {
1533       env = (attrs.env or { }) // {
1534         # needed to avoid "log limit exceeded" on Hydra
1535         NIX_CFLAGS_COMPILE = attrs.env.NIX_CFLAGS_COMPILE + " -Wno-ignored-attributes";
1536       };
1538       # consumes a lot of resources in parallel
1539       enableParallelBuilding = false;
1540     });
1542     geojsonio = old.geojsonio.overrideAttrs (attrs: {
1543       buildInputs = [ cacert ] ++ attrs.buildInputs;
1544     });
1547     immunotation = let
1548       MHC41alleleList = fetchurl {
1549         url = "https://services.healthtech.dtu.dk/services/NetMHCpan-4.1/allele.list";
1550         hash = "sha256-CRZ+0uHzcq5zK5eONucAChXIXO8tnq5sSEAS80Z7jhg=";
1551       };
1553       MHCII40alleleList = fetchurl {
1554         url = "https://services.healthtech.dtu.dk/services/NetMHCIIpan-4.0/alleles_name.list";
1555         hash = "sha256-K4Ic2NUs3P4IkvOODwZ0c4Yh8caex5Ih0uO5jXRHp40=";
1556       };
1558       # List of valid countries, regions and ethnic groups
1559       # The original page is changing a bit every day, but the relevant
1560       # content does not. Use archive.org to get a stable snapshot.
1561       # It can be updated from time to time, or when the package becomes
1562       # deficient. This may be difficult to know.
1563       # Update the snapshot date, and add id_ after it, as described here:
1564       # https://web.archive.org/web/20130806040521/http://faq.web.archive.org/page-without-wayback-code/
1565       validGeographics = fetchurl {
1566         url = "https://web.archive.org/web/20240418194005id_/http://www.allelefrequencies.net/hla6006a.asp";
1567         hash = "sha256-m7Wkmh/cPxeqn94LwoznIh+fcFXskmSGErUYj6kTqak=";
1568       };
1569     in old.immunotation.overrideAttrs (attrs: {
1570       patches = [ ./patches/immunotation.patch ];
1571       postPatch = ''
1572         substituteInPlace "R/external_resources_input.R" --replace-fail \
1573           "nix-NetMHCpan-4.1-allele-list" ${MHC41alleleList}
1575         substituteInPlace "R/external_resources_input.R" --replace-fail \
1576           "nix-NETMHCIIpan-4.0-alleles-name-list" ${MHCII40alleleList}
1578         substituteInPlace "R/AFND_interface.R" --replace-fail \
1579           "nix-valid-geographics" ${validGeographics}
1580       '';
1581     });
1583     nearfar = let
1584       angrist = fetchurl {
1585         url = "https://raw.githubusercontent.com/joerigdon/nearfar/master/angrist.csv";
1586         hash = "sha256-lb+HMHnRGonc26merFGB0B7Vk1Lk+sIJlay+JtQC8m4=";
1587       };
1588     in old.nearfar.overrideAttrs (attrs: {
1589       postPatch = ''
1590         substituteInPlace "R/nearfar.R" --replace-fail \
1591          'url("https://raw.githubusercontent.com/joerigdon/nearfar/master/angrist.csv")'  '"${angrist}"'
1592       '';
1593     });
1595     rstan = old.rstan.overrideAttrs (attrs: {
1596       env = (attrs.env or { }) // {
1597         NIX_CFLAGS_COMPILE = attrs.env.NIX_CFLAGS_COMPILE + " -DBOOST_PHOENIX_NO_VARIADIC_EXPRESSION";
1598       };
1599     });
1601     mongolite = old.mongolite.overrideAttrs (attrs: {
1602       preConfigure = ''
1603         patchShebangs configure
1604         '';
1605       PKGCONFIG_CFLAGS = "-I${pkgs.openssl.dev}/include -I${pkgs.cyrus_sasl.dev}/include -I${pkgs.zlib.dev}/include";
1606       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";
1607     });
1609     ChemmineOB = old.ChemmineOB.overrideAttrs (attrs: {
1610       # pkg-config knows openbabel-3 without the .0
1611       # Eigen3 is also looked for in the wrong location
1612       # pointer was changed in newer version of openbabel:
1613       #   https://github.com/openbabel/openbabel/commit/305a6fd3183540e4a8ae1d79d10bf1860e6aa373
1614       postPatch = ''
1615         substituteInPlace configure \
1616           --replace-fail openbabel-3.0 openbabel-3
1617         substituteInPlace src/Makevars.in \
1618           --replace-fail "-I/usr/include/eigen3" "-I${pkgs.eigen}/include/eigen3"
1619         substituteInPlace src/ChemmineOB.cpp \
1620           --replace-fail "obsharedptr<" "std::shared_ptr<"
1621       '';
1623       # copied from fastnlo-toolkit:
1624       # None of our currently packaged versions of swig are C++17-friendly
1625       # Use a workaround from https://github.com/swig/swig/issues/1538
1626       env = (attrs.env or { }) // {
1627         NIX_CFLAGS_COMPILE = (attrs.env.NIX_CFLAGS_COMPILE or "") + lib.optionalString stdenv.hostPlatform.isDarwin " -D_LIBCPP_ENABLE_CXX17_REMOVED_FEATURES";
1628       };
1629     });
1631     ps = old.ps.overrideAttrs (attrs: {
1632       preConfigure = "patchShebangs configure";
1633     });
1635     rlang = old.rlang.overrideAttrs (attrs: {
1636       preConfigure = "patchShebangs configure";
1637     });
1639     systemfonts = old.systemfonts.overrideAttrs (attrs: {
1640       preConfigure = "patchShebangs configure";
1641     });
1643     littler = old.littler.overrideAttrs (attrs: with pkgs; {
1644       buildInputs = [ pcre xz zlib bzip2 icu which ] ++ attrs.buildInputs;
1645       postInstall = ''
1646         install -d $out/bin $out/share/man/man1
1647         ln -s ../library/littler/bin/r $out/bin/r
1648         ln -s ../library/littler/bin/r $out/bin/lr
1649         ln -s ../../../library/littler/man-page/r.1 $out/share/man/man1
1650         # these won't run without special provisions, so better remove them
1651         rm -r $out/library/littler/script-tests
1652       '';
1653     });
1655     lpsymphony = old.lpsymphony.overrideAttrs (attrs: {
1656       preConfigure = ''
1657         patchShebangs configure
1658       '';
1659     });
1661     sodium = old.sodium.overrideAttrs (attrs: with pkgs; {
1662       preConfigure = ''
1663         patchShebangs configure
1664       '';
1665       nativeBuildInputs = [ pkg-config ] ++ attrs.nativeBuildInputs;
1666       buildInputs = [ libsodium.dev ] ++ attrs.buildInputs;
1667     });
1669     keyring = old.keyring.overrideAttrs (attrs: {
1670       preConfigure = ''
1671         patchShebangs configure
1672       '';
1673     });
1675     Rhtslib = old.Rhtslib.overrideAttrs (attrs: {
1676       preConfigure = ''
1677         substituteInPlace R/zzz.R --replace "-lcurl" "-L${pkgs.curl.out}/lib -lcurl"
1678       '';
1679     });
1681     h2o = old.h2o.overrideAttrs (attrs: {
1682       preConfigure = ''
1683         # prevent download of jar file during install and postpone to first use
1684         sed -i '/downloadJar()/d' R/zzz.R
1686         # during runtime the package directory is not writable as it's in the
1687         # nix store, so store the jar in the user's cache directory instead
1688         substituteInPlace R/connection.R --replace \
1689           'dest_file <- file.path(dest_folder, "h2o.jar")' \
1690           'dest_file <- file.path("~/.cache/", "h2o.jar")'
1691       '';
1692     });
1694     SICtools = old.SICtools.overrideAttrs (attrs: {
1695       postPatch = ''
1696         substituteInPlace src/Makefile --replace-fail "-lcurses" "-lncurses"
1697       '';
1698       hardeningDisable = [ "format" ];
1699     });
1701     Rbwa = old.Rbwa.overrideAttrs (attrs: {
1702       # Parallel build cleans up *.o before they can be packed in a library
1703       postPatch = ''
1704         substituteInPlace src/Makefile --replace-fail \
1705           "all:\$(PROG) ../inst/bwa clean" \
1706           "all:\$(PROG) ../inst/bwa" \
1707       '';
1708     });
1710     ROracle = old.ROracle.overrideAttrs (attrs: {
1711       configureFlags = [
1712         "--with-oci-lib=${pkgs.oracle-instantclient.lib}/lib"
1713         "--with-oci-inc=${pkgs.oracle-instantclient.dev}/include"
1714       ];
1715     });
1717     xslt = old.xslt.overrideAttrs (attrs: {
1718       env = (attrs.env or { }) // {
1719         NIX_CFLAGS_COMPILE = attrs.env.NIX_CFLAGS_COMPILE + " -fpermissive";
1720       };
1721     });
1723     sparklyr = old.sparklyr.overrideAttrs (attrs: {
1724       # Pyspark's spark is full featured and better maintained than pkgs.spark
1725       preConfigure = ''
1726         substituteInPlace R/zzz.R \
1727           --replace ".onLoad <- function(...) {" \
1728             ".onLoad <- function(...) {
1729           Sys.setenv(\"SPARK_HOME\" = Sys.getenv(\"SPARK_HOME\", unset = \"${pkgs.python3Packages.pyspark}/${pkgs.python3Packages.python.sitePackages}/pyspark\"))
1730           Sys.setenv(\"JAVA_HOME\" = Sys.getenv(\"JAVA_HOME\", unset = \"${pkgs.jdk}\"))"
1731       '';
1732     });
1734     proj4 = old.proj4.overrideAttrs (attrs: {
1735       preConfigure = ''
1736         substituteInPlace configure \
1737           --replace "-lsqlite3" "-L${lib.makeLibraryPath [ pkgs.sqlite ]} -lsqlite3"
1738       '';
1739     });
1741     rrd = old.rrd.overrideAttrs (attrs: {
1742       preConfigure = ''
1743         patchShebangs configure
1744       '';
1745     });
1747     ChIPXpress = old.ChIPXpress.override { hydraPlatforms = []; };
1749     rgl = old.rgl.overrideAttrs (attrs: {
1750       RGL_USE_NULL = "true";
1751     });
1753     Rrdrand = old.Rrdrand.override { platforms = lib.platforms.x86_64 ++ lib.platforms.x86; };
1755     symengine = old.symengine.overrideAttrs (_: {
1756       preConfigure = ''
1757         rm configure
1758         cat > src/Makevars << EOF
1759         PKG_LIBS=-lsymengine
1760         all: $(SHLIB)
1761         EOF
1762       '';
1763     });
1765     RandomFieldsUtils = old.RandomFieldsUtils.override { platforms = lib.platforms.x86_64 ++ lib.platforms.x86; };
1767     flowClust = old.flowClust.override { platforms = lib.platforms.x86_64 ++ lib.platforms.x86; };
1769     RcppCGAL = old.RcppCGAL.overrideAttrs (_: {
1770       postPatch = "patchShebangs configure";
1771     });
1773     SharedObject = old.SharedObject.overrideAttrs (attrs: {
1774       # backport PR resolving build issues: https://github.com/Jiefei-Wang/SharedObject/pull/17
1775       patches = let inherit (pkgs) fetchpatch; in [
1776         (fetchpatch {
1777           url = "https://github.com/Jiefei-Wang/SharedObject/pull/17/commits/50c4b2964649d7f5a14d843bd7089ab62650fcd3.patch";
1778           sha256 = "sha256-zn535IeOYRvyQ2yxgoGEq2wccrl9xdu9nREmy7sV+PQ=";
1779         })
1780         (fetchpatch {
1781           url = "https://github.com/Jiefei-Wang/SharedObject/pull/17/commits/bf096a39858e9210cbe246d4b136905d4cfbfaf4.patch";
1782           sha256 = "sha256-Z+BZOkFnLgIBiVuPsAHp7bMXzADcvuHV4hILdmLvd+k=";
1783         })
1784       ];
1785     });
1787     httr2 = old.httr2.overrideAttrs (attrs: {
1788       preConfigure = "patchShebangs configure";
1789     });
1791     dbarts = old.dbarts.override { platforms = lib.platforms.x86_64 ++ lib.platforms.x86; };
1793     geomorph = old.geomorph.overrideAttrs (attrs: {
1794       RGL_USE_NULL = "true";
1795     });
1797     gpuMagic = old.gpuMagic.overrideAttrs (_: {
1798       hardeningDisable = ["format"];
1799     });
1801     Rdisop = old.Rdisop.overrideAttrs (_: {
1802       hardeningDisable = ["format"];
1803     });
1805     opencv = let
1806       opencvGtk = pkgs.opencv.override (old : { enableGtk2 = true; });
1807     in old.opencv.overrideAttrs (attrs: {
1808       buildInputs = attrs.buildInputs ++ [ opencvGtk ];
1809     });
1811     Rhdf5lib = let
1812       hdf5 = pkgs.hdf5_1_10.overrideAttrs (attrs: {configureFlags = attrs.configureFlags ++ [ "--enable-cxx" ];});
1813     in old.Rhdf5lib.overrideAttrs (attrs: {
1814       propagatedBuildInputs = attrs.propagatedBuildInputs ++ [ hdf5.dev pkgs.libaec ];
1815       patches = [ ./patches/Rhdf5lib.patch ];
1816       passthru.hdf5 = hdf5;
1817     });
1819     rhdf5filters = old.rhdf5filters.overrideAttrs (attrs: {
1820       patches = [ ./patches/rhdf5filters.patch ];
1821     });
1823     rhdf5= old.rhdf5.overrideAttrs (attrs: {
1824       patches = [ ./patches/rhdf5.patch ];
1825     });
1827     rmarkdown = old.rmarkdown.overrideAttrs (_: {
1828       preConfigure = ''
1829         substituteInPlace R/pandoc.R \
1830           --replace '"~/opt/pandoc"' '"~/opt/pandoc", "${pkgs.pandoc}/bin"'
1831       '';
1832     });
1834     redland = old.redland.overrideAttrs (_: {
1835       PKGCONFIG_CFLAGS="-I${pkgs.redland}/include -I${pkgs.librdf_raptor2}/include/raptor2 -I${pkgs.librdf_rasqal}/include/rasqal";
1836       PKGCONFIG_LIBS="-L${pkgs.redland}/lib -L${pkgs.librdf_raptor2}/lib -L${pkgs.librdf_rasqal}/lib -lrdf -lraptor2 -lrasqal";
1837     });
1839     textshaping = old.textshaping.overrideAttrs (attrs: {
1840       env.NIX_LDFLAGS = "-lfribidi -lharfbuzz";
1841     });
1843     httpuv = old.httpuv.overrideAttrs (_: {
1844       preConfigure = ''
1845         patchShebangs configure
1846       '';
1847     });
1849     oligo = old.oligo.overrideAttrs (_: {
1850       hardeningDisable = ["format"];
1851     });
1853     tesseract = old.tesseract.overrideAttrs (_: {
1854       preConfigure = ''
1855         substituteInPlace configure \
1856           --replace 'PKG_CONFIG_NAME="tesseract"' 'PKG_CONFIG_NAME="tesseract lept"'
1857       '';
1858     });
1860     ijtiff = old.ijtiff.overrideAttrs (_: {
1861       preConfigure = ''
1862         patchShebangs configure
1863       '';
1864     });
1866     torch = old.torch.overrideAttrs (attrs: {
1867       preConfigure = ''
1868         patchShebangs configure
1869       '';
1870     });
1872     pak = old.pak.overrideAttrs (attrs: {
1873       preConfigure = ''
1874         patchShebangs configure
1875         patchShebangs src/library/curl/configure
1876         patchShebangs src/library/pkgdepends/configure
1877         patchShebangs src/library/ps/configure
1878       '';
1879     });
1881     pkgdepends = old.pkgdepends.overrideAttrs (attrs: {
1882       postPatch = ''
1883         patchShebangs configure
1884       '';
1885     });
1886   };
1888   self