packages feed

symantic-base-0.5.0.20221211: flake.nix

{
  inputs = {
    nixpkgs.url = "flake:nixpkgs";
    pre-commit-hooks.url = "github:cachix/pre-commit-hooks.nix";
    pre-commit-hooks.inputs.nixpkgs.follows = "nixpkgs";
  };
  outputs = inputs:
    let
      pkg = "symantic-base";
      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} = buildFromSdist (hfinal.callCabal2nix pkg ./. { });
        });
      });
    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
            pkgs.git-chglog
            pkgs.reuse
          ];
          withHoogle = false;
          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;
          };
        };
      });
    };
}