{ 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 = "/Users/chrg/Develop/repos/hspec-glitter"; }; outputs = { self, nixpkgs, flake-utils, nix-filter, ... } @ inputs: let load = p: n: { "${n}" = p.callCabal2nixWithOptions n (nix-filter.lib {root = "${self}/${n}";}) "" {}; }; packages = final: p: { "language-c" = final.haskell.lib.overrideCabal (p.callCabal2nixWithOptions "language-c" inputs.language-c "" {}) { doCheck = false; }; } // load p "rtree" // 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 hpkgs = (import nixpkgs { inherit system; overlays = [inputs.hspec-glitter.overlays.default overlays]; }) .haskellPackages; in rec { packages = { default = 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 { default = hpkgs.shellFor { name = "rtree-shells"; packages = p: [p.rtree p.rtree-c]; doBenchmark = true; inherit nativeBuildInputs withHoogle; }; }; }); }