let
  pkgs = import <nixpkgs> {};
  hsEnv = pkgs.haskellPackages.ghcWithPackages (hsPkgs : with hsPkgs; [
    mtl
  ]);
in

pkgs.myEnvFun {
  name = "hack";
  buildInputs = with pkgs; [
    hsEnv
  ];

  # XXX https://nixos.org/wiki/Haskell says:
  #   Since tools (such as hdevtools [snap-loader-dynamic in our case]) that
  #   rely on the ghc-api to do haskell language manipulation are sensitive
  #   to nix-wrapping of ghc, we need the extraCmds line to ensure the
  #   proper ghc-wrapping environment variables are set inside the
  #   dev-environment shell.
  extraCmds = ''
    $(grep export ${hsEnv.outPath}/bin/ghc)
  '';
}