From ca06979777e83eafe49af098ead51006b0698b9e Mon Sep 17 00:00:00 2001 From: "Matthias J. Kannwischer" Date: Thu, 21 May 2026 22:06:57 +0800 Subject: [PATCH 1/4] or-tools: fix darwin install_name --- pkgs/by-name/or/or-tools/package.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/by-name/or/or-tools/package.nix b/pkgs/by-name/or/or-tools/package.nix index 90754354a478..eb312fbff8cc 100644 --- a/pkgs/by-name/or/or-tools/package.nix +++ b/pkgs/by-name/or/or-tools/package.nix @@ -137,6 +137,8 @@ stdenv.mkDerivation (finalAttrs: { ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ (lib.cmakeBool "CMAKE_MACOSX_RPATH" false) + (lib.cmakeFeature "CMAKE_INSTALL_NAME_DIR" "${placeholder "out"}/lib") + (lib.cmakeBool "CMAKE_BUILD_WITH_INSTALL_NAME_DIR" true) ]; strictDeps = true; From 25390f553653695cecc20d6f1cb0297f14e5a023 Mon Sep 17 00:00:00 2001 From: "Matthias J. Kannwischer" Date: Thu, 21 May 2026 22:06:57 +0800 Subject: [PATCH 2/4] python3Packages.ortools: extract into separate buildPythonPackage --- .../python-modules/ortools/default.nix | 45 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 4 +- 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/python-modules/ortools/default.nix diff --git a/pkgs/development/python-modules/ortools/default.nix b/pkgs/development/python-modules/ortools/default.nix new file mode 100644 index 000000000000..7a5a3d7169bf --- /dev/null +++ b/pkgs/development/python-modules/ortools/default.nix @@ -0,0 +1,45 @@ +{ + lib, + buildPythonPackage, + lndir, + or-tools, + immutabledict, + numpy, + pandas, + protobuf, +}: + +buildPythonPackage { + pname = "ortools"; + inherit (or-tools) version; + format = "other"; + + src = or-tools.python; + + dontBuild = true; + + nativeBuildInputs = [ lndir ]; + + installPhase = '' + runHook preInstall + mkdir -p $out + lndir -silent $src $out + runHook postInstall + ''; + + propagatedBuildInputs = [ + immutabledict + numpy + pandas + protobuf + ]; + + pythonImportsCheck = [ + "ortools" + "ortools.sat.python.cp_model" + ]; + + meta = or-tools.meta // { + description = "Python bindings for Google's or-tools"; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 73ea6e0ad256..ff35a71a67ac 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -12024,7 +12024,9 @@ self: super: with self; { ormsgpack = callPackage ../development/python-modules/ormsgpack { }; - ortools = (toPythonModule (pkgs.or-tools.override { python3 = self.python; })).python; + ortools = callPackage ../development/python-modules/ortools { + or-tools = pkgs.or-tools.override { python3 = self.python; }; + }; oru = callPackage ../development/python-modules/oru { }; From 774c5a22ff958daea273bbccf3ca2981ac620a56 Mon Sep 17 00:00:00 2001 From: "Matthias J. Kannwischer" Date: Thu, 21 May 2026 22:07:15 +0800 Subject: [PATCH 3/4] python3Packages.slothy: init at 0.2.0 --- maintainers/maintainer-list.nix | 6 ++ .../python-modules/slothy/default.nix | 66 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 3 files changed, 74 insertions(+) create mode 100644 pkgs/development/python-modules/slothy/default.nix diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index ba6d2b7ed416..c6349c226507 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -18272,6 +18272,12 @@ githubId = 16974598; name = "Mike Playle"; }; + mkannwischer = { + email = "matthias@kannwischer.eu"; + github = "mkannwischer"; + githubId = 3984960; + name = "Matthias Kannwischer"; + }; mkez = { email = "matias+nix@zwinger.fi"; github = "mk3z"; diff --git a/pkgs/development/python-modules/slothy/default.nix b/pkgs/development/python-modules/slothy/default.nix new file mode 100644 index 000000000000..f3e9b53ede81 --- /dev/null +++ b/pkgs/development/python-modules/slothy/default.nix @@ -0,0 +1,66 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + setuptools, + gcc, + llvm, + ortools, + sympy, + unicorn, +}: + +buildPythonPackage rec { + pname = "slothy"; + version = "0.2.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "slothy-optimizer"; + repo = "slothy"; + tag = version; + hash = "sha256-1seD/wqAyEcv5HJFO8j53ARd64fddGropA6xk0dq2yk="; + }; + + build-system = [ setuptools ]; + + dependencies = [ + ortools + sympy + unicorn + ]; + + # slothy shells out to `gcc` and the llvm binutils at runtime; extend + # PATH at import time so the library works in a plain withPackages env. + postPatch = '' + substituteInPlace slothy/__init__.py \ + --replace-fail 'from slothy.core.slothy import Slothy' \ + 'import os + os.environ["PATH"] = "${ + lib.makeBinPath [ + gcc + llvm + ] + }" + os.pathsep + os.environ.get("PATH", "") + from slothy.core.slothy import Slothy' + ''; + + pythonRelaxDeps = true; + + pythonImportsCheck = [ "slothy" ]; + + installCheckPhase = '' + runHook preInstallCheck + python3 test.py --silent --tests aarch64_simple0_a55 + runHook postInstallCheck + ''; + + meta = { + description = "Assembly superoptimization via constraint solving"; + homepage = "https://slothy-optimizer.github.io/slothy"; + changelog = "https://github.com/slothy-optimizer/slothy/releases/tag/${version}"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ mkannwischer ]; + platforms = lib.platforms.linux ++ lib.platforms.darwin; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index ff35a71a67ac..cfc4581a92fd 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -18114,6 +18114,8 @@ self: super: with self; { slob = callPackage ../development/python-modules/slob { }; + slothy = callPackage ../development/python-modules/slothy { }; + slovnet = callPackage ../development/python-modules/slovnet { }; slowapi = callPackage ../development/python-modules/slowapi { }; From ecf8d2a7499e007122ad5d65c952c23a13bee2a9 Mon Sep 17 00:00:00 2001 From: "Matthias J. Kannwischer" Date: Thu, 21 May 2026 22:07:15 +0800 Subject: [PATCH 4/4] slothy: init at 0.2.0 --- pkgs/by-name/sl/slothy/package.nix | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 pkgs/by-name/sl/slothy/package.nix diff --git a/pkgs/by-name/sl/slothy/package.nix b/pkgs/by-name/sl/slothy/package.nix new file mode 100644 index 000000000000..a07c0bb41594 --- /dev/null +++ b/pkgs/by-name/sl/slothy/package.nix @@ -0,0 +1,8 @@ +{ python3Packages }: + +(python3Packages.toPythonApplication python3Packages.slothy).overrideAttrs (old: { + __structuredAttrs = true; + meta = old.meta // { + mainProgram = "slothy-cli"; + }; +})