]> Git — Sourcephile - tmp/julm/symantic.git/blob - flake.nix
init
[tmp/julm/symantic.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://git.sourcephile.fr/haskell/symantic-base";
7 symantic-base.inputs.nixpkgs.follows = "nixpkgs";
8 };
9 outputs = inputs:
10 let
11 pkg = "symantic";
12 lib = inputs.nixpkgs.lib;
13 forAllSystems = f: lib.genAttrs lib.systems.flakeExposed (system: f rec {
14 inherit system;
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 { });
19 });
20 });
21 in
22 rec {
23 # nix -L build
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} ];
29 nativeBuildInputs = [
30 haskellPackages.cabal-install
31 haskellPackages.ghcid
32 haskellPackages.haskell-language-server
33 haskellPackages.hlint
34 #haskellPackages.stan
35 pkgs.git-chglog
36 pkgs.reuse
37 ];
38 withHoogle = false;
39 doBenchmark = true;
40 inherit (checks.${system}.pre-commit-check) shellHook;
41 });
42 # nix flake check
43 checks = forAllSystems (args: with args; {
44 pre-commit-check = inputs.pre-commit-hooks.lib.${system}.run {
45 src = ./.;
46 #settings.ormolu.cabalDefaultExtensions = true;
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 }