{ inputs = { nixpkgs.url = "flake:nixpkgs"; #nixpkgs.url = "github:NixOS/nixpkgs/cdead16a444a3e5de7bc9b0af8e198b11bb01804"; pre-commit-hooks.url = "github:cachix/pre-commit-hooks.nix"; pre-commit-hooks.inputs.nixpkgs.follows = "nixpkgs"; #symantic-base.url = "git+file:///home/julm/work/sourcephile/haskell/symantic-base"; symantic-base.url = "git://git.sourcephile.fr/haskell/symantic-base"; symantic-base.inputs.nixpkgs.follows = "nixpkgs"; }; outputs = inputs: let pkg = "literate-web"; lib = inputs.nixpkgs.lib; forAllSystems = f: lib.genAttrs lib.systems.flakeExposed (system: f rec { inherit system; pkgs = inputs.nixpkgs.legacyPackages.${system}; haskellPackages = pkgs.haskellPackages.extend (with pkgs.haskell.lib; hfinal: hsuper: { ${pkg} = doBenchmark (buildFromSdist (hfinal.callCabal2nix pkg ./. { })); symantic-base = buildFromSdist (hfinal.callCabal2nix "symantic-base" inputs.symantic-base { }); #url-slug = buildFromSdist (hfinal.callCabal2nix "url-slug" inputs.url-slug { }); #doctest = dontCheck (doJailbreak (unmarkBroken hsuper.doctest)); #hspec-contrib = dontCheck (doJailbreak (unmarkBroken hsuper.hspec-contrib)); #relude = dontCheck (doJailbreak (unmarkBroken hsuper.relude)); #scotty = dontCheck (doJailbreak (unmarkBroken hsuper.scotty)); mvc = dontCheck (doJailbreak (unmarkBroken hsuper.mvc)); mvc-updates = dontCheck (doJailbreak (unmarkBroken ( appendPatch hsuper.mvc-updates ./0001-mvc-updates-fix-L.pretraverseM.patch))); }); }); in rec { # nix -L build defaultPackage = forAllSystems ({ haskellPackages, ... }: haskellPackages.${pkg}); # nix -L develop or direnv allow devShell = forAllSystems ({ pkgs, haskellPackages, system, ... }: haskellPackages.shellFor { packages = ps: [ ps.${pkg} ]; nativeBuildInputs = [ haskellPackages.cabal-install haskellPackages.ghcid haskellPackages.haskell-language-server haskellPackages.hlint #haskellPackages.stan pkgs.git-chglog pkgs.reuse ]; withHoogle = false; doBenchmark = true; inherit (checks.${system}.pre-commit-check) shellHook; }); # nix flake check checks = forAllSystems (args: with args; { pre-commit-check = inputs.pre-commit-hooks.lib.${system}.run { src = ./.; #settings.ormolu.cabalDefaultExtensions = true; settings.ormolu.defaultExtensions = [ "ImportQualifiedPost" "TypeApplications" ]; hooks = { hlint.enable = true; nixpkgs-fmt.enable = true; fourmolu.enable = true; cabal-fmt.enable = true; }; }; }); }; }