tangled
alpha
login
or
join now
ryan.freumh.org
/
merry
forked from
patrick.sirref.org/merry
0
fork
atom
Shells in OCaml
0
fork
atom
overview
issues
pulls
pipelines
Flakey flake
Patrick Ferris
1 month ago
5f1044b8
bd72cabf
+255
-4
5 changed files
expand all
collapse all
unified
split
.gitignore
dune-project
flake.lock
flake.nix
merry.opam
+1
.gitignore
···
1
1
+
result
1
2
_build
2
3
test.sh
3
4
fatal.sh
+4
-2
dune-project
···
21
21
(synopsis "A shell library")
22
22
(description "A library for writing shells")
23
23
(depends
24
24
-
morbig
25
24
linenoise
25
25
+
visitors
26
26
re
27
27
terminal
28
28
+
(menhir
29
29
+
(= 20250912))
28
30
(yojson
29
29
-
(>= 2.2.2))
31
31
+
(= 2.2.2))
30
32
(ppxlib
31
33
(>= 0.37.0))
32
34
(ppx_deriving_yojson
+193
flake.lock
···
1
1
+
{
2
2
+
"nodes": {
3
3
+
"flake-compat": {
4
4
+
"flake": false,
5
5
+
"locked": {
6
6
+
"lastModified": 1747046372,
7
7
+
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
8
8
+
"owner": "edolstra",
9
9
+
"repo": "flake-compat",
10
10
+
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
11
11
+
"type": "github"
12
12
+
},
13
13
+
"original": {
14
14
+
"owner": "edolstra",
15
15
+
"repo": "flake-compat",
16
16
+
"type": "github"
17
17
+
}
18
18
+
},
19
19
+
"flake-utils": {
20
20
+
"inputs": {
21
21
+
"systems": "systems"
22
22
+
},
23
23
+
"locked": {
24
24
+
"lastModified": 1731533236,
25
25
+
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
26
26
+
"owner": "numtide",
27
27
+
"repo": "flake-utils",
28
28
+
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
29
29
+
"type": "github"
30
30
+
},
31
31
+
"original": {
32
32
+
"owner": "numtide",
33
33
+
"repo": "flake-utils",
34
34
+
"type": "github"
35
35
+
}
36
36
+
},
37
37
+
"mirage-opam-overlays": {
38
38
+
"flake": false,
39
39
+
"locked": {
40
40
+
"lastModified": 1710922379,
41
41
+
"narHash": "sha256-j4QREQDUf8oHOX7qg6wAOupgsNQoYlufxoPrgagD+pY=",
42
42
+
"owner": "dune-universe",
43
43
+
"repo": "mirage-opam-overlays",
44
44
+
"rev": "797cb363df3ff763c43c8fbec5cd44de2878757e",
45
45
+
"type": "github"
46
46
+
},
47
47
+
"original": {
48
48
+
"owner": "dune-universe",
49
49
+
"repo": "mirage-opam-overlays",
50
50
+
"type": "github"
51
51
+
}
52
52
+
},
53
53
+
"nixpkgs": {
54
54
+
"locked": {
55
55
+
"lastModified": 1770473678,
56
56
+
"narHash": "sha256-2jWALGZyRKEW4ycxfAqG04UuZCqJwt34sfJnJkf4jzo=",
57
57
+
"owner": "nixos",
58
58
+
"repo": "nixpkgs",
59
59
+
"rev": "c03cfff2b79dd525b374df7022ab3499ac12e59d",
60
60
+
"type": "github"
61
61
+
},
62
62
+
"original": {
63
63
+
"owner": "nixos",
64
64
+
"repo": "nixpkgs",
65
65
+
"type": "github"
66
66
+
}
67
67
+
},
68
68
+
"opam-nix": {
69
69
+
"inputs": {
70
70
+
"flake-compat": "flake-compat",
71
71
+
"flake-utils": [
72
72
+
"flake-utils"
73
73
+
],
74
74
+
"mirage-opam-overlays": "mirage-opam-overlays",
75
75
+
"nixpkgs": [
76
76
+
"nixpkgs"
77
77
+
],
78
78
+
"opam-overlays": "opam-overlays",
79
79
+
"opam-repository": [
80
80
+
"opam-repository"
81
81
+
],
82
82
+
"opam2json": "opam2json"
83
83
+
},
84
84
+
"locked": {
85
85
+
"lastModified": 1769900026,
86
86
+
"narHash": "sha256-O1cK8GVRNDKvAXU0mZjqpmftRnAeyDgyP7lf/3P/Pdg=",
87
87
+
"owner": "tweag",
88
88
+
"repo": "opam-nix",
89
89
+
"rev": "1f373ef8c4cc1237a74c681b47bbdbdf7ab185a6",
90
90
+
"type": "github"
91
91
+
},
92
92
+
"original": {
93
93
+
"owner": "tweag",
94
94
+
"repo": "opam-nix",
95
95
+
"type": "github"
96
96
+
}
97
97
+
},
98
98
+
"opam-overlays": {
99
99
+
"flake": false,
100
100
+
"locked": {
101
101
+
"lastModified": 1741116009,
102
102
+
"narHash": "sha256-Z0PIW82fHJFvAv/JYpAffnp2DaOjLhsPutqyIrORZd0=",
103
103
+
"owner": "dune-universe",
104
104
+
"repo": "opam-overlays",
105
105
+
"rev": "e031bb64e33bf93be963e9a38b28962e6e14381f",
106
106
+
"type": "github"
107
107
+
},
108
108
+
"original": {
109
109
+
"owner": "dune-universe",
110
110
+
"repo": "opam-overlays",
111
111
+
"type": "github"
112
112
+
}
113
113
+
},
114
114
+
"opam-repository": {
115
115
+
"flake": false,
116
116
+
"locked": {
117
117
+
"lastModified": 1770398609,
118
118
+
"narHash": "sha256-umhfG0YRCc59Gw7Xm8Um6gPSC6vaJo7knIt9EfULs1Q=",
119
119
+
"owner": "ocaml",
120
120
+
"repo": "opam-repository",
121
121
+
"rev": "340ee6fd1ff10d0fce25e21ba1caca9ed1cfec68",
122
122
+
"type": "github"
123
123
+
},
124
124
+
"original": {
125
125
+
"owner": "ocaml",
126
126
+
"repo": "opam-repository",
127
127
+
"type": "github"
128
128
+
}
129
129
+
},
130
130
+
"opam2json": {
131
131
+
"inputs": {
132
132
+
"nixpkgs": [
133
133
+
"opam-nix",
134
134
+
"nixpkgs"
135
135
+
],
136
136
+
"systems": "systems_2"
137
137
+
},
138
138
+
"locked": {
139
139
+
"lastModified": 1749457947,
140
140
+
"narHash": "sha256-+QVm+HOYikF3wUhqSIV8qJbE/feSG+p48fgxIosbHS0=",
141
141
+
"owner": "tweag",
142
142
+
"repo": "opam2json",
143
143
+
"rev": "0ecd66fc2bfb25d910522c990dd36412259eac1f",
144
144
+
"type": "github"
145
145
+
},
146
146
+
"original": {
147
147
+
"owner": "tweag",
148
148
+
"repo": "opam2json",
149
149
+
"type": "github"
150
150
+
}
151
151
+
},
152
152
+
"root": {
153
153
+
"inputs": {
154
154
+
"flake-utils": "flake-utils",
155
155
+
"nixpkgs": "nixpkgs",
156
156
+
"opam-nix": "opam-nix",
157
157
+
"opam-repository": "opam-repository"
158
158
+
}
159
159
+
},
160
160
+
"systems": {
161
161
+
"locked": {
162
162
+
"lastModified": 1681028828,
163
163
+
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
164
164
+
"owner": "nix-systems",
165
165
+
"repo": "default",
166
166
+
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
167
167
+
"type": "github"
168
168
+
},
169
169
+
"original": {
170
170
+
"owner": "nix-systems",
171
171
+
"repo": "default",
172
172
+
"type": "github"
173
173
+
}
174
174
+
},
175
175
+
"systems_2": {
176
176
+
"locked": {
177
177
+
"lastModified": 1681028828,
178
178
+
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
179
179
+
"owner": "nix-systems",
180
180
+
"repo": "default",
181
181
+
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
182
182
+
"type": "github"
183
183
+
},
184
184
+
"original": {
185
185
+
"owner": "nix-systems",
186
186
+
"repo": "default",
187
187
+
"type": "github"
188
188
+
}
189
189
+
}
190
190
+
},
191
191
+
"root": "root",
192
192
+
"version": 7
193
193
+
}
+54
flake.nix
···
1
1
+
# Mostly copied from RyanGibb/eon
2
2
+
{
3
3
+
inputs = {
4
4
+
nixpkgs.url = "github:nixos/nixpkgs";
5
5
+
opam-nix.url = "github:tweag/opam-nix";
6
6
+
flake-utils.url = "github:numtide/flake-utils";
7
7
+
opam-nix.inputs.nixpkgs.follows = "nixpkgs";
8
8
+
opam-nix.inputs.flake-utils.follows = "flake-utils";
9
9
+
# maintain a different opam-repository to those pinned upstream
10
10
+
opam-repository = {
11
11
+
url = "github:ocaml/opam-repository";
12
12
+
flake = false;
13
13
+
};
14
14
+
self.submodules = true;
15
15
+
opam-nix.inputs.opam-repository.follows = "opam-repository";
16
16
+
};
17
17
+
outputs = { self, nixpkgs, flake-utils, opam-nix, ... }@inputs:
18
18
+
# create outputs for each default system
19
19
+
flake-utils.lib.eachDefaultSystem (system:
20
20
+
let
21
21
+
package = "merry";
22
22
+
pkgs = nixpkgs.legacyPackages.${system};
23
23
+
opam-nix-lib = opam-nix.lib.${system};
24
24
+
devPackagesQuery = {
25
25
+
ocaml-lsp-server = "*";
26
26
+
ocamlformat = "*";
27
27
+
utop = "*";
28
28
+
};
29
29
+
query = {
30
30
+
ocaml-base-compiler = "*";
31
31
+
};
32
32
+
scope =
33
33
+
# recursive finds vendored dependancies in duniverse
34
34
+
opam-nix-lib.buildOpamProject' { recursive = true; } ./. (query // devPackagesQuery);
35
35
+
in {
36
36
+
packages.default = scope.${package};
37
37
+
defaultPackage = scope.${package};
38
38
+
39
39
+
devShells.default = let
40
40
+
devPackages = builtins.attrValues
41
41
+
(pkgs.lib.getAttrs (builtins.attrNames devPackagesQuery) scope);
42
42
+
in pkgs.mkShell {
43
43
+
inputsFrom = [ scope.${package} ];
44
44
+
buildInputs = devPackages;
45
45
+
};
46
46
+
}) // {
47
47
+
nixosModules = {
48
48
+
default.imports = [ (import ./module.nix self.packages) ];
49
49
+
};
50
50
+
51
51
+
formatter = nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed
52
52
+
(system: nixpkgs.legacyPackages.${system}.nixfmt);
53
53
+
};
54
54
+
}
+3
-2
merry.opam
···
9
9
doc: "https://url/to/documentation"
10
10
depends: [
11
11
"dune" {>= "3.20"}
12
12
-
"morbig"
13
12
"linenoise"
13
13
+
"visitors"
14
14
"re"
15
15
"terminal"
16
16
-
"yojson" {>= "2.2.2"}
16
16
+
"menhir" {= "20250912"}
17
17
+
"yojson" {= "2.2.2"}
17
18
"ppxlib" {>= "0.37.0"}
18
19
"ppx_deriving_yojson" {>= "3.10.0"}
19
20
"globlon" {>= "0"}