3 nixpkgs.url = "flake:nixpkgs";
4 pre-commit-hooks.url = "github:cachix/pre-commit-hooks.nix";
5 pre-commit-hooks.inputs.nixpkgs.follows = "nixpkgs";
6 symantic-base.url = "git://git.sourcephile.fr/haskell/symantic-base";
7 symantic-base.inputs.nixpkgs.follows = "nixpkgs";
12 lib = inputs.nixpkgs.lib;
13 forAllSystems = f: lib.genAttrs lib.systems.flakeExposed (system: f rec {
15 pkgs = inputs.nixpkgs.legacyPackages.${system};
16 haskellPackages = pkgs.haskell.packages.ghc92.extend (with pkgs.haskell.lib; hfinal: hsuper: {
17 ${pkg} = doBenchmark (buildFromSdist (hfinal.callCabal2nix pkg ./. { }));
18 symantic-base = buildFromSdist (hfinal.callCabal2nix "symantic-base" inputs.symantic-base { });
24 defaultPackage = forAllSystems ({ haskellPackages, ... }: haskellPackages.${pkg});
25 # nix -L develop or direnv allow
26 devShell = forAllSystems ({ pkgs, haskellPackages, system, ... }:
27 haskellPackages.shellFor {
28 packages = ps: [ ps.${pkg} ];
30 haskellPackages.cabal-install
32 haskellPackages.haskell-language-server
40 inherit (checks.${system}.pre-commit-check) shellHook;
43 checks = forAllSystems (args: with args; {
44 pre-commit-check = inputs.pre-commit-hooks.lib.${system}.run {
46 #settings.ormolu.cabalDefaultExtensions = true;
47 settings.ormolu.defaultExtensions = [
53 nixpkgs-fmt.enable = true;
54 fourmolu.enable = true;
55 cabal-fmt.enable = true;