]> Git — Sourcephile - webc.git/blob - flake.nix
iface: rename `Layouter` to `Generator`
[webc.git] / flake.nix
1 {
2 inputs = {
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";
10 };
11 outputs = inputs:
12 let
13 pkg = "webc";
14 lib = inputs.nixpkgs.lib;
15 forAllSystems = f: lib.genAttrs lib.systems.supported.hydra (system: f rec {
16 inherit system;
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 { });
22 });
23 });
24 in
25 rec {
26 # nix -L build
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} ];
32 nativeBuildInputs = [
33 haskellPackages.cabal-install
34 haskellPackages.ghcid
35 haskellPackages.haskell-language-server
36 haskellPackages.hlint
37 pkgs.git-chglog
38 pkgs.reuse
39 ];
40 withHoogle = false;
41 inherit (checks.${system}.pre-commit-check) shellHook;
42 });
43 # nix flake check
44 checks = forAllSystems (args: with args; {
45 pre-commit-check = inputs.pre-commit-hooks.lib.${system}.run {
46 src = ./.;
47 settings.ormolu.defaultExtensions = [
48 "ImportQualifiedPost"
49 "TypeApplications"
50 ];
51 hooks = {
52 hlint.enable = true;
53 nixpkgs-fmt.enable = true;
54 fourmolu.enable = true;
55 cabal-fmt.enable = true;
56 };
57 };
58 });
59 };
60 }