Loading pkgs/development/python-modules/trl/default.nix +9 −11 Original line number Diff line number Diff line Loading @@ -5,35 +5,33 @@ # build-system setuptools, setuptools-scm, # dependencies accelerate, datasets, packaging, rich, transformers, }: buildPythonPackage rec { buildPythonPackage (finalAttrs: { pname = "trl"; version = "0.27.0"; version = "0.24.0"; pyproject = true; src = fetchFromGitHub { owner = "huggingface"; repo = "trl"; tag = "v${version}"; hash = "sha256-NEvIWrirHqcLJpyA894NgNFPn/Svg+ND/xDMIRHW8d0="; tag = "v${finalAttrs.version}"; hash = "sha256-t0wOuEKlcZzFlQeS4PYHykFsz+43hYc0gJ9u4emr8HI="; }; build-system = [ setuptools setuptools-scm ]; build-system = [ setuptools ]; dependencies = [ accelerate datasets packaging rich transformers ]; Loading @@ -46,8 +44,8 @@ buildPythonPackage rec { meta = { description = "Train transformer language models with reinforcement learning"; homepage = "https://github.com/huggingface/trl"; changelog = "https://github.com/huggingface/trl/releases/tag/${src.tag}"; changelog = "https://github.com/huggingface/trl/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.asl20; maintainers = with lib.maintainers; [ hoh ]; }; } }) pkgs/development/python-modules/tyro/default.nix +24 −23 Original line number Diff line number Diff line Loading @@ -9,72 +9,73 @@ # dependencies docstring-parser, rich, shtab, typeguard, typing-extensions, # tests attrs, flax, jax, ml-collections, msgspec, omegaconf, pydantic, pytestCheckHook, torch, shtab, universal-pathlib, }: buildPythonPackage (finalAttrs: { pname = "tyro"; version = "1.0.10"; version = "1.0.12"; pyproject = true; src = fetchFromGitHub { owner = "brentyi"; repo = "tyro"; tag = "v${finalAttrs.version}"; hash = "sha256-k8f0eSeBBCROSsf7WooapDIFoy1G4Guxpbb7eNbj6ps="; hash = "sha256-e4LIJzZ7lIkvhqbOz/EGHgPo9ri1HNiMp0j+I1S0/J4="; }; build-system = [ hatchling ]; dependencies = [ docstring-parser rich shtab typeguard typing-extensions ]; # Upstream's neural-network integration tests are optional and skipped when # flax/torch are unavailable, so keep the lightweight dev extras only. nativeCheckInputs = [ attrs flax jax ml-collections msgspec omegaconf pydantic pytestCheckHook torch shtab universal-pathlib ]; disabledTests = lib.optionals (pythonAtLeast "3.13") [ # Bash path completion relies on the programmable-completion builtin `compgen`, # which is unavailable in the stdenv build shell. disabledTests = lib.optionals (pythonAtLeast "3.13") [ # The bash path-completion functional test still returns no file # completions in the Nix build environment. "test_bash_path_completion_marker" # In Nix builds, the long `python -m pytest` argv[0] path gets line-wrapped in # argparse error output, splitting `class-b` and `)` so this literal-match fails. "test_similar_arguments_subcommands_multiple_contains_match" # Same wrapped-output literal-match issue as above for the cascading-args variant. "test_similar_arguments_subcommands_multiple_contains_match_cascading" ] ++ lib.optionals (pythonAtLeast "3.14") [ # Upstream checks that the literal substring `bc` never appears in the # help text, but under Nix the `python -m pytest` runner path can include # that substring in the store hash used for `sys.argv[0]`. "test_suppress_subcommand" ]; # Keep argparse help output on a single line where possible so the # literal-output tests do not fail due to terminal line wrapping. preCheck = '' export COLUMNS=200 export LINES=200 ''; pythonImportsCheck = [ "tyro" ]; meta = { Loading pkgs/development/python-modules/unsloth-zoo/default.nix +49 −10 Original line number Diff line number Diff line Loading @@ -11,30 +11,42 @@ accelerate, cut-cross-entropy, datasets, filelock, hf-transfer, huggingface-hub, msgspec, numpy, packaging, peft, pillow, protobuf, psutil, regex, sentencepiece, torch, torchao, triton, tqdm, transformers, trl, tyro, typing-extensions, # tests cudaPackages, python, }: buildPythonPackage (finalAttrs: { pname = "unsloth-zoo"; version = "2026.3.4"; version = "2026.4.2"; pyproject = true; # no tags on GitHub src = fetchPypi { pname = "unsloth_zoo"; inherit (finalAttrs) version; hash = "sha256-24w8UV5cLG5XWrU73xfmg+Jk32zl+QSPdqXLzMtmP1E="; hash = "sha256-l0OTaZjPrNnrxVYIfZcf6pYr1tJS9EGj+iguU6S+D28="; }; postPatch = '' Loading @@ -47,14 +59,11 @@ buildPythonPackage (finalAttrs: { "setuptools-scm" ''; # pyproject.toml requires an obsolete version of protobuf, # but it is not used. # Upstream issue: https://github.com/unslothai/unsloth-zoo/pull/68 # Upstream constrains datasets/torch more tightly than the versions # currently shipped in nixpkgs, but the package still builds and works with # the newer dependency set here. pythonRelaxDeps = [ "datasets" "protobuf" "transformers" "trl" "torch" ]; Loading @@ -72,29 +81,59 @@ buildPythonPackage (finalAttrs: { accelerate cut-cross-entropy datasets filelock hf-transfer huggingface-hub msgspec numpy packaging peft pillow protobuf psutil regex sentencepiece torch torchao triton tqdm transformers trl tyro typing-extensions ]; # No tests doCheck = false; pythonImportsCheck = [ "unsloth_zoo" ]; # Importing touches torch.cuda at module import time and queries GPU memory. dontUsePythonImportsCheck = true; # Cover the import path on GPU-enabled runners instead of pure builders. passthru.gpuCheck = (cudaPackages.writeGpuTestPython.override { python3Packages = python.pkgs; } { libraries = ps: [ ps.unsloth-zoo ]; } '' import torch assert torch.cuda.is_available(), "CUDA is not available" assert torch.ones(1, device="cuda").is_cuda import unsloth_zoo # noqa: F401 from unsloth_zoo.device_type import DEVICE_COUNT, DEVICE_TYPE assert DEVICE_TYPE == "cuda", DEVICE_TYPE assert DEVICE_COUNT > 0, DEVICE_COUNT print(f"Unsloth Zoo detected {DEVICE_COUNT} CUDA device(s)") '' ).gpuCheck; meta = { description = "Utils for Unsloth"; homepage = "https://github.com/unslothai/unsloth_zoo"; license = lib.licenses.mit; license = lib.licenses.lgpl3Plus; maintainers = with lib.maintainers; [ hoh ]; }; }) pkgs/development/python-modules/unsloth-zoo/dont-require-unsloth.patch +0 −14 Original line number Diff line number Diff line Loading @@ -21,17 +21,3 @@ index 8c4404c..dc1666f 100644 try: print("🦥 Unsloth: Will patch your computer to enable 2x faster free finetuning.") except: diff --git a/unsloth_zoo/device_type.py b/unsloth_zoo/device_type.py index 11136fb..8f8dafc 100644 --- a/unsloth_zoo/device_type.py +++ b/unsloth_zoo/device_type.py @@ -209,6 +209,9 @@ def get_device_type(): return "cuda" elif hasattr(torch, "xpu") and torch.xpu.is_available(): return "xpu" + else: + # Allow import during tests + return None # Check torch.accelerator if hasattr(torch, "accelerator"): if not torch.accelerator.is_available(): pkgs/development/python-modules/unsloth/default.nix +44 −6 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ bitsandbytes, numpy, packaging, psutil, torch, unsloth-zoo, xformers, Loading Loading @@ -53,16 +54,40 @@ in buildPythonPackage (finalAttrs: { pname = "unsloth"; version = "2026.3.8"; version = "2026.4.1"; pyproject = true; # Tags on the GitHub repo don't match src = fetchPypi { pname = "unsloth"; inherit (finalAttrs) version; hash = "sha256-2HXsaYhsMxNEm6ctKDZDrA9MY/fUKhAo0EPYC5RwBNc="; hash = "sha256-RGpVxrcFzKbHxV7o0/OYaADo/Pqxx/c+FaxcV05gHGU="; }; postPatch = '' substituteInPlace pyproject.toml \ --replace-fail 'requires = ["setuptools==80.9.0", "setuptools-scm==9.2.0"]' \ 'requires = ["setuptools", "setuptools-scm"]' # Upstream's datasets guard says only 4.4.0 and 4.4.1 recurse, but the # current check blocks the whole 4.4.0 .. 4.5.0 range. Narrow it to the # versions the upstream comment actually calls out. substituteInPlace unsloth/import_fixes.py \ --replace-fail 'if (datasets_version <= Version("4.5.0")) and (' \ 'if (datasets_version <= Version("4.4.1")) and (' # Strip AGPL-licensed CLI, Studio, and grouped-GEMM sources from the # Apache-licensed Python package. rm -rf \ unsloth_cli \ studio \ unsloth/kernels/moe \ COPYING # Drop the entry point after removing the CLI package above. sed -i '/^\[project\.scripts\]/,/^$/d' pyproject.toml ''; build-system = [ setuptools setuptools-scm Loading @@ -72,6 +97,7 @@ buildPythonPackage (finalAttrs: { bitsandbytes numpy packaging psutil torch unsloth-zoo xformers Loading @@ -90,8 +116,7 @@ buildPythonPackage (finalAttrs: { torchvision ]; # pyproject.toml requires an obsolete version of protobuf, # but it is not used. # pyproject.toml pins obsolete versions for several runtime deps. # Upstream issue: https://github.com/unslothai/unsloth-zoo/pull/68 pythonRelaxDeps = [ "datasets" Loading @@ -100,6 +125,17 @@ buildPythonPackage (finalAttrs: { "torch" ]; # Upstream currently lists CLI/studio dependencies as runtime requirements, # but they are not part of the packaged library here. pythonRemoveDeps = [ "tyro" "wheel" "typer" "pydantic" "pyyaml" "nest-asyncio" ]; # The source repository contains no test doCheck = false; Loading @@ -107,8 +143,8 @@ buildPythonPackage (finalAttrs: { # NotImplementedError: Unsloth: No NVIDIA GPU found? Unsloth currently only supports GPUs! dontUsePythonImportsCheck = true; passthru.tests = { qlora-train-and-merge = passthru.tests = rec { cuda = # FIXME: Replace python3.pkgs with python3Packages once possible, as to unbeak splicing. # Cf. https://github.com/NixOS/nixpkgs/pull/394838#issuecomment-3319287038 cudaPackages.writeGpuTestPython.override { python3Packages = python.pkgs; } Loading @@ -135,6 +171,8 @@ buildPythonPackage (finalAttrs: { run_name="__main__" ) ''; qlora-train-and-merge = cuda; }; meta = { Loading Loading
pkgs/development/python-modules/trl/default.nix +9 −11 Original line number Diff line number Diff line Loading @@ -5,35 +5,33 @@ # build-system setuptools, setuptools-scm, # dependencies accelerate, datasets, packaging, rich, transformers, }: buildPythonPackage rec { buildPythonPackage (finalAttrs: { pname = "trl"; version = "0.27.0"; version = "0.24.0"; pyproject = true; src = fetchFromGitHub { owner = "huggingface"; repo = "trl"; tag = "v${version}"; hash = "sha256-NEvIWrirHqcLJpyA894NgNFPn/Svg+ND/xDMIRHW8d0="; tag = "v${finalAttrs.version}"; hash = "sha256-t0wOuEKlcZzFlQeS4PYHykFsz+43hYc0gJ9u4emr8HI="; }; build-system = [ setuptools setuptools-scm ]; build-system = [ setuptools ]; dependencies = [ accelerate datasets packaging rich transformers ]; Loading @@ -46,8 +44,8 @@ buildPythonPackage rec { meta = { description = "Train transformer language models with reinforcement learning"; homepage = "https://github.com/huggingface/trl"; changelog = "https://github.com/huggingface/trl/releases/tag/${src.tag}"; changelog = "https://github.com/huggingface/trl/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.asl20; maintainers = with lib.maintainers; [ hoh ]; }; } })
pkgs/development/python-modules/tyro/default.nix +24 −23 Original line number Diff line number Diff line Loading @@ -9,72 +9,73 @@ # dependencies docstring-parser, rich, shtab, typeguard, typing-extensions, # tests attrs, flax, jax, ml-collections, msgspec, omegaconf, pydantic, pytestCheckHook, torch, shtab, universal-pathlib, }: buildPythonPackage (finalAttrs: { pname = "tyro"; version = "1.0.10"; version = "1.0.12"; pyproject = true; src = fetchFromGitHub { owner = "brentyi"; repo = "tyro"; tag = "v${finalAttrs.version}"; hash = "sha256-k8f0eSeBBCROSsf7WooapDIFoy1G4Guxpbb7eNbj6ps="; hash = "sha256-e4LIJzZ7lIkvhqbOz/EGHgPo9ri1HNiMp0j+I1S0/J4="; }; build-system = [ hatchling ]; dependencies = [ docstring-parser rich shtab typeguard typing-extensions ]; # Upstream's neural-network integration tests are optional and skipped when # flax/torch are unavailable, so keep the lightweight dev extras only. nativeCheckInputs = [ attrs flax jax ml-collections msgspec omegaconf pydantic pytestCheckHook torch shtab universal-pathlib ]; disabledTests = lib.optionals (pythonAtLeast "3.13") [ # Bash path completion relies on the programmable-completion builtin `compgen`, # which is unavailable in the stdenv build shell. disabledTests = lib.optionals (pythonAtLeast "3.13") [ # The bash path-completion functional test still returns no file # completions in the Nix build environment. "test_bash_path_completion_marker" # In Nix builds, the long `python -m pytest` argv[0] path gets line-wrapped in # argparse error output, splitting `class-b` and `)` so this literal-match fails. "test_similar_arguments_subcommands_multiple_contains_match" # Same wrapped-output literal-match issue as above for the cascading-args variant. "test_similar_arguments_subcommands_multiple_contains_match_cascading" ] ++ lib.optionals (pythonAtLeast "3.14") [ # Upstream checks that the literal substring `bc` never appears in the # help text, but under Nix the `python -m pytest` runner path can include # that substring in the store hash used for `sys.argv[0]`. "test_suppress_subcommand" ]; # Keep argparse help output on a single line where possible so the # literal-output tests do not fail due to terminal line wrapping. preCheck = '' export COLUMNS=200 export LINES=200 ''; pythonImportsCheck = [ "tyro" ]; meta = { Loading
pkgs/development/python-modules/unsloth-zoo/default.nix +49 −10 Original line number Diff line number Diff line Loading @@ -11,30 +11,42 @@ accelerate, cut-cross-entropy, datasets, filelock, hf-transfer, huggingface-hub, msgspec, numpy, packaging, peft, pillow, protobuf, psutil, regex, sentencepiece, torch, torchao, triton, tqdm, transformers, trl, tyro, typing-extensions, # tests cudaPackages, python, }: buildPythonPackage (finalAttrs: { pname = "unsloth-zoo"; version = "2026.3.4"; version = "2026.4.2"; pyproject = true; # no tags on GitHub src = fetchPypi { pname = "unsloth_zoo"; inherit (finalAttrs) version; hash = "sha256-24w8UV5cLG5XWrU73xfmg+Jk32zl+QSPdqXLzMtmP1E="; hash = "sha256-l0OTaZjPrNnrxVYIfZcf6pYr1tJS9EGj+iguU6S+D28="; }; postPatch = '' Loading @@ -47,14 +59,11 @@ buildPythonPackage (finalAttrs: { "setuptools-scm" ''; # pyproject.toml requires an obsolete version of protobuf, # but it is not used. # Upstream issue: https://github.com/unslothai/unsloth-zoo/pull/68 # Upstream constrains datasets/torch more tightly than the versions # currently shipped in nixpkgs, but the package still builds and works with # the newer dependency set here. pythonRelaxDeps = [ "datasets" "protobuf" "transformers" "trl" "torch" ]; Loading @@ -72,29 +81,59 @@ buildPythonPackage (finalAttrs: { accelerate cut-cross-entropy datasets filelock hf-transfer huggingface-hub msgspec numpy packaging peft pillow protobuf psutil regex sentencepiece torch torchao triton tqdm transformers trl tyro typing-extensions ]; # No tests doCheck = false; pythonImportsCheck = [ "unsloth_zoo" ]; # Importing touches torch.cuda at module import time and queries GPU memory. dontUsePythonImportsCheck = true; # Cover the import path on GPU-enabled runners instead of pure builders. passthru.gpuCheck = (cudaPackages.writeGpuTestPython.override { python3Packages = python.pkgs; } { libraries = ps: [ ps.unsloth-zoo ]; } '' import torch assert torch.cuda.is_available(), "CUDA is not available" assert torch.ones(1, device="cuda").is_cuda import unsloth_zoo # noqa: F401 from unsloth_zoo.device_type import DEVICE_COUNT, DEVICE_TYPE assert DEVICE_TYPE == "cuda", DEVICE_TYPE assert DEVICE_COUNT > 0, DEVICE_COUNT print(f"Unsloth Zoo detected {DEVICE_COUNT} CUDA device(s)") '' ).gpuCheck; meta = { description = "Utils for Unsloth"; homepage = "https://github.com/unslothai/unsloth_zoo"; license = lib.licenses.mit; license = lib.licenses.lgpl3Plus; maintainers = with lib.maintainers; [ hoh ]; }; })
pkgs/development/python-modules/unsloth-zoo/dont-require-unsloth.patch +0 −14 Original line number Diff line number Diff line Loading @@ -21,17 +21,3 @@ index 8c4404c..dc1666f 100644 try: print("🦥 Unsloth: Will patch your computer to enable 2x faster free finetuning.") except: diff --git a/unsloth_zoo/device_type.py b/unsloth_zoo/device_type.py index 11136fb..8f8dafc 100644 --- a/unsloth_zoo/device_type.py +++ b/unsloth_zoo/device_type.py @@ -209,6 +209,9 @@ def get_device_type(): return "cuda" elif hasattr(torch, "xpu") and torch.xpu.is_available(): return "xpu" + else: + # Allow import during tests + return None # Check torch.accelerator if hasattr(torch, "accelerator"): if not torch.accelerator.is_available():
pkgs/development/python-modules/unsloth/default.nix +44 −6 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ bitsandbytes, numpy, packaging, psutil, torch, unsloth-zoo, xformers, Loading Loading @@ -53,16 +54,40 @@ in buildPythonPackage (finalAttrs: { pname = "unsloth"; version = "2026.3.8"; version = "2026.4.1"; pyproject = true; # Tags on the GitHub repo don't match src = fetchPypi { pname = "unsloth"; inherit (finalAttrs) version; hash = "sha256-2HXsaYhsMxNEm6ctKDZDrA9MY/fUKhAo0EPYC5RwBNc="; hash = "sha256-RGpVxrcFzKbHxV7o0/OYaADo/Pqxx/c+FaxcV05gHGU="; }; postPatch = '' substituteInPlace pyproject.toml \ --replace-fail 'requires = ["setuptools==80.9.0", "setuptools-scm==9.2.0"]' \ 'requires = ["setuptools", "setuptools-scm"]' # Upstream's datasets guard says only 4.4.0 and 4.4.1 recurse, but the # current check blocks the whole 4.4.0 .. 4.5.0 range. Narrow it to the # versions the upstream comment actually calls out. substituteInPlace unsloth/import_fixes.py \ --replace-fail 'if (datasets_version <= Version("4.5.0")) and (' \ 'if (datasets_version <= Version("4.4.1")) and (' # Strip AGPL-licensed CLI, Studio, and grouped-GEMM sources from the # Apache-licensed Python package. rm -rf \ unsloth_cli \ studio \ unsloth/kernels/moe \ COPYING # Drop the entry point after removing the CLI package above. sed -i '/^\[project\.scripts\]/,/^$/d' pyproject.toml ''; build-system = [ setuptools setuptools-scm Loading @@ -72,6 +97,7 @@ buildPythonPackage (finalAttrs: { bitsandbytes numpy packaging psutil torch unsloth-zoo xformers Loading @@ -90,8 +116,7 @@ buildPythonPackage (finalAttrs: { torchvision ]; # pyproject.toml requires an obsolete version of protobuf, # but it is not used. # pyproject.toml pins obsolete versions for several runtime deps. # Upstream issue: https://github.com/unslothai/unsloth-zoo/pull/68 pythonRelaxDeps = [ "datasets" Loading @@ -100,6 +125,17 @@ buildPythonPackage (finalAttrs: { "torch" ]; # Upstream currently lists CLI/studio dependencies as runtime requirements, # but they are not part of the packaged library here. pythonRemoveDeps = [ "tyro" "wheel" "typer" "pydantic" "pyyaml" "nest-asyncio" ]; # The source repository contains no test doCheck = false; Loading @@ -107,8 +143,8 @@ buildPythonPackage (finalAttrs: { # NotImplementedError: Unsloth: No NVIDIA GPU found? Unsloth currently only supports GPUs! dontUsePythonImportsCheck = true; passthru.tests = { qlora-train-and-merge = passthru.tests = rec { cuda = # FIXME: Replace python3.pkgs with python3Packages once possible, as to unbeak splicing. # Cf. https://github.com/NixOS/nixpkgs/pull/394838#issuecomment-3319287038 cudaPackages.writeGpuTestPython.override { python3Packages = python.pkgs; } Loading @@ -135,6 +171,8 @@ buildPythonPackage (finalAttrs: { run_name="__main__" ) ''; qlora-train-and-merge = cuda; }; meta = { Loading