From a79b5ca0c5f558b21bde933cf917cef2d1d374ba Mon Sep 17 00:00:00 2001 From: Yifei Sun Date: Mon, 13 Oct 2025 11:03:47 +0200 Subject: [PATCH 1/5] ocamlPackages._0install-solver: init at 2.18 --- .../ocaml-modules/0install-solver/default.nix | 30 +++++++++++++++++++ pkgs/top-level/ocaml-packages.nix | 4 +++ 2 files changed, 34 insertions(+) create mode 100644 pkgs/development/ocaml-modules/0install-solver/default.nix diff --git a/pkgs/development/ocaml-modules/0install-solver/default.nix b/pkgs/development/ocaml-modules/0install-solver/default.nix new file mode 100644 index 000000000000..2801fbf47b89 --- /dev/null +++ b/pkgs/development/ocaml-modules/0install-solver/default.nix @@ -0,0 +1,30 @@ +{ + lib, + buildDunePackage, + fetchFromGitHub, + ounit2, +}: + +buildDunePackage (finalAttrs: { + pname = "0install-solver"; + version = "2.18"; + + src = fetchFromGitHub { + owner = "0install"; + repo = "0install"; + tag = "v${finalAttrs.version}"; + hash = "sha256-CxADWMYZBPobs65jeyMQjqu3zmm2PgtNgI/jUsYUp8I="; + }; + + doCheck = true; + checkInputs = [ + ounit2 + ]; + + meta = { + description = "Package dependency solver"; + license = lib.licenses.lgpl21; + maintainers = [ lib.maintainers.stepbrobd ]; + homepage = "https://0install.net"; + }; +}) diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix index 92da02d990d1..0238b551db01 100644 --- a/pkgs/top-level/ocaml-packages.nix +++ b/pkgs/top-level/ocaml-packages.nix @@ -2211,6 +2211,10 @@ let zmq-lwt = callPackage ../development/ocaml-modules/zmq/lwt.nix { }; + ### _ ### + + _0install-solver = callPackage ../development/ocaml-modules/0install-solver { }; + ### Exceptional packages kept out of order ### # Libs From 25efcfc90683785ac7f2d3517c35369e7f4295bf Mon Sep 17 00:00:00 2001 From: Yifei Sun Date: Tue, 14 Oct 2025 08:59:05 +0200 Subject: [PATCH 2/5] ocamlPackages.opam-0install-cudf: init at 0.5.0 --- .../opam-0install-cudf/default.nix | 50 +++++++++++++++++++ pkgs/top-level/ocaml-packages.nix | 2 + 2 files changed, 52 insertions(+) create mode 100644 pkgs/development/ocaml-modules/opam-0install-cudf/default.nix diff --git a/pkgs/development/ocaml-modules/opam-0install-cudf/default.nix b/pkgs/development/ocaml-modules/opam-0install-cudf/default.nix new file mode 100644 index 000000000000..3fc260f43ead --- /dev/null +++ b/pkgs/development/ocaml-modules/opam-0install-cudf/default.nix @@ -0,0 +1,50 @@ +{ + lib, + buildDunePackage, + fetchFromGitHub, + _0install-solver, + alcotest, + cudf, +}: + +buildDunePackage (finalAttrs: { + pname = "opam-0install-cudf"; + version = "0.5.0"; + + src = fetchFromGitHub { + owner = "ocaml-opam"; + repo = "opam-0install-cudf"; + rev = "v${finalAttrs.version}"; + hash = "sha256-TETfvR1Di4c8CylsKnMal/GfQcqMSr36o7511u1bYYs="; + }; + + propagatedBuildInputs = [ + cudf + _0install-solver + ]; + + doCheck = true; + checkInputs = [ + alcotest + ]; + + meta = { + homepage = "https://github.com/ocaml-opam/opam-0install-cudf"; + description = "Opam solver using 0install backend using the CUDF interface"; + longDescription = '' + Opam's default solver is designed to maintain a set of packages + over time, minimising disruption when installing new programs and + finding a compromise solution across all packages. + + In many situations (e.g. CI, local roots or duniverse builds) this + is not necessary, and we can get a solution much faster by using + a different algorithm. + + This package provides a generic solver library which uses 0install's + solver library. The library uses the CUDF library in order to interface + with opam as it is the format common used to talk to all the supported solvers. + ''; + license = lib.licenses.isc; + maintainers = [ lib.maintainers.stepbrobd ]; + }; +}) diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix index 0238b551db01..8b5f4d3ca9eb 100644 --- a/pkgs/top-level/ocaml-packages.nix +++ b/pkgs/top-level/ocaml-packages.nix @@ -1574,6 +1574,8 @@ let omd = callPackage ../development/ocaml-modules/omd { }; + opam-0install-cudf = callPackage ../development/ocaml-modules/opam-0install-cudf { }; + opam-core = callPackage ../development/ocaml-modules/opam-core { inherit (pkgs) opam; }; From 952d41bfdeb6788ff9f39fcb491f24d5edf6c286 Mon Sep 17 00:00:00 2001 From: Yifei Sun Date: Tue, 14 Oct 2025 09:02:38 +0200 Subject: [PATCH 3/5] ocamlPackages.opam-solver: init at 2.4.1 --- .../ocaml-modules/opam-solver/default.nix | 35 +++++++++++++++++++ pkgs/top-level/ocaml-packages.nix | 2 ++ 2 files changed, 37 insertions(+) create mode 100644 pkgs/development/ocaml-modules/opam-solver/default.nix diff --git a/pkgs/development/ocaml-modules/opam-solver/default.nix b/pkgs/development/ocaml-modules/opam-solver/default.nix new file mode 100644 index 000000000000..8dd328cda640 --- /dev/null +++ b/pkgs/development/ocaml-modules/opam-solver/default.nix @@ -0,0 +1,35 @@ +{ + lib, + buildDunePackage, + cudf, + dose3, + mccs, + opam, + opam-0install-cudf, + opam-format, + re, + z3, +}: + +buildDunePackage { + pname = "opam-solver"; + + inherit (opam) src version; + + configureFlags = [ "--disable-checks" ]; + + propagatedBuildInputs = [ + cudf + dose3 + mccs + opam-0install-cudf + opam-format + re + z3 + ]; + + meta = opam.meta // { + description = "This library is based on the Cudf and Dose libraries, and handles calls to the external solver from opam"; + maintainers = with lib.maintainers; [ stepbrobd ]; + }; +} diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix index 8b5f4d3ca9eb..37c82b78f2fc 100644 --- a/pkgs/top-level/ocaml-packages.nix +++ b/pkgs/top-level/ocaml-packages.nix @@ -1586,6 +1586,8 @@ let opam-repository = callPackage ../development/ocaml-modules/opam-repository { }; + opam-solver = callPackage ../development/ocaml-modules/opam-solver { }; + opam-state = callPackage ../development/ocaml-modules/opam-state { }; opium = callPackage ../development/ocaml-modules/opium { }; From 127aa79cac9aea7bbe82c8139431a8b9acaa8d9e Mon Sep 17 00:00:00 2001 From: Yifei Sun Date: Tue, 14 Oct 2025 09:06:18 +0200 Subject: [PATCH 4/5] ocamlPackages.opam-client: init at 2.4.1 --- .../ocaml-modules/opam-client/default.nix | 33 +++++++++++++++++++ pkgs/top-level/ocaml-packages.nix | 2 ++ 2 files changed, 35 insertions(+) create mode 100644 pkgs/development/ocaml-modules/opam-client/default.nix diff --git a/pkgs/development/ocaml-modules/opam-client/default.nix b/pkgs/development/ocaml-modules/opam-client/default.nix new file mode 100644 index 000000000000..9840c87c2894 --- /dev/null +++ b/pkgs/development/ocaml-modules/opam-client/default.nix @@ -0,0 +1,33 @@ +{ + lib, + buildDunePackage, + base64, + cmdliner, + opam, + opam-repository, + opam-solver, + opam-state, + re, +}: + +buildDunePackage { + pname = "opam-client"; + + inherit (opam) src version; + + configureFlags = [ "--disable-checks" ]; + + propagatedBuildInputs = [ + base64 + cmdliner + opam-repository + opam-solver + opam-state + re + ]; + + meta = opam.meta // { + description = "Actions on the opam root, switches, installations, and front-end"; + maintainers = with lib.maintainers; [ stepbrobd ]; + }; +} diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix index 37c82b78f2fc..ca85774f0051 100644 --- a/pkgs/top-level/ocaml-packages.nix +++ b/pkgs/top-level/ocaml-packages.nix @@ -1580,6 +1580,8 @@ let inherit (pkgs) opam; }; + opam-client = callPackage ../development/ocaml-modules/opam-client { }; + opam-file-format = callPackage ../development/ocaml-modules/opam-file-format { }; opam-format = callPackage ../development/ocaml-modules/opam-format { }; From ec79abfa057c1825d0085897505b5306cea2fac8 Mon Sep 17 00:00:00 2001 From: Yifei Sun Date: Tue, 14 Oct 2025 09:11:24 +0200 Subject: [PATCH 5/5] ocamlPackages.oui: init at 0-unstable-2025-10-08 --- .../development/ocaml-modules/oui/default.nix | 60 +++++++++++++++++++ pkgs/top-level/ocaml-packages.nix | 2 + 2 files changed, 62 insertions(+) create mode 100644 pkgs/development/ocaml-modules/oui/default.nix diff --git a/pkgs/development/ocaml-modules/oui/default.nix b/pkgs/development/ocaml-modules/oui/default.nix new file mode 100644 index 000000000000..98c9d2e12c73 --- /dev/null +++ b/pkgs/development/ocaml-modules/oui/default.nix @@ -0,0 +1,60 @@ +{ + lib, + buildDunePackage, + fetchFromGitHub, + cmdliner, + fmt, + markup, + ocaml-crunch, + opam-client, + opam-format, + ppx_deriving_yojson, + ppx_expect, + yojson, +}: + +buildDunePackage (finalAttrs: { + pname = "oui"; + version = "0-unstable-2025-10-08"; + + minimalOCamlVersion = "4.10"; + + src = fetchFromGitHub { + owner = "OCamlPro"; + repo = "ocaml-universal-installer"; + rev = "2fe2e33c3f8e1744fdd4dab04458043451bf9f62"; + hash = "sha256-ALQIQ3Ab1Gs2xST9OwsO5IxixzgKlUg7uHZvfHMbv7Q="; + }; + + nativeBuildInputs = [ + ocaml-crunch + ]; + + propagatedBuildInputs = [ + cmdliner + fmt + markup + opam-client + opam-format + ppx_deriving_yojson + yojson + ]; + + # upstream tests are matching full library paths + doCheck = false; + checkInputs = [ + ppx_expect + ]; + + meta = { + homepage = "https://github.com/OCamlPro/ocaml-universal-installer"; + description = "A tool that builds standalone installers for your OCaml applications"; + longDescription = '' + oui is a command-line tool that generates standalone installers for + Linux, Windows and macOS from your OCaml and non OCaml binaries. + ''; + license = lib.licenses.lgpl21; + maintainers = [ lib.maintainers.stepbrobd ]; + mainProgram = "opam-oui"; + }; +}) diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix index ca85774f0051..fff4b9d90e2a 100644 --- a/pkgs/top-level/ocaml-packages.nix +++ b/pkgs/top-level/ocaml-packages.nix @@ -1614,6 +1614,8 @@ let otr = callPackage ../development/ocaml-modules/otr { }; + oui = callPackage ../development/ocaml-modules/oui { }; + ounit = callPackage ../development/ocaml-modules/ounit { }; ounit2 = callPackage ../development/ocaml-modules/ounit2 { };