{ # a common build function # # see example usage in pack/ibb.nix. this is not set in stone, obviously. we # should figure out how to use overlays, for one. # bild = file: { nixpkgs }: with nixpkgs; let pack = import file; depsToPackageSet = packageSet: deps: map (s: builtins.getAttr s packageSet) deps; ghc = pkgs.haskell.packages.ghc844.ghcWithPackages (hp: # we need hinotify for chip/make depsToPackageSet hp ([ "hinotify" ] ++ pack.deps.both ++ pack.deps.apex)); ghcjs_ = pkgs.haskell.packages.ghcjs.override (oldAttrs: { overrides = with pkgs.haskell.lib; self: super: { http-types = dontCheck super.http-types; tasty-quickcheck = dontCheck super.tasty-quickcheck; scientific = dontCheck super.scientific; # takes forever servant = dontCheck super.servant; comonad = dontCheck super.comonad; QuickCheck = dontCheck super.QuickCheck; }; }); ghcjs = ghcjs_.ghcWithPackages (hp: depsToPackageSet hp (pack.deps.both ++ pack.deps.aero)); make = ../chip/make; in stdenv.mkDerivation { name = pack.name; version = "0"; src = ../.; nativeBuildInputs = [ ghc ghcjs ]; strictDeps = true; buildPhase = "${ghc}/bin/runhaskell ${make} ${pack.name}"; installPhase = '' mkdir -p $out/bin cp bild/${pack.name} $out/bin/${pack.name} ''; }; }