{ description = "Haskell Environment"; inputs = { flake-parts.url = "github:hercules-ci/flake-parts"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; treefmt-nix.url = "github:numtide/treefmt-nix"; }; outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } { imports = [ inputs.treefmt-nix.flakeModule ]; perSystem = { pkgs, ... }: let hp = pkgs.haskellPackages; project = hp.callCabal2nix "project" ./. { }; in { devShells.default = hp.shellFor { nativeBuildInputs = builtins.attrValues { inherit (pkgs) nil stylish-haskell ghc ; inherit (hp) cabal-install cabal-gild haskell-language-server ; }; packages = _: [ project ]; }; packages.default = project; treefmt = { programs = { cabal-fmt.enable = true; deadnix.enable = true; hlint.enable = true; nixfmt.enable = true; ormolu.enable = true; statix.enable = true; typstyle.enable = true; yamlfmt.enable = true; }; projectRootFile = "flake.nix"; }; }; systems = [ "x86_64-linux" ]; }; }