summaryrefslogtreecommitdiff
path: root/com/simatime/buildHaskellApp.nix
diff options
context:
space:
mode:
Diffstat (limited to 'com/simatime/buildHaskellApp.nix')
-rw-r--r--com/simatime/buildHaskellApp.nix90
1 files changed, 0 insertions, 90 deletions
diff --git a/com/simatime/buildHaskellApp.nix b/com/simatime/buildHaskellApp.nix
deleted file mode 100644
index ff9c741..0000000
--- a/com/simatime/buildHaskellApp.nix
+++ /dev/null
@@ -1,90 +0,0 @@
-
-nixpkgs:
-
-{
- # the namespace. We can't figure this out with Nix code, but when we port to
- # guix/scheme we should be able to
- name
-, nick # a short name, for the executable
-, apex # compiled with ghc
-, aero # compiled with ghcjs
- # deps get passed to the compilers
-, deps
-
-}:
-
-with nixpkgs;
-
-let
- nsToPath = ns: builtins.toString (builtins.replaceStrings ["."] ["/"] ns);
- aeroPath = nsToPath aero;
- apexPath = nsToPath apex;
- basePath = lib.strings.removeSuffix "/Apex" apexPath;
-
- depsToPackageSet = packageSet: deps:
- map (s: builtins.getAttr s packageSet) deps;
-
- ghc865_ = pkgs.haskell.packages.ghc865.override (oldAttrs: {
- overrides = with pkgs.haskell.lib; self: super: {
- clay = dontCheck super.clay;
- };
- });
-
- ghc = ghc865_.ghcWithPackages (hp: depsToPackageSet hp
- (deps.both ++ deps.apex));
-
- # ghcjs-8.6.0.1
- ghcjs_ = pkgs.haskell.packages.ghcjs.override (oldAttrs: {
- overrides = with pkgs.haskell.lib; self: super: {
- clay = dontCheck super.clay;
- 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 (deps.both ++ deps.aero));
-
-in {
- env = ghc // ghcjs // guile;
- app = stdenv.mkDerivation {
- name = name;
- version = "0";
- src = ../../.; # this is the git root
- nativeBuildInputs = [
- ghc ghcjs guile
- ];
- strictDeps = true;
- buildPhase = ''
- # capitalize paths for 'ghc --make'
- source .envrc
- guile -e '(com simatime caplinks)' -s ./com/simatime/caplinks.scm .
- #
- mkdir -p $out/{bin,static} ${basePath}
- #
- # compile with ghc
- #
- ${ghc}/bin/ghc -i. --make ${apexPath}.hs -main-is ${apex} \
- -o ${apexPath}
- #
- # compile with ghcjs
- #
- ${ghcjs}/bin/ghcjs -i. --make ${aeroPath}.hs -main-is ${aero} \
- -o ${aeroPath}
- #
- # optimize js output
- #
- ${pkgs.closurecompiler}/bin/closure-compiler \
- --compilation_level ADVANCED_OPTIMIZATIONS \
- --jscomp_off=checkVars \
- --externs=${aeroPath}.jsexe/all.js.externs \
- ${aeroPath}.jsexe/all.js > $out/static/${nick}.js
- '';
- # the install process was handled above
- installPhase = "exit 0";
- };
-}