From cfec6d9203a461d9d698d8a60ef003cac6d0da94 Mon Sep 17 00:00:00 2001 From: Will Owens Date: Tue, 27 Feb 2024 00:49:41 -0500 Subject: [PATCH] tabby: add nvidia cuda support --- maintainers/maintainer-list.nix | 9 +++ pkgs/by-name/ta/tabby/package.nix | 73 ++++++++++++++++++++++++ pkgs/development/tools/tabby/default.nix | 41 ------------- pkgs/top-level/all-packages.nix | 2 - 4 files changed, 82 insertions(+), 43 deletions(-) create mode 100644 pkgs/by-name/ta/tabby/package.nix delete mode 100644 pkgs/development/tools/tabby/default.nix diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 116fc5dbab22..51e3a51c2c68 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -7016,6 +7016,15 @@ github = "ghostbuster91"; githubId = 5662622; }; + ghthor = { + email = "ghthor@gmail.com"; + github = "ghthor"; + githubId = 160298; + name = "Will Owens"; + keys = [{ + fingerprint = "8E98 BB01 BFF8 AEA4 E303 FC4C 8074 09C9 2CE2 3033"; + }]; + }; ghuntley = { email = "ghuntley@ghuntley.com"; github = "ghuntley"; diff --git a/pkgs/by-name/ta/tabby/package.nix b/pkgs/by-name/ta/tabby/package.nix new file mode 100644 index 000000000000..445bf22caef3 --- /dev/null +++ b/pkgs/by-name/ta/tabby/package.nix @@ -0,0 +1,73 @@ +{ lib +, fetchFromGitHub +, gcc12 +, cmake +, git +, openssl +, pkg-config +, protobuf +, rustPlatform +, addOpenGLRunpath +, cudatoolkit +, nvidia ? true +}: + +rustPlatform.buildRustPackage rec { + version = "0.6.0"; + pname = "tabby"; + + src = fetchFromGitHub { + owner = "TabbyML"; + repo = "tabby"; + rev = "v${version}"; + hash = "sha256-cZvfJMFsf7m8o5YKpsJpcrRmxJCQOFxrDzJZXMzVeFA="; + fetchSubmodules = true; + }; + + cargoHash = "sha256-iv8MpBfGGUFkjUZ9eAGq65vCy62VJQGTYIS0r9GRyfo="; + + # https://github.com/TabbyML/tabby/blob/v0.6.0/Dockerfile#L40C5-L40C58 + cargoBuildFlags = [ + "--release" + "--package" "tabby" + ] ++ lib.optional nvidia [ + "--features" "cuda" + ]; + + OPENSSL_NO_VENDOR = 1; + + nativeBuildInputs = [ + pkg-config + protobuf + git + cmake + gcc12 + + ] ++ lib.optional nvidia [ + addOpenGLRunpath + ]; + + buildInputs = [ openssl ] + ++ lib.optional nvidia cudatoolkit + ; + + postInstall = '' + ${if nvidia then '' + addOpenGLRunpath "$out/bin/tabby" + '' else '' + ''} + ''; + + # Fails with: + # file cannot create directory: /var/empty/local/lib64/cmake/Llama + doCheck = false; + + meta = with lib; { + homepage = "https://github.com/TabbyML/tabby"; + changelog = "https://github.com/TabbyML/tabby/releases/tag/v${version}"; + description = "Self-hosted AI coding assistant"; + mainProgram = "tabby"; + license = licenses.asl20; + maintainers = [ maintainers.ghthor ]; + }; +} diff --git a/pkgs/development/tools/tabby/default.nix b/pkgs/development/tools/tabby/default.nix deleted file mode 100644 index 31c56fa61ad2..000000000000 --- a/pkgs/development/tools/tabby/default.nix +++ /dev/null @@ -1,41 +0,0 @@ -{ lib -, fetchFromGitHub -, cmake -, git -, openssl -, pkg-config -, protobuf -, rustPlatform -}: - -rustPlatform.buildRustPackage rec { - version = "0.6.0"; - pname = "tabby"; - - src = fetchFromGitHub { - owner = "TabbyML"; - repo = pname; - rev = "v${version}"; - hash = "sha256-cZvfJMFsf7m8o5YKpsJpcrRmxJCQOFxrDzJZXMzVeFA="; - fetchSubmodules = true; - }; - - cargoHash = "sha256-iv8MpBfGGUFkjUZ9eAGq65vCy62VJQGTYIS0r9GRyfo="; - - OPENSSL_NO_VENDOR = 1; - - nativeBuildInputs = [ pkg-config protobuf git cmake ]; - - buildInputs = [ openssl ]; - - # Fails with: - # file cannot create directory: /var/empty/local/lib64/cmake/Llama - doCheck = false; - - meta = with lib; { - description = "Self-hosted AI coding assistant"; - mainProgram = "tabby"; - license = licenses.asl20; - maintainers = teams.deshaw.members; - }; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6f9cb3c70819..5e351d8e7fb5 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6431,8 +6431,6 @@ with pkgs; recyclarr = callPackage ../tools/video/recyclarr { }; - tabby = callPackage ../development/tools/tabby { }; - tsduck = callPackage ../tools/video/tsduck { }; turso-cli = callPackage ../development/tools/turso-cli {};