Merge #329658: speechd: use minimal variant

Also add it and inject big variant impurely.

Merge into staging-next
This commit is contained in:
Vladimír Čunát 2024-07-26 16:40:49 +02:00
commit b8688ce9ff
No known key found for this signature in database
GPG key ID: E747DF1F9575A3AA
23 changed files with 150 additions and 52 deletions

View file

@ -356,6 +356,7 @@
./security/systemd-confinement.nix
./security/tpm2.nix
./security/wrappers/default.nix
./services/accessibility/speechd.nix
./services/admin/docuum.nix
./services/admin/meshcentral.nix
./services/admin/oxidized.nix

View file

@ -126,5 +126,15 @@ with lib;
# allow nix-copy to live system
nix.settings.trusted-users = [ "root" "nixos" ];
# Install less voices for speechd to save some space
services.speechd.package = pkgs.speechd.override {
mbrola = pkgs.mbrola.override {
mbrola-voices = pkgs.mbrola-voices.override {
# only ship with one voice per language
languages = [ "*1" ];
};
};
};
};
}

View file

@ -0,0 +1,33 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.services.speechd;
inherit (lib)
getExe
mkEnableOption
mkIf
mkPackageOption
;
in
{
options.services.speechd = {
# FIXME: figure out how to deprecate this EXTREMELY CAREFULLY
enable = mkEnableOption "speech-dispatcher speech synthesizer daemon" // {
default = true;
};
package = mkPackageOption pkgs "speechd" { };
};
# FIXME: speechd 0.12 (or whatever the next version is)
# will support socket activation, so switch to that once it's out.
config = mkIf cfg.enable {
environment = {
systemPackages = [ cfg.package ];
sessionVariables.SPEECHD_CMD = getExe cfg.package;
};
};
}

View file

@ -15,7 +15,7 @@
, libxslt
, libxml2
, speechSupport ? true
, speechd
, speechd-minimal
}:
stdenv.mkDerivation {
@ -56,7 +56,7 @@ stdenv.mkDerivation {
# at-spi2 needs dbus to be recognized by pkg-config
at-spi2-core
dbus
] ++ lib.optional speechSupport speechd;
] ++ lib.optional speechSupport speechd-minimal;
enableParallelBuilding = true;

View file

@ -1,4 +1,4 @@
{ stdenv, lib, fetchFromGitHub, runCommandLocal }:
{ stdenv, lib, fetchFromGitHub, runCommandLocal, mbrola-voices }:
let
pname = "mbrola";
@ -12,20 +12,6 @@ let
homepage = "https://github.com/numediart/MBROLA";
};
# Very big (0.65 G) so kept as a fixed-output derivation to limit "duplicates".
voices = fetchFromGitHub {
owner = "numediart";
repo = "MBROLA-voices";
rev = "fe05a0ccef6a941207fd6aaad0b31294a1f93a51"; # using latest commit
sha256 = "1w0y2xjp9rndwdjagp2wxh656mdm3d6w9cs411g27rjyfy1205a0";
name = "${pname}-voices-${version}";
meta = meta // {
description = "Speech synthesizer based on the concatenation of diphones (voice files)";
homepage = "https://github.com/numediart/MBROLA-voices";
};
};
bin = stdenv.mkDerivation {
pname = "${pname}-bin";
inherit version;
@ -60,7 +46,7 @@ in
}
''
mkdir -p "$out/share/mbrola"
ln -s '${voices}/data' "$out/share/mbrola/voices"
ln -s '${mbrola-voices}/data' "$out/share/mbrola/voices"
ln -s '${bin}/bin' "$out/"
''

View file

