From f0ada28815f35f160f0e85101728d215c0f7d7f9 Mon Sep 17 00:00:00 2001 From: polwex Date: Fri, 27 Jun 2025 08:24:37 +0700 Subject: m --- flake.nix | 113 ++++++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 74 insertions(+), 39 deletions(-) (limited to 'flake.nix') diff --git a/flake.nix b/flake.nix index 899547c..3b14a24 100644 --- a/flake.nix +++ b/flake.nix @@ -1,34 +1,86 @@ { inputs = { flake-utils.url = "github:numtide/flake-utils"; - nixpkgs.url = "github:nix-ocaml/nix-overlays"; + 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 = nixpkgs.legacyPackages.${system}.appendOverlays [ - (self: super: { - ocamlPackages = - super.ocaml-ng.ocamlPackages_5_1.overrideScope' - (oself: osuper: { - pg_query = osuper.pg_query.overrideAttrs (prev: { - propagatedBuildInputs = - prev.propagatedBuildInputs - ++ [osuper.cmdliner]; - }); - }); - }) - ]; + pkgs = import nixpkgs { + inherit system; - combattant = pkgs.ocamlPackages.buildDunePackage { - pname = "combattant"; - version = "0.0.1"; - src = ./.; - buildInputs = with pkgs.ocamlPackages; [ + 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 + ]; + }; + in { + devShells.default = pkgs.mkShell rec { + 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 + melange-json-native ppx_rapper ppx_rapper_eio yojson @@ -38,29 +90,12 @@ caqti-dynload caqti-driver-postgresql caqti-driver-sqlite3 - pkgs.sqlite ppx_expect - logs + # + reason + server-reason-react ]; }; - in { - devShells.default = pkgs.mkShell rec { - nativeBuildInputs = with pkgs.ocamlPackages; [ - dune_3 - findlib - ocaml - ocaml-lsp - ocamlformat - pkgs.openjdk17 - pkgs.sqlite - ]; - - buildInputs = - combattant.buildInputs - ++ (with pkgs.ocamlPackages; [utop]); - }; - - packages.default = combattant; }); } -- cgit v1.2.3