83 lines
2.3 KiB
Nix
83 lines
2.3 KiB
Nix
{
|
|
inputs = {
|
|
haskellNix.url = "github:input-output-hk/haskell.nix";
|
|
# nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
|
nixpkgs.follows = "haskellNix/nixpkgs-unstable";
|
|
};
|
|
|
|
outputs = { self, nixpkgs, haskellNix, ... }@inputs:
|
|
let
|
|
supportedSystems = [
|
|
"aarch64-darwin" "aarch64-linux"
|
|
"x86_64-darwin" "x86_64-linux"
|
|
];
|
|
|
|
overlays = [
|
|
haskellNix.overlay
|
|
(final: _prev: {
|
|
# This overlay adds our project to pkgs
|
|
qbe-hs = final.haskell-nix.project' {
|
|
src = ./.;
|
|
compiler-nix-name = "ghc912";
|
|
# 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 = {};
|
|
};
|
|
# Non-Haskell shell tools go here
|
|
shell.buildInputs = with final; [
|
|
gcc
|
|
qbe
|
|
];
|
|
# passthru = { inherit (final) qbe; };
|
|
# This adds `js-unknown-ghcjs-cabal` to the shell.
|
|
# shell.crossPlatforms = p: [p.ghcjs];
|
|
};
|
|
})
|
|
];
|
|
|
|
each-system = f: nixpkgs.lib.genAttrs supportedSystems (system: f rec {
|
|
pkgs = import nixpkgs {
|
|
inherit system overlays;
|
|
};
|
|
inherit (pkgs) lib;
|
|
inherit system;
|
|
});
|
|
|
|
# haskell-flake
|
|
hf =
|
|
let
|
|
keys = [
|
|
"packages" "apps" "devShells"
|
|
"hydraJobs" "ciJobs" "checks"
|
|
];
|
|
in nixpkgs.lib.genAttrs keys
|
|
(k: each-system ({ pkgs, ... }: (pkgs.qbe-hs.flake {}).${k}));
|
|
in {
|
|
# Exposed as a REPL convenience.
|
|
_pkgs = each-system ({ pkgs, ... }: pkgs);
|
|
|
|
packages = each-system ({ pkgs, system, ... }:
|
|
hf.packages.${system} // {
|
|
default = hf.packages.${system}."qbe:lib:qbe";
|
|
});
|
|
|
|
devShells = each-system
|
|
({ pkgs, system, ... }: hf.devShells.${system});
|
|
};
|
|
|
|
nixConfig = {
|
|
extra-substituters = [
|
|
"https://cache.iog.io"
|
|
"https://cache.zw3rk.com"
|
|
];
|
|
extra-trusted-public-keys = [
|
|
"hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ="
|
|
"loony-tools:pr9m4BkM/5/eSTZlkQyRt57Jz7OMBxNSUiMC4FkcNfk="
|
|
];
|
|
allow-import-from-derivation = "true";
|
|
};
|
|
}
|