Skip to content
Snippets Groups Projects
flake.nix 1.56 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;
        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
                buildInputs = with hpkgs; [
                  cabal-install
                  ghcid
                  haskell-language-server
                  hpack
                  fourmolu
                ];
                withHoogle = true;
              in
              {
                default = hpkgs.shellFor
                  {
                    name = "rtree-shell";
                    packages = p:
                      [ p.rtree ];
                    inherit buildInputs withHoogle;
                  };
              };
          });
    }