{ pkgs ? import sources.nixpkgs { } , sources ? import ./nix/sources.nix }: let haskellPackages = pkgs.haskell.packages.ghc98.override { overrides = self: super: { astore = self.callCabal2nix "astore" sources.json2sql { }; autotypes = self.callCabal2nix "autotypes" ./autotypes { }; backend = self.callCabal2nix "backend" ./backend { }; frontend = self.callCabal2nix "frontend" ./frontend { }; websockets = pkgs.haskell.lib.doJailbreak super.websockets; }; }; jsHaskellPackages = pkgs.pkgsCross.ghcjs.haskell.packages.ghc98.override { overrides = self: super: { frontend = self.callCabal2nix "frontend" ./frontend { }; }; }; in rec { inherit (haskellPackages) backend; inherit (jsHaskellPackages) frontend; shell = haskellPackages.shellFor { packages = _: [ haskellPackages.autotypes haskellPackages.backend haskellPackages.frontend ]; buildInputs = [ haskellPackages.cabal-install haskellPackages.ormolu (pkgs.writeScriptBin "reload" '' set -efu ${haskellPackages.ghcid.bin}/bin/ghcid -c \ '${haskellPackages.cabal-install}/bin/cabal new-repl' \ -T ':run Main.main' '') ]; withHoogle = true; withHaddock = true; }; }