diff --git a/pkgs/by-name/vo/voicevox-core/package.nix b/pkgs/by-name/vo/voicevox-core/package.nix index 0283b9cbfb4cb..556eb756424d2 100644 --- a/pkgs/by-name/vo/voicevox-core/package.nix +++ b/pkgs/by-name/vo/voicevox-core/package.nix @@ -1,45 +1,18 @@ { lib, stdenv, - fetchzip, + fetchurl, + unzip, autoPatchelfHook, }: -let - platformInfoTable = { - "x86_64-linux" = { - id = "linux-x64"; - hash = "sha256-/PD5e0bWgnIsIrvyOypoJw30VkgbOFWV1NJpPS2G0WM="; - }; - "aarch64-linux" = { - id = "linux-arm64"; - hash = "sha256-zfiorXZyIISZPXPwmcdYeHceDmQXkUhsvTkNZScg648="; - }; - "x86_64-darwin" = { - id = "osx-x64"; - hash = "sha256-cdNdV1fVPkz6B7vtKZiPsLQGqnIiDtYa9KTcwSkjdJg="; - }; - "aarch64-darwin" = { - id = "osx-arm64"; - hash = "sha256-Z1dq2t/HBQulbPF23ZCihOrcZHMpTXEQ6yXKORZaFPk="; - }; - }; - - platformInfo = - platformInfoTable.${stdenv.hostPlatform.system} - or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); -in stdenv.mkDerivation (finalAttrs: { pname = "voicevox-core"; - version = "0.15.4"; + version = "0.15.7"; - # Note: Only the prebuilt binaries are able to decrypt the encrypted voice models - src = fetchzip { - url = "https://github.com/VOICEVOX/voicevox_core/releases/download/${finalAttrs.version}/voicevox_core-${platformInfo.id}-cpu-${finalAttrs.version}.zip"; - inherit (platformInfo) hash; - }; + src = finalAttrs.passthru.sources.${stdenv.hostPlatform.system}; - nativeBuildInputs = lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ]; + nativeBuildInputs = [ unzip ] ++ lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ]; buildInputs = [ stdenv.cc.cc.lib ]; @@ -54,6 +27,37 @@ stdenv.mkDerivation (finalAttrs: { runHook postInstall ''; + # When updating, run the following command to fetch all FODs: + # nix-build -A voicevox-core.sources --keep-going + passthru.sources = + let + # Note: Only the prebuilt binaries are able to decrypt the encrypted voice models + fetchCoreArtifact = + { id, hash }: + fetchurl { + url = "https://github.com/VOICEVOX/voicevox_core/releases/download/${finalAttrs.version}/voicevox_core-${id}-cpu-${finalAttrs.version}.zip"; + inherit hash; + }; + in + { + "x86_64-linux" = fetchCoreArtifact { + id = "linux-x64"; + hash = "sha256-7FgrJ1HlB8l5MHd2KM4lYRx2bYdxrD2+su1G33/ugUA="; + }; + "aarch64-linux" = fetchCoreArtifact { + id = "linux-arm64"; + hash = "sha256-fD7YMTo9jeB4vJibnVwX8VrukCUeAwS6VXGOr3VXG+c="; + }; + "x86_64-darwin" = fetchCoreArtifact { + id = "osx-x64"; + hash = "sha256-5h9qEKbdcvip50TLs3vf6lXkSv24VEjOrx6CTUo7Q4Q="; + }; + "aarch64-darwin" = fetchCoreArtifact { + id = "osx-arm64"; + hash = "sha256-0bFLhvP7LqDzuk3pyM9QZfc8eLMW0IgqVkaXsuS3qlY="; + }; + }; + meta = { changelog = "https://github.com/VOICEVOX/voicevox_core/releases/tag/${finalAttrs.version}"; description = "Core library for the VOICEVOX speech synthesis software"; @@ -67,8 +71,11 @@ stdenv.mkDerivation (finalAttrs: { redistributable = true; }) ]; - maintainers = with lib.maintainers; [ tomasajt ]; - platforms = lib.attrNames platformInfoTable; + maintainers = with lib.maintainers; [ + tomasajt + eljamm + ]; + platforms = lib.attrNames finalAttrs.passthru.sources; sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; }; }) diff --git a/pkgs/by-name/vo/voicevox-engine/package.nix b/pkgs/by-name/vo/voicevox-engine/package.nix index bc9a67617e9fb..e9f3e56a73f7d 100644 --- a/pkgs/by-name/vo/voicevox-engine/package.nix +++ b/pkgs/by-name/vo/voicevox-engine/package.nix @@ -8,14 +8,14 @@ python3Packages.buildPythonApplication rec { pname = "voicevox-engine"; - version = "0.20.0"; + version = "0.22.2"; pyproject = true; src = fetchFromGitHub { owner = "VOICEVOX"; repo = "voicevox_engine"; - rev = "refs/tags/${version}"; - hash = "sha256-Gib5R7oleg+XXyu2V65EqrflQ1oiAR7a09a0MFhSITc="; + tag = version; + hash = "sha256-TZycd3xX5d4dNk4ze2JozyO7zDpGAuO+O7xHAx7QXUI="; }; patches = [ @@ -95,6 +95,10 @@ python3Packages.buildPythonApplication rec { # this test checks the behaviour of openapi # one of the functions returns a slightly different output due to openapi version differences "test_OpenAPIの形が変わっていないことを確認" + + # these tests fail due to some tiny floating point discrepancies + "test_upspeak_voiced_last_mora" + "test_upspeak_voiced_N_last_mora" ]; nativeCheckInputs = with python3Packages; [ @@ -105,22 +109,26 @@ python3Packages.buildPythonApplication rec { passthru = { resources = fetchFromGitHub { + name = "voicevox-resource-${version}"; # this contains ${version} to invalidate the hash upon updating the package owner = "VOICEVOX"; repo = "voicevox_resource"; - rev = "refs/tags/${version}"; - hash = "sha256-m888DF9qgGbK30RSwNnAoT9D0tRJk6cD5QY72FRkatM="; + tag = version; + hash = "sha256-oeWJESm1v0wicAXXFAyZT8z4QRVv9c+3vsWksmuY5wY="; }; pyopenjtalk = python3Packages.callPackage ./pyopenjtalk.nix { }; }; meta = { - changelog = "https://github.com/VOICEVOX/voicevox_engine/releases/tag/${version}"; + changelog = "https://github.com/VOICEVOX/voicevox_engine/releases/tag/${src.tag}"; description = "Engine for the VOICEVOX speech synthesis software"; homepage = "https://github.com/VOICEVOX/voicevox_engine"; license = lib.licenses.lgpl3Only; mainProgram = "voicevox-engine"; - maintainers = with lib.maintainers; [ tomasajt ]; + maintainers = with lib.maintainers; [ + tomasajt + eljamm + ]; platforms = lib.platforms.linux ++ lib.platforms.darwin; }; } diff --git a/pkgs/by-name/vo/voicevox/hardcode-paths.patch b/pkgs/by-name/vo/voicevox/hardcode-paths.patch index 844a3e5884c45..91d862602bff1 100644 --- a/pkgs/by-name/vo/voicevox/hardcode-paths.patch +++ b/pkgs/by-name/vo/voicevox/hardcode-paths.patch @@ -12,30 +12,29 @@ index 5b0dcb0..5848ccd 100644 "host": "http://127.0.0.1:50021" } diff --git a/electron-builder.config.js b/electron-builder.config.js -index 462e6f2..10a9bff 100644 +index 196a0d7..7e313c2 100644 --- a/electron-builder.config.js +++ b/electron-builder.config.js -@@ -35,19 +35,6 @@ const isMac = process.platform === "darwin"; +@@ -37,18 +37,7 @@ const isArm64 = process.arch === "arm64"; // cf: https://k-hyoda.hatenablog.com/entry/2021/10/23/000349#%E8%BF%BD%E5%8A%A0%E5%B1%95%E9%96%8B%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%85%88%E3%81%AE%E8%A8%AD%E5%AE%9A const extraFilePrefix = isMac ? "MacOS/" : ""; -const sevenZipFile = fs -- .readdirSync(path.resolve(__dirname, "build", "vendored", "7z")) +- .readdirSync(path.resolve(__dirname, "vendored", "7z")) - .find( - // Windows: 7za.exe, Linux: 7zzs, macOS: 7zz - (fileName) => ["7za.exe", "7zzs", "7zz"].includes(fileName), - ); -- + -if (!sevenZipFile) { - throw new Error( -- "7z binary file not found. Run `node ./build/download7z.js` first.", +- "7z binary file not found. Run `node ./tools/download7z.js` first.", - ); -} -- + /** @type {import("electron-builder").Configuration} */ const builderOptions = { - beforeBuild: async () => { -@@ -88,14 +75,6 @@ const builderOptions = { +@@ -90,14 +79,6 @@ const builderOptions = { from: "build/README.txt", to: extraFilePrefix + "README.txt", }, @@ -44,17 +43,17 @@ index 462e6f2..10a9bff 100644 - to: path.join(extraFilePrefix, "vv-engine"), - }, - { -- from: path.resolve(__dirname, "build", "vendored", "7z", sevenZipFile), +- from: path.resolve(__dirname, "vendored", "7z", sevenZipFile), - to: extraFilePrefix + sevenZipFile, - }, ], // electron-builder installer productName: "VOICEVOX", diff --git a/src/backend/electron/manager/vvppManager.ts b/src/backend/electron/manager/vvppManager.ts -index 6aa17b6..b8b52b7 100644 +index edd3177..22d0114 100644 --- a/src/backend/electron/manager/vvppManager.ts +++ b/src/backend/electron/manager/vvppManager.ts -@@ -196,16 +196,8 @@ export class VvppManager { +@@ -184,16 +184,8 @@ export class VvppManager { const args = ["x", "-o" + outputDir, archiveFile, "-t" + format]; diff --git a/pkgs/by-name/vo/voicevox/package.nix b/pkgs/by-name/vo/voicevox/package.nix index e4935091c87bd..a12fcef8e1c03 100644 --- a/pkgs/by-name/vo/voicevox/package.nix +++ b/pkgs/by-name/vo/voicevox/package.nix @@ -10,17 +10,18 @@ electron, _7zz, voicevox-engine, + dart-sass, }: buildNpmPackage rec { pname = "voicevox"; - version = "0.20.0"; + version = "0.22.3"; src = fetchFromGitHub { owner = "VOICEVOX"; repo = "voicevox"; - rev = "refs/tags/${version}"; - hash = "sha256-05WTecNc1xxe7SGDPZbLtRELNghFkMTqI4pkX4PsVWI="; + tag = version; + hash = "sha256-6z+A4bJIDfN/K8IjEdt2TqEa/EDt4uQpGh+zSWfP74I="; }; patches = [ @@ -36,7 +37,10 @@ buildNpmPackage rec { --replace-fail "postinstall" "_postinstall" ''; - npmDepsHash = "sha256-g3avCj3S96qYPAyGXn4yvrZ4gteJld+g4eV4aRtv/3g="; + npmDepsHash = "sha256-NuKFhDb/J6G3pFYHZedKnY2hDC5GCp70DpqrST4bJMA="; + + # unlock very specific node version bounds specified by upstream + npmInstallFlags = [ "--engine-strict=false" ]; nativeBuildInputs = [ @@ -54,6 +58,10 @@ buildNpmPackage rec { buildPhase = '' runHook preBuild + # force sass-embedded to use our own sass instead of the bundled one + substituteInPlace node_modules/sass-embedded/dist/lib/src/compiler-path.js \ + --replace-fail 'compilerCommand = (() => {' 'compilerCommand = (() => { return ["${lib.getExe dart-sass}"];' + # build command taken from the definition of the `electron:build` npm script VITE_TARGET=electron npm exec vite build @@ -105,12 +113,15 @@ buildNpmPackage rec { ]; meta = { - changelog = "https://github.com/VOICEVOX/voicevox/releases/tag/${version}"; + changelog = "https://github.com/VOICEVOX/voicevox/releases/tag/${src.tag}"; description = "Editor for the VOICEVOX speech synthesis software"; homepage = "https://github.com/VOICEVOX/voicevox"; license = lib.licenses.lgpl3Only; mainProgram = "voicevox"; - maintainers = with lib.maintainers; [ tomasajt ]; + maintainers = with lib.maintainers; [ + tomasajt + eljamm + ]; platforms = electron.meta.platforms; }; }