Skip to content

Instantly share code, notes, and snippets.

@idontgetoutmuch
Created March 22, 2018 16:59
Show Gist options
  • Select an option

  • Save idontgetoutmuch/e279a23d5cbe4da95ed522e21c2903c3 to your computer and use it in GitHub Desktop.

Select an option

Save idontgetoutmuch/e279a23d5cbe4da95ed522e21c2903c3 to your computer and use it in GitHub Desktop.
{ nixpkgs ? import <nixpkgs>
{}
, compiler ? "ghc822"
, doBenchmark ? false }:
let
inherit (nixpkgs) pkgs;
f = { mkDerivation, ad, base, c2hs, diagrams-lib, diagrams-rasterific, gcc
, hmatrix, hmatrix-gsl, inline-c, inline-r, julia, plots, R, stdenv, sundials, vector }:
mkDerivation {
pname = "symplectic-integrators";
version = "0.1.0.0";
src = ./.;
isLibrary = false;
isExecutable = true;
executableHaskellDepends = [
ad
base
diagrams-lib
diagrams-rasterific
hmatrix
hmatrix-gsl
inline-c
inline-r
plots
vector
] ++ (if pkgs.stdenv.isDarwin then [pkgs.darwin.apple_sdk.frameworks.Cocoa] else []);
executableSystemDepends = [
c2hs
pkgs.blas
gcc
julia
pkgs.liblapack
patched-gsl
R
pkgs.rPackages.anytime
pkgs.rPackages.ggplot2
pkgs.rPackages.maptools
pkgs.rPackages.reshape2
pkgs.rPackages.rgeos
pkgs.rPackages.rgdal
pkgs.rPackages.rstan
sundials
] ++ (if pkgs.stdenv.isDarwin then [pkgs.darwin.apple_sdk.frameworks.Accelerate] else []);
license = stdenv.lib.licenses.bsd3;
};
haskellPackages = if compiler == "default"
then pkgs.haskellPackages
else pkgs.haskell.packages.${compiler};
variant = if doBenchmark then pkgs.haskell.lib.doBenchmark else pkgs.lib.id;
patched-hmatrix = pkgs.haskellPackages.hmatrix.overrideAttrs (oldAttrs: rec {
src = nixpkgs.fetchgit {
url = git://github.com/albertoruiz/hmatrix;
rev = "d83b17190029c11e3ab8b504e5cdc917f5863120";
sha256 = "11wr59wg21rky59j3kkd3ba6aqns9gkh0r1fnhwhn3fp7zfhanqn";
};
postUnpack = ''
sourceRoot=''${sourceRoot}/packages/base
echo Source root reset to ''${sourceRoot}
'';
});
patched-hmatrix-gsl = pkgs.haskellPackages.hmatrix-gsl.overrideAttrs (oldAttrs: rec {
src = nixpkgs.fetchgit {
url = git://github.com/albertoruiz/hmatrix;
rev = "d83b17190029c11e3ab8b504e5cdc917f5863120";
sha256 = "11wr59wg21rky59j3kkd3ba6aqns9gkh0r1fnhwhn3fp7zfhanqn";
};
postUnpack = ''
sourceRoot=''${sourceRoot}/packages/gsl
echo Source root reset to ''${sourceRoot}
'';
});
patched-gsl = pkgs.gsl.overrideAttrs (oldAttrs: rec {
src = nixpkgs.fetchgit {
url = git://github.com/idontgetoutmuch/gsl;
rev = "c2035977d65cd804169ff3370da6723cf879be75";
sha256 = "1fqp77gp9nl3av1z58cwg8fivik4rff394wgjzc76ayd04y0d1k7";
};
version = "2.5";
name = "gsl-${version}";
doCheck = false;
CFLAGS = "-DDEBUG";
});
# sundials = pkgs.stdenv.mkDerivation rec {
# pname = "sundials";
# version = "3.1.0";
# name = "${pname}-${version}";
# src = pkgs.fetchurl {
# url = "https://computation.llnl.gov/projects/${pname}/download/${pname}-${version}.tar.gz";
# sha256 = "17dk0ckm6mp1ajc0cd6bwyi638ynw2f6bhbn7gynrs0wfmiyldng";
# };
# cmakeFlags = [
# "-DCMAKE_INSTALL_PREFIX=${out}/instdir"
# "-DEXAMPLES_INSTALL_PATH=${out}/instdir/examples"
# ];
# buildInputs = [ pkgs.cmake ];
# };
drv = variant (haskellPackages.callPackage f {
hmatrix = patched-hmatrix;
hmatrix-gsl = patched-hmatrix-gsl;
});
in
if pkgs.lib.inNixShell then drv.env else drv
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment