blob: b750030af465f8275ac791a297d3f74bcb4a8129 (
plain)
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
{
inputs = {
flake-utils.url = "github:numtide/flake-utils";
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
ocaml.url = "github:nix-ocaml/nix-overlays";
ocaml.inputs.nixpkgs.follows = "nixpkgs";
};
outputs = {
self,
nixpkgs,
ocaml,
flake-utils,
}:
flake-utils.lib.eachDefaultSystem (system: let
pkgs = import nixpkgs {
inherit system;
overlays = [ocaml.overlays.default];
};
quickjs = pkgs.ocamlPackages.buildDunePackage {
name = "quickjs";
pname = "quickjs";
version = "0.1.2";
src = pkgs.fetchFromGitHub {
fetchSubmodules = true;
owner = "ml-in-barcelona";
repo = "quickjs.ml";
rev = "5c4aa494acdf0f7b83a7b135b4ecd5d086cc1c64";
sha256 = "2rHyfc4Ru5fjuQY5xueJRSXBcVofVvPDagN0sFL7/nY=";
};
buildInputs = [pkgs.git];
propagatedBuildInputs = [
pkgs.git
pkgs.ocamlPackages.alcotest
pkgs.ocamlPackages.integers
pkgs.ocamlPackages.ctypes
];
};
server-reason-react = pkgs.ocamlPackages.buildDunePackage {
pname = "server-reason-react";
version = "0.4.0";
src = pkgs.fetchFromGitHub {
owner = "polwex";
repo = "server-reason-react";
rev = "d5dd436b0a447ff0a82f9a8d7a02f102139299a9";
sha256 = "PsrOqZgdFIy5tGoLpS+hf9uz42vKJZbSvdWRW8MX604=";
};
propagatedBuildInputs = with pkgs.ocamlPackages; [
melange
ppxlib
ocaml_pcre
lwt
lwt_ppx
uri
quickjs
#
yojson
uucp
];
nativeBuildInputs = with pkgs.ocamlPackages; [
reason
melange
# reason-native.refmett
];
};
# lib = pkgs.lib if unavailable
gemini-cli = pkgs.callPackage ./gemini.nix {
inherit
(pkgs)
buildNpmPackage
fetchFromGitHub
fetchNpmDeps
cacert
curl
gnused
jq
nix-prefetch-github
prefetch-npm-deps
writeShellApplication
;
};
# gemini-cli = pkgs.buildNpmPackage {
# name = "gemini-cli";
# src = pkgs.fetchFromGitHub {
# owner = "google-gemini";
# repo = "gemini-cli";
# rev = "bf873a1d85d4400fd22c175db0f3b80a47bc27fb";
# sha256 = "QllEB3FAhp9lVOBkAE09Sw8IqOjRpaIMXAcY8dGbgw0=";
# };
# npmDepsHash = "qimhi2S8fnUbIq2MPU1tlvj5k9ZChY7kzxLrYqy9FXI=";
# };
in {
devShells.default = pkgs.mkShell rec {
packages = [gemini-cli];
buildInputs =
nativeBuildInputs
++ (with pkgs.ocamlPackages; [utop]);
nativeBuildInputs = with pkgs.ocamlPackages; [
pkgs.openjdk17
pkgs.nodejs
pkgs.sqlite
pkgs.dune_3
pkgs.ocaml
findlib
ocaml-lsp
ocamlformat
mlx
ocamlmerlin-mlx
ocamlformat-mlx
melange-json-native
ppx_rapper
ppx_rapper_eio
yojson
eio_main
piaf
routes
caqti-dynload
caqti-driver-postgresql
caqti-driver-sqlite3
ppx_expect
logs
#
reason
server-reason-react
];
};
});
}
|