@ -0,0 +1,51 @@
{
lib,
stdenv,
fetchFromGitHub,
unstableGitUpdater,
mbrola,
languages ? [ ],
}:
let
src = fetchFromGitHub {
owner = "numediart";
repo = "MBROLA-voices";
rev = "fe05a0ccef6a941207fd6aaad0b31294a1f93a51";
hash = "sha256-QBUggnde5iNeCESzxE0btVVTDOxc3Kdk483mdGUXHvA=";
};
meta = {
description = "Speech synthesizer based on the concatenation of diphones (voice files)";
homepage = "https://github.com/numediart/MBROLA-voices";
license = mbrola.meta.license;
};
in
if (languages == [ ]) then
src // { inherit meta; }
else
stdenv.mkDerivation {
pname = "mbrola-voices";
version = "0-unstable-2020-03-30";
inherit src;
postPatch = ''
shopt -s extglob
pushd data
rm -rfv !(${lib.concatStringsSep "|" languages})
popd
'';
installPhase = ''
runHook preInstall
mkdir $out
cp -R data $out/
runHook postInstall
'';
inherit meta;
}

View file

@ -7,7 +7,7 @@
, glibmm
, libpulseaudio
, libao
, speechd
, speechd-minimal
}:
stdenv.mkDerivation rec {
@ -42,7 +42,7 @@ stdenv.mkDerivation rec {
glibmm
libpulseaudio
libao
speechd
speechd-minimal
];
meta = {

View file

@ -21,7 +21,7 @@
, qmake
, qtbase
, qtwayland
, speechd
, speechd-minimal
, sqlite
, wrapQtAppsHook
, xdg-utils
@ -132,7 +132,7 @@ stdenv.mkDerivation (finalAttrs: {
] ++ lib.optional (unrarSupport) unrardll)
)
xdg-utils
] ++ lib.optional (speechSupport) speechd;
] ++ lib.optional (speechSupport) speechd-minimal;
installPhase = ''
runHook preInstall

View file

@ -35,7 +35,7 @@
, glib, gtk3, dbus-glib
, libXScrnSaver, libXcursor, libXtst, libxshmfence, libGLU, libGL
, mesa
, pciutils, protobuf, speechd, libXdamage, at-spi2-core
, pciutils, protobuf, speechd-minimal, libXdamage, at-spi2-core
, pipewire
, libva
, libdrm, wayland, libxkbcommon # Ozone
@ -196,7 +196,7 @@ let
glib gtk3 dbus-glib
libXScrnSaver libXcursor libXtst libxshmfence libGLU libGL
mesa # required for libgbm
pciutils protobuf speechd libXdamage at-spi2-core
pciutils protobuf speechd-minimal libXdamage at-spi2-core
pipewire
libva
libdrm wayland libxkbcommon
@ -224,7 +224,7 @@ let
glib gtk3 dbus-glib
libXScrnSaver libXcursor libXtst libxshmfence libGLU libGL
mesa # required for libgbm
pciutils protobuf speechd libXdamage at-spi2-core
pciutils protobuf speechd-minimal libXdamage at-spi2-core
pipewire
libva
libdrm wayland libxkbcommon

View file

@ -17,7 +17,7 @@
, pciutils
, sndio
, libjack2
, speechd
, speechd-minimal
, removeReferencesTo
}:
@ -98,7 +98,7 @@ let
++ lib.optional sndioSupport sndio
++ lib.optional jackSupport libjack2
++ lib.optional smartcardSupport opensc
++ lib.optional (cfg.speechSynthesisSupport or true) speechd
++ lib.optional (cfg.speechSynthesisSupport or true) speechd-minimal
++ pkcs11Modules
++ gtk_modules;
gtk_modules = [ libcanberra-gtk3 ];

View file

@ -6,7 +6,7 @@
, libXi, libXrandr, libXrender, libXtst, libxcb, libxshmfence, mesa, nspr, nss
, pango, systemd, libappindicator-gtk3, libdbusmenu, writeScript, python3, runCommand
, libunity
, speechd
, speechd-minimal
, wayland
, branch
, withOpenASAR ? false, openasar
@ -91,7 +91,7 @@ stdenv.mkDerivation rec {
libappindicator-gtk3
libdbusmenu
wayland
] ++ lib.optional withTTS speechd);
] ++ lib.optional withTTS speechd-minimal);
installPhase = ''
runHook preInstall

