diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/speechd/default.nix')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/speechd/default.nix | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/speechd/default.nix b/nixpkgs/pkgs/development/libraries/speechd/default.nix new file mode 100644 index 000000000000..e85b6d4cbf40 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/speechd/default.nix @@ -0,0 +1,120 @@ +{ lib, stdenv +, substituteAll +, pkg-config +, fetchurl +, python3Packages +, gettext +, itstool +, libtool +, texinfo +, util-linux +, autoreconfHook +, glib +, dotconf +, libsndfile +, withLibao ? true, libao +, withPulse ? false, libpulseaudio +, withAlsa ? false, alsaLib +, withOss ? false +, withFlite ? true, flite +# , withFestival ? false, festival-freebsoft-utils +, withEspeak ? true, espeak, sonic, pcaudiolib +, withPico ? true, svox +# , withIvona ? false, libdumbtts +}: + +let + inherit (lib) optional optionals; + inherit (python3Packages) python pyxdg wrapPython; + + # speechd hard-codes espeak, even when built without support for it. + selectedDefaultModule = + if withEspeak then + "espeak-ng" + else if withPico then + "pico" + else if withFlite then + "flite" + else + throw "You need to enable at least one output module."; +in stdenv.mkDerivation rec { + pname = "speech-dispatcher"; + version = "0.10.1"; + + src = fetchurl { + url = "https://github.com/brailcom/speechd/releases/download/${version}/${pname}-${version}.tar.gz"; + sha256 = "0j2lfzkmbsxrrgjw6arzvnfd4jn5pxab28xsk2djssr2ydb9x309"; + }; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + utillinux = util-linux; + }) + ]; + + nativeBuildInputs = [ + pkg-config + autoreconfHook + gettext + libtool + itstool + texinfo + wrapPython + ]; + + buildInputs = [ + glib + dotconf + libsndfile + libao + libpulseaudio + alsaLib + python + ] ++ optionals withEspeak [ + espeak + sonic + pcaudiolib + ] ++ optional withFlite flite + ++ optional withPico svox + # TODO: add flint/festival support with festival-freebsoft-utils package + # ++ optional withFestival festival-freebsoft-utils + # TODO: add Ivona support with libdumbtts package + # ++ optional withIvona libdumbtts + ; + + pythonPath = [ pyxdg ]; + + configureFlags = [ + # Audio method falls back from left to right. + "--with-default-audio-method=\"libao,pulse,alsa,oss\"" + "--with-systemdsystemunitdir=${placeholder "out"}/lib/systemd/system" + ] ++ optional withPulse "--with-pulse" + ++ optional withAlsa "--with-alsa" + ++ optional withLibao "--with-libao" + ++ optional withOss "--with-oss" + ++ optional withEspeak "--with-espeak-ng" + ++ optional withPico "--with-pico" + # ++ optional withFestival "--with-flint" + # ++ optional withIvona "--with-ivona" + ; + + postPatch = '' + substituteInPlace config/speechd.conf --replace "DefaultModule espeak" "DefaultModule ${selectedDefaultModule}" + substituteInPlace src/modules/pico.c --replace "/usr/share/pico/lang" "${svox}/share/pico/lang" + ''; + + postInstall = '' + wrapPythonPrograms + ''; + + enableParallelBuilding = true; + + meta = with lib; { + description = "Common interface to speech synthesis"; + homepage = "https://devel.freebsoft.org/speechd"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ berce ]; + platforms = platforms.linux; + }; +} |