Skip to content
Snippets Groups Projects
flake.nix 1.98 KiB
Newer Older
  • Learn to ignore specific revisions
  • chrg's avatar
    chrg committed
    {
      inputs = {
        nixpkgs.url = github:nixos/nixpkgs/nixpkgs-unstable;
        flake-utils.url = github:numtide/flake-utils;
    
    chrg's avatar
    chrg committed
        nix-filter.url = github:numtide/nix-filter;
    
    chrg's avatar
    chrg committed
        language-c = {
          url = github:kalhauge/language-c;
          flake = false;
        };
    
        hspec-glitter.url = "/Users/chrg/Develop/repos/hspec-glitter";
    
    chrg's avatar
    chrg committed
      };
    
    chrg's avatar
    chrg committed
      outputs = {
        self,
        nixpkgs,
        flake-utils,
    
    chrg's avatar
    chrg committed
        nix-filter,
    
    chrg's avatar
    chrg committed
        ...
      } @ inputs: let
    
        load = final: p: n: {
    
    chrg's avatar
    chrg committed
          "${n}" =
    
            final.haskell.lib.overrideCabal
            (p.callCabal2nixWithOptions n (nix-filter.lib {root = "${self}/${n}";}) "" {}) {
              doCheck = true;
            };
    
    chrg's avatar
    chrg committed
        };
    
    chrg's avatar
    chrg committed
        packages = final: p:
          {
            "language-c" =
              final.haskell.lib.overrideCabal
              (p.callCabal2nixWithOptions "language-c" inputs.language-c "" {}) {
                doCheck = false;
              };
          }
    
          // load final p "rtree"
          // load final p "rtree-c";
    
    chrg's avatar
    chrg committed
        overlays = final: prev: {
          haskellPackages = prev.haskellPackages.extend (p: _: packages final p);
        };
      in
    
    chrg's avatar
    chrg committed
        {
          overlays.default = overlays;
    
    chrg's avatar
    chrg committed
        }
        // flake-utils.lib.eachDefaultSystem
        (system: let
          hpkgs =
            (import nixpkgs {
    
    chrg's avatar
    chrg committed
              inherit system;
    
              overlays = [inputs.hspec-glitter.overlays.default overlays];
    
    chrg's avatar
    chrg committed
            })
            .haskellPackages;
        in rec {
          packages = {
    
    chrg's avatar
    chrg committed
            default = hpkgs.rtree-c;
    
    chrg's avatar
    chrg committed
            rtree = hpkgs.rtree;
    
    chrg's avatar
    chrg committed
            rtree-c = hpkgs.rtree-c;
    
    chrg's avatar
    chrg committed
          };
          devShells = let
    
    chrg's avatar
    chrg committed
            nativeBuildInputs = with hpkgs; [
    
    chrg's avatar
    chrg committed
              cabal-install
              ghcid
              haskell-language-server
              hpack
              fourmolu
    
    chrg's avatar
    chrg committed
              hspec-golden
    
    chrg's avatar
    chrg committed
            ];
            withHoogle = true;
          in {
            default =
              hpkgs.shellFor
    
    chrg's avatar
    chrg committed
              {
    
    chrg's avatar
    chrg committed
                name = "rtree-shells";
    
                packages = p: [
                  p.rtree
                  p.rtree-c
                ];
    
    chrg's avatar
    chrg committed
                doBenchmark = true;
    
                doCheck = true;
    
    chrg's avatar
    chrg committed
                inherit nativeBuildInputs withHoogle;
    
    chrg's avatar
    chrg committed
              };
    
    chrg's avatar
    chrg committed
          };
        });
    
    chrg's avatar
    chrg committed
    }