├── cc-batteries ├── pending.md ├── vectorclass │ ├── vectorclass-cmake │ │ ├── vectorclassConfig.cmake │ │ ├── vectorclassConfigVersion.cmake │ │ └── vectorclassTargets.cmake │ └── default.nix ├── corrade │ └── default.nix ├── readerwriterqueue │ └── default.nix ├── aria-csv-parser │ └── default.nix ├── eve │ └── default.nix ├── cpp-sort │ └── default.nix ├── unordered-dense │ └── default.nix ├── libcoro │ └── default.nix ├── magnum-integration │ └── default.nix ├── part.nix ├── scnlib │ └── default.nix ├── magnum │ └── default.nix └── magnum-plugins │ └── default.nix ├── gen-ai ├── livekit │ ├── plugins │ │ ├── elevenlabs.nix │ │ ├── speechmatics.nix │ │ ├── openai.nix │ │ ├── silero.nix │ │ ├── deepgram.nix │ │ ├── turn-detector.nix │ │ └── 0001-Add-speaker-diarization.patch │ ├── agents-source.nix │ ├── agents.nix │ └── rtc.nix ├── claude-code │ ├── README.md │ ├── update.sh │ ├── package.nix │ └── package-lock.json ├── sglang │ ├── src.nix │ └── sgl-kernel.nix ├── dspy │ ├── magicattr.nix │ └── default.nix ├── serena │ ├── use-basedpyright-langserver.patch │ └── default.nix ├── e2b │ ├── code-interpreter.nix │ └── default.nix ├── tantivy │ └── default.nix ├── textgrad │ └── default.nix ├── agno │ └── default.nix ├── codex │ └── package.nix └── part.nix ├── bleeding └── README.md ├── robotics ├── mujoco-menagerie │ ├── pyproject.toml │ ├── default.nix │ └── mujoco_menagerie │ │ └── __init__.py ├── physx5 │ ├── default.nix │ └── gpu.nix ├── gym3 │ ├── 0001-Allow-newer-version-of-glfw-and-imageio-ffmpeg.patch │ └── default.nix ├── toppra │ └── default.nix ├── basis-universal │ └── default.nix ├── part.nix └── mujoco-mjx │ └── default.nix ├── torch-family ├── part.nix └── pytorchviz │ └── default.nix ├── math ├── part.nix ├── chumpy │ └── default.nix └── numpy-quaternion │ └── default.nix ├── tools ├── temporal-ui-server │ └── default.nix ├── dowhen │ └── default.nix ├── tyro │ └── default.nix ├── ddddocr │ └── default.nix ├── cos-python-sdk-v5 │ └── default.nix ├── swanlab │ ├── swankit.nix │ ├── swanboard.nix │ └── default.nix └── part.nix ├── time-series ├── part.nix ├── pyod │ └── default.nix ├── nfoursid │ └── default.nix └── darts │ └── default.nix ├── julia-family ├── part.nix └── pyjulia │ ├── juliacall.nix │ ├── juliapkg.nix │ └── default.nix ├── internal ├── part.nix └── pyproj2nix │ └── pyproj2nix.py ├── LICENSE ├── flake.lock ├── CLAUDE.md ├── README.md ├── flake.nix └── .gitignore /cc-batteries/pending.md: -------------------------------------------------------------------------------- 1 | - [tg](https://github.com/tidwall/tg) a geometry library. 2 | -------------------------------------------------------------------------------- /cc-batteries/vectorclass/vectorclass-cmake/vectorclassConfig.cmake: -------------------------------------------------------------------------------- 1 | include("${CMAKE_CURRENT_LIST_DIR}/vectorclassTargets.cmake") 2 | -------------------------------------------------------------------------------- /gen-ai/livekit/plugins/elevenlabs.nix: -------------------------------------------------------------------------------- 1 | { callPackage }: 2 | 3 | let 4 | inherit (import ../agents-source.nix) livekitPlugin; 5 | in callPackage livekitPlugin { 6 | name = "elevenlabs"; 7 | } 8 | -------------------------------------------------------------------------------- /gen-ai/livekit/plugins/speechmatics.nix: -------------------------------------------------------------------------------- 1 | { callPackage }: 2 | 3 | let 4 | inherit (import ../agents-source.nix) livekitPlugin; 5 | in callPackage livekitPlugin { 6 | name = "speechmatics"; 7 | } 8 | -------------------------------------------------------------------------------- /gen-ai/livekit/plugins/openai.nix: -------------------------------------------------------------------------------- 1 | { callPackage, openai }: 2 | 3 | let 4 | inherit (import ../agents-source.nix) livekitPlugin; 5 | in callPackage livekitPlugin { 6 | name = "openai"; 7 | extraDeps = [ openai ]; 8 | } 9 | -------------------------------------------------------------------------------- /gen-ai/livekit/plugins/silero.nix: -------------------------------------------------------------------------------- 1 | { callPackage, onnxruntime, numpy }: 2 | 3 | let 4 | inherit (import ../agents-source.nix) livekitPlugin; 5 | in callPackage livekitPlugin { 6 | name = "silero"; 7 | extraDeps = [ onnxruntime numpy ]; 8 | } 9 | -------------------------------------------------------------------------------- /gen-ai/claude-code/README.md: -------------------------------------------------------------------------------- 1 | Plesae note that this is just a clone of [The official packaging on nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/cl/claude-code/package.nix); put it here so that we can get to the latest version faster. 2 | -------------------------------------------------------------------------------- /gen-ai/livekit/plugins/deepgram.nix: -------------------------------------------------------------------------------- 1 | { callPackage }: 2 | 3 | let 4 | inherit (import ../agents-source.nix) livekitPlugin; 5 | in callPackage livekitPlugin { 6 | name = "deepgram"; 7 | patches = [ 8 | ./0001-Add-speaker-diarization.patch 9 | ]; 10 | } 11 | -------------------------------------------------------------------------------- /gen-ai/livekit/plugins/turn-detector.nix: -------------------------------------------------------------------------------- 1 | { callPackage, numpy, onnxruntime, jinja2, transformers }: 2 | 3 | let 4 | inherit (import ../agents-source.nix) livekitPlugin; 5 | in callPackage livekitPlugin { 6 | name = "turn-detector"; 7 | extraDeps = [ numpy onnxruntime jinja2 transformers ]; 8 | } 9 | -------------------------------------------------------------------------------- /bleeding/README.md: -------------------------------------------------------------------------------- 1 | # The bleeding repository 2 | 3 | A collection of packages that do exist in [Nixpkgs](https://github.com/NixOS/nixpkgs/). However, the versions are not quite up-to-date. Packages here will gradue once I or someone else gets the newest version into the current active branch of nixpkgs. 4 | 5 | 1. Mujoco 2.3.5 6 | -------------------------------------------------------------------------------- /gen-ai/claude-code/update.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env nix-shell 2 | #!nix-shell -i bash -p nodePackages.npm nix-update 3 | 4 | set -euo pipefail 5 | 6 | version=$(npm view @anthropic-ai/claude-code version) 7 | 8 | # Generate updated lock file 9 | cd "$(dirname "${BASH_SOURCE[0]}")" 10 | npm i --package-lock-only @anthropic-ai/claude-code@"$version" 11 | rm -f package.json 12 | 13 | # Update version and hashes 14 | cd - 15 | nix-update claude-code --version "$version" 16 | -------------------------------------------------------------------------------- /robotics/mujoco-menagerie/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "mujoco-menagerie" 3 | version = "1.0.0" 4 | description = "Wrapper of Deepmind's high-quality models for the MuJoCo physics engine" 5 | authors = ["curated by DeepMind"] 6 | license = "mit" 7 | packages = [{include = "mujoco_menagerie"}] 8 | 9 | [tool.poetry.dependencies] 10 | python = "^3.9" 11 | 12 | [tool.poetry.dev-dependencies] 13 | mujoco = "^2.3.1.post1" 14 | 15 | [build-system] 16 | requires = ["poetry-core"] 17 | build-backend = "poetry.core.masonry.api" 18 | -------------------------------------------------------------------------------- /gen-ai/sglang/src.nix: -------------------------------------------------------------------------------- 1 | { fetchFromGitHub }: 2 | 3 | (rec { 4 | version = "0.4.6"; 5 | 6 | sglang = fetchFromGitHub { 7 | owner = "sgl-project"; 8 | repo = "sglang"; 9 | tag = "v${version}"; 10 | hash = "sha256-sL12YSvNT9G/K0ubxfZK/i/j7+zsQD8MngMRyc4qUnU="; 11 | }; 12 | 13 | cutlass = fetchFromGitHub { 14 | owner = "NVIDIA"; 15 | repo = "cutlass"; 16 | # Using the revision obtained in submodule inside flashinfer's `3rdparty`. 17 | rev = "df8a550d3917b0e97f416b2ed8c2d786f7f686a3"; 18 | hash = "sha256-d4czDoEv0Focf1bJHOVGX4BDS/h5O7RPoM/RrujhgFQ="; 19 | }; 20 | }) 21 | -------------------------------------------------------------------------------- /torch-family/part.nix: -------------------------------------------------------------------------------- 1 | { inputs, ... }: 2 | 3 | { 4 | flake.overlays.torch-family = final: prev: { 5 | pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [ 6 | (py-final: py-prev: { 7 | pytorchviz = py-final.callPackage ./pytorchviz { }; 8 | }) 9 | ]; 10 | }; 11 | 12 | perSystem = { pkgs, lib, ... }: { 13 | packages = { inherit (pkgs.python3Packages) pytorchviz; }; 14 | 15 | devShells.torch-family = pkgs.mkShell { 16 | name = "torch-family"; 17 | 18 | packages = [ (pkgs.python3.withPackages (p: with p; [ pytorchviz ])) ]; 19 | }; 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /math/part.nix: -------------------------------------------------------------------------------- 1 | { inputs, ... }: 2 | 3 | { 4 | flake.overlays.math = final: prev: { 5 | pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [ 6 | (py-final: py-prev: { 7 | # TODO(breakds): Enable numpy 2.0 when needed, also numpy-quaternion requires numpy 2 currently. 8 | # numpy = py-prev.numpy_2; 9 | # numpy-quaternion = py-final.callPackage ./numpy-quaternion {}; 10 | chumpy = py-final.callPackage ./chumpy { }; 11 | }) 12 | ]; 13 | }; 14 | 15 | perSystem = { pkgs, lib, ... }: { 16 | packages = { inherit (pkgs.python3Packages) chumpy; }; 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /tools/temporal-ui-server/default.nix: -------------------------------------------------------------------------------- 1 | { lib, fetchFromGitHub, buildGoModule }: 2 | 3 | let pname = "temporal-ui-server"; 4 | version = "2.37.3"; 5 | 6 | in buildGoModule { 7 | inherit pname version; 8 | 9 | src = fetchFromGitHub { 10 | owner = "temporalio"; 11 | repo = "ui-server"; 12 | rev = "v${version}"; 13 | hash = "sha256-FsW+5FIe7ouKreLh0gdb/s9ChaOkByWRHXjiWts4Gf0="; 14 | }; 15 | 16 | vendorHash = "sha256-Skv+n0Da0Wgi8yjiHDcZsYwIWK4pbzdgsnrpurXudJ0="; 17 | 18 | meta = with lib; { 19 | description = "Temporal Web UI Go server (BFF for the SPA)"; 20 | homepage = "https://github.com/temporalio/ui-server"; 21 | license = licenses.mit; 22 | maintainers = with maintainers; [ breakds ]; 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /robotics/physx5/default.nix: -------------------------------------------------------------------------------- 1 | { stdenv, fetchzip, fetchurl, lib }: 2 | 3 | stdenv.mkDerivation rec { 4 | pname = "physx5"; 5 | version = "106.0-physx-5.4.1.patch0"; 6 | 7 | src = fetchzip { 8 | url = 9 | "https://github.com/sapien-sim/physx-precompiled/releases/download/${version}/linux-release.zip"; 10 | stripRoot = false; 11 | hash = "sha256-805p57c4FFqBVfu2QFu3aX/86KdjhIp/vxveMGXTlEM="; 12 | }; 13 | 14 | installPhase = '' 15 | mkdir -p $out 16 | cp -r * $out/ 17 | ''; 18 | 19 | meta = with lib; { 20 | description = "NVIDIA PhysX precompiled libraries"; 21 | homepage = "https://github.com/sapien-sim/physx-precompiled"; 22 | license = licenses.unfreeRedistributable; 23 | platforms = platforms.linux; 24 | }; 25 | } 26 | -------------------------------------------------------------------------------- /time-series/part.nix: -------------------------------------------------------------------------------- 1 | { inputs, ... }: 2 | 3 | { 4 | flake.overlays.time-series = final: prev: { 5 | pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [ 6 | (py-final: py-prev: { 7 | pyod = py-final.callPackage ./pyod { }; 8 | nfoursid = py-final.callPackage ./nfoursid { }; 9 | # darts is not compatible with numpy 2.0 yet 10 | # darts = py-final.callPackage ./darts {}; 11 | }) 12 | ]; 13 | }; 14 | 15 | perSystem = { pkgs, lib, ... }: { 16 | packages = { inherit (pkgs.python3Packages) pyod nfoursid; }; 17 | 18 | devShells.time-series = pkgs.mkShell { 19 | name = "time-series"; 20 | 21 | packages = [ (pkgs.python3.withPackages (p: with p; [ pyod nfoursid ])) ]; 22 | }; 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /cc-batteries/corrade/default.nix: -------------------------------------------------------------------------------- 1 | { lib, stdenv, fetchFromGitHub, cmake, }: 2 | 3 | stdenv.mkDerivation rec { 4 | pname = "corrade"; 5 | version = "unstable-2025-01-09"; 6 | 7 | src = fetchFromGitHub { 8 | owner = "mosra"; 9 | repo = "corrade"; 10 | rev = "9be0550da90817b67ebf87b7b3e1fe71af6d0f90"; 11 | hash = "sha256-7oDdpxk3LN/ZnUvZKJEVhwj/3/T/SDYw+ZqB24wc7gU="; 12 | }; 13 | 14 | nativeBuildInputs = [ cmake ]; 15 | 16 | meta = with lib; { 17 | description = "C++11 multiplatform utility library"; 18 | homepage = "https://github.com/mosra/corrade"; 19 | license = with licenses; [ mit unlicense ]; 20 | maintainers = with maintainers; [ SomeoneSerge ]; 21 | mainProgram = "corrade"; 22 | platforms = platforms.all; 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /cc-batteries/readerwriterqueue/default.nix: -------------------------------------------------------------------------------- 1 | { lib, stdenv, fetchFromGitHub, cmake }: 2 | 3 | stdenv.mkDerivation (finalAttrs: { 4 | pname = "readerwriterqueue"; 5 | version = "1.0.7"; 6 | 7 | src = fetchFromGitHub { 8 | owner = "cameron314"; 9 | repo = "readerwriterqueue"; 10 | rev = "v${finalAttrs.version}"; 11 | hash = "sha256-FUCgW22g7tuaMPERYf53BlXwHA4rESE/7C0yx7c6xzc="; 12 | }; 13 | 14 | nativeBuildInputs = [ cmake ]; 15 | 16 | meta = with lib; { 17 | description = "A fast single-producer single-consumer lock-free queue for C++"; 18 | homepage = "https://github.com/cameron314/readerwriterqueue"; 19 | license = licenses.bsd2; 20 | platforms = platforms.all; 21 | maintainers = with maintainers; [ breakds ]; 22 | }; 23 | }) 24 | -------------------------------------------------------------------------------- /julia-family/part.nix: -------------------------------------------------------------------------------- 1 | { inputs, ... }: 2 | 3 | { 4 | flake.overlays.julia-family = final: prev: { 5 | pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [ 6 | (py-final: py-prev: { 7 | pyjulia = py-final.callPackage ./pyjulia { }; 8 | juliapkg = py-final.callPackage ./pyjulia/juliapkg.nix { }; 9 | juliacall = py-final.callPackage ./pyjulia/juliacall.nix { }; 10 | }) 11 | ]; 12 | }; 13 | 14 | perSystem = { pkgs, lib, ... }: { 15 | packages = { inherit (pkgs.python3Packages) pyjulia juliacall; }; 16 | 17 | devShells.julia-family = pkgs.mkShell { 18 | name = "julia-family"; 19 | 20 | packages = 21 | [ (pkgs.python3.withPackages (p: with p; [ pyjulia juliacall ])) ]; 22 | }; 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /julia-family/pyjulia/juliacall.nix: -------------------------------------------------------------------------------- 1 | { lib, buildPythonPackage, fetchFromGitHub, setuptools, juliapkg }: 2 | 3 | let version = "0.9.23"; 4 | 5 | in buildPythonPackage { 6 | pname = "juliacall"; 7 | inherit version; 8 | format = "pyproject"; 9 | 10 | src = fetchFromGitHub { 11 | owner = "JuliaPy"; 12 | repo = "PythonCall.jl"; 13 | rev = "v${version}"; 14 | hash = "sha256-1JND3jjFbaCWgX6hK/EehG4Cl6G3sgKzXrcDRp0ETFM="; 15 | }; 16 | 17 | build-system = [ setuptools ]; 18 | 19 | dependencies = [ juliapkg ]; 20 | 21 | meta = with lib; { 22 | description = "Python and Julia in harmony"; 23 | homepage = "https://github.com/JuliaPy/PythonCall.jl"; 24 | license = licenses.mit; 25 | maintainers = with maintainers; [ breakds ]; 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /julia-family/pyjulia/juliapkg.nix: -------------------------------------------------------------------------------- 1 | { lib, buildPythonPackage, fetchFromGitHub, hatchling, semver }: 2 | 3 | let version = "0.1.15"; 4 | 5 | in buildPythonPackage { 6 | pname = "juliapkg"; 7 | inherit version; 8 | format = "pyproject"; 9 | 10 | src = fetchFromGitHub { 11 | owner = "JuliaPy"; 12 | repo = "pyjuliapkg"; 13 | rev = "v${version}"; 14 | hash = "sha256-lorMN5cTbncuRSqGwWYt8glhIbgNfL0oeRHZ3+1F1s0="; 15 | }; 16 | 17 | build-system = [ hatchling ]; 18 | 19 | dependencies = [ semver ]; 20 | 21 | meta = with lib; { 22 | description = "Manage your Julia dependencies from Python"; 23 | homepage = "https://github.com/JuliaPy/pyjuliapkg"; 24 | license = licenses.mit; 25 | maintainers = with maintainers; [ breakds ]; 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /internal/part.nix: -------------------------------------------------------------------------------- 1 | { inputs, ... }: 2 | 3 | { 4 | flake.overlays.internal = final: prev: { 5 | pyproj2nix = final.writers.writePython3Bin "pyproj2nix" { 6 | libraries = with final.python3Packages; [ 7 | click 8 | jinja2 9 | httpx 10 | ]; 11 | } (builtins.readFile ./pyproj2nix/pyproj2nix.py); 12 | }; 13 | 14 | # flake.overlays.internal-hooks = final: prev: {}; 15 | 16 | perSystem = { system, pkgs-internal, lib, ... }: { 17 | _module.args.pkgs-internal = import inputs.nixpkgs { 18 | inherit system; 19 | overlays = [ inputs.self.overlays.internal ]; 20 | }; 21 | 22 | apps = { 23 | pyproj2nix = { 24 | type = "app"; 25 | program = "${pkgs-internal.pyproj2nix}/bin/pyproj2nix"; 26 | }; 27 | }; 28 | }; 29 | } 30 | -------------------------------------------------------------------------------- /tools/dowhen/default.nix: -------------------------------------------------------------------------------- 1 | { lib 2 | , buildPythonPackage 3 | , fetchFromGitHub 4 | , setuptools 5 | }: 6 | 7 | let 8 | pname = "dowhen"; 9 | version = "0.1.0"; 10 | 11 | in buildPythonPackage { 12 | inherit pname version; 13 | pyproject = true; 14 | 15 | src = fetchFromGitHub { 16 | owner = "gaogaotiantian"; 17 | repo = "dowhen"; 18 | tag = version; 19 | hash = "sha256-7eoNe9SvE39J4mwIOxvbU1oh/L7tr/QM1uuBDqWtQu0="; 20 | }; 21 | 22 | build-system = [ 23 | setuptools 24 | ]; 25 | 26 | pythonImportsCheck = [ "dowhen" ]; 27 | 28 | meta = with lib; { 29 | homepage = "https://github.com/gaogaotiantian/dowhen"; 30 | description = "An instrumentation tool for Python"; 31 | license = licenses.asl20; 32 | maintainers = with maintainers; [ breakds ]; 33 | }; 34 | } 35 | -------------------------------------------------------------------------------- /cc-batteries/aria-csv-parser/default.nix: -------------------------------------------------------------------------------- 1 | # Credit to https://github.com/foolnotion/nur-pkg/blob/master/pkgs/aria-csv/default.nix 2 | 3 | { cmake, lib, stdenv, fetchFromGitHub }: 4 | 5 | stdenv.mkDerivation rec { 6 | pname = "aria-csv"; 7 | version = "2024.10.27"; 8 | 9 | src = fetchFromGitHub { 10 | owner = "AriaFallah"; 11 | repo = "csv-parser"; 12 | rev = "43961a918f150088dd0c288b0c9c551e0be795f8"; 13 | hash = "sha256-X8YbSNU9i1pNEKzwm+hjQJdIhPX6o06MIDKHBwQorAE="; 14 | }; 15 | 16 | nativeBuildInputs = [ cmake ]; 17 | 18 | meta = with lib; { 19 | description = "Fast, header-only, C++11 CSV parser."; 20 | homepage = "https://github.com/AriaFallah/csv-parser"; 21 | license = licenses.mit; 22 | platforms = platforms.all; 23 | maintainers = with maintainers; [ breakds ]; 24 | }; 25 | } 26 | -------------------------------------------------------------------------------- /tools/tyro/default.nix: -------------------------------------------------------------------------------- 1 | { lib, buildPythonPackage, fetchFromGitHub, setuptools, docstring-parser 2 | , typing-extensions, rich, shtab, typeguard, hatchling }: 3 | 4 | buildPythonPackage rec { 5 | pname = "tyro"; 6 | version = "0.9.9"; 7 | format = "pyproject"; 8 | 9 | src = fetchFromGitHub { 10 | owner = "brentyi"; 11 | repo = pname; 12 | rev = "v${version}"; 13 | hash = "sha256-iFKgnKd4606S/hEMHD7ZaTnGF16gmvbaE62nifw4o7c="; 14 | }; 15 | 16 | build-system = [ hatchling ]; 17 | 18 | dependencies = [ docstring-parser typing-extensions rich shtab typeguard ]; 19 | 20 | pythonImportsCheck = [ "tyro" ]; 21 | 22 | meta = with lib; { 23 | description = "tool for generating CLI interfaces in Python"; 24 | homepage = "https://brentyi.github.io/tyro"; 25 | license = licenses.mit; 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /gen-ai/dspy/magicattr.nix: -------------------------------------------------------------------------------- 1 | { lib, buildPythonPackage, fetchFromGitHub, setuptools }: 2 | 3 | let 4 | pname = "magicattr"; 5 | version = "2022.02.18"; 6 | 7 | in buildPythonPackage { 8 | inherit pname version; 9 | 10 | src = fetchFromGitHub { 11 | owner = "frmdstryr"; 12 | repo = pname; 13 | rev = "15ae93def3693661066624c9d760b26f6e205199"; 14 | hash = "sha256-FJtWU5AuunZbdlndGdfD1c9/0s7oRdoTi202pWjuAd8="; 15 | }; 16 | 17 | build-system = [ setuptools ]; 18 | 19 | meta = with lib; { 20 | description = '' 21 | A getattr and setattr that works on nested objects, lists, 22 | dicts, and any combination thereof without resorting to eval 23 | ''; 24 | homepage = "https://github.com/frmdstryr/magicattr"; 25 | license = licenses.mit; 26 | maintainers = with maintainers; [ breakds ]; 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /cc-batteries/eve/default.nix: -------------------------------------------------------------------------------- 1 | # Watch https://www.youtube.com/watch?v=WZGNCPBMInI 2 | 3 | { lib, stdenv, fetchFromGitHub, cmake }: 4 | 5 | stdenv.mkDerivation rec { 6 | pname = "eve"; 7 | version = "2024.11.28"; 8 | 9 | src = fetchFromGitHub { 10 | owner = "jfalcou"; 11 | repo = "eve"; 12 | rev = "d56b7d66d2c7772be0b59d8ad6567680916c6ce4"; 13 | hash = "sha256-qp9TCaXvvZVrrgdU1I2SRASOVXLjmGLZqKMZ/Ls1ti8="; 14 | }; 15 | 16 | nativeBuildInputs = [ cmake ]; 17 | 18 | cmakeFlags = [ 19 | "-DEVE_BUILD_TEST=OFF" 20 | "-DEVE_BUILD_BENCHMARKS=OFF" 21 | "-DEVE_BUILD_DOCUMENTATION=OFF" 22 | ]; 23 | 24 | meta = with lib; { 25 | description = "EVE - the Expressive Vector Engine in C++20."; 26 | homepage = "https://github.com/jfalcou/eve"; 27 | license = licenses.mit; 28 | platforms = platforms.all; 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /cc-batteries/cpp-sort/default.nix: -------------------------------------------------------------------------------- 1 | # Credit to https://github.com/foolnotion/nur-pkg/blob/master/pkgs/cpp-sort/default.nix 2 | 3 | { lib, stdenv, fetchFromGitHub, cmake }: 4 | 5 | stdenv.mkDerivation rec { 6 | pname = "cpp-sort"; 7 | version = "1.16.0"; 8 | 9 | src = fetchFromGitHub { 10 | owner = "Morwenn"; 11 | repo = "cpp-sort"; 12 | rev = "${version}"; 13 | hash = "sha256-NUza//JWix3N5IRe73bw4qrtV3sU/LZF8FgNUhhLN0k="; 14 | }; 15 | 16 | nativeBuildInputs = [ cmake ]; 17 | 18 | cmakeFlags = [ "-DCPPSORT_BUILD_TESTING=OFF" "-DCPPSORT_BUILD_EXAMPLES=OFF" ]; 19 | 20 | meta = with lib; { 21 | description = "Generic header-only C++14 sorting library."; 22 | homepage = "https://github.com/Morwenn/cpp-sort"; 23 | license = licenses.mit; 24 | platforms = platforms.all; 25 | maintainers = with maintainers; [ breakds ]; 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /cc-batteries/unordered-dense/default.nix: -------------------------------------------------------------------------------- 1 | # Credit to https://github.com/foolnotion/nur-pkg/blob/master/pkgs/unordered_dense/default.nix 2 | 3 | { lib, stdenv, fetchFromGitHub, cmake }: 4 | 5 | stdenv.mkDerivation rec { 6 | pname = "unordered_dense"; 7 | version = "4.4.0"; 8 | 9 | src = fetchFromGitHub { 10 | owner = "martinus"; 11 | repo = "unordered_dense"; 12 | rev = "v${version}"; 13 | hash = "sha256-tCsfPOPz7AFqV7HOumtE3WwwOwLckjYd+9PA5uLlhpE="; 14 | }; 15 | 16 | nativeBuildInputs = [ cmake ]; 17 | 18 | meta = with lib; { 19 | description = 20 | "A fast & densely stored hashmap and hashset based on robin-hood backward shift deletion"; 21 | homepage = "https://github.com/martinus/unordered_dense"; 22 | license = licenses.mit; 23 | platforms = platforms.all; 24 | maintainers = with maintainers; [ breakds ]; 25 | }; 26 | } 27 | -------------------------------------------------------------------------------- /math/chumpy/default.nix: -------------------------------------------------------------------------------- 1 | { lib, buildPythonPackage, fetchFromGitHub, pythonRelaxDepsHook, setuptools, pip 2 | , numpy, scipy, six }: 3 | 4 | buildPythonPackage rec { 5 | pname = "chumpy"; 6 | version = "2023.02.21"; 7 | format = "pyproject"; 8 | 9 | src = fetchFromGitHub { 10 | owner = "breakds"; 11 | repo = pname; 12 | rev = "42d88c1aeee8da19c0269ff7a7a2fa09fd14d8cc"; 13 | hash = "sha256-8nkT0FeEkug25kw6Ge87A6kSZmpvY3TcqjQGtlWGQlc="; 14 | }; 15 | 16 | buildInputs = [ setuptools pip ]; 17 | 18 | propagatedBuildInputs = [ numpy scipy six ]; 19 | 20 | pythonImportsCheck = [ "chumpy" ]; 21 | 22 | meta = with lib; { 23 | description = '' 24 | Autodifferentiation tool for Python 25 | ''; 26 | homepage = "https://github.com/mattloper/chumpy/"; 27 | license = licenses.mit; 28 | maintainers = with maintainers; [ breakds ]; 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /robotics/physx5/gpu.nix: -------------------------------------------------------------------------------- 1 | { lib, gcc12Stdenv, fetchzip, autoPatchelfHook }: 2 | 3 | let stdenv = gcc12Stdenv; 4 | in stdenv.mkDerivation rec { 5 | pname = "physx5-gpu"; 6 | version = "106.0-physx-5.4.1.patch0"; 7 | 8 | src = fetchzip { 9 | url = 10 | "https://github.com/sapien-sim/physx-precompiled/releases/download/${version}/linux-so.zip"; 11 | hash = "sha256-ApoOhIPxSsFnrzJ2ZeQ4Z2JhUVB1CFGp7uFnwhfDq6Y="; 12 | }; 13 | 14 | nativeBuildInputs = [ autoPatchelfHook ]; 15 | buildInputs = [ stdenv.cc.cc.lib ]; 16 | 17 | installPhase = '' 18 | mkdir -p $out/lib 19 | cp libPhysXGpu_64.so $out/lib/ 20 | ''; 21 | 22 | meta = with lib; { 23 | description = "NVIDIA PhysX GPU library"; 24 | homepage = "https://github.com/sapien-sim/physx-precompiled"; 25 | license = licenses.unfreeRedistributable; 26 | platforms = platforms.linux; 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /torch-family/pytorchviz/default.nix: -------------------------------------------------------------------------------- 1 | { lib, fetchFromGitHub, buildPythonPackage, setuptools, graphviz, distutils, torch }: 2 | 3 | buildPythonPackage rec { 4 | pname = "pytorchviz"; 5 | version = "2021.06.15"; 6 | pyproject = true; 7 | 8 | src = fetchFromGitHub { 9 | owner = "szagoruyko"; 10 | repo = pname; 11 | rev = "0adcd83af8aa7ab36d6afd139cabbd9df598edb7"; 12 | sha256 = "sha256-oNKvheam/qpgPMsG32XN78VuOQcQNDskqqvpnAnjuWs="; 13 | }; 14 | 15 | propagatedBuildInputs = [ graphviz distutils torch ]; 16 | 17 | build-system = [ setuptools ]; 18 | 19 | pythonImportsCheck = [ "torchviz" ]; 20 | 21 | meta = with lib; { 22 | description = 23 | "A small package to create visualizations of PyTorch execution graphs"; 24 | homepage = "https://github.com/szagoruyko/pytorchviz"; 25 | license = licenses.mit; 26 | maintainers = with maintainers; [ breakds ]; 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /tools/ddddocr/default.nix: -------------------------------------------------------------------------------- 1 | { lib, buildPythonPackage, fetchFromGitHub, setuptools, pythonRelaxDepsHook 2 | , onnxruntime, pillow, numpy, opencv4 }: 3 | 4 | buildPythonPackage rec { 5 | pname = "ddddocr"; 6 | version = "1.5.5"; 7 | format = "pyproject"; 8 | 9 | src = fetchFromGitHub { 10 | owner = "sml2h3"; 11 | repo = pname; 12 | rev = "262b0173390f2fd58886be0ad7a48df68b660e81"; 13 | hash = "sha256-MUejMU6fMTIgB/eQJ7b7Ku9hOoPHL/mSRhKjFiRQ9l0="; 14 | }; 15 | 16 | nativeBuildInputs = [ setuptools pythonRelaxDepsHook ]; 17 | 18 | propagatedBuildInputs = [ onnxruntime pillow numpy opencv4 ]; 19 | 20 | pythonRemoveDeps = [ "opencv-python-headless" ]; 21 | 22 | meta = with lib; { 23 | description = '' 24 | 带带弟弟 通用验证码识别OCR 25 | ''; 26 | homepage = "https://ddddocr.com/"; 27 | license = licenses.mit; 28 | maintainers = with maintainers; [ breakds ]; 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /robotics/gym3/0001-Allow-newer-version-of-glfw-and-imageio-ffmpeg.patch: -------------------------------------------------------------------------------- 1 | From 0d3577b8145ea026af32440c3beff67407415d90 Mon Sep 17 00:00:00 2001 2 | From: Break Yang 3 | Date: Thu, 5 Aug 2021 12:16:54 -0700 4 | Subject: [PATCH] Allow newer version of glfw and imageio-ffmpeg 5 | 6 | --- 7 | setup.py | 4 ++-- 8 | 1 file changed, 2 insertions(+), 2 deletions(-) 9 | 10 | diff --git a/setup.py b/setup.py 11 | index 52177b5..872c526 100644 12 | --- a/setup.py 13 | +++ b/setup.py 14 | @@ -13,8 +13,8 @@ setup( 15 | "numpy>=1.11.0,<2.0.0", 16 | "cffi>=1.13.0,<2.0.0", 17 | "imageio>=2.6.0,<3.0.0", 18 | - "imageio-ffmpeg>=0.3.0,<0.4.0", 19 | - "glfw>=1.8.6,<2.0.0", 20 | + "imageio-ffmpeg>=0.3.0", 21 | + "glfw>=1.8.6", 22 | "moderngl>=5.5.4,<6.0.0", 23 | ], 24 | package_data={"gym3": ["libenv.h", "internal/font.bin"]}, 25 | -- 26 | 2.31.1 27 | 28 | -------------------------------------------------------------------------------- /tools/cos-python-sdk-v5/default.nix: -------------------------------------------------------------------------------- 1 | { lib, buildPythonPackage, pythonOlder, fetchFromGitHub, setuptools, xmltodict 2 | , six, crcmod, pycryptodome, requests }: 3 | 4 | buildPythonPackage rec { 5 | pname = "cos-python-sdk-v5"; 6 | version = "1.9.33"; 7 | format = "pyproject"; 8 | 9 | disabled = pythonOlder "3.8"; 10 | 11 | src = fetchFromGitHub { 12 | owner = "tencentyun"; 13 | repo = pname; 14 | rev = "V${version}"; 15 | hash = "sha256-AHNvMC5l4/kagmjxVzaZKIRw62WLQdeN9qfBTTcfpyQ="; 16 | }; 17 | 18 | build-system = [ setuptools ]; 19 | 20 | dependencies = [ xmltodict six crcmod pycryptodome requests ]; 21 | 22 | pythonImportsCheck = [ "qcloud_cos" ]; 23 | 24 | meta = with lib; { 25 | description = "腾讯云 (Tencent Cloud) COSV5Python SDK"; 26 | homepage = "https://github.com/tencentyun/cos-python-sdk-v5"; 27 | license = licenses.mit; 28 | maintainers = with maintainers; [ breakds ]; 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /robotics/toppra/default.nix: -------------------------------------------------------------------------------- 1 | { lib, buildPythonPackage, fetchFromGitHub, python3Packages, setuptools, cython 2 | , numpy, scipy, matplotlib, pyyaml, oldest-supported-numpy }: 3 | 4 | buildPythonPackage rec { 5 | pname = "toppra"; 6 | version = "0.6.2"; 7 | format = "pyproject"; 8 | 9 | src = fetchFromGitHub { 10 | owner = "hungpham2511"; 11 | repo = pname; 12 | rev = "v${version}"; 13 | hash = "sha256-QakM8HizcPSdTMrMCnynGBkd9HF1H/r2+Xt4Y9RH9ck="; 14 | }; 15 | 16 | build-system = [ setuptools ]; 17 | 18 | dependencies = [ 19 | numpy 20 | cython 21 | pyyaml 22 | python3Packages.msgpack 23 | oldest-supported-numpy 24 | scipy 25 | matplotlib 26 | ]; 27 | 28 | pythonImportsCheck = [ "toppra" ]; 29 | 30 | meta = with lib; { 31 | description = "robotic motion planning library"; 32 | homepage = "https://hungpham2511.github.io/toppra/index.html"; 33 | license = licenses.mit; 34 | }; 35 | } 36 | -------------------------------------------------------------------------------- /math/numpy-quaternion/default.nix: -------------------------------------------------------------------------------- 1 | # NOTE: this library requires numpy >= 2.0 2 | 3 | { lib, fetchFromGitHub, buildPythonPackage, numpy, scipy, numba, hatchling }: 4 | 5 | buildPythonPackage rec { 6 | pname = "numpy-quaternion"; 7 | version = "2024.0.3"; 8 | pyproject = true; 9 | 10 | src = fetchFromGitHub { 11 | owner = "moble"; 12 | repo = "quaternion"; 13 | rev = "v${version}"; 14 | hash = "sha256-3UVqeiGcdsjQQpVRhcDBf1N0XJw+Xe/Pp+4lmGzl8ws="; 15 | }; 16 | 17 | build-system = [ hatchling ]; 18 | 19 | propagatedBuildInputs = [ numpy scipy numba ]; 20 | 21 | pythonImportsCheck = [ "quaternion" ]; 22 | 23 | meta = with lib; { 24 | homepage = "https://github.com/moble/quaternion"; 25 | description = '' 26 | Add built-in support for quaternions to numpy 27 | ''; 28 | license = licenses.mit; 29 | maintainers = with maintainers; [ breakds ]; 30 | platforms = with platforms; (linux ++ darwin); 31 | }; 32 | } 33 | -------------------------------------------------------------------------------- /time-series/pyod/default.nix: -------------------------------------------------------------------------------- 1 | { lib, buildPythonPackage, fetchFromGitHub, setuptools, joblib, matplotlib 2 | , numpy, numba, scipy, scikit-learn }: 3 | 4 | buildPythonPackage rec { 5 | pname = "pyod"; 6 | version = "2.0.2"; 7 | format = "pyproject"; 8 | 9 | src = fetchFromGitHub { 10 | owner = "yzhao062"; 11 | repo = pname; 12 | rev = "v${version}"; 13 | hash = "sha256-thEuXyL/ncDeeXTDxPbOoxeY5pI1IqvwFrvZpg8Yqdg="; 14 | }; 15 | 16 | buildInputs = [ setuptools ]; 17 | 18 | propagatedBuildInputs = [ joblib matplotlib numpy numba scipy scikit-learn ]; 19 | 20 | pythonImportsCheck = [ "pyod" "pyod.models" "pyod.models.ecod" ]; 21 | 22 | meta = with lib; { 23 | description = '' 24 | A Comprehensive and Scalable Python Library for Outlier Detection (Anomaly Detection) 25 | ''; 26 | homepage = "https://pyod.readthedocs.io/"; 27 | license = licenses.bsd2; 28 | maintainers = with maintainers; [ breakds ]; 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /robotics/basis-universal/default.nix: -------------------------------------------------------------------------------- 1 | { lib, stdenv, fetchFromGitHub, cmake, }: 2 | 3 | let 4 | version = "1.16.4"; 5 | rev = "1.16.4"; 6 | 7 | in stdenv.mkDerivation { 8 | pname = "basis-universal"; 9 | inherit version; 10 | 11 | # Note by @howird: Breaks magnum-plugins with every update, follow 12 | # https://github.com/mosra/archlinux/blob/36275b5aea5e1521735b5da7819aea9ce1300976/basis-universal-src/PKGBUILD 13 | src = fetchFromGitHub { 14 | owner = "BinomialLLC"; 15 | repo = "basis_universal"; 16 | rev = "${rev}"; 17 | hash = "sha256-pKvfVvdbPIdzdSOklicThS7xwt4i3/21bE6wg9f8kHY="; 18 | }; 19 | 20 | nativeBuildInputs = [ cmake ]; 21 | 22 | meta = with lib; { 23 | description = "Basis Universal GPU Texture Codec"; 24 | homepage = "https://github.com/BinomialLLC/basis_universal"; 25 | license = licenses.asl20; 26 | maintainers = with maintainers; [ ]; 27 | mainProgram = "basis-universal"; 28 | platforms = platforms.all; 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /time-series/nfoursid/default.nix: -------------------------------------------------------------------------------- 1 | { lib, buildPythonPackage, fetchFromGitHub, setuptools, matplotlib, numpy 2 | , pandas }: 3 | 4 | buildPythonPackage rec { 5 | pname = "nfoursid"; 6 | version = "2022.06.07"; 7 | format = "pyproject"; 8 | 9 | src = fetchFromGitHub { 10 | owner = "spmvg"; 11 | repo = pname; 12 | rev = "91c7b341ab7acac9bfe2e8ea0ee0f094a73fc826"; 13 | hash = "sha256-tboQlUoeidvNUZpZjhnBvzQ0/Xb2vYBNccPDXA7Xeew="; 14 | }; 15 | 16 | buildInputs = [ setuptools ]; 17 | 18 | propagatedBuildInputs = [ matplotlib numpy pandas ]; 19 | 20 | pythonImportsCheck = 21 | [ "nfoursid" "nfoursid.kalman" "nfoursid.nfoursid" "nfoursid.state_space" ]; 22 | 23 | meta = with lib; { 24 | description = '' 25 | A Comprehensive and Scalable Python Library for Outlier Detection (Anomaly Detection) 26 | ''; 27 | homepage = "https://pyod.readthedocs.io/"; 28 | license = licenses.bsd2; 29 | maintainers = with maintainers; [ breakds ]; 30 | }; 31 | } 32 | -------------------------------------------------------------------------------- /cc-batteries/libcoro/default.nix: -------------------------------------------------------------------------------- 1 | { lib, stdenv, fetchFromGitHub, cmake, c-ares, openssl }: 2 | 3 | let 4 | pname = "libcoro"; 5 | version = "master-pr#361"; 6 | 7 | in stdenv.mkDerivation { 8 | inherit pname version; 9 | 10 | src = fetchFromGitHub { 11 | owner = "jbaldwin"; 12 | repo = "libcoro"; 13 | rev = "f45ca948b175fd4e37192f5010a5c6bf94dd7b97"; 14 | hash = "sha256-B27fi/IRwsJ38mXA9E+v0ucfgrqbIPD1komeIXnjT18="; 15 | }; 16 | 17 | nativeBuildInputs = [ cmake ]; 18 | propagatedBuildInputs = [ c-ares openssl.dev ]; 19 | 20 | cmakeFlags = [ 21 | (lib.cmakeBool "LIBCORO_EXTERNAL_DEPENDENCIES" true) 22 | (lib.cmakeBool "LIBCORO_BUILD_SHARED_LIBS" true) 23 | ]; 24 | 25 | outputs = [ "out" "dev" ]; 26 | 27 | meta = with lib; { 28 | description = "C++20 coroutine library"; 29 | homepage = "https://github.com/jbaldwin/libcoro"; 30 | license = licenses.asl20; 31 | platforms = platforms.all; 32 | maintainers = with maintainers; [ breakds ]; 33 | }; 34 | } 35 | -------------------------------------------------------------------------------- /cc-batteries/magnum-integration/default.nix: -------------------------------------------------------------------------------- 1 | { lib, stdenv, fetchFromGitHub, cmake, bullet, corrade, eigen, magnum, libGL, }: 2 | 3 | stdenv.mkDerivation rec { 4 | pname = "magnum-integration"; 5 | version = "unstable-2025-01-05"; 6 | 7 | src = fetchFromGitHub { 8 | owner = "mosra"; 9 | repo = "magnum-integration"; 10 | rev = "ed2730d95836fdcbdbb659c5c070bcde2eb07175"; 11 | hash = "sha256-f+NHhqVR0ByDzmfuVPnYllnEqGH14hUSMTeRzE+uhTE="; 12 | }; 13 | 14 | nativeBuildInputs = [ cmake ]; 15 | buildInputs = [ (lib.getDev bullet) corrade eigen magnum libGL ]; 16 | 17 | cmakeFlags = [ 18 | (lib.cmakeBool "MAGNUM_WITH_EIGEN" true) 19 | (lib.cmakeBool "MAGNUM_WITH_BULLET" true) 20 | ]; 21 | 22 | meta = with lib; { 23 | description = "Integration libraries for the Magnum C++11 graphics engine"; 24 | homepage = "https://github.com/mosra/magnum-integration"; 25 | license = licenses.mit; 26 | maintainers = with maintainers; [ ]; 27 | mainProgram = "magnum-integration"; 28 | platforms = platforms.all; 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /tools/swanlab/swankit.nix: -------------------------------------------------------------------------------- 1 | { lib, buildPythonPackage, pythonOlder, fetchFromGitHub, pytestCheckHook 2 | , hatchling, hatch-fancy-pypi-readme, hatch-requirements-txt, nanoid, pyyaml }: 3 | 4 | buildPythonPackage rec { 5 | pname = "swankit"; 6 | version = "0.1.2-beta.6"; 7 | format = "pyproject"; 8 | 9 | disabled = pythonOlder "3.8"; 10 | 11 | src = fetchFromGitHub { 12 | owner = "SwanHubX"; 13 | repo = "SwanLab-Toolkit"; 14 | rev = "v${version}"; 15 | hash = "sha256-uqmi1Zq4GCKVsUE8v7esxSDbfiRzwS5aBFTjnsROUlM="; 16 | }; 17 | 18 | build-system = [ hatchling hatch-fancy-pypi-readme hatch-requirements-txt ]; 19 | 20 | pythonImportsCheck = [ "swankit" ]; 21 | 22 | nativeCheckInputs = [ pytestCheckHook nanoid pyyaml ]; 23 | disabledTests = [ 24 | "test_default" # requires home directory 25 | ]; 26 | 27 | meta = with lib; { 28 | description = "Swanlab包工具箱 (toolkit)"; 29 | homepage = "https://github.com/SwanHubX/SwanLab-Toolkit"; 30 | license = licenses.asl20; 31 | maintainers = with maintainers; [ breakds ]; 32 | }; 33 | } 34 | -------------------------------------------------------------------------------- /cc-batteries/part.nix: -------------------------------------------------------------------------------- 1 | { inputs, ... }: 2 | 3 | { 4 | flake.overlays.cc-batteries = final: prev: { 5 | aria-csv-parser = final.callPackage ./aria-csv-parser { }; 6 | cpp-sort = final.callPackage ./cpp-sort { }; 7 | scnlib = final.callPackage ./scnlib { }; 8 | unordered-dense = final.callPackage ./unordered-dense { }; 9 | vectorclass = final.callPackage ./vectorclass { }; 10 | eve = final.callPackage ./eve { }; 11 | libcoro = final.callPackage ./libcoro { }; 12 | corrade = final.callPackage ./corrade { }; 13 | magnum = final.callPackage ./magnum { }; 14 | magnum-plugins = final.callPackage ./magnum-plugins { }; 15 | magnum-integration = final.callPackage ./magnum-integration { }; 16 | readerwriterqueue = final.callPackage ./readerwriterqueue { }; 17 | }; 18 | 19 | perSystem = { pkgs, lib, ... }: { 20 | packages = { 21 | inherit (pkgs) 22 | aria-csv-parser cpp-sort scnlib unordered-dense vectorclass eve libcoro 23 | corrade magnum magnum-plugins magnum-integration readerwriterqueue; 24 | }; 25 | }; 26 | } 27 | -------------------------------------------------------------------------------- /gen-ai/serena/use-basedpyright-langserver.patch: -------------------------------------------------------------------------------- 1 | diff --git a/src/solidlsp/language_servers/pyright_server.py b/src/solidlsp/language_servers/pyright_server.py 2 | index 1234567..abcdefg 100644 3 | --- a/src/solidlsp/language_servers/pyright_server.py 4 | +++ b/src/solidlsp/language_servers/pyright_server.py 5 | @@ -34,9 +34,8 @@ class PyrightServer(SolidLanguageServer): 6 | super().__init__( 7 | config, 8 | logger, 9 | repository_root_path, 10 | - # Note 1: we can also use `pyright-langserver --stdio` but it requires pyright to be installed with npm 11 | - # Note 2: we can also use `bpyright-langserver --stdio` if we ever are unhappy with pyright 12 | - ProcessLaunchInfo(cmd="python -m pyright.langserver --stdio", cwd=repository_root_path), 13 | + # Using basedpyright-langserver directly (requires basedpyright to be installed and in PATH) 14 | + ProcessLaunchInfo(cmd="basedpyright-langserver --stdio", cwd=repository_root_path), 15 | "python", 16 | solidlsp_settings, 17 | ) -------------------------------------------------------------------------------- /gen-ai/e2b/code-interpreter.nix: -------------------------------------------------------------------------------- 1 | { lib 2 | , buildPythonPackage 3 | , fetchFromGitHub 4 | , poetry-core 5 | , httpx 6 | , attrs 7 | , e2b 8 | }: 9 | 10 | let pname = "e2b-code-interpreter"; 11 | version = "1.0.3"; 12 | 13 | in buildPythonPackage { 14 | inherit pname version; 15 | pyproject = true; 16 | 17 | src = fetchFromGitHub { 18 | owner = "e2b-dev"; 19 | repo = "code-interpreter"; 20 | rev = "@e2b/code-interpreter-python@${version}"; 21 | hash = "sha256-YXdWSLs9oDAb0iJqLOZzRjKqWXEglaSGI8rPx289zJo="; 22 | }; 23 | 24 | # src.name == "source" 25 | sourceRoot = "source/python"; 26 | 27 | build-system = [ poetry-core ]; 28 | 29 | dependencies = [ 30 | httpx 31 | attrs 32 | e2b 33 | ]; 34 | 35 | pythonImportsCheck = [ "e2b_code_interpreter" ]; 36 | 37 | meta = with lib; { 38 | description = '' 39 | Python & JS/TS SDK for running AI-generated code/code interpreting 40 | in your AI app 41 | ''; 42 | homepage = "https://e2b.dev/"; 43 | license = licenses.asl20; 44 | maintainers = with maintainers; [ breakds ]; 45 | }; 46 | } 47 | -------------------------------------------------------------------------------- /cc-batteries/scnlib/default.nix: -------------------------------------------------------------------------------- 1 | # Credit to https://github.com/foolnotion/nur-pkg/blob/master/pkgs/scnlib/default.nix 2 | 3 | { lib, stdenv, fetchFromGitHub, cmake, fast-float 4 | , enableShared ? !stdenv.hostPlatform.isStatic }: 5 | 6 | stdenv.mkDerivation rec { 7 | pname = "scnlib"; 8 | version = "4.0.1"; 9 | 10 | src = fetchFromGitHub { 11 | owner = "eliaskosunen"; 12 | repo = "scnlib"; 13 | rev = "v${version}"; 14 | hash = "sha256-qEZAWhtvhKMkh7fk1yD17ErWGCpztEs0seV4AkBOy1I="; 15 | }; 16 | 17 | nativeBuildInputs = [ cmake ]; 18 | buildInputs = [ fast-float ]; 19 | 20 | cmakeFlags = [ 21 | "-DSCN_TESTS=OFF" 22 | "-DSCN_BENCHMARKS=OFF" 23 | "-DSCN_EXAMPLES=OFF" 24 | "-DSCN_USE_EXTERNAL_FAST_FLOAT=ON" 25 | "-DBUILD_SHARED_LIBS=${if enableShared then "ON" else "OFF"}" 26 | ]; 27 | 28 | meta = with lib; { 29 | description = "Modern C++ library for replacing scanf and std::istream. ."; 30 | homepage = "https://scnlib.readthedocs.io/"; 31 | license = licenses.asl20; 32 | platforms = platforms.all; 33 | maintainers = with maintainers; [ breakds ]; 34 | }; 35 | } 36 | -------------------------------------------------------------------------------- /gen-ai/sglang/sgl-kernel.nix: -------------------------------------------------------------------------------- 1 | { lib 2 | , callPackage 3 | , buildPythonPackage 4 | , scikit-build-core 5 | , cmake 6 | , ninja 7 | , torch 8 | , cudaPackages 9 | }: 10 | 11 | let 12 | pname = "sgl-kernel"; 13 | version = "0.1.4"; 14 | bundle = callPackage ./src.nix {}; 15 | 16 | in buildPythonPackage { 17 | inherit pname version; 18 | pyproject = true; 19 | 20 | src = bundle.sglang; 21 | sourceRoot = "${bundle.sglang.name}/${pname}"; 22 | 23 | build-system = [ 24 | scikit-build-core 25 | ]; 26 | 27 | nativeBuildInputs = [ 28 | cmake 29 | ninja 30 | (lib.getBin cudaPackages.cuda_nvcc) 31 | ]; 32 | 33 | buildInputs = [ 34 | cudaPackages.cuda_cudart 35 | ]; 36 | 37 | dependencies = [ 38 | torch 39 | ]; 40 | 41 | dontUseCmakeConfigure = true; 42 | 43 | pythonImportsCheck = [ "sgl_kernel" ]; 44 | 45 | meta = with lib; { 46 | homepage = "https://github.com/sgl-project/sglang/tree/main/sgl-kernel"; 47 | description = "Kernel Library for SGLang"; 48 | license = licenses.asl20; 49 | maintainers = with maintainers; [ breakds ]; 50 | }; 51 | } 52 | 53 | -------------------------------------------------------------------------------- /julia-family/pyjulia/default.nix: -------------------------------------------------------------------------------- 1 | # Note that currently this package need to be put in an environment 2 | # where the `julia` executable is available. Also installing the julia 3 | # packages will be the responsibility of this package (instead of 4 | # nix), which kind of undesirable. 5 | 6 | { lib, buildPythonPackage, fetchFromGitHub, setuptools, julia }: 7 | 8 | buildPythonPackage rec { 9 | pname = "julia"; 10 | version = "0.6.2"; 11 | pyproject = true; 12 | 13 | src = fetchFromGitHub { 14 | owner = "JuliaPy"; 15 | repo = "pyjulia"; 16 | rev = "v${version}"; 17 | hash = "sha256-gxr89VuKOW2A2spyEPNSPgCMsgx8jfynC3wiGHXwKY8="; 18 | }; 19 | 20 | nativeBuildInputs = [ julia ]; 21 | 22 | doCheck = false; 23 | 24 | pythonImportsCheck = [ "julia" ]; 25 | 26 | build-system = [ setuptools ]; 27 | 28 | meta = with lib; { 29 | homepage = "https://github.com/JuliaPy/pyjulia"; 30 | description = '' 31 | python interface to julia 32 | ''; 33 | license = licenses.mit; 34 | maintainers = with maintainers; [ breakds ]; 35 | platforms = with platforms; (linux ++ darwin); 36 | }; 37 | } 38 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 nixvital.org 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /gen-ai/livekit/agents-source.nix: -------------------------------------------------------------------------------- 1 | rec { 2 | version = "1.1.7"; 3 | 4 | src = { 5 | owner = "livekit"; 6 | repo = "agents"; 7 | tag = "livekit-agents@${version}"; 8 | hash = "sha256-6FtpUxzRwnaseQfsQcLKowm7McF8NGntwf12+qT6yko="; 9 | }; 10 | 11 | livekitPlugin = { 12 | lib, 13 | buildPythonPackage, 14 | fetchFromGitHub, 15 | hatchling, 16 | livekit-agents, 17 | name, 18 | extraDeps ? [], 19 | patches ? [], 20 | }: buildPythonPackage { 21 | pname = "livekit-agents-plugins-${name}"; 22 | inherit version patches; 23 | src = fetchFromGitHub src; 24 | pyproject = true; 25 | 26 | pypaBuildFlags = [ "livekit-plugins/livekit-plugins-${name}" ]; 27 | 28 | build-system = [ hatchling ]; 29 | 30 | dependencies = [ livekit-agents ] ++ extraDeps; 31 | 32 | meta = { 33 | description = '' 34 | LiveKit Agent Framework plugin for ${name} 35 | ''; 36 | homepage = "https://github.com/livekit/agents/"; 37 | license = lib.licenses.asl20; 38 | maintainers = with lib.maintainers; [ breakds ]; 39 | platforms = lib.platforms.all; 40 | }; 41 | }; 42 | } 43 | -------------------------------------------------------------------------------- /gen-ai/tantivy/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib 3 | , buildPythonPackage 4 | , fetchFromGitHub 5 | , rustPlatform 6 | }: 7 | 8 | buildPythonPackage rec { 9 | pname = "tantivy"; 10 | version = "0.24.0"; 11 | format = "pyproject"; 12 | 13 | src = fetchFromGitHub { 14 | owner = "quickwit-oss"; 15 | repo = "tantivy-py"; 16 | tag = version; 17 | hash = "sha256-8DViTFZMO6A30/M4WbOscFwtMYs+czpTfL4kTb1Y7Qc="; 18 | }; 19 | 20 | cargoDeps = rustPlatform.fetchCargoVendor { 21 | inherit pname version src; 22 | hash = "sha256-RvetJ3a4UqkyPFpsiKmVRGXkNOJvuBULmNBpjPSB6D4="; 23 | }; 24 | 25 | build-system = with rustPlatform; [ cargoSetupHook maturinBuildHook ]; 26 | 27 | pythonImportsCheck = [ "tantivy" ]; 28 | 29 | meta = { 30 | description = '' 31 | Python bindings for Tantivy; Tantivy is a full-text search engine library 32 | inspired by Apache Lucene and written in Rust 33 | ''; 34 | homepage = "https://github.com/quickwit-oss/tantivy-py"; 35 | changeLog = "https://github.com/quickwit-oss/tantivy-py/releases/tag/${version}"; 36 | license = lib.licenses.mit; 37 | maintainers = with lib.maintainers; [ breakds ]; 38 | }; 39 | } 40 | -------------------------------------------------------------------------------- /robotics/gym3/default.nix: -------------------------------------------------------------------------------- 1 | { lib, buildPythonPackage, fetchFromGitHub, setuptools, numpy, cffi, imageio, imageio-ffmpeg 2 | , moderngl, glfw, glcontext }: 3 | 4 | buildPythonPackage rec { 5 | pname = "gym3"; 6 | version = "0.3.3"; 7 | pyproject = true; 8 | 9 | src = fetchFromGitHub { 10 | owner = "openai"; 11 | repo = "gym3"; 12 | rev = "4c3824680eaf9dd04dce224ee3d4856429878226"; 13 | sha256 = "sha256-i+A/fGlg221wtKG8zbt7ATDKXe1HtVqXLOWbYJ9hZR8="; 14 | }; 15 | 16 | patches = [ ./0001-Allow-newer-version-of-glfw-and-imageio-ffmpeg.patch ]; 17 | 18 | build-system = [ setuptools ]; 19 | 20 | propagatedBuildInputs = 21 | [ numpy cffi imageio imageio-ffmpeg moderngl glfw glcontext ]; 22 | 23 | # Tests fail on python 3 due to writes to the read-only home directory 24 | doCheck = false; 25 | 26 | pythonImportsCheck = [ "gym3" ]; 27 | 28 | meta = with lib; { 29 | description = '' 30 | provides a unified interface for reinforcement learning 31 | environments that improves upon the gym interface 32 | ''; 33 | license = licenses.mit; 34 | platforms = platforms.all; 35 | maintainers = with maintainers; [ breakds ]; 36 | }; 37 | } 38 | -------------------------------------------------------------------------------- /robotics/part.nix: -------------------------------------------------------------------------------- 1 | { inputs, ... }: 2 | 3 | { 4 | flake.overlays.robotics = final: prev: { 5 | pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [ 6 | (py-final: py-prev: { 7 | gym3 = py-final.callPackage ./gym3 { }; 8 | mujoco-menagerie = py-final.callPackage ./mujoco-menagerie { }; 9 | mujoco-mjx = py-final.callPackage ./mujoco-mjx { }; 10 | toppra = py-final.callPackage ./toppra { }; 11 | }) 12 | ]; 13 | physx5 = final.callPackage ./physx5/default.nix { }; 14 | physx5-gpu = final.callPackage ./physx5/gpu.nix { }; 15 | basis-universal = final.callPackage ./basis-universal { }; 16 | }; 17 | 18 | perSystem = { pkgs, lib, ... }: { 19 | packages = { 20 | inherit (pkgs.python3Packages) gym3 mujoco-menagerie mujoco-mjx toppra; 21 | inherit (pkgs) physx5 physx5-gpu basis-universal; 22 | }; 23 | 24 | devShells.robotics = pkgs.mkShell { 25 | name = "robotics"; 26 | 27 | packages = with pkgs; [ 28 | (python3.withPackages 29 | (p: with p; [ gym3 mujoco mujoco-mjx mujoco-menagerie toppra ])) 30 | physx5 31 | physx5-gpu 32 | ]; 33 | }; 34 | }; 35 | } 36 | -------------------------------------------------------------------------------- /tools/part.nix: -------------------------------------------------------------------------------- 1 | { inputs, ... }: 2 | 3 | { 4 | flake.overlays.tools = final: prev: { 5 | pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [ 6 | (py-final: py-prev: { 7 | ddddocr = py-final.callPackage ./ddddocr { }; 8 | cos-python-sdk-v5 = py-final.callPackage ./cos-python-sdk-v5 { }; 9 | swankit = py-final.callPackage ./swanlab/swankit.nix { }; 10 | swanboard = py-final.callPackage ./swanlab/swanboard.nix { }; 11 | swanlab = py-final.callPackage ./swanlab { }; 12 | tyro = py-final.callPackage ./tyro { }; 13 | dowhen = py-final.callPackage ./dowhen { }; 14 | }) 15 | ]; 16 | 17 | temporal-ui-server = final.callPackage ./temporal-ui-server { }; 18 | }; 19 | 20 | perSystem = { pkgs, lib, ... }: { 21 | packages = { 22 | inherit (pkgs.python3Packages) ddddocr cos-python-sdk-v5 tyro dowhen; 23 | inherit (pkgs) temporal-ui-server; 24 | }; 25 | 26 | devShells.tools = pkgs.mkShell { 27 | name = "tools"; 28 | 29 | packages = [ 30 | (pkgs.python3.withPackages 31 | (p: with p; [ ddddocr cos-python-sdk-v5 swanlab tyro ])) 32 | ]; 33 | }; 34 | }; 35 | } 36 | -------------------------------------------------------------------------------- /gen-ai/e2b/default.nix: -------------------------------------------------------------------------------- 1 | { lib 2 | , buildPythonPackage 3 | , pythonOlder 4 | , fetchFromGitHub 5 | , poetry-core 6 | , python-dateutil 7 | , protobuf 8 | , httpcore 9 | , httpx 10 | , attrs 11 | , packaging 12 | , typing-extensions 13 | }: 14 | 15 | let pname = "e2b"; 16 | version = "1.0.5"; 17 | 18 | in buildPythonPackage { 19 | inherit pname version; 20 | pyproject = true; 21 | 22 | disabled = pythonOlder "3.8"; 23 | 24 | src = fetchFromGitHub { 25 | owner = "e2b-dev"; 26 | repo = "E2B"; 27 | rev = "@e2b/python-sdk@${version}"; 28 | hash = "sha256-dn8Qeq3ldnKv6HQhxREooHwjyGVDoSL6zG3U7IhGyuQ="; 29 | }; 30 | 31 | # src.name == "source" 32 | sourceRoot = "source/packages/python-sdk"; 33 | 34 | build-system = [ poetry-core ]; 35 | 36 | dependencies = [ 37 | python-dateutil 38 | protobuf 39 | httpcore 40 | httpx 41 | attrs 42 | packaging 43 | typing-extensions 44 | ]; 45 | 46 | pythonImportsCheck = [ "e2b" ]; 47 | 48 | meta = with lib; { 49 | description = "Secure open source cloud runtime for AI apps & AI agents"; 50 | homepage = "https://e2b.dev/"; 51 | license = licenses.asl20; 52 | maintainers = with maintainers; [ breakds ]; 53 | }; 54 | } 55 | -------------------------------------------------------------------------------- /cc-batteries/magnum/default.nix: -------------------------------------------------------------------------------- 1 | { lib, stdenv, fetchFromGitHub, cmake, corrade, libGL, xorg, }: 2 | 3 | stdenv.mkDerivation rec { 4 | pname = "magnum"; 5 | version = "unstable-2025-01-08"; 6 | 7 | src = fetchFromGitHub { 8 | owner = "mosra"; 9 | repo = "magnum"; 10 | rev = "e43eba68dbba3797a6fb477f30efa1f3788f139b"; 11 | hash = "sha256-C60QeSBk5q3mCZWGBOkEt0kx4ftjAGw4DZIKVSqza9w="; 12 | }; 13 | 14 | nativeBuildInputs = [ cmake ]; 15 | buildInputs = [ 16 | corrade 17 | libGL # A shim that resolves into libglvnd on Linux 18 | ] ++ lib.optionals stdenv.hostPlatform.isUnix [ xorg.libX11 ]; 19 | 20 | cmakeFlags = [ 21 | (lib.cmakeBool "MAGNUM_WITH_ANYIMAGEIMPORTER" true) 22 | (lib.cmakeBool "MAGNUM_WITH_ANYSCENEIMPORTER" true) 23 | (lib.cmakeBool "MAGNUM_WITH_ANYIMAGECONVERTER" true) 24 | (lib.cmakeBool "MAGNUM_WITH_WINDOWLESSGLXAPPLICATION" true) 25 | ]; 26 | 27 | meta = with lib; { 28 | description = 29 | "Lightweight and modular C++11 graphics middleware for games and data visualization"; 30 | homepage = "https://github.com/mosra/magnum"; 31 | license = licenses.mit; 32 | maintainers = with maintainers; [ SomeoneSerge ]; 33 | mainProgram = "magnum"; 34 | platforms = platforms.all; 35 | }; 36 | } 37 | -------------------------------------------------------------------------------- /gen-ai/textgrad/default.nix: -------------------------------------------------------------------------------- 1 | { lib, buildPythonPackage, fetchFromGitHub, pythonOlder, setuptools, openai 2 | , tenacity, python-dotenv, pandas, platformdirs, datasets, diskcache, graphviz 3 | , gdown, litellm, pillow, httpx, }: 4 | 5 | let 6 | pname = "textgrad"; 7 | version = "0.1.6"; 8 | 9 | in buildPythonPackage { 10 | inherit pname version; 11 | pyproject = true; 12 | 13 | disabled = pythonOlder "3.9"; 14 | 15 | src = fetchFromGitHub { 16 | owner = "zou-group"; 17 | repo = "textgrad"; 18 | rev = "v${version}"; 19 | hash = "sha256-QJJYtL7okmqAQezNUk4yT35JS2WPmwCapCBlm/yxX6w="; 20 | }; 21 | 22 | build-system = [ setuptools ]; 23 | 24 | dependencies = [ 25 | openai 26 | tenacity 27 | python-dotenv 28 | pandas 29 | platformdirs 30 | datasets 31 | diskcache 32 | graphviz 33 | gdown 34 | litellm 35 | pillow 36 | httpx 37 | ]; 38 | 39 | pythonImportsCheck = [ "textgrad" ]; 40 | 41 | meta = with lib; { 42 | description = '' 43 | TextGrad: Automatic "Differentiation" via Text -- using large language 44 | models to backpropagate textual gradients 45 | ''; 46 | homepage = "https://textgrad.com/"; 47 | license = licenses.mit; 48 | maintainers = with maintainers; [ braekds ]; 49 | }; 50 | } 51 | -------------------------------------------------------------------------------- /flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "flake-parts": { 4 | "inputs": { 5 | "nixpkgs-lib": [ 6 | "nixpkgs" 7 | ] 8 | }, 9 | "locked": { 10 | "lastModified": 1730504689, 11 | "narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=", 12 | "owner": "hercules-ci", 13 | "repo": "flake-parts", 14 | "rev": "506278e768c2a08bec68eb62932193e341f55c90", 15 | "type": "github" 16 | }, 17 | "original": { 18 | "owner": "hercules-ci", 19 | "repo": "flake-parts", 20 | "type": "github" 21 | } 22 | }, 23 | "nixpkgs": { 24 | "locked": { 25 | "lastModified": 1758035966, 26 | "narHash": "sha256-qqIJ3yxPiB0ZQTT9//nFGQYn8X/PBoJbofA7hRKZnmE=", 27 | "owner": "NixOS", 28 | "repo": "nixpkgs", 29 | "rev": "8d4ddb19d03c65a36ad8d189d001dc32ffb0306b", 30 | "type": "github" 31 | }, 32 | "original": { 33 | "owner": "NixOS", 34 | "ref": "nixos-unstable", 35 | "repo": "nixpkgs", 36 | "type": "github" 37 | } 38 | }, 39 | "root": { 40 | "inputs": { 41 | "flake-parts": "flake-parts", 42 | "nixpkgs": "nixpkgs" 43 | } 44 | } 45 | }, 46 | "root": "root", 47 | "version": 7 48 | } 49 | -------------------------------------------------------------------------------- /gen-ai/dspy/default.nix: -------------------------------------------------------------------------------- 1 | { lib, buildPythonPackage, fetchFromGitHub, setuptools, backoff, joblib, openai 2 | , pandas, spacy, regex, ujson, tqdm, datasets, optuna, json-repair, litellm 3 | , diskcache, tenacity, anyio, pydantic, magicattr, asyncer, cloudpickle 4 | , cachetools }: 5 | 6 | let 7 | pname = "dspy"; 8 | version = "2.6.0rc8"; 9 | 10 | in buildPythonPackage { 11 | inherit pname version; 12 | 13 | src = fetchFromGitHub { 14 | owner = "stanfordnlp"; 15 | repo = "dspy"; 16 | rev = version; 17 | hash = "sha256-dccfZG3sv5fdZAQJOVIJB043GDdzWdk/pJxGuk0dYI4="; 18 | }; 19 | 20 | build-system = [ setuptools ]; 21 | 22 | dependencies = [ 23 | backoff 24 | joblib 25 | openai 26 | pandas 27 | spacy 28 | regex 29 | ujson 30 | tqdm 31 | datasets 32 | optuna 33 | json-repair 34 | litellm 35 | diskcache 36 | tenacity 37 | anyio 38 | pydantic 39 | magicattr 40 | asyncer 41 | cloudpickle 42 | cachetools 43 | ]; 44 | 45 | # workaround the error: Permission denied: '/homeless-shelter' in check 46 | preHook = '' 47 | export HOME=$(mktemp -d) 48 | ''; 49 | pythonImportsCheck = [ "dspy" ]; 50 | 51 | meta = with lib; { 52 | homepage = "https://github.com/stanfordnlp/dspy"; 53 | description = "DSPy: The framework for programming with foundation models"; 54 | license = licenses.mit; 55 | maintainers = with maintainers; [ breakds ]; 56 | }; 57 | } 58 | -------------------------------------------------------------------------------- /robotics/mujoco-menagerie/default.nix: -------------------------------------------------------------------------------- 1 | { lib, buildPythonPackage, fetchFromGitHub, python, poetry-core }: 2 | 3 | let 4 | mujoco-menagerie-models = fetchFromGitHub { 5 | owner = "deepmind"; 6 | repo = "mujoco_menagerie"; 7 | rev = "990936d7cb4c0eb9c5843b0963633ea2d0b42b91"; # 2022.12.16 8 | hash = "sha256-zJTbe013Si9qt2ymWqWg067xm5JQ43vl/Iwv77E5nrk="; 9 | }; 10 | 11 | in buildPythonPackage rec { 12 | pname = "mujoco-menagerie"; 13 | version = "1.0.0"; 14 | 15 | src = ./.; 16 | 17 | format = "pyproject"; 18 | 19 | buildInputs = [ poetry-core ]; 20 | 21 | postFixup = let 22 | pkgPath = 23 | "$out/lib/python${python.pythonVersion}/site-packages/mujoco_menagerie"; 24 | in '' 25 | ln -s ${mujoco-menagerie-models}/anybotics_anymal_b ${pkgPath} 26 | ln -s ${mujoco-menagerie-models}/anybotics_anymal_c ${pkgPath} 27 | ln -s ${mujoco-menagerie-models}/agility_cassie ${pkgPath} 28 | ln -s ${mujoco-menagerie-models}/unitree_a1 ${pkgPath} 29 | ln -s ${mujoco-menagerie-models}/frank_emika_panda ${pkgPath} 30 | ln -s ${mujoco-menagerie-models}/universal_robots_ur5e ${pkgPath} 31 | ''; 32 | 33 | doCheck = false; 34 | 35 | meta = with lib; { 36 | description = '' 37 | Wrapper of Deepmind's high-quality models for the MuJoCo physics engine. 38 | ''; 39 | homepage = "https://github.com/eleurent/highway-env"; 40 | license = licenses.unfree; # There are many of different licenses. 41 | maintainers = with maintainers; [ breakds ]; 42 | }; 43 | } 44 | -------------------------------------------------------------------------------- /time-series/darts/default.nix: -------------------------------------------------------------------------------- 1 | { lib, buildPythonPackage, fetchFromGitHub, pythonRelaxDepsHook, setuptools 2 | , holidays, joblib, matplotlib, nfoursid, numpy, pandas, pmdarima, pyod 3 | , requests, scikit-learn, scipy, shap 4 | # , statsforecast 5 | , statsmodels, tbats, tqdm, typing-extensions, xarray, xgboost 6 | , pytorch-lightning }: 7 | 8 | buildPythonPackage rec { 9 | pname = "darts"; 10 | version = "0.31.0"; 11 | format = "pyproject"; 12 | 13 | src = fetchFromGitHub { 14 | owner = "unit8co"; 15 | repo = pname; 16 | rev = version; 17 | hash = "sha256-piSYRJIFr3RQTt/idfTRrqx/dD794He4d2F9flBJv7Q="; 18 | }; 19 | 20 | nativeBuildInputs = [ pythonRelaxDepsHook ]; 21 | 22 | buildInputs = [ setuptools ]; 23 | 24 | propagatedBuildInputs = [ 25 | holidays 26 | joblib 27 | matplotlib 28 | nfoursid 29 | numpy 30 | pandas 31 | pmdarima 32 | pyod 33 | requests 34 | scikit-learn 35 | scipy 36 | shap 37 | # statsforecast 38 | statsmodels 39 | tbats 40 | tqdm 41 | typing-extensions 42 | xarray 43 | xgboost 44 | pytorch-lightning 45 | ]; 46 | 47 | pythonRelaxDeps = [ "pmdarima" ]; 48 | 49 | pythonRemoveDeps = [ "statsforecast" ]; 50 | 51 | pythonImportsCheck = [ "darts" ]; 52 | 53 | meta = with lib; { 54 | description = '' 55 | A python library for user-friendly forecasting and anomaly detection on time series 56 | ''; 57 | homepage = "https://unit8co.github.io/darts/"; 58 | license = licenses.asl20; 59 | maintainers = with maintainers; [ breakds ]; 60 | }; 61 | } 62 | -------------------------------------------------------------------------------- /tools/swanlab/swanboard.nix: -------------------------------------------------------------------------------- 1 | { lib, buildPythonPackage, pythonOlder, fetchFromGitHub, pytestCheckHook 2 | , hatchling, hatch-fancy-pypi-readme, hatch-requirements-txt, swankit, fastapi 3 | , uvicorn, peewee, ujson, psutil, pyyaml, setuptools, nanoid, numpy }: 4 | 5 | # TODO(breakds): Build the UI. It seemed pretty straight forward but 6 | # for some reason I will run into this "dead spiral" of fetchYarnDeps 7 | # always complain about a changed yarn.lock (and hash). 8 | buildPythonPackage rec { 9 | pname = "swanboard"; 10 | version = "0.1.7-beta.1"; 11 | format = "pyproject"; 12 | 13 | disabled = pythonOlder "3.8"; 14 | 15 | src = fetchFromGitHub { 16 | owner = "SwanHubX"; 17 | repo = "SwanLab-Dashboard"; 18 | rev = "v${version}"; 19 | hash = "sha256-jBYlBJaEZPJ2tORfeSUnTpwyAjENh8QYTfVb6o2UNZg="; 20 | }; 21 | 22 | build-system = 23 | [ hatchling hatch-fancy-pypi-readme hatch-requirements-txt setuptools ]; 24 | 25 | dependencies = [ swankit fastapi uvicorn peewee ujson psutil pyyaml ]; 26 | 27 | pythonImportsCheck = [ "swanboard" ]; 28 | 29 | nativeCheckInputs = [ pytestCheckHook nanoid numpy ]; 30 | 31 | disabledTests = [ 32 | "test_get_package_version_installed" 33 | "test_get_package_version_not_installed" 34 | # Temporarily disable because there is a small bug that needs to be fixed. 35 | "TestExperiment" 36 | ]; 37 | 38 | meta = with lib; { 39 | description = "Swanlab's Dashboard"; 40 | homepage = "https://github.com/SwanHubX/SwanLab-Dashboard"; 41 | license = licenses.asl20; 42 | maintainers = with maintainers; [ breakds ]; 43 | }; 44 | } 45 | -------------------------------------------------------------------------------- /cc-batteries/magnum-plugins/default.nix: -------------------------------------------------------------------------------- 1 | { lib, stdenv, fetchFromGitHub, cmake, assimp, basis-universal, corrade, magnum 2 | , libGL, }: 3 | 4 | stdenv.mkDerivation rec { 5 | pname = "magnum-plugins"; 6 | version = "unstable-2024-01-07"; 7 | 8 | src = fetchFromGitHub { 9 | owner = "mosra"; 10 | repo = "magnum-plugins"; 11 | rev = "d46a241db0a7313f88f6703ff7ab1246c2135c50"; 12 | hash = "sha256-Lgu2bRKKjQ/K2c1sBK1grTM93ZQ+Q9Sd4Kv67gUQQaY="; 13 | }; 14 | 15 | nativeBuildInputs = [ cmake ]; 16 | buildInputs = [ 17 | assimp 18 | corrade 19 | magnum 20 | libGL 21 | 22 | # Not using because lacks exports. Only ships an executable in $out/bin 23 | # basis-universal 24 | ]; 25 | 26 | cmakeFlags = [ 27 | (lib.cmakeBool "MAGNUM_WITH_GLTFIMPORTER" true) 28 | (lib.cmakeBool "MAGNUM_WITH_STBIMAGEIMPORTER" true) 29 | (lib.cmakeBool "MAGNUM_WITH_STBIMAGECONVERTER" true) 30 | (lib.cmakeBool "MAGNUM_WITH_PRIMITIVEIMPORTER" true) 31 | (lib.cmakeBool "MAGNUM_WITH_STANFORDIMPORTER" true) 32 | 33 | (lib.cmakeBool "MAGNUM_WITH_BASISIMPORTER" true) 34 | (lib.cmakeFeature "BASIS_UNIVERSAL_DIR" "${basis-universal.src}") 35 | 36 | (lib.cmakeBool "MAGNUM_WITH_ASSIMPIMPORTER" true) 37 | (lib.cmakeBool "MAGNUM_WITH_KTXIMPORTER" true) 38 | ]; 39 | 40 | meta = with lib; { 41 | description = "Plugins for the Magnum C++11 graphics engine"; 42 | homepage = "https://github.com/mosra/magnum-plugins"; 43 | license = licenses.mit; 44 | maintainers = with maintainers; [ ]; 45 | mainProgram = "magnum-plugins"; 46 | platforms = platforms.all; 47 | }; 48 | } 49 | -------------------------------------------------------------------------------- /gen-ai/claude-code/package.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | buildNpmPackage, 4 | fetchzip, 5 | nodejs_20, 6 | }: 7 | 8 | buildNpmPackage rec { 9 | pname = "claude-code"; 10 | version = "2.0.69"; 11 | 12 | nodejs = nodejs_20; # required for sandboxed Nix builds on Darwin 13 | 14 | src = fetchzip { 15 | url = "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-${version}.tgz"; 16 | hash = "sha256-iQ+iVv3sY0oxGCZuuatcl2LSWvBfqSA+/RmeFgiMDDY="; 17 | }; 18 | 19 | npmDepsHash = "sha256-jb6AWGbnW5n9P9V8crR25ql0gFsAFY0z0EBnWJodnd4="; 20 | 21 | postPatch = '' 22 | cp ${./package-lock.json} package-lock.json 23 | ''; 24 | 25 | dontNpmBuild = true; 26 | 27 | AUTHORIZED = "1"; 28 | 29 | # `claude-code` tries to auto-update by default, this disables that functionality. 30 | # https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/overview#environment-variables 31 | # The DEV=true env var causes claude to crash with `TypeError: window.WebSocket is not a constructor` 32 | postInstall = '' 33 | wrapProgram $out/bin/claude \ 34 | --set DISABLE_AUTOUPDATER 1 \ 35 | --unset DEV 36 | ''; 37 | 38 | passthru.updateScript = ./update.sh; 39 | 40 | meta = { 41 | description = "Agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster"; 42 | homepage = "https://github.com/anthropics/claude-code"; 43 | downloadPage = "https://www.npmjs.com/package/@anthropic-ai/claude-code"; 44 | license = lib.licenses.unfree; 45 | maintainers = with lib.maintainers; [ 46 | malo 47 | markus1189 48 | omarjatoi 49 | ]; 50 | mainProgram = "claude"; 51 | }; 52 | } 53 | -------------------------------------------------------------------------------- /robotics/mujoco-mjx/default.nix: -------------------------------------------------------------------------------- 1 | { lib, pythonOlder, buildPythonPackage, fetchFromGitHub, setuptools, absl-py 2 | , etils, jax, jaxlib, scipy, trimesh, fsspec, importlib-resources 3 | , typing-extensions, zipp, importlib-metadata, ml-dtypes, numpy, opt-einsum 4 | , exceptiongroup, iniconfig, packaging, pluggy, pyparsing, tomli, execnet 5 | , mujoco }: 6 | 7 | buildPythonPackage rec { 8 | pname = "mujoco-mjx"; 9 | version = "3.2.5"; 10 | format = "pyproject"; 11 | 12 | disabled = pythonOlder "3.9"; 13 | 14 | src = fetchFromGitHub { 15 | owner = "google-deepmind"; 16 | repo = "mujoco"; 17 | rev = version; 18 | hash = "sha256-XKN489oexHf2/Gv0MVxXUzqyeJJTJXV99+fNi8shdsg="; 19 | }; 20 | 21 | # MuJoCo MJX is actually a completely re-implementation of MuJoCo using Jax. 22 | # It resides in the `mjx` subdirectory. 23 | sourceRoot = "${src.name}/mjx"; 24 | 25 | buildInputs = [ setuptools ]; 26 | 27 | propagatedBuildInputs = [ 28 | absl-py 29 | etils 30 | jax 31 | jaxlib 32 | scipy 33 | trimesh 34 | fsspec 35 | importlib-resources 36 | typing-extensions 37 | zipp 38 | importlib-metadata 39 | ml-dtypes 40 | numpy 41 | opt-einsum 42 | iniconfig 43 | packaging 44 | pluggy 45 | pyparsing 46 | execnet 47 | mujoco 48 | ] ++ (lib.optionals (pythonOlder "3.11") [ exceptiongroup tomli ]); 49 | 50 | meta = with lib; { 51 | description = '' 52 | This package is a re-implementation of the MuJoCo physics engine in JAX. 53 | ''; 54 | homepage = "https://mujoco.readthedocs.io/en/stable/mjx.html"; 55 | license = licenses.asl20; 56 | maintainers = with maintainers; [ breakds ]; 57 | }; 58 | } 59 | -------------------------------------------------------------------------------- /gen-ai/agno/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | buildPythonPackage, 4 | fetchFromGitHub, 5 | setuptools, 6 | docstring-parser, 7 | gitpython, 8 | httpx, 9 | pydantic-settings, 10 | pydantic, 11 | python-dotenv, 12 | python-multipart, 13 | pyyaml, 14 | rich, 15 | tomli, 16 | typer, 17 | typing-extensions, 18 | # optional 19 | tantivy, 20 | pylance, 21 | lancedb, 22 | qdrant-client, 23 | unstructured, 24 | markdown, 25 | aiofiles, 26 | }: 27 | 28 | buildPythonPackage rec { 29 | pname = "agno"; 30 | version = "1.7.11"; 31 | pyproject = true; 32 | 33 | src = fetchFromGitHub { 34 | owner = "agno-agi"; 35 | repo = "agno"; 36 | rev = "v${version}"; 37 | hash = "sha256-9oO4qyYCgMnC1jtFr39Y76t/5/ybUGIhECP+PLhm92s="; 38 | }; 39 | 40 | sourceRoot = "${src.name}/libs/agno"; 41 | 42 | build-system = [ setuptools ]; 43 | 44 | dependencies = [ 45 | docstring-parser 46 | gitpython 47 | httpx 48 | pydantic-settings 49 | pydantic 50 | python-dotenv 51 | python-multipart 52 | pyyaml 53 | rich 54 | tomli 55 | typer 56 | typing-extensions 57 | ]; 58 | 59 | optional-dependencies = { 60 | lancedb = [ lancedb tantivy ]; 61 | pylance = [ pylance ]; # Useful for lancedb "hybrid" search 62 | qdrant = [ qdrant-client ]; 63 | markdown = [ unstructured markdown aiofiles ]; 64 | }; 65 | 66 | pythonImportsCheck = [ "agno" ]; 67 | 68 | meta = { 69 | description = "Full-stack framework for building Multi-Agent Systems with memory, knowledge and reasoning"; 70 | homepage = "https://github.com/agno-agi/agno"; 71 | license = lib.licenses.mpl20; 72 | maintainers = with lib.maintainers; [ ]; 73 | mainProgram = "agno"; 74 | platforms = lib.platforms.all; 75 | }; 76 | } 77 | -------------------------------------------------------------------------------- /cc-batteries/vectorclass/default.nix: -------------------------------------------------------------------------------- 1 | # Credit to https://github.com/foolnotion/nur-pkg/blob/master/pkgs/vectorclass/default.nix 2 | 3 | # TODO(breakds): fork vectorclass version 2 and add proper CMakeLists.txt to it. 4 | 5 | { lib, stdenv, fetchFromGitHub }: 6 | 7 | stdenv.mkDerivation rec { 8 | pname = "vectorclass"; 9 | version = "2.02.01"; 10 | 11 | src = fetchFromGitHub { 12 | owner = "vectorclass"; 13 | repo = "version2"; 14 | rev = "v${version}"; 15 | sha256 = "sha256-45qt0vGz6ibEmcoPZDOeroSivoVnFkvMEihjXJXa8lU="; 16 | }; 17 | 18 | installPhase = '' 19 | mkdir -p $out/include/vectorclass 20 | mkdir -p $out/share/vectorclass 21 | cp *.h $out/include/vectorclass 22 | cp ${./vectorclass-cmake}/* $out/share/vectorclass/ 23 | ''; 24 | 25 | postFixup = '' 26 | mkdir -p $out/lib/pkgconfig 27 | echo " 28 | prefix=$out/include/vectorclass 29 | includedir=$out/include/vectorclass 30 | 31 | Name: Vectorclass 32 | Description: C++ class library for using the Single Instruction Multiple Data (SIMD) instructions to improve performance on modern microprocessors with the x86 or x86/64 instruction set. 33 | Version: $version 34 | Cflags: -I$out/include/vectorclass" > $out/lib/pkgconfig/vectorclass.pc 35 | 36 | sed -i "s|VECTORCLASS_INCLUDE_DIR|$out/include|g" $out/share/vectorclass/vectorclassTargets.cmake 37 | ''; 38 | 39 | meta = with lib; { 40 | description = 41 | "C++ class library for using the Single Instruction Multiple Data (SIMD) instructions to improve performance on modern microprocessors with the x86 or x86/64 instruction set"; 42 | homepage = "https://github.com/vectorclass/version2"; 43 | license = licenses.asl20; 44 | platforms = platforms.all; 45 | maintainers = with maintainers; [ breakds ]; 46 | }; 47 | } 48 | -------------------------------------------------------------------------------- /tools/swanlab/default.nix: -------------------------------------------------------------------------------- 1 | { lib, buildPythonPackage, pythonOlder, fetchFromGitHub, pytestCheckHook 2 | , hatchling, hatch-fancy-pypi-readme, hatch-requirements-txt 3 | , pythonRelaxDepsHook, swankit, swanboard, cos-python-sdk-v5, urllib3, requests 4 | , click, pyyaml, psutil, pynvml, rich 5 | 6 | # [media] 7 | , soundfile, pillow, matplotlib, numpy 8 | 9 | # [test] 10 | , python-dotenv 11 | 12 | }: 13 | 14 | buildPythonPackage rec { 15 | pname = "swanlab"; 16 | version = "0.4.2"; 17 | format = "pyproject"; 18 | 19 | disabled = pythonOlder "3.8"; 20 | 21 | postPatch = '' 22 | substituteInPlace swanlab/package.json \ 23 | --replace "development" "${version}" 24 | ''; 25 | 26 | src = fetchFromGitHub { 27 | owner = "SwanHubX"; 28 | repo = "SwanLab"; 29 | rev = "v${version}"; 30 | hash = "sha256-CIRR0nn44c+OPzyBdwC2meBQSjrf8qUHP5s0FYEXYXU="; 31 | }; 32 | 33 | build-system = [ 34 | hatchling 35 | hatch-fancy-pypi-readme 36 | hatch-requirements-txt 37 | pythonRelaxDepsHook 38 | ]; 39 | 40 | dependencies = [ 41 | swankit 42 | # TODO(breakds): Make swanboard ui work. 43 | swanboard 44 | cos-python-sdk-v5 45 | urllib3 46 | requests 47 | click 48 | pyyaml 49 | psutil 50 | pynvml 51 | rich 52 | 53 | # [media] 54 | soundfile 55 | pillow 56 | matplotlib 57 | numpy 58 | ]; 59 | 60 | pythonRelaxDeps = [ "swanboard" "swankit" ]; 61 | 62 | pythonImportsCheck = [ "swanlab" ]; 63 | 64 | # TODO(breakds): Enable tests. 65 | # 66 | # nativeCheckInputs = [ 67 | # pytestCheckHook 68 | # python-dotenv 69 | # ]; 70 | 71 | meta = with lib; { 72 | description = "SwanLab: your ML experiment notebook."; 73 | homepage = "https://swanlab.cn/"; 74 | license = licenses.asl20; 75 | maintainers = with maintainers; [ breakds ]; 76 | }; 77 | } 78 | -------------------------------------------------------------------------------- /gen-ai/livekit/agents.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | fetchFromGitHub, 4 | buildPythonPackage, 5 | hatchling, 6 | aiohttp, 7 | av, 8 | click, 9 | colorama, 10 | docstring-parser, 11 | eval-type-backport, 12 | livekit-api, 13 | nest-asyncio, 14 | numpy, 15 | protobuf, 16 | psutil, 17 | pydantic, 18 | pyjwt, 19 | sounddevice, 20 | types-protobuf, 21 | typing-extensions, 22 | watchfiles, 23 | opentelemetry-api, 24 | opentelemetry-exporter-otlp, 25 | opentelemetry-sdk, 26 | prometheus-client, 27 | }: 28 | 29 | let 30 | source = import ./agents-source.nix; 31 | 32 | in buildPythonPackage rec { 33 | pname = "livekit-agents"; 34 | inherit (source) version; 35 | pyproject = true; 36 | 37 | src = fetchFromGitHub source.src; 38 | 39 | pypaBuildFlags = [ "livekit-agents" ]; 40 | 41 | build-system = [ hatchling ]; 42 | 43 | dependencies = [ 44 | aiohttp 45 | av 46 | click 47 | colorama 48 | docstring-parser 49 | eval-type-backport 50 | livekit-api 51 | nest-asyncio 52 | numpy 53 | protobuf 54 | psutil 55 | pydantic 56 | pyjwt 57 | sounddevice 58 | types-protobuf 59 | typing-extensions 60 | watchfiles 61 | opentelemetry-api 62 | opentelemetry-exporter-otlp 63 | opentelemetry-sdk 64 | prometheus-client 65 | ]; 66 | 67 | pythonRelaxDeps = [ 68 | "types-protobuf" 69 | "opentelemetry-api" 70 | "opentelemetry-sdk" 71 | "opentelemetry-exporter-otlp" 72 | ]; 73 | pythonRemoveDeps = [ "livekit" ]; 74 | 75 | meta = { 76 | description = '' 77 | Full-stack framework for building Multi-Agent Systems with memory, 78 | knowledge and reasoning. 79 | ''; 80 | homepage = "https://github.com/livekit/agents"; 81 | license = lib.licenses.asl20; 82 | maintainers = with lib.maintainers; [ breakds ]; 83 | platforms = lib.platforms.all; 84 | }; 85 | } 86 | -------------------------------------------------------------------------------- /CLAUDE.md: -------------------------------------------------------------------------------- 1 | # Code Structures 2 | 3 | The whole repo is managed by nix flakes and flake-parts. The entrypoint is @flake.nix, where the entrypoints to each of the categories are imported. For example, 4 | 5 | - Generative AI related packages @gen-ai/part.nix 6 | - Math related packages @math/part.nix 7 | - Tools packages @tools/part.nix 8 | 9 | # Packaging a Python Package 10 | 11 | Many of the packages here are python projects packaged into Nix derivations. You can find a lot of examples under @gen-ai 12 | 13 | ## Convention 14 | 15 | 1. Use `buildPythonPackage` in a modern way. 16 | - Prefer `pyproject = True` 17 | - Prefer `fetchFromGitHub` for fetching the source code 18 | - Prefer using `build-system` and `dependencies` 19 | - Prefer `pythonImportsCheck` if needed 20 | 2. For dependencies that do not exist in `nixpkgs` yet or do not have the required versions in `nixpkgs` yet: 21 | - In a case-by-case fashion, determine whether those dependencies are necessary for the target package 22 | - For those that is absolutely needed, package the dependency as well. 23 | - Make decision on `pythonRelaxDeps` and `pythonRemoveDeps` for the others. 24 | - If you cannot decide, don't hesitate and ask for my help. 25 | 3. Inject the package into the overlay in the corresponding `part.nix`. 26 | - python packages in most cases will be injected using `pythonPackagesExtensions` in the overlay 27 | - In certain cases, the python package is actually an applicate, and we will use `toPythonApplication` 28 | - The packages added to the overlay will also be exposed to `packages` in `perSystem`, so that the user can use `nix build .#` to test build it. 29 | 4. Preferences 30 | - Always build from source unless it is very hard to do so 31 | - Do not put hash in `fetchFromGitHub` (and similar constructs) in the first pass. Try build it and wait for it to fail. Harvest the actual hash from the error log. 32 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ml-pkgs - Machine Learning and Data Science Nix Overlays 2 | 3 | This Nix flake provides a set of overlays for machine learning and data science packages. It also includes simulation and robotics packages that are widely used in machine learning research as well. The overlays are defined in the overlays attribute set of the flake's outputs. 4 | 5 | To use an overlay in another flake, you can import it in your flake's outputs block like this: 6 | 7 | ```nix 8 | outputs = { self, nixpkgs, ... }@inputs: { 9 | overlays = { 10 | dev = nixpkgs.lib.composeManyExtensions [ 11 | inputs.ml-pkgs.overlays.torch-family 12 | # Add some other overlays 13 | ]; 14 | }; 15 | }; 16 | ``` 17 | 18 | The available overlays in this flake are: 19 | 20 | - torch-family: packages for the PyTorch machine learning framework and its ecosystem 21 | - jax-family: packages for the JAX machine learning framework and its ecosystem 22 | - data-utils: packages for data manipulation and storage 23 | - robotics: packages for simulators, environments for robotics and reinforcement learning 24 | - misc: miscellaneous packages for machine learning and data science 25 | 26 | There is also a special overlay for scientific computing / machine learning related c++ packages, called `cc-batteries`. 27 | 28 | Please note that some of the packages in this flake may have dependencies on proprietary or non-free software. To allow the installation of such packages, you may need to set the config.allowUnfree option in your Nix configuration. 29 | 30 | ## Using templates 31 | 32 | Alternatively, you may want to automatically generate `flake.nix` for your project using templates. This is also the recommended way to start using `ml-pkgs`. Please refer to [nixvital/flake-template](https://github.com/nixvital/flake-templates) for details. 33 | 34 | --- 35 | 36 | This README.md file was partly generated with the help of ChatGPT, an OpenAI language model. 37 | -------------------------------------------------------------------------------- /robotics/mujoco-menagerie/mujoco_menagerie/__init__.py: -------------------------------------------------------------------------------- 1 | from typing import Dict, List, Optional 2 | from pathlib import Path 3 | import subprocess 4 | import pkgutil 5 | 6 | 7 | class RobotModel(object): 8 | def __init__(self, make: str, model: str) -> None: 9 | self._make = make 10 | self._model = model 11 | self._name = f"{self._make}_{self._model}" 12 | loader = pkgutil.get_loader(__name__) 13 | self._path = Path(loader.get_filename()).parent / self._name 14 | 15 | @property 16 | def name(self) -> str: 17 | return self._name 18 | 19 | @property 20 | def path(self) -> Path: 21 | return self._path 22 | 23 | @property 24 | def make(self) -> str: 25 | return self._make 26 | 27 | @property 28 | def model(self) -> str: 29 | return self._model 30 | 31 | def list_files(self): 32 | # TODO(breakds): Use lsd if exists 33 | subprocess.run(["ls", self._path]) 34 | 35 | 36 | # The registry holds the actual RobotModels with a mapping from their 37 | # name to the robot model. 38 | _REGISTRY: Dict[str, RobotModel] = {} 39 | 40 | 41 | def _register(model: RobotModel) -> None: 42 | _REGISTRY[model.name] = model 43 | 44 | 45 | def query(make: str, model: str) -> Optional[RobotModel]: 46 | name = f"{make}_{model}" 47 | return _REGISTRY.get(name, None) 48 | 49 | 50 | def query_by_make(make: str) -> List[str]: 51 | result = [] 52 | for robot in _REGISTRY.values(): 53 | if robot.make == make: 54 | result.append(robot) 55 | return result 56 | 57 | 58 | def list_robots() -> List[RobotModel]: 59 | return list(_REGISTRY.values()) 60 | 61 | 62 | _register(RobotModel(make="anybotics", model="anymal_b")) 63 | _register(RobotModel(make="anybotics", model="anymal_c")) 64 | _register(RobotModel(make="agility", model="cassie")) 65 | _register(RobotModel(make="unitree", model="a1")) 66 | _register(RobotModel(make="franka_emika", model="panda")) 67 | _register(RobotModel(make="universal_robots", model="ur5e")) 68 | -------------------------------------------------------------------------------- /flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = 3 | "Provide extra Nix packages for Machine Learning and Data Science"; 4 | 5 | inputs = { 6 | nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; 7 | 8 | flake-parts.url = "github:hercules-ci/flake-parts"; 9 | flake-parts.inputs.nixpkgs-lib.follows = "nixpkgs"; 10 | }; 11 | 12 | outputs = { self, flake-parts, ... }@inputs: 13 | flake-parts.lib.mkFlake { inherit inputs; } { 14 | # Uncomment the following line to enable debug, e.g. in nix repl. 15 | # See https://flake.parts/debug 16 | 17 | # debug = true; 18 | 19 | systems = [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" ]; 20 | 21 | perSystem = { system, config, pkgs, ... }: { 22 | formatter = pkgs.nixfmt-classic; 23 | 24 | # Override pkgs so that all parts can use this as their `pkgs`. 25 | _module.args.pkgs = import inputs.nixpkgs { 26 | inherit system; 27 | config = { 28 | allowUnfree = true; 29 | cudaSupport = true; 30 | cudaForwardCompat = true; 31 | # NOTE: This is mainly to rule out `sm_90a` from showing up in 32 | # `torch.cuda.get_arch_list`, which will trigger 33 | # https://github.com/pytorch/pytorch/issues/144037 34 | cudaCapabilities = [ "7.5" "8.6" "8.9" ]; 35 | }; 36 | overlays = [ 37 | self.overlays.cc-batteries 38 | self.overlays.math 39 | self.overlays.torch-family 40 | self.overlays.tools 41 | self.overlays.julia-family 42 | self.overlays.time-series 43 | self.overlays.robotics 44 | self.overlays.gen-ai 45 | ]; 46 | }; 47 | }; 48 | 49 | imports = [ 50 | ./internal/part.nix 51 | ./cc-batteries/part.nix 52 | ./math/part.nix 53 | ./torch-family/part.nix 54 | ./tools/part.nix 55 | ./julia-family/part.nix 56 | ./time-series/part.nix 57 | ./robotics/part.nix 58 | ./gen-ai/part.nix 59 | ]; 60 | 61 | flake.hydraJobs = { 62 | gen-ai = inputs.self.devShells."x86_64-linux".gen-ai; 63 | tools = inputs.self.devShells."x86_64-linux".tools; 64 | }; 65 | }; 66 | } 67 | -------------------------------------------------------------------------------- /gen-ai/codex/package.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | stdenv, 4 | rustPlatform, 5 | fetchFromGitHub, 6 | installShellFiles, 7 | nix-update-script, 8 | pkg-config, 9 | openssl, 10 | versionCheckHook, 11 | installShellCompletions ? stdenv.buildPlatform.canExecute stdenv.hostPlatform, 12 | }: 13 | rustPlatform.buildRustPackage (finalAttrs: { 14 | pname = "codex"; 15 | version = "0.72.0"; 16 | 17 | src = fetchFromGitHub { 18 | owner = "openai"; 19 | repo = "codex"; 20 | tag = "rust-v${finalAttrs.version}"; 21 | hash = "sha256-rNol7k/CcAKJXZYsbORRqD+uJfN6TPfcEbkUXezpFkY="; 22 | }; 23 | 24 | sourceRoot = "${finalAttrs.src.name}/codex-rs"; 25 | 26 | cargoHash = "sha256-ZTrG3m6fEwn5ifNFi1A57/sdUfIaEUXMjmoQ86kAxGM="; 27 | 28 | nativeBuildInputs = [ 29 | installShellFiles 30 | pkg-config 31 | ]; 32 | 33 | buildInputs = [ openssl ]; 34 | 35 | # NOTE: part of the test suite requires access to networking, local shells, 36 | # apple system configuration, etc. since this is a very fast moving target 37 | # (for now), with releases happening every other day, constantly figuring out 38 | # which tests need to be skipped, or finding workarounds, was too burdensome, 39 | # and in practice not adding any real value. this decision may be reversed in 40 | # the future once this software stabilizes. 41 | doCheck = false; 42 | 43 | postInstall = lib.optionalString installShellCompletions '' 44 | installShellCompletion --cmd codex \ 45 | --bash <($out/bin/codex completion bash) \ 46 | --fish <($out/bin/codex completion fish) \ 47 | --zsh <($out/bin/codex completion zsh) 48 | ''; 49 | 50 | doInstallCheck = true; 51 | nativeInstallCheckInputs = [ versionCheckHook ]; 52 | 53 | passthru = { 54 | updateScript = nix-update-script { 55 | extraArgs = [ 56 | "--version-regex" 57 | "^rust-v(\\d+\\.\\d+\\.\\d+)$" 58 | ]; 59 | }; 60 | }; 61 | 62 | meta = { 63 | description = "Lightweight coding agent that runs in your terminal"; 64 | homepage = "https://github.com/openai/codex"; 65 | changelog = "https://raw.githubusercontent.com/openai/codex/refs/tags/rust-v${finalAttrs.version}/CHANGELOG.md"; 66 | license = lib.licenses.asl20; 67 | mainProgram = "codex"; 68 | maintainers = with lib.maintainers; [ 69 | malo 70 | delafthi 71 | ]; 72 | platforms = lib.platforms.unix; 73 | }; 74 | }) 75 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | pip-wheel-metadata/ 24 | share/python-wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .nox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | *.py,cover 51 | .hypothesis/ 52 | .pytest_cache/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | target/ 76 | 77 | # Jupyter Notebook 78 | .ipynb_checkpoints 79 | 80 | # IPython 81 | profile_default/ 82 | ipython_config.py 83 | 84 | # pyenv 85 | .python-version 86 | 87 | # pipenv 88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 91 | # install all needed dependencies. 92 | #Pipfile.lock 93 | 94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 95 | __pypackages__/ 96 | 97 | # Celery stuff 98 | celerybeat-schedule 99 | celerybeat.pid 100 | 101 | # SageMath parsed files 102 | *.sage.py 103 | 104 | # Environments 105 | .env 106 | .venv 107 | env/ 108 | venv/ 109 | ENV/ 110 | env.bak/ 111 | venv.bak/ 112 | 113 | # Spyder project settings 114 | .spyderproject 115 | .spyproject 116 | 117 | # Rope project settings 118 | .ropeproject 119 | 120 | # mkdocs documentation 121 | /site 122 | 123 | # mypy 124 | .mypy_cache/ 125 | .dmypy.json 126 | dmypy.json 127 | 128 | # Pyre type checker 129 | .pyre/ 130 | 131 | # Nix 132 | result 133 | .aider* 134 | 135 | # CLAUDE 136 | .claude 137 | -------------------------------------------------------------------------------- /gen-ai/livekit/rtc.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | stdenv, 4 | buildPythonPackage, 5 | fetchFromGitHub, 6 | fetchurl, 7 | autoPatchelfHook, 8 | setuptools, 9 | unzip, 10 | requests, 11 | aiofiles, 12 | numpy, 13 | protobuf, 14 | types-protobuf, 15 | system, 16 | }: 17 | 18 | 19 | let 20 | # See this link to decide the version 21 | # https://github.com/livekit/rust-sdks/blob/ab99f24eb4f55fe0c32a462faf1d74c752ffd76d/Cargo.toml 22 | livekit-ffi-version = "0.12.28"; 23 | 24 | platform = { 25 | "x86_64-linux" = "linux"; 26 | "aarch64-linux" = "linux"; 27 | "aarch64-darwin" = "macos"; 28 | }."${system}"; 29 | 30 | arch = { 31 | "x86_64-linux" = "x86_64"; 32 | "aarch64-linux" = "arm64"; 33 | "aarch64-darwin" = "arm64"; 34 | }."${system}"; 35 | 36 | livekit-ffi-hash = { 37 | "x86_64-linux" = "sha256-QrnIkKpiBnERnrXv7sKi/W9iW1Co7KRxwiJIctTRQKE="; 38 | "aarch64-darwin" = "sha256-vay4QT1rKDj9bGmZgEmbOjR082ur1Tf+QVMqz+r5Ado="; 39 | }."${system}"; 40 | 41 | livekit-ffi = fetchurl { 42 | url = "https://github.com/livekit/client-sdk-rust/releases/download/rust-sdks/livekit-ffi@${livekit-ffi-version}/ffi-${platform}-${arch}.zip"; 43 | hash = livekit-ffi-hash; 44 | }; 45 | 46 | in buildPythonPackage rec { 47 | pname = "livekit-rtc"; 48 | version = "1.0.11"; 49 | pyproject = true; 50 | 51 | src = fetchFromGitHub { 52 | owner = "livekit"; 53 | repo = "python-sdks"; 54 | tag = "rtc-v${version}"; 55 | hash = "sha256-VHlAct3iRh6nA2xPmnEmUxiSF+l70FbcIJbhVLUVK/g="; 56 | }; 57 | 58 | # This package requires downloading the prebuilt rust-sdk binary of 59 | # livekit-ffi and put it under resources directory. The `pyproject.toml` has a 60 | # hook to copy it to the final build. 61 | postPatch = '' 62 | pushd livekit-rtc/livekit/rtc/resources 63 | unzip "${livekit-ffi}" 64 | ls . 65 | popd 66 | ''; 67 | 68 | nativeBuildInputs = [ 69 | unzip 70 | autoPatchelfHook 71 | ]; 72 | 73 | buildInputs = [ 74 | stdenv.cc.cc.lib 75 | ]; 76 | 77 | pypaBuildFlags = [ "livekit-rtc" ]; 78 | 79 | build-system = [ setuptools ]; 80 | 81 | dependencies = [ 82 | requests 83 | aiofiles 84 | numpy 85 | protobuf 86 | types-protobuf 87 | ]; 88 | 89 | pythonImportsCheck = [ "livekit" ]; 90 | 91 | meta = { 92 | description = "LiveKit real-time and server SDKs for Python"; 93 | homepage = "https://github.com/livekit/python-sdks/"; 94 | license = lib.licenses.asl20; 95 | maintainers = with lib.maintainers; [ breakds ]; 96 | platforms = lib.platforms.all; 97 | }; 98 | } 99 | -------------------------------------------------------------------------------- /gen-ai/serena/default.nix: -------------------------------------------------------------------------------- 1 | { lib 2 | , buildPythonPackage 3 | , fetchFromGitHub 4 | , joblib 5 | , toml-sort 6 | , ruff 7 | , pytest-xdist 8 | , pyyaml 9 | , overrides 10 | , docstring-parser 11 | , black 12 | , pytest 13 | , types-pyyaml 14 | , tiktoken 15 | , pathspec 16 | , tqdm 17 | , poethepoet 18 | , flask 19 | , google-genai 20 | , python-dotenv 21 | , pydantic 22 | , sensai-utils 23 | , jinja2 24 | , anthropic 25 | , sqlalchemy 26 | , ruamel-yaml 27 | , syrupy 28 | , requests 29 | , mcp 30 | , psutil 31 | , agno 32 | , hatchling 33 | , mypy 34 | , pkgs 35 | }: 36 | 37 | let 38 | pname = "serena-agent"; 39 | version = "0.1.4"; 40 | 41 | in buildPythonPackage { 42 | inherit pname version; 43 | pyproject = true; 44 | 45 | src = fetchFromGitHub { 46 | owner = "oraios"; 47 | repo = "serena"; 48 | tag = "v${version}"; 49 | hash = "sha256-oj5iaQZa9gKjjaqq/DDT0j5UqVbPjWEztSuaOH24chI="; 50 | }; 51 | 52 | patches = [ 53 | ./use-basedpyright-langserver.patch 54 | ]; 55 | 56 | build-system = [ 57 | hatchling 58 | ]; 59 | 60 | dependencies = [ 61 | requests 62 | overrides 63 | python-dotenv 64 | mcp 65 | flask 66 | sensai-utils 67 | pydantic 68 | types-pyyaml 69 | pyyaml 70 | ruamel-yaml 71 | jinja2 72 | pathspec 73 | psutil 74 | docstring-parser 75 | joblib 76 | tqdm 77 | tiktoken 78 | anthropic 79 | ]; 80 | 81 | optional-dependencies = { 82 | dev = [ 83 | black 84 | poethepoet 85 | toml-sort 86 | syrupy 87 | pytest 88 | ruff 89 | jinja2 90 | pytest-xdist 91 | mypy 92 | types-pyyaml 93 | ]; 94 | agno = [ 95 | agno 96 | sqlalchemy 97 | ]; 98 | google = [ 99 | google-genai 100 | ]; 101 | }; 102 | 103 | pythonRelaxDeps = [ 104 | "joblib" 105 | "mcp" 106 | "sensai-utils" 107 | ]; 108 | 109 | pythonRemoveDeps = [ 110 | "dotenv" 111 | "pyright" # patched to use the basedpyright binary directly 112 | ]; 113 | 114 | postFixup = '' 115 | wrapProgram $out/bin/serena \ 116 | --set PATH "${lib.makeBinPath [ pkgs.basedpyright pkgs.nodejs ]}" 117 | ''; 118 | 119 | meta = with lib; { 120 | mainProgram = "serena"; 121 | homepage = "https://github.com/oraios/serena"; 122 | description = '' 123 | A powerful coding agent toolkit providing semantic retrieval and editing 124 | capabilities (MCP server & Agno integration) 125 | ''; 126 | license = licenses.mit; 127 | maintainers = with maintainers; [ breakds ]; 128 | }; 129 | } 130 | -------------------------------------------------------------------------------- /cc-batteries/vectorclass/vectorclass-cmake/vectorclassConfigVersion.cmake: -------------------------------------------------------------------------------- 1 | # This is a basic version file for the Config-mode of find_package(). 2 | # It is used by write_basic_package_version_file() as input file for configure_file() 3 | # to create a version-file which can be installed along a config.cmake file. 4 | # 5 | # The created file sets PACKAGE_VERSION_EXACT if the current version string and 6 | # the requested version string are exactly the same and it sets 7 | # PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version, 8 | # but only if the requested major version is the same as the current one. 9 | # The variable CVF_VERSION must be set before calling configure_file(). 10 | 11 | 12 | set(PACKAGE_VERSION "0.1.0") 13 | 14 | if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) 15 | set(PACKAGE_VERSION_COMPATIBLE FALSE) 16 | else() 17 | 18 | if("0.1.0" MATCHES "^([0-9]+)\\.") 19 | set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}") 20 | if(NOT CVF_VERSION_MAJOR VERSION_EQUAL 0) 21 | string(REGEX REPLACE "^0+" "" CVF_VERSION_MAJOR "${CVF_VERSION_MAJOR}") 22 | endif() 23 | else() 24 | set(CVF_VERSION_MAJOR "0.1.0") 25 | endif() 26 | 27 | if(PACKAGE_FIND_VERSION_RANGE) 28 | # both endpoints of the range must have the expected major version 29 | math (EXPR CVF_VERSION_MAJOR_NEXT "${CVF_VERSION_MAJOR} + 1") 30 | if (NOT PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR 31 | OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX_MAJOR STREQUAL CVF_VERSION_MAJOR) 32 | OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX VERSION_LESS_EQUAL CVF_VERSION_MAJOR_NEXT))) 33 | set(PACKAGE_VERSION_COMPATIBLE FALSE) 34 | elseif(PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR 35 | AND ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_LESS_EQUAL PACKAGE_FIND_VERSION_MAX) 36 | OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MAX))) 37 | set(PACKAGE_VERSION_COMPATIBLE TRUE) 38 | else() 39 | set(PACKAGE_VERSION_COMPATIBLE FALSE) 40 | endif() 41 | else() 42 | if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR) 43 | set(PACKAGE_VERSION_COMPATIBLE TRUE) 44 | else() 45 | set(PACKAGE_VERSION_COMPATIBLE FALSE) 46 | endif() 47 | 48 | if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) 49 | set(PACKAGE_VERSION_EXACT TRUE) 50 | endif() 51 | endif() 52 | endif() 53 | 54 | 55 | # if the installed project requested no architecture check, don't perform the check 56 | if("TRUE") 57 | return() 58 | endif() 59 | 60 | # if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it: 61 | if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "" STREQUAL "") 62 | return() 63 | endif() 64 | 65 | # check that the installed version has the same 32/64bit-ness as the one which is currently searching: 66 | if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "") 67 | math(EXPR installedBits " * 8") 68 | set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)") 69 | set(PACKAGE_VERSION_UNSUITABLE TRUE) 70 | endif() 71 | -------------------------------------------------------------------------------- /cc-batteries/vectorclass/vectorclass-cmake/vectorclassTargets.cmake: -------------------------------------------------------------------------------- 1 | # Generated by CMake 2 | 3 | if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5) 4 | message(FATAL_ERROR "CMake >= 2.6.0 required") 5 | endif() 6 | cmake_policy(PUSH) 7 | cmake_policy(VERSION 2.6...3.19) 8 | #---------------------------------------------------------------- 9 | # Generated CMake target import file. 10 | #---------------------------------------------------------------- 11 | 12 | # Commands may need to know the format version. 13 | set(CMAKE_IMPORT_FILE_VERSION 1) 14 | 15 | # Protect against multiple inclusion, which would fail when already imported targets are added once more. 16 | set(_targetsDefined) 17 | set(_targetsNotDefined) 18 | set(_expectedTargets) 19 | foreach(_expectedTarget vectorclass::vectorclass) 20 | list(APPEND _expectedTargets ${_expectedTarget}) 21 | if(NOT TARGET ${_expectedTarget}) 22 | list(APPEND _targetsNotDefined ${_expectedTarget}) 23 | endif() 24 | if(TARGET ${_expectedTarget}) 25 | list(APPEND _targetsDefined ${_expectedTarget}) 26 | endif() 27 | endforeach() 28 | if("${_targetsDefined}" STREQUAL "${_expectedTargets}") 29 | unset(_targetsDefined) 30 | unset(_targetsNotDefined) 31 | unset(_expectedTargets) 32 | set(CMAKE_IMPORT_FILE_VERSION) 33 | cmake_policy(POP) 34 | return() 35 | endif() 36 | if(NOT "${_targetsDefined}" STREQUAL "") 37 | message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n") 38 | endif() 39 | unset(_targetsDefined) 40 | unset(_targetsNotDefined) 41 | unset(_expectedTargets) 42 | 43 | 44 | # Compute the installation prefix relative to this file. 45 | get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) 46 | get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) 47 | get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) 48 | if(_IMPORT_PREFIX STREQUAL "/") 49 | set(_IMPORT_PREFIX "") 50 | endif() 51 | 52 | # Create imported target vectorclass::vectorclass 53 | add_library(vectorclass::vectorclass INTERFACE IMPORTED) 54 | 55 | set_target_properties(vectorclass::vectorclass PROPERTIES 56 | INTERFACE_COMPILE_FEATURES "cxx_std_17" 57 | INTERFACE_INCLUDE_DIRECTORIES "VECTORCLASS_INCLUDE_DIR" 58 | ) 59 | 60 | if(CMAKE_VERSION VERSION_LESS 3.0.0) 61 | message(FATAL_ERROR "This file relies on consumers using CMake 3.0.0 or greater.") 62 | endif() 63 | 64 | # Load information for each installed configuration. 65 | get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) 66 | file(GLOB CONFIG_FILES "${_DIR}/vectorclassTargets-*.cmake") 67 | foreach(f ${CONFIG_FILES}) 68 | include(${f}) 69 | endforeach() 70 | 71 | # Cleanup temporary variables. 72 | set(_IMPORT_PREFIX) 73 | 74 | # Loop over all imported files and verify that they actually exist 75 | foreach(target ${_IMPORT_CHECK_TARGETS} ) 76 | foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} ) 77 | if(NOT EXISTS "${file}" ) 78 | message(FATAL_ERROR "The imported target \"${target}\" references the file 79 | \"${file}\" 80 | but this file does not exist. Possible reasons include: 81 | * The file was deleted, renamed, or moved to another location. 82 | * An install or uninstall procedure did not complete successfully. 83 | * The installation package was faulty and contained 84 | \"${CMAKE_CURRENT_LIST_FILE}\" 85 | but not all the files it references. 86 | ") 87 | endif() 88 | endforeach() 89 | unset(_IMPORT_CHECK_FILES_FOR_${target}) 90 | endforeach() 91 | unset(_IMPORT_CHECK_TARGETS) 92 | 93 | # This file does not depend on other imported targets which have 94 | # been exported from the same project but in a separate export set. 95 | 96 | # Commands beyond this point should not need to know the version. 97 | set(CMAKE_IMPORT_FILE_VERSION) 98 | cmake_policy(POP) 99 | -------------------------------------------------------------------------------- /gen-ai/part.nix: -------------------------------------------------------------------------------- 1 | { inputs, ... }: 2 | 3 | { 4 | flake.overlays.gen-ai = inputs.nixpkgs.lib.composeManyExtensions[ 5 | # The actual content start here. 6 | (final: prev: { 7 | pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [ 8 | (py-final: py-prev: { 9 | textgrad = py-final.callPackage ./textgrad { }; 10 | 11 | magicattr = py-final.callPackage ./dspy/magicattr.nix { }; 12 | dspy = py-final.callPackage ./dspy { }; 13 | 14 | e2b = py-final.callPackage ./e2b {}; 15 | e2b-code-interpreter = py-final.callPackage ./e2b/code-interpreter.nix {}; 16 | 17 | sgl-kernel = py-final.callPackage ./sglang/sgl-kernel.nix {}; 18 | 19 | llama-cloud-services = py-prev.llama-cloud-services.overrideAttrs (oldAttrs: { 20 | postPatch = '' 21 | # Remove the entire [tool.poetry.scripts] section 22 | sed -i '/^\[tool\.poetry\.scripts\]$/,/^\[.*\]$/{/^\[tool\.poetry\.scripts\]$/d; /^\[.*\]$/!d;}' pyproject.toml 23 | ''; 24 | }); 25 | llama-index = py-prev.llama-index.overrideAttrs (oldAttrs: { 26 | postPatch = '' 27 | # Remove the entire [project.scripts] because it only contains 28 | # `llama-index-cli`, which will cause conflict with the actual `llama-index-cli` package. 29 | sed -i '/^\[project\.scripts\]$/,/^\[.*\]$/{/^\[project\.scripts\]$/d; /^\[.*\]$/!d;}' pyproject.toml 30 | ''; 31 | }); 32 | 33 | agno = py-final.callPackage ./agno {}; 34 | tantivy = py-final.callPackage ./tantivy {}; 35 | 36 | livekit-rtc = py-final.callPackage ./livekit/rtc.nix {}; 37 | livekit-agents = py-final.callPackage ./livekit/agents.nix {}; 38 | livekit-plugins-speechmatics = py-final.callPackage ./livekit/plugins/speechmatics.nix {}; 39 | livekit-plugins-openai = py-final.callPackage ./livekit/plugins/openai.nix {}; 40 | livekit-plugins-deepgram = py-final.callPackage ./livekit/plugins/deepgram.nix {}; 41 | livekit-plugins-elevenlabs = py-final.callPackage ./livekit/plugins/elevenlabs.nix {}; 42 | livekit-plugins-silero = py-final.callPackage ./livekit/plugins/silero.nix {}; 43 | livekit-plugins-turn-detector = py-final.callPackage ./livekit/plugins/turn-detector.nix {}; 44 | 45 | serena = py-final.callPackage ./serena {}; 46 | }) 47 | ]; 48 | 49 | serena = with final.python3Packages; toPythonApplication serena; 50 | claude-code = final.callPackage ./claude-code/package.nix {}; 51 | codex = final.callPackage ./codex/package.nix {}; 52 | }) 53 | ]; 54 | 55 | perSystem = { pkgs, lib, ... }: { 56 | packages = { 57 | inherit (pkgs.python3Packages) textgrad e2b e2b-code-interpreter llama-index agno 58 | tantivy livekit-rtc livekit-agents livekit-plugins-speechmatics livekit-plugins-openai livekit-plugins-deepgram 59 | livekit-plugins-elevenlabs livekit-plugins-silero livekit-plugins-turn-detector; 60 | inherit (pkgs) serena claude-code codex; 61 | }; 62 | 63 | devShells.gen-ai = pkgs.mkShell { 64 | name = "gen-ai"; 65 | 66 | packages = with pkgs; [ 67 | (python3.withPackages 68 | (p: with p; [ 69 | ollama 70 | litellm 71 | openai 72 | llguidance 73 | torch 74 | llama-index 75 | agno 76 | tantivy 77 | livekit-rtc 78 | livekit-agents 79 | livekit-plugins-speechmatics 80 | livekit-plugins-openai 81 | livekit-plugins-deepgram 82 | livekit-plugins-elevenlabs 83 | livekit-plugins-silero 84 | livekit-plugins-turn-detector 85 | ])) 86 | ollama-cuda 87 | pyright 88 | ]; 89 | 90 | shellHook = let 91 | inherit (pkgs.python3Packages.torch) cudaPackages; 92 | in '' 93 | export CUDA_HOME=${cudaPackages.cudatoolkit} 94 | ''; 95 | }; 96 | }; 97 | } 98 | -------------------------------------------------------------------------------- /internal/pyproj2nix/pyproj2nix.py: -------------------------------------------------------------------------------- 1 | import re 2 | import tomllib 3 | import httpx 4 | import click 5 | from jinja2 import Template 6 | 7 | 8 | NIX_TEMPLATE = r""" 9 | # This file is modified from a draft generated by the following command 10 | # nix run .#pyproj2nix {{ uri }} 11 | 12 | { lib 13 | , buildPythonPackage 14 | , fetchFromGitHub 15 | {%- for arg in func_args %} 16 | , {{ arg -}} 17 | {% endfor %} 18 | }: 19 | 20 | let 21 | pname = "{{ pname }}"; 22 | version = "{{ version }}"; 23 | 24 | in buildPythonPackage { 25 | inherit pname version; 26 | pyproject = true; 27 | 28 | src = fetchFromGitHub { 29 | owner = "{{ github_owner }}"; 30 | repo = "{{ github_repo }}"; 31 | rev = version; 32 | hash = null; 33 | }; 34 | 35 | build-system = [ 36 | {%- for item in build_system %} 37 | {{ item -}} 38 | {% endfor %} 39 | ]; 40 | 41 | dependencies = [ 42 | {%- for dep in dependencies %} 43 | {{ dep -}} 44 | {% endfor %} 45 | ]; 46 | 47 | optional-dependencies = { 48 | {%- for k, deps in optional_deps.items() %} 49 | {{ k }} = [ 50 | {%- for dep in deps %} 51 | {{ dep -}} 52 | {% endfor %} 53 | ]; 54 | {%- endfor %} 55 | }; 56 | 57 | pythonImportsCheck = [ "{{ pname }}" ]; 58 | 59 | meta = with lib; { 60 | homepage = "{{ homepage }}"; 61 | description = "{{ description }}"; 62 | license = ?; 63 | maintainers = with maintainers; [ breakds ]; 64 | }; 65 | } 66 | 67 | """ 68 | 69 | 70 | NIX_PKG_NAME_MAPPING = { 71 | "IPython": "ipython", 72 | "opencv-python": "opencv4", 73 | "typing_extensions": "typing-extensions", 74 | "hf_transfer": "hf-transfer", 75 | "python-multipart": "multipart", 76 | "huggingface_hub": "huggingface-hub", 77 | "sentence_transformers": "sentence-transformers", 78 | } 79 | 80 | 81 | def to_nix_pkg_name(dep: str): 82 | m = re.match(r"^\s*([A-Za-z0-9_.-]+)", dep) 83 | if m: 84 | x = m.group(1) 85 | else: 86 | x = dep.strip() 87 | return NIX_PKG_NAME_MAPPING.get(x, x) 88 | 89 | 90 | @click.command 91 | @click.argument("uri") 92 | def main(uri: str): 93 | """Generate a default.nix file from a pyproject.toml file. 94 | 95 | """ 96 | input_uri = uri 97 | github_owner = "?" 98 | github_repo = "?" 99 | 100 | # TODO: Currently this only handles local path. Should make it work even if 101 | # the input is an URL 102 | if uri.startswith("http"): 103 | if "github.com" in uri and "/blob/" in uri: 104 | # Identify the owner and repo when the input is a github URL. 105 | m = re.match(r"https://github.com/([^/]*)/([^/]*)/.*", uri) 106 | if m is not None: 107 | github_owner = m.group(1) 108 | github_repo = m.group(2) 109 | uri = uri.replace("github.com", "raw.githubusercontent.com") 110 | uri = uri.replace("/blob/", "/") 111 | try: 112 | response = httpx.get(uri) 113 | response.raise_for_status() 114 | data = tomllib.loads(response.content.decode("utf-8")) 115 | except Exception as e: 116 | click.echo(f"Error fetching from URL {uri}: {e}") 117 | return 118 | else: 119 | try: 120 | with open(uri, "rb") as f: 121 | data = tomllib.load(f) 122 | except Exception as e: 123 | click.echo(f"Error reading from {uri}: {e}") 124 | return 125 | 126 | project = data.get("project") or data.get("tool", {}).get("poetry") 127 | 128 | nix_func_args = set() 129 | 130 | # ┌─────────────────────────────────────────┐ 131 | # │ Figure out the build-system │ 132 | # └─────────────────────────────────────────┘ 133 | 134 | build_backend = data.get("build-system").get("build-backend") 135 | build_system = { 136 | "setuptools.build_meta": ["setuptools"], 137 | "pdm.backend": ["pdm-backend"], 138 | "scikit_build_core.build": ["scikit-build-core"], 139 | "hatchling.build": ["hatchling"], 140 | }[build_backend] 141 | 142 | for item in build_system: 143 | nix_func_args.add(item) 144 | 145 | # ┌─────────────────────────────────────────┐ 146 | # │ Figure out the dependencies │ 147 | # └─────────────────────────────────────────┘ 148 | 149 | dependencies = list(map(to_nix_pkg_name, 150 | project.get("dependencies", []))) 151 | 152 | for item in dependencies: 153 | nix_func_args.add(item) 154 | 155 | # ┌─────────────────────────────────────────┐ 156 | # │ Figure out the optional dependencies │ 157 | # └─────────────────────────────────────────┘ 158 | 159 | optional_deps = {} 160 | for k, deps in project.get("optional-dependencies", {}).items(): 161 | optional_deps[k] = list(set(map(to_nix_pkg_name, deps))) 162 | for item in optional_deps[k]: 163 | nix_func_args.add(item) 164 | 165 | # ┌─────────────────────────────────────────┐ 166 | # │ Identify the homepage │ 167 | # └─────────────────────────────────────────┘ 168 | 169 | if "urls" in project: 170 | homepage = project.get("urls").get("Homepage", "?") 171 | else: 172 | homepage = "?" 173 | 174 | # ┌─────────────────────────────────────────┐ 175 | # │ Generate nix file based on the template │ 176 | # └─────────────────────────────────────────┘ 177 | 178 | template = Template(NIX_TEMPLATE) 179 | nix_file_content = template.render( 180 | pname=project.get("name", ""), 181 | version=project.get("version", ""), 182 | description=project.get("description", ""), 183 | dependencies=dependencies, 184 | optional_deps=optional_deps, 185 | build_system=build_system, 186 | func_args=list(nix_func_args), 187 | homepage=homepage, 188 | github_owner=github_owner, 189 | github_repo=github_repo, 190 | uri=input_uri) 191 | 192 | print(nix_file_content) 193 | 194 | 195 | if __name__ == "__main__": 196 | main() 197 | -------------------------------------------------------------------------------- /gen-ai/livekit/plugins/0001-Add-speaker-diarization.patch: -------------------------------------------------------------------------------- 1 | From 8796947aa3065b18cbf2c8ebdc7ce34a471bca3f Mon Sep 17 00:00:00 2001 2 | From: Alan Issac 3 | Date: Sat, 2 Aug 2025 18:36:37 -0700 4 | Subject: [PATCH] Add speaker diarization 5 | 6 | --- 7 | .../livekit/plugins/deepgram/stt.py | 46 +++++++++++++++---- 8 | 1 file changed, 36 insertions(+), 10 deletions(-) 9 | 10 | diff --git a/livekit-plugins/livekit-plugins-deepgram/livekit/plugins/deepgram/stt.py b/livekit-plugins/livekit-plugins-deepgram/livekit/plugins/deepgram/stt.py 11 | index 889346b5..22f4244e 100644 12 | --- a/livekit-plugins/livekit-plugins-deepgram/livekit/plugins/deepgram/stt.py 13 | +++ b/livekit-plugins/livekit-plugins-deepgram/livekit/plugins/deepgram/stt.py 14 | @@ -66,6 +66,7 @@ class STTOptions: 15 | numerals: bool = False 16 | mip_opt_out: bool = False 17 | tags: NotGivenOr[list[str]] = NOT_GIVEN 18 | + diarize: bool = False 19 | 20 | 21 | class STT(stt.STT): 22 | @@ -92,6 +93,7 @@ class STT(stt.STT): 23 | base_url: str = BASE_URL, 24 | numerals: bool = False, 25 | mip_opt_out: bool = False, 26 | + diarize: bool = False, 27 | ) -> None: 28 | """Create a new instance of Deepgram STT. 29 | 30 | @@ -118,6 +120,7 @@ class STT(stt.STT): 31 | base_url: The base URL for Deepgram API. Defaults to "https://api.deepgram.com/v1/listen". 32 | numerals: Whether to include numerals in the transcription. Defaults to False. 33 | mip_opt_out: Whether to take part in the model improvement program 34 | + diarize: Whether to enable speaker diarization. Defaults to False. 35 | 36 | Raises: 37 | ValueError: If no API key is provided or found in environment variables. 38 | @@ -158,6 +161,7 @@ class STT(stt.STT): 39 | numerals=numerals, 40 | mip_opt_out=mip_opt_out, 41 | tags=_validate_tags(tags) if is_given(tags) else [], 42 | + diarize=diarize, 43 | ) 44 | self._session = http_session 45 | self._streams = weakref.WeakSet[SpeechStream]() 46 | @@ -185,6 +189,7 @@ class STT(stt.STT): 47 | "keywords": self._opts.keywords, 48 | "profanity_filter": config.profanity_filter, 49 | "numerals": config.numerals, 50 | + "diarize": config.diarize, 51 | } 52 | if config.language: 53 | recognize_config["language"] = config.language 54 | @@ -256,6 +261,7 @@ class STT(stt.STT): 55 | numerals: NotGivenOr[bool] = NOT_GIVEN, 56 | mip_opt_out: NotGivenOr[bool] = NOT_GIVEN, 57 | tags: NotGivenOr[list[str]] = NOT_GIVEN, 58 | + diarize: NotGivenOr[bool] = NOT_GIVEN, 59 | ) -> None: 60 | if is_given(language): 61 | self._opts.language = language 62 | @@ -287,6 +293,8 @@ class STT(stt.STT): 63 | self._opts.mip_opt_out = mip_opt_out 64 | if is_given(tags): 65 | self._opts.tags = _validate_tags(tags) 66 | + if is_given(diarize): 67 | + self._opts.diarize = diarize 68 | 69 | for stream in self._streams: 70 | stream.update_options( 71 | @@ -304,6 +312,7 @@ class STT(stt.STT): 72 | profanity_filter=profanity_filter, 73 | numerals=numerals, 74 | mip_opt_out=mip_opt_out, 75 | + diarize=diarize, 76 | ) 77 | 78 | def _sanitize_options( 79 | @@ -372,6 +381,7 @@ class SpeechStream(stt.SpeechStream): 80 | numerals: NotGivenOr[bool] = NOT_GIVEN, 81 | mip_opt_out: NotGivenOr[bool] = NOT_GIVEN, 82 | tags: NotGivenOr[list[str]] = NOT_GIVEN, 83 | + diarize: NotGivenOr[bool] = NOT_GIVEN, 84 | ) -> None: 85 | if is_given(language): 86 | self._opts.language = language 87 | @@ -403,6 +413,8 @@ class SpeechStream(stt.SpeechStream): 88 | self._opts.mip_opt_out = mip_opt_out 89 | if is_given(tags): 90 | self._opts.tags = _validate_tags(tags) 91 | + if is_given(diarize): 92 | + self._opts.diarize = diarize 93 | 94 | self._reconnect_event.set() 95 | 96 | @@ -532,6 +544,7 @@ class SpeechStream(stt.SpeechStream): 97 | "profanity_filter": self._opts.profanity_filter, 98 | "numerals": self._opts.numerals, 99 | "mip_opt_out": self._opts.mip_opt_out, 100 | + "diarize": self._opts.diarize, 101 | } 102 | if self._opts.keywords: 103 | live_config["keywords"] = self._opts.keywords 104 | @@ -635,12 +648,18 @@ def live_transcription_to_speech_data(language: str, data: dict) -> list[stt.Spe 105 | 106 | speech_data = [] 107 | for alt in dg_alts: 108 | + # Extract speaker information from the first word if diarization is enabled 109 | + speaker_id = None 110 | + if alt["words"] and "speaker" in alt["words"][0]: 111 | + speaker_id = str(alt["words"][0]["speaker"]) 112 | + 113 | sd = stt.SpeechData( 114 | language=language, 115 | start_time=alt["words"][0]["start"] if alt["words"] else 0, 116 | end_time=alt["words"][-1]["end"] if alt["words"] else 0, 117 | confidence=alt["confidence"], 118 | text=alt["transcript"], 119 | + speaker_id=speaker_id, 120 | ) 121 | if language == "multi" and "languages" in alt: 122 | sd.language = alt["languages"][0] # TODO: handle multiple languages 123 | @@ -661,19 +680,26 @@ def prerecorded_transcription_to_speech_event( 124 | # https://developers.deepgram.com/docs/language-detection 125 | detected_language = channel.get("detected_language") 126 | 127 | + alternatives = [] 128 | + for alt in dg_alts: 129 | + # Extract speaker information from the first word if diarization is enabled 130 | + speaker_id = None 131 | + if alt["words"] and "speaker" in alt["words"][0]: 132 | + speaker_id = str(alt["words"][0]["speaker"]) 133 | + 134 | + alternatives.append(stt.SpeechData( 135 | + language=language or detected_language, 136 | + start_time=alt["words"][0]["start"] if alt["words"] else 0, 137 | + end_time=alt["words"][-1]["end"] if alt["words"] else 0, 138 | + confidence=alt["confidence"], 139 | + text=alt["transcript"], 140 | + speaker_id=speaker_id, 141 | + )) 142 | + 143 | return stt.SpeechEvent( 144 | request_id=request_id, 145 | type=stt.SpeechEventType.FINAL_TRANSCRIPT, 146 | - alternatives=[ 147 | - stt.SpeechData( 148 | - language=language or detected_language, 149 | - start_time=alt["words"][0]["start"] if alt["words"] else 0, 150 | - end_time=alt["words"][-1]["end"] if alt["words"] else 0, 151 | - confidence=alt["confidence"], 152 | - text=alt["transcript"], 153 | - ) 154 | - for alt in dg_alts 155 | - ], 156 | + alternatives=alternatives, 157 | ) 158 | 159 | 160 | -- 161 | 2.49.0 162 | 163 | -------------------------------------------------------------------------------- /gen-ai/claude-code/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@anthropic-ai/claude-code", 3 | "version": "2.0.69", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "@anthropic-ai/claude-code", 9 | "version": "2.0.69", 10 | "license": "SEE LICENSE IN README.md", 11 | "bin": { 12 | "claude": "cli.js" 13 | }, 14 | "engines": { 15 | "node": ">=18.0.0" 16 | }, 17 | "optionalDependencies": { 18 | "@img/sharp-darwin-arm64": "^0.33.5", 19 | "@img/sharp-darwin-x64": "^0.33.5", 20 | "@img/sharp-linux-arm": "^0.33.5", 21 | "@img/sharp-linux-arm64": "^0.33.5", 22 | "@img/sharp-linux-x64": "^0.33.5", 23 | "@img/sharp-linuxmusl-arm64": "^0.33.5", 24 | "@img/sharp-linuxmusl-x64": "^0.33.5", 25 | "@img/sharp-win32-x64": "^0.33.5" 26 | } 27 | }, 28 | "node_modules/@img/sharp-darwin-arm64": { 29 | "version": "0.33.5", 30 | "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", 31 | "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", 32 | "cpu": [ 33 | "arm64" 34 | ], 35 | "license": "Apache-2.0", 36 | "optional": true, 37 | "os": [ 38 | "darwin" 39 | ], 40 | "engines": { 41 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 42 | }, 43 | "funding": { 44 | "url": "https://opencollective.com/libvips" 45 | }, 46 | "optionalDependencies": { 47 | "@img/sharp-libvips-darwin-arm64": "1.0.4" 48 | } 49 | }, 50 | "node_modules/@img/sharp-darwin-x64": { 51 | "version": "0.33.5", 52 | "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", 53 | "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", 54 | "cpu": [ 55 | "x64" 56 | ], 57 | "license": "Apache-2.0", 58 | "optional": true, 59 | "os": [ 60 | "darwin" 61 | ], 62 | "engines": { 63 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 64 | }, 65 | "funding": { 66 | "url": "https://opencollective.com/libvips" 67 | }, 68 | "optionalDependencies": { 69 | "@img/sharp-libvips-darwin-x64": "1.0.4" 70 | } 71 | }, 72 | "node_modules/@img/sharp-libvips-darwin-arm64": { 73 | "version": "1.0.4", 74 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", 75 | "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", 76 | "cpu": [ 77 | "arm64" 78 | ], 79 | "license": "LGPL-3.0-or-later", 80 | "optional": true, 81 | "os": [ 82 | "darwin" 83 | ], 84 | "funding": { 85 | "url": "https://opencollective.com/libvips" 86 | } 87 | }, 88 | "node_modules/@img/sharp-libvips-darwin-x64": { 89 | "version": "1.0.4", 90 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", 91 | "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", 92 | "cpu": [ 93 | "x64" 94 | ], 95 | "license": "LGPL-3.0-or-later", 96 | "optional": true, 97 | "os": [ 98 | "darwin" 99 | ], 100 | "funding": { 101 | "url": "https://opencollective.com/libvips" 102 | } 103 | }, 104 | "node_modules/@img/sharp-libvips-linux-arm": { 105 | "version": "1.0.5", 106 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", 107 | "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", 108 | "cpu": [ 109 | "arm" 110 | ], 111 | "license": "LGPL-3.0-or-later", 112 | "optional": true, 113 | "os": [ 114 | "linux" 115 | ], 116 | "funding": { 117 | "url": "https://opencollective.com/libvips" 118 | } 119 | }, 120 | "node_modules/@img/sharp-libvips-linux-arm64": { 121 | "version": "1.0.4", 122 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", 123 | "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", 124 | "cpu": [ 125 | "arm64" 126 | ], 127 | "license": "LGPL-3.0-or-later", 128 | "optional": true, 129 | "os": [ 130 | "linux" 131 | ], 132 | "funding": { 133 | "url": "https://opencollective.com/libvips" 134 | } 135 | }, 136 | "node_modules/@img/sharp-libvips-linux-x64": { 137 | "version": "1.0.4", 138 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", 139 | "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", 140 | "cpu": [ 141 | "x64" 142 | ], 143 | "license": "LGPL-3.0-or-later", 144 | "optional": true, 145 | "os": [ 146 | "linux" 147 | ], 148 | "funding": { 149 | "url": "https://opencollective.com/libvips" 150 | } 151 | }, 152 | "node_modules/@img/sharp-libvips-linuxmusl-arm64": { 153 | "version": "1.0.4", 154 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", 155 | "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", 156 | "cpu": [ 157 | "arm64" 158 | ], 159 | "license": "LGPL-3.0-or-later", 160 | "optional": true, 161 | "os": [ 162 | "linux" 163 | ], 164 | "funding": { 165 | "url": "https://opencollective.com/libvips" 166 | } 167 | }, 168 | "node_modules/@img/sharp-libvips-linuxmusl-x64": { 169 | "version": "1.0.4", 170 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", 171 | "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", 172 | "cpu": [ 173 | "x64" 174 | ], 175 | "license": "LGPL-3.0-or-later", 176 | "optional": true, 177 | "os": [ 178 | "linux" 179 | ], 180 | "funding": { 181 | "url": "https://opencollective.com/libvips" 182 | } 183 | }, 184 | "node_modules/@img/sharp-linux-arm": { 185 | "version": "0.33.5", 186 | "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", 187 | "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", 188 | "cpu": [ 189 | "arm" 190 | ], 191 | "license": "Apache-2.0", 192 | "optional": true, 193 | "os": [ 194 | "linux" 195 | ], 196 | "engines": { 197 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 198 | }, 199 | "funding": { 200 | "url": "https://opencollective.com/libvips" 201 | }, 202 | "optionalDependencies": { 203 | "@img/sharp-libvips-linux-arm": "1.0.5" 204 | } 205 | }, 206 | "node_modules/@img/sharp-linux-arm64": { 207 | "version": "0.33.5", 208 | "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", 209 | "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", 210 | "cpu": [ 211 | "arm64" 212 | ], 213 | "license": "Apache-2.0", 214 | "optional": true, 215 | "os": [ 216 | "linux" 217 | ], 218 | "engines": { 219 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 220 | }, 221 | "funding": { 222 | "url": "https://opencollective.com/libvips" 223 | }, 224 | "optionalDependencies": { 225 | "@img/sharp-libvips-linux-arm64": "1.0.4" 226 | } 227 | }, 228 | "node_modules/@img/sharp-linux-x64": { 229 | "version": "0.33.5", 230 | "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", 231 | "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", 232 | "cpu": [ 233 | "x64" 234 | ], 235 | "license": "Apache-2.0", 236 | "optional": true, 237 | "os": [ 238 | "linux" 239 | ], 240 | "engines": { 241 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 242 | }, 243 | "funding": { 244 | "url": "https://opencollective.com/libvips" 245 | }, 246 | "optionalDependencies": { 247 | "@img/sharp-libvips-linux-x64": "1.0.4" 248 | } 249 | }, 250 | "node_modules/@img/sharp-linuxmusl-arm64": { 251 | "version": "0.33.5", 252 | "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", 253 | "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", 254 | "cpu": [ 255 | "arm64" 256 | ], 257 | "license": "Apache-2.0", 258 | "optional": true, 259 | "os": [ 260 | "linux" 261 | ], 262 | "engines": { 263 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 264 | }, 265 | "funding": { 266 | "url": "https://opencollective.com/libvips" 267 | }, 268 | "optionalDependencies": { 269 | "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" 270 | } 271 | }, 272 | "node_modules/@img/sharp-linuxmusl-x64": { 273 | "version": "0.33.5", 274 | "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", 275 | "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", 276 | "cpu": [ 277 | "x64" 278 | ], 279 | "license": "Apache-2.0", 280 | "optional": true, 281 | "os": [ 282 | "linux" 283 | ], 284 | "engines": { 285 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 286 | }, 287 | "funding": { 288 | "url": "https://opencollective.com/libvips" 289 | }, 290 | "optionalDependencies": { 291 | "@img/sharp-libvips-linuxmusl-x64": "1.0.4" 292 | } 293 | }, 294 | "node_modules/@img/sharp-win32-x64": { 295 | "version": "0.33.5", 296 | "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", 297 | "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", 298 | "cpu": [ 299 | "x64" 300 | ], 301 | "license": "Apache-2.0 AND LGPL-3.0-or-later", 302 | "optional": true, 303 | "os": [ 304 | "win32" 305 | ], 306 | "engines": { 307 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 308 | }, 309 | "funding": { 310 | "url": "https://opencollective.com/libvips" 311 | } 312 | } 313 | } 314 | } 315 | --------------------------------------------------------------------------------