ghcjs working.

This commit is contained in:
Ryan Trinkle 2014-08-23 15:00:13 -04:00
parent df0e96175c
commit 6142b27760
12 changed files with 260 additions and 58 deletions

View File

@ -189,7 +189,7 @@ builtins.trace (ghc.parent.CabalGhcjs.version or null) {
done
done
configureFlags+=" --package-db=/nix/store/a68nrd3slc39pgl4s3n485s6nfk3mnbi-haskell-ghcjs-ghc7.8.2-0.1.0-shared/share/ghcjs/x86_64-linux-0.1.0-7.8.2/package.conf.d"
configureFlags+=" --package-db=${ghc.ghc}/share/ghcjs/x86_64-linux-0.1.0-7.8.2/ghcjs/package.conf.d"
${optionalString (self.enableSharedExecutables && self.stdenv.isLinux) ''
configureFlags+=" --ghc-option=-optl=-Wl,-rpath=$out/lib/${ghc.ghc.name}/${self.pname}-${self.version}";

View File

@ -0,0 +1,72 @@
{ cabal, filepath, HTTP, HUnit, mtl, network, QuickCheck, random, stm
, testFramework, testFrameworkHunit, testFrameworkQuickcheck2, time
, zlib, aeson, attoparsec, bzlib, dataDefault, ghcPaths, hashable
, haskellSrcExts, haskellSrcMeta, lens, optparseApplicative_0_7_0_2
, parallel, safe, shelly, split, stringsearch, syb, systemFileio
, systemFilepath, tar, terminfo, textBinary, unorderedContainers
, vector, wlPprintText, yaml, fetchgit, Cabal, CabalGhcjs, cabalInstall
, regexPosix, alex, happy, git, gnumake, gcc, autoconf, patch
, automake, libtool, cabalInstallGhcjs, gmp
}:
cabal.mkDerivation (self: rec {
pname = "ghcjs";
version = "0.1.0";
src = fetchgit {
url = git://github.com/ghcjs/ghcjs.git;
rev = "c9ce6b9d87296b1236d5ef0f7d5236b2cedcff84";
sha256 = "0cla5bchprc8g5n39fkssnv3lj378h948irsnr7dslaki6laaagw";
};
bootSrc = fetchgit {
url = git://github.com/ghcjs/ghcjs-boot.git;
rev = "2daaf8fc0efd5b5906a7157a172ce77ca3b28d81";
sha256 = "0kwn3lh196rp02kz2vxd0mkqyix99xqzs4vsazv0s49ari0dc4w8";
};
shims = fetchgit {
url = git://github.com/ghcjs/shims.git;
rev = "a6dd0202dcdb86ad63201495b8b5d9763483eb35";
sha256 = "07cd7ijw4i62iz1xjpwilriiybpqdx246w8d3j27ny1xfsj9wnax";
};
isLibrary = true;
isExecutable = true;
jailbreak = true;
noHaddock = true;
buildDepends = [
filepath HTTP mtl network random stm time zlib aeson attoparsec
bzlib dataDefault ghcPaths hashable haskellSrcExts haskellSrcMeta
lens optparseApplicative_0_7_0_2 parallel safe shelly split
stringsearch syb systemFileio systemFilepath tar terminfo textBinary
unorderedContainers vector wlPprintText yaml
alex happy git gnumake gcc autoconf automake libtool patch gmp
];
testDepends = [
HUnit regexPosix testFramework testFrameworkHunit
];
postConfigure = ''
echo Patching ghcjs with absolute paths to the Nix store
sed -i -e "s|getAppUserDataDirectory \"ghcjs\"|return \"$out/share/ghcjs\"|" \
src/Compiler/Info.hs
sed -i -e "s|str = \\[\\]|str = [\"--prefix=$out\", \"--libdir=$prefix/lib/$compiler\", \"--libsubdir=$pkgid\"]|" \
src-bin/Boot.hs
'';
postInstall = ''
export HOME=$(pwd)
cp -R ${bootSrc} ghcjs-boot
cd ghcjs-boot
( cd boot ; chmod u+w . ; ln -s .. ghcjs-boot )
chmod -R u+w . # because fetchgit made it read-only
local GHCJS_LIBDIR=$out/share/ghcjs/x86_64-linux-0.1.0-7.8.2
ensureDir $GHCJS_LIBDIR
cp -R ${shims} $GHCJS_LIBDIR/shims
${cabalInstallGhcjs}/bin/cabal-js update
PATH=$out/bin:${CabalGhcjs}/bin:$PATH LD_LIBRARY_PATH=${gmp}/lib:${gcc.gcc}/lib64:$LD_LIBRARY_PATH \
env -u GHC_PACKAGE_PATH $out/bin/ghcjs-boot --init --with-cabal ${cabalInstallGhcjs}/bin/cabal-js --with-gmp-includes ${gmp}/include --with-gmp-libraries ${gmp}/lib
'';
meta = {
homepage = "https://github.com/ghcjs/ghcjs";
description = "GHCJS is a Haskell to JavaScript compiler that uses the GHC API";
license = self.stdenv.lib.licenses.bsd3;
platforms = self.ghc.meta.platforms;
maintainers = [ self.stdenv.lib.maintainers.jwiegley ];
};
})

View File

@ -18,7 +18,7 @@ let
PATH="$PATH:$2"
IFS=":"
for p in $PATH; do
for i in "$p/../share/ghcjs/$system-${ghcjs.version}-${ghcjs.ghc.version}"{,/lib}"/package.conf.d" "$p/../lib/ghcjs-${ghc.version}_ghc-${ghc.ghc.version}/package.conf.d" ; do
for i in "$p/../share/ghcjs/$system-${ghcjs.version}-${ghcjs.ghc.version}"{,/lib,/ghcjs}"/package.conf.d" "$p/../lib/ghcjs-${ghc.version}_ghc-${ghc.ghc.version}/package.conf.d" ; do
# output takes place here
test -f $i/package.cache && echo -n " $prefix$i"
done

View File

@ -1,9 +1,14 @@
{ cabal, ghcjsBase, mtl }:
{ cabal, fetchgit, ghcjsBase, mtl }:
cabal.mkDerivation (self: {
pname = "ghcjs-dom";
version = "0.0.10";
sha256 = "0xffr197m6qam4q7ckgcwl0v9kwrxa5fm894c9vyxdmlcjyn38rm";
version = "0.1.0.0";
src = fetchgit {
url = git://github.com/ghcjs/ghcjs-dom.git;
rev = "81805e75ccd41501774b90c04efd9e00d52e9798";
sha256 = "3aa56fb81974533661aa056ed080edab29bef8ab26dae61999de4452f95949f6";
};
buildDepends = [ ghcjsBase mtl ];
meta = {
description = "DOM library that supports both GHCJS and WebKitGTK";

View File

@ -0,0 +1,32 @@
{ cabal, bifunctors, comonad, contravariant, deepseq, distributive
, doctest, exceptions, filepath, free, genericDeriving, hashable
, hlint, HUnit, mtl, nats, parallel, primitive, profunctors
, QuickCheck, reflection, semigroupoids, semigroups, simpleReflect
, split, tagged, testFramework, testFrameworkHunit
, testFrameworkQuickcheck2, testFrameworkTh, text, transformers
, transformersCompat, unorderedContainers, vector, void, zlib
}:
cabal.mkDerivation (self: {
pname = "lens";
version = "4.4";
sha256 = "06ha4px4ywfbi0n3imy2qqjq3656snsz1b0ggkwzvdzmi550sh8w";
buildDepends = [
bifunctors comonad contravariant distributive exceptions filepath
free hashable mtl parallel primitive profunctors reflection
semigroupoids semigroups split tagged text transformers
transformersCompat unorderedContainers vector void zlib
];
testDepends = [
deepseq doctest filepath genericDeriving hlint HUnit mtl nats
parallel QuickCheck semigroups simpleReflect split testFramework
testFrameworkHunit testFrameworkQuickcheck2 testFrameworkTh text
transformers unorderedContainers vector
];
meta = {
homepage = "http://github.com/ekmett/lens/";
description = "Lenses, Folds and Traversals";
license = self.stdenv.lib.licenses.bsd3;
platforms = self.ghc.meta.platforms;
};
})

View File

@ -0,0 +1,14 @@
{ cabal, transformers }:
cabal.mkDerivation (self: {
pname = "transformers-compat";
version = "0.3.3.3";
sha256 = "18cqghf0gc97j9qnlfnwwhvfm8j4sk99rm0xv3bf6ml8slk7njx7";
buildDepends = [ transformers ];
meta = {
homepage = "http://github.com/ekmett/transformers-compat/";
description = "A small compatibility shim exposing the new types from transformers 0.3 and 0.4 to older Haskell platforms.";
license = self.stdenv.lib.licenses.bsd3;
platforms = self.ghc.meta.platforms;
};
})

View File

@ -8,8 +8,8 @@ cabal.mkDerivation (self: {
version = "9e87d6a3";
src = fetchgit {
url = git://github.com/ghcjs/cabal.git;
rev = "9e87d6a39ec63f569fea899fc1ace332ea7eea78";
sha256 = "07bgsqzmiqzw14i91y5nmk5m9sqnxn503xzv2jan5g33z1vcwdcj";
rev = "520591876ee57dbecba1b2de602dc79f4f67ecce"; # Must be from the ghcjs branch
sha256 = "f59182661707c65a2a014aa91b5e0d53cbefb6c999c1982757f476619b6728c0";
};
preConfigure = "cd Cabal";
configureFlags = "--program-suffix=-js";

View File

@ -6,13 +6,10 @@
cabal.mkDerivation (self: {
pname = "cabal-install-ghcjs";
version = "9e87d6a3";
src = fetchgit {
url = git://github.com/ghcjs/cabal.git;
rev = "9e87d6a39ec63f569fea899fc1ace332ea7eea78";
sha256 = "07bgsqzmiqzw14i91y5nmk5m9sqnxn503xzv2jan5g33z1vcwdcj";
};
src = CabalGhcjs.src;
isLibrary = true;
isExecutable = true;
doCheck = false;
configureFlags = "--program-suffix=-js";
preConfigure = "cd cabal-install";
buildDepends = [

View File

@ -1,44 +1,72 @@
{ cabal, filepath, HTTP, HUnit, mtl, network, QuickCheck, random, stm
{ nodejs, cabal, filepath, HTTP, HUnit, mtl, network, QuickCheck, random, stm
, testFramework, testFrameworkHunit, testFrameworkQuickcheck2, time
, zlib, aeson, attoparsec, bzlib, dataDefault, ghcPaths, hashable
, haskellSrcExts, haskellSrcMeta, lens, optparseApplicative_0_7_0_2
, haskellSrcExts, haskellSrcMeta, lens, optparseApplicative
, parallel, safe, shelly, split, stringsearch, syb, systemFileio
, systemFilepath, tar, terminfo, textBinary, unorderedContainers
, vector, wlPprintText, yaml, fetchgit, Cabal, CabalGhcjs, cabalInstall
, regexPosix, alex, happy, git, gnumake, gcc, autoconf, patch
, automake, libtool, cabalInstallGhcjs, gmp
, automake, libtool, cabalInstallGhcjs, gmp, base16Bytestring
, cryptohash, executablePath, transformersCompat
, haddock, hspec, xhtml, primitive
}:
cabal.mkDerivation (self: rec {
pname = "ghcjs";
version = "0.1.0";
src = fetchgit {
url = git://github.com/ghcjs/ghcjs.git;
rev = "c9ce6b9d87296b1236d5ef0f7d5236b2cedcff84";
sha256 = "0cla5bchprc8g5n39fkssnv3lj378h948irsnr7dslaki6laaagw";
rev = "fd034b7e6fb61120d22f1c314398f37a673b8b1d";
sha256 = "0182bb706cc263a6d268eb61e243214186abae7b81dec420187c858e989c4dba";
};
/*
bootSrc = fetchgit {
url = git://github.com/ghcjs/ghcjs-boot.git;
rev = "2daaf8fc0efd5b5906a7157a172ce77ca3b28d81";
sha256 = "0kwn3lh196rp02kz2vxd0mkqyix99xqzs4vsazv0s49ari0dc4w8";
rev = "f9f79d0cf40212943bcc1ad2672f2e0a7af2b7c9";
sha256 = "83f1706bcf7e666f6fb6dee455517e0efb019aabd1393f444c80169f04b9d3b8";
};
*/
shims = fetchgit {
url = git://github.com/ghcjs/shims.git;
rev = "a6dd0202dcdb86ad63201495b8b5d9763483eb35";
sha256 = "07cd7ijw4i62iz1xjpwilriiybpqdx246w8d3j27ny1xfsj9wnax";
rev = "dc5bb54778f3dbba4b463f4f7df5f830f14d1cb6";
sha256 = "fcef2879df0735b1011a8642a7c3e0e3f39b7d395830b91a992658f4ff67c9ce";
};
isLibrary = true;
isExecutable = true;
jailbreak = true;
noHaddock = true;
haddockInternal = cabal.mkDerivation (self: {
pname = "haddock-internal";
version = "2.14.3";
src = fetchgit {
url = git://github.com/ghcjs/haddock-internal.git;
rev = "47758773d6b20c395a1c76a93830070fde71dbab";
sha256 = "df1a024631b7781fcbda09d2b33a56650959b8ab6c831151b456133226ab90b2";
};
buildDepends = [ QuickCheck ghcPaths haddock hspec xhtml ]; # Can't specify Cabal here, or it ends up being the wrong version
doCheck = false;
});
ghcjsPrim = cabal.mkDerivation (self: {
pname = "ghcjs-prim";
version = "0.1.0.0";
src = fetchgit {
url = git://github.com/ghcjs/ghcjs-prim.git;
rev = "659d6ceb45b1b8ef526c7451d90afff80d76e2f5";
sha256 = "55b64d93cdc8220042a35ea12f8c53e82f78b51bc0f87ddd12300ad56e4b7ba7";
};
buildDepends = [ primitive ];
});
buildDepends = [
filepath HTTP mtl network random stm time zlib aeson attoparsec
bzlib dataDefault ghcPaths hashable haskellSrcExts haskellSrcMeta
lens optparseApplicative_0_7_0_2 parallel safe shelly split
lens optparseApplicative parallel safe shelly split
stringsearch syb systemFileio systemFilepath tar terminfo textBinary
unorderedContainers vector wlPprintText yaml
alex happy git gnumake gcc autoconf automake libtool patch gmp
base16Bytestring cryptohash executablePath haddockInternal
transformersCompat QuickCheck haddock hspec xhtml
ghcjsPrim
];
buildTools = [ nodejs git ];
testDepends = [
HUnit regexPosix testFramework testFrameworkHunit
];
@ -51,8 +79,11 @@ cabal.mkDerivation (self: rec {
'';
postInstall = ''
export HOME=$(pwd)
cp -R ${bootSrc} ghcjs-boot
export GIT_SSL_CAINFO=/etc/ssl/certs/ca-bundle.crt
git clone git://github.com/ghcjs/ghcjs-boot.git
cd ghcjs-boot
git checkout f9f79d0cf40212943bcc1ad2672f2e0a7af2b7c9
git submodule update --init --recursive
( cd boot ; chmod u+w . ; ln -s .. ghcjs-boot )
chmod -R u+w . # because fetchgit made it read-only
local GHCJS_LIBDIR=$out/share/ghcjs/x86_64-linux-0.1.0-7.8.2
@ -60,7 +91,7 @@ cabal.mkDerivation (self: rec {
cp -R ${shims} $GHCJS_LIBDIR/shims
${cabalInstallGhcjs}/bin/cabal-js update
PATH=$out/bin:${CabalGhcjs}/bin:$PATH LD_LIBRARY_PATH=${gmp}/lib:${gcc.gcc}/lib64:$LD_LIBRARY_PATH \
env -u GHC_PACKAGE_PATH $out/bin/ghcjs-boot --init --with-cabal ${cabalInstallGhcjs}/bin/cabal-js --with-gmp-includes ${gmp}/include --with-gmp-libraries ${gmp}/lib
env -u GHC_PACKAGE_PATH $out/bin/ghcjs-boot --dev --with-cabal ${cabalInstallGhcjs}/bin/cabal-js --with-gmp-includes ${gmp}/include --with-gmp-libraries ${gmp}/lib
'';
meta = {
homepage = "https://github.com/ghcjs/ghcjs";

View File

@ -221,6 +221,10 @@
let parent = packages_ghc782.override {
extension = self: super: {
Cabal = packages_ghc782.CabalGhcjs;
transformersCompat = super.transformersCompat_0_3_3_3;
haddock = super.haddock.override {
Cabal = null;
};
};
};
in packages {
@ -229,27 +233,38 @@
ghcWrapperPackage = import ../development/compilers/ghcjs/wrapper.nix;
prefFun = self : super : super // {
# This is the list of packages that are built into a booted ghcjs installation
# Cabal_1_19_2 = null;
# Cabal = self.Cabal_1_19_2;
Cabal = packages_ghc782.CabalGhcjs;
aeson_0_7_0_4 = null;
aeson = self.aeson_0_7_0_4;
# It can be generated with the command:
# nix-shell '<nixpkgs>' -A pkgs.haskellPackages_ghcjs.ghc --command "ghcjs-pkg list | sed -n 's/^ \(.*\)-\([0-9.]*\)$/\1_\2/ p' | sed 's/\./_/g' | sed 's/-\(.\)/\U\1/' | sed 's/^\([^_]*\)\(.*\)$/\1\2 = null;\n\1 = self.\1\2;/'"
Cabal_1_21_0_0 = null;
Cabal = self.Cabal_1_21_0_0;
aeson_0_8_0_0 = null;
aeson = self.aeson_0_8_0_0;
array_0_5_0_0 = null;
array = self.array_0_5_0_0;
attoparsec_0_11_3_1 = null;
attoparsec = self.attoparsec_0_11_3_1;
base_4_7_0_0 = null;
base = self.base_4_7_0_0;
bytestring_0_10_4_0 = null;
bytestring = self.bytestring_0_10_4_0;
async_2_0_1_5 = null;
async = self.async_2_0_1_5;
attoparsec_0_12_1_0 = null;
attoparsec = self.attoparsec_0_12_1_0;
base_4_7_0_1 = null;
base = self.base_4_7_0_1;
binary_0_7_2_1 = null;
binary = self.binary_0_7_2_1;
rts_1_0 = null;
rts = self.rts_1_0;
# bytestring_0_10_4_1 = null;
# bytestring = self.bytestring_0_10_4_1;
caseInsensitive_1_2_0_0 = null;
caseInsensitive = self.caseInsensitive_1_2_0_0;
containers_0_5_5_1 = null;
containers = self.containers_0_5_5_1;
deepseq_1_3_0_2 = null;
deepseq = self.deepseq_1_3_0_2;
directory_1_2_1_0 = null;
directory = self.directory_1_2_1_0;
dlist_0_7_1 = null;
dlist = self.dlist_0_7_1;
dlist_0_7_0_1 = null;
dlist = self.dlist_0_7_0_1;
extensibleExceptions_0_1_1_3 = null;
extensibleExceptions = self.extensibleExceptions_0_1_1_3;
filepath_1_3_0_2 = null;
filepath = self.filepath_1_3_0_2;
ghcPrim_0_3_1_0 = null;
@ -258,42 +273,75 @@
ghcjsBase = self.ghcjsBase_0_1_0_0;
ghcjsPrim_0_1_0_0 = null;
ghcjsPrim = self.ghcjsPrim_0_1_0_0;
hashable_1_2_1_0 = null;
hashable = self.hashable_1_2_1_0;
hashable_1_2_2_0 = null;
hashable = self.hashable_1_2_2_0;
integerGmp_0_5_1_0 = null;
integerGmp = self.integerGmp_0_5_1_0;
mtl_2_1_3_1 = null;
mtl = self.mtl_2_1_3_1;
mtl_2_2_1 = null;
mtl = self.mtl_2_2_1;
oldLocale_1_0_0_6 = null;
oldLocale = self.oldLocale_1_0_0_6;
oldTime_1_1_0_2 = null;
oldTime = self.oldTime_1_1_0_2;
parallel_3_2_0_4 = null;
parallel = self.parallel_3_2_0_4;
pretty_1_1_1_1 = null;
pretty = self.pretty_1_1_1_1;
primitive_0_5_3_0 = null;
primitive = self.primitive_0_5_3_0;
# process_1_2_0_0 = null;
# process = self.process_1_2_0_0;
scientific_0_2_0_2 = null;
scientific = self.scientific_0_2_0_2;
process_1_2_0_0 = null;
process = self.process_1_2_0_0;
scientific_0_3_3_0 = null;
scientific = self.scientific_0_3_3_0;
stm_2_4_3 = null;
stm = self.stm_2_4_3;
syb_0_4_2 = null;
syb = self.syb_0_4_2;
templateHaskell_2_9_0_0 = null;
templateHaskell = self.templateHaskell_2_9_0_0;
# templateHaskell_2_9_0_0 = null;
# templateHaskell = self.templateHaskell_2_9_0_0;
text_1_1_1_3 = null;
text = self.text_1_1_1_3;
time_1_4_2 = null;
time = self.time_1_4_2;
transformers_0_3_0_0 = null;
transformers = self.transformers_0_3_0_0;
transformers_0_4_1_0 = null;
transformers = self.transformers_0_4_1_0;
unix_2_7_0_1 = null;
unix = self.unix_2_7_0_1;
unorderedContainers_0_2_5_0 = null;
unorderedContainers = self.unorderedContainers_0_2_5_0;
vector_0_10_11_0 = null;
vector = self.vector_0_10_11_0;
# These are necessary for compatibility with ghcjs's default libs
transformersCompat = self.transformersCompat_0_3_3;
oldTime = self.oldTime_1_1_0_2;
process = self.process_1_2_0_0; # ghcjs-boot seems to install process incorrectly, for some reason, so reinstall it
# This is necessary because haskell-packages will refuse to generate tfRandom for this version of ghc (0.1.0)
#TODO: haskell-packages shouldn't use the ghcjs version as the ghc version
tfRandom = self.callPackage ../development/libraries/haskell/tf-random {};
/*
buildLocalCabalWithArgs = { src, name, args ? {}, cabalDrvArgs ? { jailbreak = true; }, cabal2nix ? packages_ghc782.cabal2nix }: let
cabalExpr = pkgs.stdenv.mkDerivation ({
name = "${name}.nix";
buildCommand = ''
${cabal2nix}/bin/cabal2nix ${src + "/${name}.cabal"} --sha256=FILTERME \
| grep -v FILTERME | sed \
-e 's/licenses.proprietary/licenses.unfree/' \
-e 's/{ cabal/{ cabal, cabalInstall, cabalDrvArgs ? {}, src/' \
-e 's/cabal.mkDerivation (self: {/cabal.mkDerivation (self: cabalDrvArgs \/\/ {/' \
-e 's/buildDepends = \[/buildDepends = \[ cabalInstall/' \
-e 's/pname = \([^\n]*\)/pname = \1\n inherit src;\n/' > $out
'';
} // pkgs.lib.optionalAttrs pkgs.stdenv.isLinux {
LANG = "en_US.UTF-8";
LOCALE_ARCHIVE = "${pkgs.glibcLocales}/lib/locale/locale-archive";
});
in self.callPackage cabalExpr ({ inherit src cabalDrvArgs; } // args);
*/
};
extension = self: super: {
buildLocalCabalWithArgs = args: super.buildLocalCabalWithArgs (args // {
cabal2nix = packages_ghc782.cabal2nix;
});
};
};

View File

@ -847,7 +847,7 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
Cabal = self.Cabal_1_18_1_3;
};
ghcjsDom = callPackage ../development/libraries/haskell/ghcjs-codemirror {};
ghcjsDom = callPackage ../development/libraries/haskell/ghcjs-dom {};
ghcjsCodemirror = callPackage ../development/libraries/haskell/ghcjs-codemirror {};
@ -1342,7 +1342,9 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
lazysmallcheck = callPackage ../development/libraries/haskell/lazysmallcheck {};
lens = callPackage ../development/libraries/haskell/lens {};
lens_4_2 = callPackage ../development/libraries/haskell/lens/4.2.nix {};
lens_4_4 = callPackage ../development/libraries/haskell/lens/4.4.nix {};
lens = self.lens_4_4;
lensDatetime = callPackage ../development/libraries/haskell/lens-datetime {};
@ -2328,6 +2330,7 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
transformersBase = callPackage ../development/libraries/haskell/transformers-base {};
transformersCompat_0_3_3 = callPackage ../development/libraries/haskell/transformers-compat/0.3.3.nix {};
transformersCompat_0_3_3_3 = callPackage ../development/libraries/haskell/transformers-compat/0.3.3.3.nix {};
transformersCompat_0_3_3_4 = callPackage ../development/libraries/haskell/transformers-compat/0.3.3.4.nix {};
transformersCompat = self.transformersCompat_0_3_3_4;
@ -2788,12 +2791,12 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
cabal2nix = callPackage ../development/tools/haskell/cabal2nix {};
# Build a cabal package given a local .cabal file
buildLocalCabalWithArgs = { src, name, args ? {}, cabalDrvArgs ? { jailbreak = true; } }: let
buildLocalCabalWithArgs = { src, name, args ? {}, cabalDrvArgs ? { jailbreak = true; }, cabal2nix }: let
cabalExpr = pkgs.stdenv.mkDerivation ({
name = "${name}.nix";
buildCommand = ''
${self.cabal2nix}/bin/cabal2nix ${src + "/${name}.cabal"} --sha256=FILTERME \
${cabal2nix}/bin/cabal2nix ${src + "/${name}.cabal"} --sha256=FILTERME \
| grep -v FILTERME | sed \
-e 's/licenses.proprietary/licenses.unfree/' \
-e 's/{ cabal/{ cabal, cabalInstall, cabalDrvArgs ? {}, src/' \