View file

@ -11,7 +11,7 @@
, jackSupport ? false, libjack2
, pipewireSupport ? true, pipewire
, pulseSupport ? true, libpulseaudio
, speechdSupport ? false, speechd
, speechdSupport ? false, speechd-minimal
}:
let
@ -53,7 +53,7 @@ let
buildInputs = [ flac libogg libopus libsndfile libvorbis qt5.qtsvg rnnoise speex ]
++ lib.optional (!jackSupport) alsa-lib
++ lib.optional jackSupport libjack2
++ lib.optional speechdSupport speechd
++ lib.optional speechdSupport speechd-minimal
++ lib.optional pulseSupport libpulseaudio
++ lib.optional pipewireSupport pipewire;
@ -72,7 +72,7 @@ let
++ lib.optional (!pipewireSupport) "-D pipewire=OFF"
++ lib.optional jackSupport "-D alsa=OFF -D jackaudio=ON";
env.NIX_CFLAGS_COMPILE = lib.optionalString speechdSupport "-I${speechd}/include/speech-dispatcher";
env.NIX_CFLAGS_COMPILE = lib.optionalString speechdSupport "-I${speechd-minimal}/include/speech-dispatcher";
postFixup = ''
wrapProgram $out/bin/mumble \

View file

@ -7,14 +7,14 @@
, xorg
, perl
, openssl
, speechd
, speechd-minimal
, libxkbcommon
, libGL
, wayland
}:
let
rpathLibs = [
speechd
speechd-minimal
openssl
gtk3
libxkbcommon

View file

@ -24,7 +24,7 @@
## Ubuntu
, liberation_ttf, curl, util-linux, xdg-utils, wget
## Arch Linux.
, flac, harfbuzz, icu, libpng, libopus, snappy, speechd
, flac, harfbuzz, icu, libpng, libopus, snappy, speechd-minimal
## Gentoo
, bzip2, libcap
@ -54,7 +54,7 @@ let
systemd
libexif pciutils
liberation_ttf curl util-linux wget
flac harfbuzz icu libpng opusWithCustomModes snappy speechd
flac harfbuzz icu libpng opusWithCustomModes snappy speechd-minimal
bzip2 libcap at-spi2-atk at-spi2-core
libkrb5 libdrm libglvnd mesa coreutils
libxkbcommon pipewire wayland

View file

@ -20,7 +20,7 @@
, lsof
, coreutils
, gsettings-desktop-schemas
, speechd
, speechd-minimal
, brltty
, liblouis
, gst_all_1
@ -65,7 +65,7 @@ python3.pkgs.buildPythonApplication rec {
brltty
liblouis
psutil
speechd
speechd-minimal
gst-python
setproctitle
];

View file

@ -1,9 +1,9 @@
{ lib, qtModule, stdenv, speechd, pkg-config }:
{ lib, qtModule, stdenv, speechd-minimal, pkg-config }:
qtModule {
pname = "qtspeech";
propagatedBuildInputs = [ ];
buildInputs = lib.optionals stdenv.isLinux [ speechd ];
buildInputs = lib.optionals stdenv.isLinux [ speechd-minimal ];
nativeBuildInputs = [ pkg-config ];
outputs = [ "out" "dev" ];
}

View file

@ -6,14 +6,14 @@
, pkg-config
, flite
, alsa-lib
, speechd
, speechd-minimal
, Cocoa
}:
qtModule {
pname = "qtspeech";
nativeBuildInputs = [ pkg-config ];
buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ flite alsa-lib speechd ];
buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ flite alsa-lib speechd-minimal ];
propagatedBuildInputs = [ qtbase qtmultimedia ]
++ lib.optionals stdenv.hostPlatform.isDarwin [ Cocoa ];
}

View file

