99 lines
2.7 KiB
Nix
99 lines
2.7 KiB
Nix
{
|
|
inputs = {
|
|
haskellNix.url = "github:input-output-hk/haskell.nix";
|
|
# nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
|
nixpkgs.follows = "haskellNix/nixpkgs-unstable";
|
|
sydpkgs = {
|
|
url = "git+https://git.deertopia.net/msyds/sydpkgs";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
};
|
|
|
|
outputs = { self, nixpkgs, sydpkgs, haskellNix, ... }@inputs:
|
|
let
|
|
supportedSystems = [
|
|
"aarch64-darwin" "aarch64-linux"
|
|
"x86_64-darwin" "x86_64-linux"
|
|
];
|
|
|
|
overlays = [
|
|
haskellNix.overlay
|
|
(final: prev: {
|
|
inherit (sydpkgs.packages.${final.stdenv.hostPlatform.system})
|
|
bdwgc;
|
|
})
|
|
(final: prev: {
|
|
gyehoek = final.haskell-nix.project' {
|
|
src = ./.;
|
|
compiler-nix-name = "ghc912";
|
|
shell = {
|
|
withHoogle = true;
|
|
inputsFrom = [
|
|
self.packages.${final.stdenv.hostPlatform.system}.runtime
|
|
];
|
|
tools = {
|
|
cabal = {};
|
|
haskell-language-server = {};
|
|
};
|
|
buildInputs = with final; [
|
|
gcc
|
|
qbe
|
|
haskellPackages.cabal-fmt
|
|
bdwgc
|
|
pkg-config
|
|
guile
|
|
clang-tools # clangd
|
|
gdb
|
|
gdbgui
|
|
rust-analyzer
|
|
];
|
|
};
|
|
};
|
|
})
|
|
];
|
|
|
|
each-system = f: nixpkgs.lib.genAttrs supportedSystems (system: f rec {
|
|
pkgs = import nixpkgs {
|
|
inherit system overlays;
|
|
};
|
|
inherit (pkgs) lib;
|
|
inherit system;
|
|
});
|
|
|
|
hf =
|
|
let
|
|
keys = [
|
|
"packages" "apps" "devShells"
|
|
"hydraJobs" "ciJobs" "checks"
|
|
];
|
|
in nixpkgs.lib.genAttrs keys
|
|
(k: each-system ({ pkgs, ... }: (pkgs.gyehoek.flake {}).${k}));
|
|
in {
|
|
# Exposed as a REPL convenience.
|
|
_pkgs = each-system ({ pkgs, ... }: pkgs);
|
|
_hf = hf;
|
|
|
|
packages = each-system ({ pkgs, system, ... }:
|
|
hf.packages.${system} // {
|
|
default = hf.packages.${system}."gyehoek:exe:gyehoek";
|
|
runtime = pkgs.callPackage ./runtime {};
|
|
inherit (pkgs) bdwgc;
|
|
});
|
|
|
|
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";
|
|
};
|
|
}
|