96 lines
2.2 KiB
Nix
96 lines
2.2 KiB
Nix
{
|
|
lib,
|
|
stdenv,
|
|
fetchFromGitHub,
|
|
cmake,
|
|
pkg-config,
|
|
autoPatchelfHook,
|
|
makeWrapper,
|
|
|
|
vulkan-loader,
|
|
vulkan-headers,
|
|
glslang,
|
|
shaderc,
|
|
cudaPackages ? { },
|
|
enableVulkan ? false,
|
|
enableCuda ? false,
|
|
}:
|
|
|
|
let
|
|
cudaCapabilities = [
|
|
"8.6"
|
|
"8.9"
|
|
"9.0"
|
|
];
|
|
in
|
|
stdenv.mkDerivation (finalAttrs: {
|
|
pname = "s2cpp";
|
|
version = "0-unstable-2025-04-05";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "rodrigomatta";
|
|
repo = "s2.cpp";
|
|
rev = "36a5fb058b740d8826f67d027bf46b3273fe4e3d";
|
|
hash = "sha256-C8BSUWNRrZKdaKHniAbeObq9fChvFQZ5HXcvSzgNsIw=";
|
|
fetchSubmodules = true;
|
|
};
|
|
|
|
nativeBuildInputs = [
|
|
cmake
|
|
autoPatchelfHook
|
|
makeWrapper
|
|
]
|
|
++ lib.optionals enableVulkan [ pkg-config ]
|
|
++ lib.optionals enableCuda [
|
|
cudaPackages.cuda_nvcc
|
|
];
|
|
|
|
buildInputs =
|
|
[ ]
|
|
++ lib.optionals enableVulkan [
|
|
vulkan-loader
|
|
vulkan-headers
|
|
glslang
|
|
shaderc
|
|
]
|
|
++ lib.optionals enableCuda [
|
|
cudaPackages.cuda_cudart
|
|
cudaPackages.cuda_cccl
|
|
];
|
|
|
|
cmakeFlags = [
|
|
"-DCMAKE_SKIP_BUILD_RPATH=ON"
|
|
"-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON"
|
|
"-DCMAKE_INSTALL_RPATH=${placeholder "out"}/lib"
|
|
]
|
|
++ lib.optionals enableVulkan [ "-DS2_VULKAN=ON" ]
|
|
++ lib.optionals enableCuda [
|
|
"-DS2_CUDA=ON"
|
|
"-DCMAKE_CUDA_ARCHITECTURES=${lib.concatStringsSep ";" cudaCapabilities}"
|
|
];
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
mkdir -p $out/bin $out/lib $out/share
|
|
find . -name 's2' -type f -executable -exec install -Dm755 {} $out/bin/.s2-wrapped \;
|
|
find . -name '*.so*' -exec install -Dm755 {} -t $out/lib/ \;
|
|
install -Dm644 ${finalAttrs.src}/tokenizer.json $out/share/tokenizer.json
|
|
makeWrapper $out/bin/.s2-wrapped $out/bin/s2 \
|
|
--add-flags "-t $out/share/tokenizer.json"
|
|
runHook postInstall
|
|
'';
|
|
|
|
meta = {
|
|
description = "Fish Audio S2 Pro text-to-speech inference engine in native C++/GGML";
|
|
homepage = "https://github.com/rodrigomatta/s2.cpp";
|
|
license = {
|
|
shortName = "fish-audio-research";
|
|
fullName = "Fish Audio Research License";
|
|
url = "https://github.com/rodrigomatta/s2.cpp/blob/main/LICENSE.md";
|
|
free = false;
|
|
};
|
|
mainProgram = "s2";
|
|
platforms = lib.platforms.linux;
|
|
};
|
|
})
|