From 6f9e757372e0b3842552ec08fe576c8679a2dbea Mon Sep 17 00:00:00 2001 From: Antonio Nuno Monteiro Date: Wed, 21 Feb 2024 16:57:15 -0800 Subject: [PATCH] nix: export an overlay that adds ocaml-lsp itself to pkgs.ocamlPackages --- flake.nix | 94 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 53 insertions(+), 41 deletions(-) diff --git a/flake.nix b/flake.nix index b0ba95581..aa395d21c 100644 --- a/flake.nix +++ b/flake.nix @@ -34,8 +34,58 @@ stdune = osuper.stdune.overrideAttrs fixPreBuild; }); }; + lspPackage = pkgs: + with pkgs.ocamlPackages; + buildDunePackage { + pname = package; + version = "n/a"; + src = ./.; + duneVersion = "3"; + buildInputs = [ + ocamlc-loc + astring + camlp-streams + dune-build-info + re + dune-rpc + chrome-trace + dyn + fiber + xdg + ordering + spawn + pp + csexp + ocamlformat-rpc-lib + stdune + yojson + ppx_yojson_conv_lib + uutf + merlin-lib + ]; + propagatedBuildInputs = [ ]; + doCheck = false; + buildPhase = '' + runHook preBuild + dune build ${package}.install --release ''${enableParallelBuilding:+-j $NIX_BUILD_CORES} + runHook postBuild + ''; + meta = { + mainProgram = "ocamllsp"; + }; + }; in - flake-utils.lib.eachDefaultSystem (system: + { + overlays.default = (final: prev: { + ocamlPackages = prev.ocamlPackages.overrideScope (oself: osuper: + with oself; + + { + ocaml-lsp = lspPackage final; + } + ); + }); + } // (flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { overlays = [ overlay ]; inherit system; }; inherit (pkgs.ocamlPackages) buildDunePackage; @@ -104,45 +154,7 @@ packages = rec { # we have a package without opam2nix for easy consumption for nix users - default = pkgs.ocamlPackages.buildDunePackage { - pname = package; - version = "n/a"; - src = ./.; - duneVersion = "3"; - buildInputs = with pkgs.ocamlPackages; [ - ocamlc-loc - astring - camlp-streams - dune-build-info - re - dune-rpc - chrome-trace - dyn - fiber - xdg - ordering - spawn - pp - csexp - ocamlformat-rpc-lib - stdune - yojson - ppx_yojson_conv_lib - uutf - lsp - merlin-lib - ]; - propagatedBuildInputs = [ ]; - doCheck = false; - buildPhase = '' - runHook preBuild - dune build ${package}.install --release ''${enableParallelBuilding:+-j $NIX_BUILD_CORES} - runHook postBuild - ''; - meta = { - mainProgram = "ocamllsp"; - }; - }; + default = lspPackage pkgs; ocaml-lsp = fast.ocaml-lsp; }; @@ -167,5 +179,5 @@ buildInputs = [ pkgs.dune-release ]; }; }; - }); + })); }