add custom huggingface_hub packages (learning from hf-cli's authentication workflow)
This commit is contained in:
parent
d68132b8fb
commit
7ab29bfe07
3 changed files with 153 additions and 0 deletions
35
hosts/packages/huggingface_hub/flake.nix
Normal file
35
hosts/packages/huggingface_hub/flake.nix
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
# Template: https://nixos-and-flakes.thiscute.world/development/intro
|
||||
{
|
||||
description = "Humanity's Last Exam - Devshell";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
|
||||
};
|
||||
|
||||
outputs = {nixpkgs, ...}: let
|
||||
system = "x86_64-linux";
|
||||
pkgs = import nixpkgs {
|
||||
inherit system;
|
||||
};
|
||||
python = pkgs.python312.override {
|
||||
self = python;
|
||||
packageOverrides = pyfinal: pyprev: {
|
||||
huggingface-hub = pyfinal.callPackage ./huggingface_hub.nix {};
|
||||
hf-xet = pyfinal.callPackage ./hf-xet.nix {};
|
||||
};
|
||||
};
|
||||
in {
|
||||
devShells."${system}".default = pkgs.mkShell {
|
||||
packages = [
|
||||
(python.withPackages (pypkgs: [
|
||||
pypkgs.huggingface-hub
|
||||
]))
|
||||
];
|
||||
|
||||
shell = "${pkgs.bash}/bin/bash";
|
||||
shellHook = ''
|
||||
alias hf=huggingface-cli
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
56
hosts/packages/huggingface_hub/hf-xet.nix
Normal file
56
hosts/packages/huggingface_hub/hf-xet.nix
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
pkg-config,
|
||||
rustPlatform,
|
||||
openssl,
|
||||
}:
|
||||
buildPythonPackage rec {
|
||||
pname = "hf-xet";
|
||||
version = "1.1.5";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "huggingface";
|
||||
repo = "xet-core";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-udjZcXTH+Mc4Gvj6bSPv1xi4MyXrLeCYav+7CzKWyhY=";
|
||||
};
|
||||
|
||||
sourceRoot = "${src.name}/hf_xet";
|
||||
|
||||
cargoDeps = rustPlatform.fetchCargoVendor {
|
||||
inherit
|
||||
pname
|
||||
version
|
||||
src
|
||||
sourceRoot
|
||||
;
|
||||
hash = "sha256-PTzYubJHFvhq6T3314R4aqBAJlwehOqF7SbpLu4Jo6E=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
rustPlatform.cargoSetupHook
|
||||
rustPlatform.maturinBuildHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
openssl
|
||||
];
|
||||
|
||||
env.OPENSSL_NO_VENDOR = 1;
|
||||
|
||||
pythonImportsCheck = ["hf_xet"];
|
||||
|
||||
# No tests (yet?)
|
||||
doCheck = false;
|
||||
|
||||
meta = {
|
||||
description = "Xet client tech, used in huggingface_hub";
|
||||
homepage = "https://github.com/huggingface/xet-core/tree/main/hf_xet";
|
||||
changelog = "https://github.com/huggingface/xet-core/releases/tag/v${version}";
|
||||
license = lib.licenses.asl20;
|
||||
};
|
||||
}
|
||||
62
hosts/packages/huggingface_hub/huggingface_hub.nix
Normal file
62
hosts/packages/huggingface_hub/huggingface_hub.nix
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
/*
|
||||
* WARNING: Just use `pkgs.python312Packages.huggingface-hub` (or change python version)
|
||||
* WARNING: I didn't realise it existed when I packaged this.
|
||||
*
|
||||
* Nix Resources:
|
||||
* 1. https://wiki.nixos.org/wiki/Python
|
||||
* 2. https://nixos.org/manual/nixpkgs/unstable/#developing-with-python
|
||||
*
|
||||
* Hugging Face Resources:
|
||||
* 1. https://github.com/huggingface/huggingface_hub
|
||||
* 2. https://huggingface.co/docs/huggingface_hub/main/en/guides/cli
|
||||
*/
|
||||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchPypi,
|
||||
# build time dependencies
|
||||
setuptools,
|
||||
# runtime dependencies
|
||||
filelock,
|
||||
fsspec,
|
||||
hf-xet,
|
||||
pyyaml,
|
||||
requests,
|
||||
tqdm,
|
||||
typing-extensions,
|
||||
}:
|
||||
buildPythonPackage rec {
|
||||
pname = "huggingface_hub";
|
||||
version = "0.34.3";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
hash = "sha256-1YEw/VqnQISAaBR1SRwKvX6DVEIIL7w+9NRbbDn4OFM=";
|
||||
};
|
||||
|
||||
pyproject = true;
|
||||
doCheck = false; # skip unit testing
|
||||
pythonImportsCheck = ["huggingface_hub"];
|
||||
|
||||
# buildtime dependencies
|
||||
build-system = [
|
||||
setuptools
|
||||
];
|
||||
# runtime dependencies
|
||||
dependencies = [
|
||||
filelock
|
||||
fsspec
|
||||
hf-xet
|
||||
pyyaml
|
||||
requests
|
||||
tqdm
|
||||
typing-extensions
|
||||
];
|
||||
|
||||
meta = rec {
|
||||
description = "The official Python client for the Huggingface Hub.";
|
||||
homepage = "https://github.com/huggingface/huggingface_hub";
|
||||
changelog = "${homepage}/releases/tag/v${version}";
|
||||
license = lib.licenses.asl20; # Apache License 2.0
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue