-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathflake.nix
More file actions
71 lines (66 loc) · 2.01 KB
/
flake.nix
File metadata and controls
71 lines (66 loc) · 2.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
{
description = "The Haven programming language";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs { inherit system; };
llvmPkgs = pkgs.llvmPackages_18;
llvmCmakeDir = "${llvmPkgs.libllvm.dev}/lib/cmake/llvm";
llvmOcaml =
(pkgs.ocamlPackages.callPackage (pkgs.path + "/pkgs/development/ocaml-modules/llvm") {
libllvm = llvmPkgs.libllvm;
}).overrideAttrs
(old: {
patches = (old.patches or [ ]) ++ [ ./nix/ocaml-llvm-macos-ext-dll.patch ];
});
havenLegacy = pkgs.callPackage ./default.nix { inherit llvmPkgs llvmCmakeDir self; stdenv = llvmPkgs.stdenv; };
havenOcaml = pkgs.callPackage ./src/default.nix {
inherit llvmOcaml;
llvmPackages = llvmPkgs;
repoSrc = ./.;
};
in {
apps.default = {
type = "app";
program = "${havenOcaml}/bin/haven";
meta = with pkgs.lib; {
description = "The Haven programming language";
license = licenses.mit;
};
};
packages.default = havenOcaml;
packages.ocaml = havenOcaml;
packages.ml = havenOcaml;
packages.legacy = havenLegacy;
checks.default = havenOcaml;
checks.ocaml = havenOcaml;
devShells.default = pkgs.mkShell {
nativeBuildInputs = with pkgs; [
cmake
ninja
pkg-config
dune_3
ocamlPackages.ocaml
ocamlPackages.cmdliner
ocamlPackages.fmt
ocamlPackages.linol-lwt
ocamlPackages.logs
ocamlPackages.menhir
ocamlPackages.sedlex
ocamlPackages.yojson
llvmPkgs.clang
llvmPkgs.libllvm
llvmPkgs.lld
llvmOcaml
gtest
gbenchmark
doxygen
];
CMAKE_PREFIX_PATH = llvmCmakeDir;
};
});
}