{
  description = "Horizon Haskell: Moon Base";

  inputs = {
    flake-parts.url = "github:hercules-ci/flake-parts";
    horizon-hoogle.url = "git+https://gitlab.horizon-haskell.net/nix/horizon-hoogle";
    horizon-advance.url = "git+https://gitlab.horizon-haskell.net/package-sets/horizon-advance?ref=lts/ghc-9.8.x";
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
  };

  outputs = inputs:
    inputs.flake-parts.lib.mkFlake { inherit inputs; }
      {
        systems = [
          "aarch64-darwin"
          "aarch64-linux"
          "x86_64-darwin"
          "x86_64-linux"
        ];
        imports = [
          inputs.horizon-hoogle.flakeModule
        ];
        perSystem = { pkgs, system, ... }:
          with pkgs.lib;
          let
            modifiers = import ./modifiers.nix { inherit pkgs; };
            overrides = composeManyExtensions [
              (import ./overlay.nix { inherit pkgs; f = modifiers; })
            ];

            legacyPackages = inputs.horizon-advance.legacyPackages.${system}.extend overrides;

            packages = filterAttrs (_: isDerivation) legacyPackages;

          in
          {

            inherit legacyPackages;
            inherit packages;
          };
      };
}