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+https://git.code.sourcephile.fr/~julm/symantic-base?ref=main";
7 symantic-base.inputs.nixpkgs.follows = "nixpkgs";
8 url-slug.url = "github:srid/url-slug";
9 url-slug.inputs.nixpkgs.follows = "nixpkgs";
14 lib = inputs.nixpkgs.lib;
15 forAllSystems = f: lib.genAttrs lib.systems.supported.hydra (system: f rec {
17 pkgs = inputs.nixpkgs.legacyPackages.${system};
18 haskellPackages = pkgs.haskellPackages.extend (with pkgs.haskell.lib; hfinal: hsuper: {
19 ${pkg} = buildFromSdist (hfinal.callCabal2nix pkg ./. { });
20 symantic-base = buildFromSdist (hfinal.callCabal2nix "symantic-base" inputs.symantic-base { });
21 url-slug = buildFromSdist (hfinal.callCabal2nix "url-slug" inputs.url-slug { });
27 defaultPackage = forAllSystems ({ haskellPackages, ... }: haskellPackages.${pkg});
28 # nix -L develop or direnv allow
29 devShell = forAllSystems ({ pkgs, haskellPackages, system, ... }:
30 haskellPackages.shellFor {
31 packages = ps: [ ps.${pkg} ];
33 haskellPackages.cabal-install
35 haskellPackages.haskell-language-server
41 inherit (checks.${system}.pre-commit-check) shellHook;
44 checks = forAllSystems (args: with args; {
45 pre-commit-check = inputs.pre-commit-hooks.lib.${system}.run {
47 settings.ormolu.defaultExtensions = [
53 nixpkgs-fmt.enable = true;
54 fourmolu.enable = true;
55 cabal-fmt.enable = true;