{ description = "Haskell project"; inputs = { nixpkgs.url = "github:nixos/nixpkgs"; nix-filter.url = "github:numtide/nix-filter"; flake-parts.url = "github:hercules-ci/flake-parts"; systems.url = "github:nix-systems/default"; }; outputs = inputs@{ self, flake-parts, nixpkgs, nix-filter, ... }: flake-parts.lib.mkFlake { inherit self inputs; } { systems = import inputs.systems; flake.overlays.default = final: prev: { haskellPackages = prev.haskellPackages.extend ( hfinal: _hprev: { PROJECT = let src = nix-filter { root = ./.; include = [ "src" "app" "package.yaml" "PROJECT.cabal" ]; }; in hfinal.callCabal2nix "PROJECT" src { }; } ); }; perSystem = { config, pkgs, system, ... }: { _module.args.pkkgs = import nixpkgs { inherit system; overlays = [ self.overlays.default ]; }; packages = rec { default = PROJECT; inherit (pkgs.haskellPackages) PROJECT; }; devShells.default = pkgs.haskellPackages.shellFor { packages = ps: [ ]; withHoogle = true; buildInputs = with pkgs.haskellPackages; [ cabal-install hpack hlint fast-tags pkgs.haskell-language-server ]; }; }; }; }