Skip to content

Instantly share code, notes, and snippets.

@mpickering
Created September 21, 2017 12:42
Show Gist options
  • Save mpickering/4c4a0969828f8dc486be488afa4cacac to your computer and use it in GitHub Desktop.
Save mpickering/4c4a0969828f8dc486be488afa4cacac to your computer and use it in GitHub Desktop.
{ reflex-platform ? import ./reflex-platform.nix
, compiler ? "ghcjs"
} :
let
pkgs = reflex-platform.nixpkgs.pkgs;
haskellPackages = reflex-platform.${compiler}.override {
overrides = self: super: {
wai-middleware-static = pkgs.haskell.lib.dontCheck (super.wai-middleware-static); }; };
adjust-for-ghcjs = drv: {
executableToolDepends = [pkgs.closurecompiler pkgs.zopfli];
doHaddock = false;
doCheck = false;
postInstall = ''
mkdir -p $out
mkdir -p $out/css/reflex/basics-exercises
cp -r ./css/exercises $out/css/reflex/basics-exercises/
cp -r ./css/solutions $out/css/reflex/basics-exercises/
mkdir -p $out/js/reflex/basics-exercises
cp $out/bin/solutions.jsexe/all.js $out/js/reflex/basics-exercises/solutions.js
cd $out/bin/solutions.jsexe
closure-compiler all.js --compilation_level=ADVANCED_OPTIMIZATIONS --isolation_mode=IIFE --assume_function_wrapper --jscomp_off="*" --externs=all.js.externs > $out/js/reflex/basics-exercises/solutions.min.js
rm -Rf $out/bin/solutions.jsexe
rm -Rf $out/bin
cd $out/js/reflex/basics-exercises
zopfli -i1000 solutions.min.js
rm -Rf $out/lib
rm -Rf $out/nix-support
rm -Rf $out/share
'';
};
adjust = drv:
if compiler == "ghcjs"
then adjust-for-ghcjs drv
else adjust-for-ghcjs drv;
exercises = pkgs.haskell.lib.overrideCabal (haskellPackages.callPackage ./exercises.nix {}) adjust;
in
exercises
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment