exploitdb: 2024-10-02 -> 2024-11-16 (#356407)
[NixPkgs.git] / pkgs / top-level / octave-packages.nix
blobc6d0839e96827b29685395774d3590d5b136e326
1 # This file contains the GNU Octave add-on packages set.
2 # Each attribute is an Octave library.
3 # Expressions for the Octave libraries are supposed to be in `pkgs/development/octave-modules/<name>/default.nix`.
5 # When contributing a new package, if that package has a dependency on another
6 # octave package, then you DO NOT need to explicitly list it as such when
7 # performing the callPackage. It will be passed implicitly.
8 # In addition, try to use the same dependencies as the ones octave needs, which
9 # should ensure greater compatibility between Octave itself and its packages.
11 # Like python-packages.nix, packages from top-level.nix are not in the scope
12 # of the `callPackage` used for packages here. So, when we do need packages
13 # from outside, we can `inherit` them from `pkgs`.
14 { pkgs
15 , lib
16 , stdenv
17 , fetchurl
18 , newScope
19 , octave
22 let
23   inherit (lib)
24     catAttrs
25     concatLists
26     filter
27     makeScope
28     unique
29     ;
32 makeScope newScope (self:
33   let
34     callPackage = self.callPackage;
36     buildOctavePackage = callPackage ../development/interpreters/octave/build-octave-package.nix {
37       inherit lib stdenv;
38       inherit octave;
39       inherit computeRequiredOctavePackages;
40     };
42     # Given a list of required Octave package derivations, get a list of
43     # ALL required Octave packages needed for the ones specified to run.
44     computeRequiredOctavePackages = drvs: let
45       # Check whether a derivation is an octave package
46       hasOctavePackage = drv: drv?isOctavePackage;
47       packages = filter hasOctavePackage drvs;
48     in unique (packages ++ concatLists (catAttrs "requiredOctavePackages" packages));
50   in {
52     inherit callPackage buildOctavePackage computeRequiredOctavePackages;
54     inherit (callPackage ../development/interpreters/octave/hooks { })
55       writeRequiredOctavePackagesHook;
57     arduino = callPackage ../development/octave-modules/arduino {
58       inherit (pkgs) arduino-core-unwrapped;
59     };
61     audio = callPackage ../development/octave-modules/audio { };
63     bim = callPackage ../development/octave-modules/bim { };
65     bsltl = callPackage ../development/octave-modules/bsltl { };
67     cgi = callPackage ../development/octave-modules/cgi { };
69     communications = callPackage ../development/octave-modules/communications { };
71     control = callPackage ../development/octave-modules/control { };
73     data-smoothing = callPackage ../development/octave-modules/data-smoothing { };
75     database = callPackage ../development/octave-modules/database { };
77     dataframe = callPackage ../development/octave-modules/dataframe { };
79     dicom = callPackage ../development/octave-modules/dicom { };
81     divand = callPackage ../development/octave-modules/divand { };
83     doctest = callPackage ../development/octave-modules/doctest { };
85     econometrics = callPackage ../development/octave-modules/econometrics { };
87     fem-fenics = callPackage ../development/octave-modules/fem-fenics {
88       # PLACEHOLDER until KarlJoad gets dolfin packaged.
89       dolfin = null;
90       ffc = null;
91     };
93     fits = callPackage ../development/octave-modules/fits { };
95     financial = callPackage ../development/octave-modules/financial { };
97     fpl = callPackage ../development/octave-modules/fpl { };
99     fuzzy-logic-toolkit = callPackage ../development/octave-modules/fuzzy-logic-toolkit { };
101     ga = callPackage ../development/octave-modules/ga { };
103     general = callPackage ../development/octave-modules/general {
104       nettle = pkgs.nettle;
105     };
107     generate_html = callPackage ../development/octave-modules/generate_html { };
109     geometry = callPackage ../development/octave-modules/geometry { };
111     gsl = callPackage ../development/octave-modules/gsl {
112       inherit (pkgs) gsl;
113     };
115     image = callPackage ../development/octave-modules/image { };
117     image-acquisition = callPackage ../development/octave-modules/image-acquisition { };
119     instrument-control = callPackage ../development/octave-modules/instrument-control { };
121     io = callPackage ../development/octave-modules/io {
122       inherit (octave) enableJava;
123     };
125     interval = callPackage ../development/octave-modules/interval { };
127     level-set = callPackage ../development/octave-modules/level-set { };
129     linear-algebra = callPackage ../development/octave-modules/linear-algebra { };
131     lssa = callPackage ../development/octave-modules/lssa { };
133     ltfat = callPackage ../development/octave-modules/ltfat {
134       inherit (octave) fftw fftwSinglePrec portaudio jdk;
135       inherit (pkgs) fftwFloat fftwLongDouble;
136     };
138     mapping = callPackage ../development/octave-modules/mapping { };
140     matgeom = callPackage ../development/octave-modules/matgeom { };
142     miscellaneous = callPackage ../development/octave-modules/miscellaneous { };
144     msh = callPackage ../development/octave-modules/msh {
145       # PLACEHOLDER until KarlJoad gets dolfin packaged.
146       dolfin = null;
147     };
149     mvn = callPackage ../development/octave-modules/mvn { };
151     nan = callPackage ../development/octave-modules/nan { };
153     ncarray = callPackage ../development/octave-modules/ncarray { };
155     netcdf = callPackage ../development/octave-modules/netcdf {
156       inherit (pkgs) netcdf;
157     };
159     nurbs = callPackage ../development/octave-modules/nurbs { };
161     ocl = callPackage ../development/octave-modules/ocl { };
163     octclip = callPackage ../development/octave-modules/octclip { };
165     octproj = callPackage ../development/octave-modules/octproj { };
167     optics = callPackage ../development/octave-modules/optics { };
169     optim = callPackage ../development/octave-modules/optim { };
171     optiminterp = callPackage ../development/octave-modules/optiminterp { };
173     parallel = callPackage ../development/octave-modules/parallel { };
175     quaternion = callPackage ../development/octave-modules/quaternion { };
177     queueing = callPackage ../development/octave-modules/queueing { };
179     signal = callPackage ../development/octave-modules/signal { };
181     sockets = callPackage ../development/octave-modules/sockets { };
183     sparsersb = callPackage ../development/octave-modules/sparsersb { };
185     stk = callPackage ../development/octave-modules/stk { };
187     splines = callPackage ../development/octave-modules/splines { };
189     statistics = callPackage ../development/octave-modules/statistics { };
191     strings = callPackage ../development/octave-modules/strings { };
193     struct = callPackage ../development/octave-modules/struct { };
195     symbolic = callPackage ../development/octave-modules/symbolic {
196       inherit (octave) python;
197     };
199     tisean = callPackage ../development/octave-modules/tisean { };
201     tsa = callPackage ../development/octave-modules/tsa { };
203     vibes = callPackage ../development/octave-modules/vibes {
204       vibes = null;
205       # TODO: Need to package vibes:
206       # https://github.com/ENSTABretagneRobotics/VIBES
207     };
209     video = callPackage ../development/octave-modules/video { };
211     vrml = callPackage ../development/octave-modules/vrml {
212       freewrl = null;
213     };
215     windows = callPackage ../development/octave-modules/windows { };
217     zeromq = callPackage ../development/octave-modules/zeromq {
218       inherit (pkgs) zeromq autoreconfHook;
219     };
221   })