summaryrefslogtreecommitdiff
path: root/lore
diff options
context:
space:
mode:
authorBen Sima <ben@bsima.me>2019-08-31 00:42:02 -0700
committerBen Sima <ben@bsima.me>2019-08-31 00:42:02 -0700
commit19732ae8d1da6347ab48c1123758fde6ace7a734 (patch)
treeb96f7ca6ea748806735d04f30ce6594837e4517f /lore
parentc72ae999c2850a01901e94ff22956921571cbb73 (diff)
pack: a common bild function
Diffstat (limited to 'lore')
-rw-r--r--lore/bild.nix49
1 files changed, 49 insertions, 0 deletions
diff --git a/lore/bild.nix b/lore/bild.nix
new file mode 100644
index 0000000..8a6d510
--- /dev/null
+++ b/lore/bild.nix
@@ -0,0 +1,49 @@
+{
+ # 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:
+ 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}
+ '';
+ };
+}