{ inputs = { nixpkgs.url = github:nixos/nixpkgs/nixpkgs-unstable; flake-utils.url = github:numtide/flake-utils; language-c = { url = github:kalhauge/language-c; flake = false; }; }; outputs = { self, nixpkgs, flake-utils, ... } @ inputs: let packages = final: p: { "rtree" = p.callCabal2nixWithOptions "rtree" "${self}" "" {}; "language-c" = final.haskell.lib.overrideCabal (p.callCabal2nixWithOptions "language-c" inputs.language-c "" {}) { doCheck = false; }; }; 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 = [overlays]; }) .haskellPackages; in rec { packages = { default = hpkgs.rtree; rtree = hpkgs.rtree; }; devShells = let nativeBuildInputs = with hpkgs; [ cabal-install ghcid haskell-language-server hpack fourmolu ]; withHoogle = true; in { default = hpkgs.shellFor { name = "rtree-shell"; packages = p: [p.rtree]; doBenchmark = true; inherit nativeBuildInputs withHoogle; }; }; }); }