packages feed

fcf-containers-0.8.1: flake.nix

{
  description = "Data structures and algorithms for first-class-families";

  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
    nix-filter.url = "github:numtide/nix-filter/master";
  };

  outputs = { self, nixpkgs, nix-filter }: 
    let
      pkgs = import nixpkgs { system = "x86_64-linux"; };

      # filter = import nix-filter { };

      ghcVersion = "925";

      src = nix-filter.lib {
        root = ./.;
        include = [
          (nix-filter.lib.inDirectory "src")
          (nix-filter.lib.inDirectory "examples")
          (nix-filter.lib.inDirectory "test")
          (nix-filter.lib.matchExt "hs")
          ./fcf-containers.cabal
          ./cabal.project
          ./LICENSE
        ];
      };

      fcf-containers = hself: hself.callCabal2nix "fcf-containers" src {};

      myHaskellPackages = pkgs.haskell.packages."ghc${ghcVersion}".override {
        overrides = hself: hsuper: {
          # fcf-containers = hself.callCabal2nix "fcf-containers" sources.fcf-containers {};
          # fcf-containers = (import sources.fcf-containers {});
          fcf-containers = fcf-containers hself;
          # ListLike = pkgs.haskell.lib.dontCheck hsuper.ListLike;
          # type-of-html = pkgs.haskell.lib.doBenchmark (hself.callPackage ./nix/type-of-html.nix {inherit src;});
          # type-of-html = hself.callCabal2nix "type-of-html" src {};
          # optics-core = hsuper.optics-core.overrideAttrs(old: {
          #   configureFlags = "-f explicit-generic-labels";
          #   patches = [./optics-core.patch];
          # });
        };
      };

      shell = myHaskellPackages.shellFor {
        packages = p: [
          p.fcf-containers
        ];
        buildInputs = with pkgs.haskell.packages."ghc${ghcVersion}"; [
          myHaskellPackages.cabal-install
          ghcid
          (pkgs.haskell-language-server.override { supportedGhcVersions = [ "${ghcVersion}" ]; })
          hlint
          # implicit-hie
          # cabal2nix
        ];
        withHoogle = true;
        doBenchmark = true;
      };

    in
      {
        library = fcf-containers;
        # packages.x86_64-linux.default = ;
        devShell.x86_64-linux = shell;
      };
}