{ inputs = { nixpkgs.url = github:nixos/nixpkgs/nixpkgs-unstable; flake-utils.url = github:numtide/flake-utils; nix-filter.url = github:numtide/nix-filter; language-c = { url = github:kalhauge/language-c; flake = false; }; hspec-glitter.url = github:kalhauge/hspec-glitter; }; outputs = { self, nixpkgs, flake-utils, nix-filter, ... } @ inputs: let load = p: n: p.callCabal2nixWithOptions n (nix-filter.lib {root = "${self}/${n}";}) "" {}; packages = final: p: let lib = final.haskell.lib; in { "language-c" = lib.overrideCabal (p.callCabal2nixWithOptions "language-c" inputs.language-c "" {}) { doCheck = false; }; "rtree" = lib.dontCheck (load p "rtree"); "rtree-c" = lib.dontCheck (load p "rtree-c"); }; overlays = final: prev: { haskellPackages = prev.haskellPackages.extend (p: _: packages final p); }; in { overlays.default = overlays; } // flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; overlays = [inputs.hspec-glitter.overlays.default overlays]; }; lib = pkgs.haskell.lib; hpkgs = pkgs.haskellPackages; in rec { packages = { default = lib.justStaticExecutables (hpkgs.rtree-c); rtree = hpkgs.rtree; rtree-c = hpkgs.rtree-c; }; devShells = let nativeBuildInputs = with hpkgs; [ cabal-install ghcid haskell-language-server hpack fourmolu hspec-golden ]; withHoogle = true; in { rtree = hpkgs.rtree; default = hpkgs.shellFor { name = "rtree-shells"; packages = p: [ (lib.doCheck p.rtree) (lib.doCheck p.rtree-c) ]; doBenchmark = true; doCheck = true; inherit nativeBuildInputs withHoogle; }; }; }); }