# This file contains the GNU Octave add-on packages set. # Each attribute is an Octave library. # Expressions for the Octave libraries are supposed to be in `pkgs/development/octave-modules//default.nix`. # When contributing a new package, if that package has a dependency on another # octave package, then you DO NOT need to explicitly list it as such when # performing the callPackage. It will be passed implicitly. # In addition, try to use the same dependencies as the ones octave needs, which # should ensure greater compatibility between Octave itself and its packages. # Like python-packages.nix, packages from top-level.nix are not in the scope # of the `callPackage` used for packages here. So, when we do need packages # from outside, we can `inherit` them from `pkgs`. { pkgs, config, lib, stdenv, fetchurl, newScope, octave, }: let inherit (lib) catAttrs concatLists filter makeScope unique ; in makeScope newScope ( self: let callPackage = self.callPackage; buildOctavePackage = callPackage ../development/interpreters/octave/build-octave-package.nix { inherit lib stdenv; inherit octave; inherit computeRequiredOctavePackages; }; # Given a list of required Octave package derivations, get a list of # ALL required Octave packages needed for the ones specified to run. computeRequiredOctavePackages = drvs: let # Check whether a derivation is an octave package hasOctavePackage = drv: drv ? isOctavePackage; packages = filter hasOctavePackage drvs; in unique (packages ++ concatLists (catAttrs "requiredOctavePackages" packages)); in { inherit buildOctavePackage computeRequiredOctavePackages; inherit (callPackage ../development/interpreters/octave/hooks { }) writeRequiredOctavePackagesHook ; # keep-sorted start block=yes newline_separated=yes case=no numeric=yes skip_lines=1 arduino = callPackage ../development/octave-modules/arduino { inherit (pkgs) arduino-core-unwrapped; }; audio = callPackage ../development/octave-modules/audio { }; bim = callPackage ../development/octave-modules/bim { }; bsltl = callPackage ../development/octave-modules/bsltl { }; cgi = callPackage ../development/octave-modules/cgi { }; communications = callPackage ../development/octave-modules/communications { }; control = callPackage ../development/octave-modules/control { }; data-smoothing = callPackage ../development/octave-modules/data-smoothing { }; database = callPackage ../development/octave-modules/database { }; dataframe = callPackage ../development/octave-modules/dataframe { }; datatypes = callPackage ../development/octave-modules/datatypes { }; dicom = callPackage ../development/octave-modules/dicom { }; divand = callPackage ../development/octave-modules/divand { }; doctest = callPackage ../development/octave-modules/doctest { }; econometrics = callPackage ../development/octave-modules/econometrics { }; financial = callPackage ../development/octave-modules/financial { }; fits = callPackage ../development/octave-modules/fits { }; fpl = callPackage ../development/octave-modules/fpl { }; fuzzy-logic-toolkit = callPackage ../development/octave-modules/fuzzy-logic-toolkit { }; ga = callPackage ../development/octave-modules/ga { }; general = callPackage ../development/octave-modules/general { nettle = pkgs.nettle; }; generate_html = callPackage ../development/octave-modules/generate_html { }; geometry = callPackage ../development/octave-modules/geometry { }; gsl = callPackage ../development/octave-modules/gsl { inherit (pkgs) gsl; }; image = callPackage ../development/octave-modules/image { inherit (pkgs) gnuplot makeFontsConf writableTmpDirAsHomeHook ; }; image-acquisition = callPackage ../development/octave-modules/image-acquisition { }; instrument-control = callPackage ../development/octave-modules/instrument-control { }; interval = callPackage ../development/octave-modules/interval { }; io = callPackage ../development/octave-modules/io { inherit (octave) enableJava; }; linear-algebra = callPackage ../development/octave-modules/linear-algebra { }; lssa = callPackage ../development/octave-modules/lssa { }; ltfat = callPackage ../development/octave-modules/ltfat { inherit (octave) fftw fftwSinglePrec portaudio jdk ; inherit (pkgs) fftwFloat fftwLongDouble; }; mapping = callPackage ../development/octave-modules/mapping { }; matgeom = callPackage ../development/octave-modules/matgeom { }; miscellaneous = callPackage ../development/octave-modules/miscellaneous { }; msh = callPackage ../development/octave-modules/msh { # PLACEHOLDER until ravenjoad gets dolfin packaged. dolfin = null; }; mvn = callPackage ../development/octave-modules/mvn { }; nan = callPackage ../development/octave-modules/nan { }; ncarray = callPackage ../development/octave-modules/ncarray { }; netcdf = callPackage ../development/octave-modules/netcdf { inherit (pkgs) netcdf; }; nurbs = callPackage ../development/octave-modules/nurbs { }; ocl = callPackage ../development/octave-modules/ocl { }; octclip = callPackage ../development/octave-modules/octclip { }; octproj = callPackage ../development/octave-modules/octproj { }; optics = callPackage ../development/octave-modules/optics { }; optim = callPackage ../development/octave-modules/optim { }; optiminterp = callPackage ../development/octave-modules/optiminterp { }; quaternion = callPackage ../development/octave-modules/quaternion { }; queueing = callPackage ../development/octave-modules/queueing { }; signal = callPackage ../development/octave-modules/signal { }; sockets = callPackage ../development/octave-modules/sockets { }; splines = callPackage ../development/octave-modules/splines { }; statistics = callPackage ../development/octave-modules/statistics { }; stk = callPackage ../development/octave-modules/stk { }; strings = callPackage ../development/octave-modules/strings { }; struct = callPackage ../development/octave-modules/struct { }; symbolic = callPackage ../development/octave-modules/symbolic { inherit (octave) python; }; tsa = callPackage ../development/octave-modules/tsa { }; video = callPackage ../development/octave-modules/video { }; windows = callPackage ../development/octave-modules/windows { }; zeromq = callPackage ../development/octave-modules/zeromq { inherit (pkgs) zeromq autoreconfHook; }; # keep-sorted end } // lib.optionalAttrs config.allowAliases { fem-fenics = throw "octavePackages.fem-fenics has been removed due to being broken for more than a year; see RFC 180"; # Added 2026-02-05 level-set = throw "octavePackages.level-set has been removed due to being broken for more than a year; see RFC 180"; # Added 2026-02-05 parallel = throw "octavePackages.parallel has been removed due to being broken for more than a year; see RFC 180"; # Added 2026-02-05 sparsersb = throw "octavePackages.sparsersb has been removed due to being broken for more than a year; see RFC 180"; # Added 2026-02-05 tisean = throw "octavePackages.tisean has been removed due to being broken for more than a year; see RFC 180"; # Added 2026-02-05 vibes = throw "octavePackages.vibes has been removed due to being broken for more than a year; see RFC 180"; # Added 2026-02-05 vrml = throw "octavePackages.vrml has been removed due to being broken for more than a year; see RFC 180"; # Added 2026-02-05 } )