-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathflake.nix
102 lines (96 loc) · 2.91 KB
/
flake.nix
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
{
inputs = {
nixpkgs.url = "nixpkgs/nixpkgs-unstable";
flake-utils.url = "github:numtide/flake-utils";
onix = {
url = "github:rizo/onix/3740a2beb84bc21860385f8bbb0d5f557842de03";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs =
{
self,
nixpkgs,
flake-utils,
onix,
}@inputs:
flake-utils.lib.eachDefaultSystem (
system:
let
pkgs = nixpkgs.legacyPackages.${system};
onix' = onix.packages.${system}.latest;
compilerVersion = "5.2.0";
opamFiles = [
./imandra-document.opam
];
onixEnv = onix'.env {
path = ./.;
roots = opamFiles;
lock = ./onix-lock.json;
deps = {
"ocaml-system" = compilerVersion;
};
};
onixEnvDev = onix'.env {
path = ./.;
roots = opamFiles;
lock = ./onix-lock-dev.json;
deps = {
"ocaml-system" = compilerVersion;
"ocaml-lsp-server" = "*";
"utop" = "*";
};
};
onixLock =
let
shellHook = pkgs.writeText "onix-lock-shellHook" onixEnv.lock.shellHook;
lockPatched = pkgs.runCommand "onix-lock-shellHook-patched" { } ''
sed 's:--lock-file=/nix/store/.*/onix-lock.json:--lock-file=./onix-lock.json:' "${shellHook}" > "$out"
chmod +x "$out"
'';
in
pkgs.writeShellApplication {
name = "onix-lock";
runtimeInputs = [ onix' ];
text = lockPatched;
};
onixLockDev =
let
shellHook = pkgs.writeText "onix-lock-dev-shellHook" onixEnvDev.lock.shellHook;
lockPatched = pkgs.runCommand "onix-lock-dev-shellHook-patched" { } ''
sed 's:--lock-file=/nix/store/.*/onix-lock-dev.json:--lock-file=./onix-lock-dev.json:' "${shellHook}" > "$out"
chmod +x "$out"
'';
in
pkgs.writeShellApplication {
name = "onix-lock-dev";
runtimeInputs = [ onix' ];
text = lockPatched;
};
in
rec {
formatter = pkgs.nixfmt-rfc-style;
packages.imandra-document = onixEnv.pkgs.imandra-document;
packages.default = onixEnv.pkgs.imandra-document;
packages.onix-lock = onixLock;
packages.onix-lock-dev = onixLockDev;
devShells.onixLock = pkgs.mkShell {
buildInputs = [
onix'
];
};
devShells.default = onixEnvDev.shell.overrideAttrs (
final: prev: {
buildInputs = prev.buildInputs ++ [
pkgs.ocamlformat_0_22_4
pkgs.dune_3
pkgs.ocaml
onix'
];
}
);
# Allows the default devshell to be cached
packages.devShell-default = devShells.default.inputDerivation;
}
);
}