{
  nixConfig = {
    extra-trusted-public-keys = ["hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ="];
    extra-substituters = ["https://cache.iog.io"];
  };
  description = "Bayesian phylogentic playground";
  inputs.haskellNix.url = "github:input-output-hk/haskell.nix";
  inputs.nixpkgs.follows = "haskellNix/nixpkgs-unstable";
  inputs.flake-utils.url = "github:numtide/flake-utils";
  outputs = {
    self,
    nixpkgs,
    flake-utils,
    haskellNix,
  }:
    flake-utils.lib.eachSystem ["x86_64-linux"] (system: let
      overlays = [
        haskellNix.overlay
        (final: prev: {
          phylogenies = final.haskell-nix.project' {
            src = ./.;
            compiler-nix-name = "ghc925";
            shell.tools = {
              hlint = {};
              ormolu = {};
            };
            shell.buildInputs = with pkgs; [
            ];
          };
        })
      ];
      pkgs = import nixpkgs {
        inherit system overlays;
        inherit (haskellNix) config;
      };
      flake = pkgs.phylogenies.flake {};
    in
      flake // { packages.default = flake.packages."ppl:lib:ppl";});
}