{ pkgs , cleanedSource , stackFile , pkg-def-extras ? [] }: let # package-desc = import ./plan.nix; # butcher-plan = { # inherit resolver; # extras = hackage: # { butcher = args: package-desc args // { # src = pkgs.haskell-nix.cleanSourceHaskell { # src = pkgs.haskell-nix.haskellLib.cleanGit { src = ./..; name = "butcher"; }; # name = "butcher"; # }; # }; # }; # }; # this does not work at all, does not use local package (!) # butcher-plan = (pkgs.haskell-nix.importAndFilterProject ( # (pkgs.haskell-nix.callStackToNix { # name = "butcher-plan"; # src = ./..; # stackYamlFile = builtins.toFile "stack.yaml" '' # resolver: ${resolver} # packages: # - '.' # extra-deps: [] # extra-package-dbs: [] # ''; # ignorePackageYaml = true; # }) # )); cleanedSource = pkgs.haskell-nix.cleanSourceHaskell { name = "butcher-"+stackFile; src = ./..; }; butcher-nix = pkgs.haskell-nix.callStackToNix { name = "butcher"; src = cleanedSource; stackYaml = stackFile; }; butcher-plan = pkgs.haskell-nix.importAndFilterProject butcher-nix; # butcher-pkgs = { # inherit (butcher-plan.pkgs) modules resolver; # extras = butcher-plan.pkgs.extras ps; # }; generatedCache = pkgs.haskell-nix.genStackCache { src = cleanedSource; stackYaml = stackFile; }; hsPkgs = (pkgs.haskell-nix.mkStackPkgSet { stack-pkgs = butcher-plan.pkgs; pkg-def-extras = pkg-def-extras; modules = pkgs.lib.singleton (pkgs.haskell-nix.mkCacheModule generatedCache); }).config.hsPkgs; in { inherit butcher-plan hsPkgs pkgs; inherit (hsPkgs) butcher; inherit (hsPkgs.butcher) checks; shell = hsPkgs.shellFor { # Include only the *local* packages of your project. packages = ps: with ps; [ butcher ]; # Builds a Hoogle documentation index of all dependencies, # and provides a "hoogle" command to search the index. withHoogle = false; # You might want some extra tools in the shell (optional). # Some common tools can be added with the `tools` argument # tools = { cabal = "3.2.0.0"; }; # See overlays/tools.nix for more details # Some you may need to get some other way. buildInputs = with pkgs.haskellPackages; [ cabal-install ghcid bash pkgs.nix ]; # Prevents cabal from choosing alternate plans, so that # *all* dependencies are provided by Nix. exactDeps = true; }; } # pkgs.haskell-nix.stackProject { # src = pkgs.haskell-nix.haskellLib.cleanGit { src = ./.; name = "butcher"; }; # pkg-def-extras = pkg-def-extras; # modules = [ # { doHaddock = false; } # ]; # }