@ -21,6 +21,7 @@
, withEspeak ? true, espeak, sonic, pcaudiolib
, mbrola
, withPico ? true, svox
, libsOnly ? false
}:
let
@ -101,14 +102,16 @@ in stdenv.mkDerivation rec {
substituteInPlace src/modules/pico.c --replace "/usr/share/pico/lang" "${svox}/share/pico/lang"
'';
postInstall = ''
postInstall = if libsOnly then ''
rm -rf $out/{bin,etc,lib/speech-dispatcher,lib/systemd,libexec,share}
'' else ''
wrapPythonPrograms
'';
enableParallelBuilding = true;
meta = with lib; {
description = "Common interface to speech synthesis";
description = "Common interface to speech synthesis" + lib.optionalString libsOnly " - client libraries only";
homepage = "https://devel.freebsoft.org/speechd";
license = licenses.gpl2Plus;
maintainers = with maintainers; [
@ -116,5 +119,6 @@ in stdenv.mkDerivation rec {
jtojnar
];
platforms = platforms.linux;
mainProgram = "speech-dispatcher";
};
}

View file

@ -16,7 +16,7 @@
, pipewire
, libsecret
, libpulseaudio
, speechd
, speechd-minimal
, info
}:
@ -199,7 +199,7 @@ in (chromium.override { upstream-info = info.chromium; }).mkDerivation (base: {
stdenv.cc.cc.lib
libsecret
libpulseaudio
speechd
speechd-minimal
];
in
base.postFixup + ''

View file

@ -19,7 +19,7 @@
, alsa-lib
, libpulseaudio
, dbus
, speechd
, speechd-minimal
, fontconfig
, udev
, withDebug ? false
@ -81,7 +81,7 @@ stdenv.mkDerivation rec {
++ lib.optional withPulseaudio libpulseaudio
++ lib.optional withDbus dbus
++ lib.optional withDbus dbus.lib
++ lib.optional withSpeechd speechd
++ lib.optional withSpeechd speechd-minimal
++ lib.optional withFontconfig fontconfig
++ lib.optional withFontconfig fontconfig.lib
++ lib.optional withUdev udev;

View file

@ -6,7 +6,7 @@
, alsa-lib
, openssl
, withTTS ? false
, speechd
, speechd-minimal
, darwin
}:
let
@ -31,7 +31,7 @@ rustPlatform.buildRustPackage rec {
nativeBuildInputs = [ pkg-config rustPlatform.bindgenHook ];
buildInputs = [ openssl ]
++ lib.optionals (withTTS && stdenv.isLinux) [ speechd ]
++ lib.optionals (withTTS && stdenv.isLinux) [ speechd-minimal ]
++ lib.optionals stdenv.isLinux [ alsa-lib ]
++ lib.optionals (withTTS && stdenv.isDarwin) [ AVFoundation AppKit ]
++ lib.optionals stdenv.isDarwin [ CoreAudio AudioUnit ];

View file

@ -5,7 +5,7 @@
, pkg-config
, libpulseaudio
, dbus
, speechd
, speechd-minimal
}:
rustPlatform.buildRustPackage rec {
@ -32,7 +32,7 @@ rustPlatform.buildRustPackage rec {
buildInputs = [
libpulseaudio
dbus
speechd
speechd-minimal
];
nativeBuildInputs = [

View file

@ -24074,6 +24074,17 @@ with pkgs;
speechd = callPackage ../development/libraries/speechd { };
speechd-minimal = speechd.override {
withLibao = false;
withPulse = false;
withAlsa = false;
withOss = false;
withFlite = false;
withEspeak = false;
withPico = false;
libsOnly = true;
};
speech-tools = callPackage ../development/libraries/speech-tools {
inherit (darwin.apple_sdk.frameworks) CoreServices AudioUnit Cocoa;
};
@ -32142,6 +32153,8 @@ with pkgs;
mbrola = callPackage ../applications/audio/mbrola { };
mbrola-voices = callPackage ../applications/audio/mbrola/voices.nix { };
mcpp = callPackage ../development/compilers/mcpp { };
mda_lv2 = callPackage ../applications/audio/mda-lv2 { };