53 lines
1.9 KiB
Nix
53 lines
1.9 KiB
Nix
{
|
|
description = "A very basic flake";
|
|
inputs.haskellNix.url = "github:input-output-hk/haskell.nix";
|
|
inputs.nixpkgs.follows = "haskellNix/nixpkgs-unstable";
|
|
inputs.flake-utils.url = "github:numtide/flake-utils";
|
|
outputs = { self, nixpkgs, flake-utils, haskellNix }:
|
|
flake-utils.lib.eachSystem [ "x86_64-linux" "x86_64-darwin" ] (system:
|
|
let
|
|
|
|
overlays-template = (src-input: [ haskellNix.overlay
|
|
(final: prev: {
|
|
# This overlay adds our project to pkgs
|
|
rcv-proj =
|
|
final.haskell-nix.project' {
|
|
src = src-input;
|
|
compiler-nix-name = "ghc8107";
|
|
# This is used by `nix develop .` to open a shell for use with
|
|
# `cabal`, `hlint` and `haskell-language-server`
|
|
shell.tools = {
|
|
cabal = {};
|
|
hlint = {};
|
|
haskell-language-server = {};
|
|
};
|
|
# This adds `js-unknown-ghcjs-cabal` to the shell.
|
|
# shell.crossPlatform = p: [p.ghcjs];
|
|
};
|
|
})
|
|
]);
|
|
|
|
|
|
ghcjs-overlays = overlays-template ./client;
|
|
ghc-overlays = overlays-template ./server;
|
|
|
|
ghcjs-pkgs = (import nixpkgs { inherit system; overlays = ghcjs-overlays; inherit (haskellNix) config; }).pkgsCross.ghcjs;
|
|
|
|
ghc-pkgs = import nixpkgs { inherit system; overlays = ghc-overlays; inherit (haskellNix) config; };
|
|
|
|
ghcjs-flake = ghcjs-pkgs.rcv-proj.flake {
|
|
# This adds support for `nix build .#js-unknown-ghcjs-cabal:hello:exe:hello`
|
|
crossPlatforms = p: [p.ghcjs];
|
|
};
|
|
|
|
ghc-flake = ghc-pkgs.rcv-proj.flake {};
|
|
client = ghcjs-flake.packages."rcv-site-client:exe:client";
|
|
server = ghc-flake.packages."rcv-site-server:exe:server";
|
|
|
|
in ghcjs-flake // {
|
|
packages.server = server;
|
|
packages.client = client;
|
|
# Built by `nix build .`
|
|
defaultPackage = client;
|
|
});
|
|
}
|