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`.
4
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.
10
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{
15 pkgs,
16 lib,
17 stdenv,
18 fetchurl,
19 newScope,
20 octave,
21}:
22
23let
24 inherit (lib)
25 catAttrs
26 concatLists
27 filter
28 makeScope
29 unique
30 ;
31in
32
33makeScope newScope (
34 self:
35 let
36 callPackage = self.callPackage;
37
38 buildOctavePackage = callPackage ../development/interpreters/octave/build-octave-package.nix {
39 inherit lib stdenv;
40 inherit octave;
41 inherit computeRequiredOctavePackages;
42 };
43
44 # Given a list of required Octave package derivations, get a list of
45 # ALL required Octave packages needed for the ones specified to run.
46 computeRequiredOctavePackages =
47 drvs:
48 let
49 # Check whether a derivation is an octave package
50 hasOctavePackage = drv: drv ? isOctavePackage;
51 packages = filter hasOctavePackage drvs;
52 in
53 unique (packages ++ concatLists (catAttrs "requiredOctavePackages" packages));
54
55 in
56 {
57
58 inherit callPackage buildOctavePackage computeRequiredOctavePackages;
59
60 inherit (callPackage ../development/interpreters/octave/hooks { })
61 writeRequiredOctavePackagesHook
62 ;
63
64 arduino = callPackage ../development/octave-modules/arduino {
65 inherit (pkgs) arduino-core-unwrapped;
66 };
67
68 audio = callPackage ../development/octave-modules/audio { };
69
70 bim = callPackage ../development/octave-modules/bim { };
71
72 bsltl = callPackage ../development/octave-modules/bsltl { };
73
74 cgi = callPackage ../development/octave-modules/cgi { };
75
76 communications = callPackage ../development/octave-modules/communications { };
77
78 control = callPackage ../development/octave-modules/control { };
79
80 data-smoothing = callPackage ../development/octave-modules/data-smoothing { };
81
82 database = callPackage ../development/octave-modules/database { };
83
84 dataframe = callPackage ../development/octave-modules/dataframe { };
85
86 dicom = callPackage ../development/octave-modules/dicom { };
87
88 divand = callPackage ../development/octave-modules/divand { };
89
90 doctest = callPackage ../development/octave-modules/doctest { };
91
92 econometrics = callPackage ../development/octave-modules/econometrics { };
93
94 fem-fenics = callPackage ../development/octave-modules/fem-fenics {
95 # PLACEHOLDER until KarlJoad gets dolfin packaged.
96 dolfin = null;
97 ffc = null;
98 };
99
100 fits = callPackage ../development/octave-modules/fits { };
101
102 financial = callPackage ../development/octave-modules/financial { };
103
104 fpl = callPackage ../development/octave-modules/fpl { };
105
106 fuzzy-logic-toolkit = callPackage ../development/octave-modules/fuzzy-logic-toolkit { };
107
108 ga = callPackage ../development/octave-modules/ga { };
109
110 general = callPackage ../development/octave-modules/general {
111 nettle = pkgs.nettle;
112 };
113
114 generate_html = callPackage ../development/octave-modules/generate_html { };
115
116 geometry = callPackage ../development/octave-modules/geometry { };
117
118 gsl = callPackage ../development/octave-modules/gsl {
119 inherit (pkgs) gsl;
120 };
121
122 image = callPackage ../development/octave-modules/image { };
123
124 image-acquisition = callPackage ../development/octave-modules/image-acquisition { };
125
126 instrument-control = callPackage ../development/octave-modules/instrument-control { };
127
128 io = callPackage ../development/octave-modules/io {
129 inherit (octave) enableJava;
130 };
131
132 interval = callPackage ../development/octave-modules/interval { };
133
134 level-set = callPackage ../development/octave-modules/level-set { };
135
136 linear-algebra = callPackage ../development/octave-modules/linear-algebra { };
137
138 lssa = callPackage ../development/octave-modules/lssa { };
139
140 ltfat = callPackage ../development/octave-modules/ltfat {
141 inherit (octave)
142 fftw
143 fftwSinglePrec
144 portaudio
145 jdk
146 ;
147 inherit (pkgs) fftwFloat fftwLongDouble;
148 };
149
150 mapping = callPackage ../development/octave-modules/mapping { };
151
152 matgeom = callPackage ../development/octave-modules/matgeom { };
153
154 miscellaneous = callPackage ../development/octave-modules/miscellaneous { };
155
156 msh = callPackage ../development/octave-modules/msh {
157 # PLACEHOLDER until KarlJoad gets dolfin packaged.
158 dolfin = null;
159 };
160
161 mvn = callPackage ../development/octave-modules/mvn { };
162
163 nan = callPackage ../development/octave-modules/nan { };
164
165 ncarray = callPackage ../development/octave-modules/ncarray { };
166
167 netcdf = callPackage ../development/octave-modules/netcdf {
168 inherit (pkgs) netcdf;
169 };
170
171 nurbs = callPackage ../development/octave-modules/nurbs { };
172
173 ocl = callPackage ../development/octave-modules/ocl { };
174
175 octclip = callPackage ../development/octave-modules/octclip { };
176
177 octproj = callPackage ../development/octave-modules/octproj { };
178
179 optics = callPackage ../development/octave-modules/optics { };
180
181 optim = callPackage ../development/octave-modules/optim { };
182
183 optiminterp = callPackage ../development/octave-modules/optiminterp { };
184
185 parallel = callPackage ../development/octave-modules/parallel { };
186
187 quaternion = callPackage ../development/octave-modules/quaternion { };
188
189 queueing = callPackage ../development/octave-modules/queueing { };
190
191 signal = callPackage ../development/octave-modules/signal { };
192
193 sockets = callPackage ../development/octave-modules/sockets { };
194
195 sparsersb = callPackage ../development/octave-modules/sparsersb { };
196
197 stk = callPackage ../development/octave-modules/stk { };
198
199 splines = callPackage ../development/octave-modules/splines { };
200
201 statistics = callPackage ../development/octave-modules/statistics { };
202
203 strings = callPackage ../development/octave-modules/strings { };
204
205 struct = callPackage ../development/octave-modules/struct { };
206
207 symbolic = callPackage ../development/octave-modules/symbolic {
208 inherit (octave) python;
209 };
210
211 tisean = callPackage ../development/octave-modules/tisean { };
212
213 tsa = callPackage ../development/octave-modules/tsa { };
214
215 vibes = callPackage ../development/octave-modules/vibes {
216 vibes = null;
217 # TODO: Need to package vibes:
218 # https://github.com/ENSTABretagneRobotics/VIBES
219 };
220
221 video = callPackage ../development/octave-modules/video { };
222
223 vrml = callPackage ../development/octave-modules/vrml {
224 freewrl = null;
225 };
226
227 windows = callPackage ../development/octave-modules/windows { };
228
229 zeromq = callPackage ../development/octave-modules/zeromq {
230 inherit (pkgs) zeromq autoreconfHook;
231 };
232
233 }
234)