let sources = import ./nix/sources.nix; in { compiler ? "ghc8104", pkgs ? import sources.nixpkgs { } }: let inherit (pkgs.lib.trivial) flip pipe; inherit (pkgs.haskell.lib) appendPatch appendConfigureFlags; haskellPackages = pkgs.haskell.packages.${compiler}.override { overrides = hpNew: hpOld: { hakyll = pipe hpOld.hakyll [ (flip appendPatch ./hakyll.patch) (flip appendConfigureFlags [ "-f" "watchServer" "-f" "previewServer" ]) ]; voc-web = hpNew.callCabal2nix "voc-web" ./. { }; niv = import sources.niv { }; }; }; project = haskellPackages.voc-web; in { project = project; shell = haskellPackages.shellFor { packages = p: with p; [ project ]; buildInputs = with haskellPackages; [ ghcid # GHCi based IDE hlint # or ormolu pkgs.niv # Nix dependency management ]; withHoogle = true; }; }