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)