diff --git a/pkgs/development/python-modules/ruff/default.nix b/pkgs/development/python-modules/ruff/default.nix index 8155727dc221..edd44682d7f7 100644 --- a/pkgs/development/python-modules/ruff/default.nix +++ b/pkgs/development/python-modules/ruff/default.nix @@ -1,8 +1,8 @@ { buildPythonPackage, + hatchling, + lib, ruff, - rustPlatform, - installShellFiles, }: buildPythonPackage { @@ -10,26 +10,38 @@ buildPythonPackage { pname version src - cargoDeps - postInstall meta ; - - # Do not rely on path lookup at runtime to find the ruff binary - postPatch = '' - substituteInPlace python/ruff/__main__.py \ - --replace-fail \ - 'ruff_exe = "ruff" + sysconfig.get_config_var("EXE")' \ - 'return "${placeholder "out"}/bin/ruff"' - ''; - pyproject = true; - nativeBuildInputs = [ - installShellFiles - rustPlatform.cargoSetupHook - rustPlatform.maturinBuildHook - ]; + build-system = [ hatchling ]; + + postPatch = + # Do not rely on path lookup at runtime to find the ruff binary. + # Use the propagated binary instead. + '' + substituteInPlace python/ruff/__main__.py \ + --replace-fail \ + 'ruff_exe = "ruff" + sysconfig.get_config_var("EXE")' \ + 'return "${lib.getExe ruff}"' + '' + # Sidestep the maturin build system in favour of reusing the binary already built by nixpkgs, + # to avoid rebuilding the ruff binary for every active python package set. + + '' + substituteInPlace pyproject.toml \ + --replace-fail 'requires = ["maturin>=1.0,<2.0"]' 'requires = ["hatchling"]' \ + --replace-fail 'build-backend = "maturin"' 'build-backend = "hatchling.build"' + + cat >> pyproject.toml <