Firedrake contains a ton of inter-connected dependencies, many of which are either firedrake specific or forked versions of upstream packages. Cleaner to create a firedrake sub-scope for all these.
50 lines
1.8 KiB
Nix
50 lines
1.8 KiB
Nix
# This just brings in everything.
|
|
#
|
|
# This isn't really informative or overridable in any practical sense. Could put the closure of the dependencies
|
|
# of all the packages declared here instead. This would be overridable/informative, but a bigger pain to maintain.
|
|
#
|
|
# Likely this should be added into the python packages set instead of dropped on the top-level.
|
|
#
|
|
{ pkgs }:
|
|
|
|
let
|
|
self =
|
|
let
|
|
# Top-level scope extended with this set of packages.
|
|
#
|
|
# Possibly it would make more sense to use the python-level scope instead?
|
|
#
|
|
callPackage = pkgs.newScope self;
|
|
|
|
in
|
|
with self; {
|
|
inherit callPackages;
|
|
|
|
# Python to use for all this stuff (much of it is python)
|
|
python = pkgs.python27;
|
|
pythonPackages = python.pkgs;
|
|
|
|
# Forked and unavailable packages required by firedrake and its dependencies
|
|
ufl = callPackage ./ufl.nix { };
|
|
fiat = callPackage ./fiat.nix { };
|
|
finat = callPackage ./finat.nix { };
|
|
tsfc = callPackage ./tsfc.nix { };
|
|
pyop2 = callPackage ./pyop2.nix { };
|
|
petsc = callPackage ./petsc.nix { };
|
|
petsc4py = callPackage ./petsc4py.nix { };
|
|
coffee = callPackage ./coffee.nix { };
|
|
firedrake = callPackage ./firedrake.nix { };
|
|
pulp = callPackage ./pulp.nix { };
|
|
sowing = callPackage ./sowing.nix { };
|
|
metis = callPackage ./metis.nix { };
|
|
hypre = callPackage ./hypre.nix { };
|
|
parmetis = callPackage ./parmetis.nix { };
|
|
exodus = callPackage ./exodus.nix { };
|
|
|
|
# Incompatible version (something with communicator/datatype cleanup callbacks?)
|
|
mpi4py = callPackage ./mpi4py.nix { };
|
|
};
|
|
|
|
in
|
|
self.firedrake
|