Skip to content
Snippets Groups Projects
flake.nix 1.05 KiB
Newer Older
{
  outputs = { self, nixpkgs }:
  with nixpkgs.lib;
  let
Jens Nolte's avatar
Jens Nolte committed
    systems = platforms.unix;
    forAllSystems = genAttrs systems;
Jens Nolte's avatar
Jens Nolte committed
    packages = forAllSystems (system:
      let pkgs = import nixpkgs { inherit system; overlays = [ self.overlay ]; };
      in { quasar = pkgs.haskellPackages.quasar; }
    );

    overlay = final: prev: {
      haskell = prev.haskell // {
        packageOverrides = hfinal: hprev: prev.haskell.packageOverrides hfinal hprev // {
          quasar = import ./. {
            pkgs = final;
            haskellPackages = hfinal;
          };
        };
      };
    };

Jens Nolte's avatar
Jens Nolte committed
    defaultPackage = forAllSystems (system: self.packages.${system}.quasar);

    devShell = forAllSystems (system:
      let
        pkgs = nixpkgs.legacyPackages.${system};
      in pkgs.mkShell {
        inputsFrom = pkgs.lib.mapAttrsToList (k: v: v.env or v) self.packages.${system};
        packages = [
          pkgs.cabal-install
          pkgs.ghcid
          pkgs.haskell-language-server
        ];
      }
    );