{ description = "Haskell file poger (Effective Haskell)"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs"; flake-utils.url = "github:numtide/flake-utils"; pre-commit-hooks.url = "github:cachix/pre-commit-hooks.nix"; pre-commit-hooks.inputs.nixpkgs.follows = "nixpkgs"; }; outputs = { self, nixpkgs, flake-utils, pre-commit-hooks }: flake-utils.lib.eachSystem [ "x86_64-linux" ] (system: let pkgs = nixpkgs.legacyPackages.${system}; haskellPackages = pkgs.haskell.packages.ghc924; jailbreakUnbreak = pkg: pkgs.haskell.lib.doJailbreak (pkg.overrideAttrs (_: { meta = { }; })); packageName = "hcat"; in { packages.${packageName} = haskellPackages.callCabal2nix packageName self { }; packages.default = self.packages.${system}.${packageName}; apps = { # run with: nix run #.hcat hcat = { type = "app"; program = "${self.packages.${system}.default}/bin/hcat"; }; # run with: nix run default = self.apps.${system}.hcat; }; checks = { pre-commit-check = pre-commit-hooks.lib.${system}.run { src = ./.; settings = { ormolu.defaultExtensions = [ "GHC2021" ]; }; tools.fourmolu = haskellPackages.fourmolu; hooks = { nixfmt.enable = true; fourmolu.enable = true; hpack.enable = true; hlint.enable = true; doctest = { enable = false; name = "Run documentation tests"; entry = "${haskellPackages.doctest}/bin/doctest src app"; files = "\\.l?hs$"; pass_filenames = false; }; }; }; }; devShells.default = haskellPackages.shellFor { inherit (self.checks.${system}.pre-commit-check) shellHook; packages = _: [ self.packages.${system}.default ]; withHoogle = true; nativeBuildInputs = with pkgs; [ haskellPackages.haskell-language-server haskellPackages.fourmolu cabal-install ghcid nixfmt hpack hlint haskellPackages.doctest ]; }; }); }