{ pkgs ? import sources.nixpkgs { overlays = [ (import ./pkgs { }) (self: super: { haskell = super.haskell // { packageOverrides = self.lib.composeManyExtensions [ super.haskell.packageOverrides (self: super: { ghcWithPackages = super.ghcWithPackages.override { installDocumentation = false; # XXX true (default) }; }) ]; }; }) ]; } , sources ? import ./nix/sources.nix }: let haskellPackages = pkgs.haskell.packages.ghc910; jsHaskellPackages = pkgs.pkgsCross.ghcjs.haskell.packages.ghc910; lib = pkgs.lib; in rec { inherit (haskellPackages) acms; inherit (jsHaskellPackages) frontend; shell = pkgs.mkShell { inputsFrom = [ (jsHaskellPackages.shellFor { packages = _: [ jsHaskellPackages.acms jsHaskellPackages.autotypes jsHaskellPackages.frontend ]; }) (haskellPackages.shellFor { packages = _: [ haskellPackages.acms haskellPackages.autotypes haskellPackages.frontend ]; withHoogle = true; withHaddock = true; }) (pkgs.mkShell { buildInputs = [ haskellPackages.astore haskellPackages.autotypes haskellPackages.cabal-install haskellPackages.haskell-language-server haskellPackages.ormolu pkgs.niv pkgs.pkg-config (pkgs.writeScriptBin "reload" '' set -efu ${haskellPackages.ghcid.bin}/bin/ghcid -c \ '${haskellPackages.cabal-install}/bin/cabal new-repl' \ -T ':run Main.main' '') (pkgs.writeScriptBin "acms" '' set -efu exec ${haskellPackages.cabal-install}/bin/cabal run acms -- "$@" '') (pkgs.writeScriptBin "format" '' set -efu git ls-files | grep .hs$ | while read -r fn; do ${haskellPackages.ormolu}/bin/ormolu -i "$fn" || : done '') (pkgs.writeScriptBin "git-hook-precommit" '' set -efux cd ${lib.escapeShellArg (toString ./.)} nix-build . -A acms -A frontend --no-out-link nix-build tests.nix --no-out-link '') ]; shellHook = '' export EM_CACHE="${toString ./.}/.emcache" # nixos/nixpkgs#282509 ''; }) ]; }; }