linux_xanmod: 5.11.14 -> 5.11.15
[NixPkgs.git] / pkgs / development / libraries / speechd / default.nix
blobb6ec4842e077c1a7d01ac54b0041e8aad7b2d700
1 { lib, stdenv
2 , substituteAll
3 , pkg-config
4 , fetchurl
5 , python3Packages
6 , gettext
7 , itstool
8 , libtool
9 , texinfo
10 , util-linux
11 , autoreconfHook
12 , glib
13 , dotconf
14 , libsndfile
15 , withLibao ? true, libao
16 , withPulse ? false, libpulseaudio
17 , withAlsa ? false, alsaLib
18 , withOss ? false
19 , withFlite ? true, flite
20 # , withFestival ? false, festival-freebsoft-utils
21 , withEspeak ? true, espeak, sonic, pcaudiolib
22 , withPico ? true, svox
23 # , withIvona ? false, libdumbtts
26 let
27   inherit (lib) optional optionals;
28   inherit (python3Packages) python pyxdg wrapPython;
30   # speechd hard-codes espeak, even when built without support for it.
31   selectedDefaultModule =
32     if withEspeak then
33       "espeak-ng"
34     else if withPico then
35       "pico"
36     else if withFlite then
37       "flite"
38     else
39       throw "You need to enable at least one output module.";
40 in stdenv.mkDerivation rec {
41   pname = "speech-dispatcher";
42   version = "0.10.2";
44   src = fetchurl {
45     url = "https://github.com/brailcom/speechd/releases/download/${version}/${pname}-${version}.tar.gz";
46     sha256 = "sha256-sGMZ8gHhXlbGKWZTr1vPwwDLNI6XLVF9+LBurHfq4tw=";
47   };
49   patches = [
50     (substituteAll {
51       src = ./fix-paths.patch;
52       utillinux = util-linux;
53     })
54   ];
56   nativeBuildInputs = [
57     pkg-config
58     autoreconfHook
59     gettext
60     libtool
61     itstool
62     texinfo
63     wrapPython
64   ];
66   buildInputs = [
67     glib
68     dotconf
69     libsndfile
70     libao
71     libpulseaudio
72     alsaLib
73     python
74   ] ++ optionals withEspeak [
75     espeak
76     sonic
77     pcaudiolib
78   ] ++ optional withFlite flite
79     ++ optional withPico svox
80     # TODO: add flint/festival support with festival-freebsoft-utils package
81     # ++ optional withFestival festival-freebsoft-utils
82     # TODO: add Ivona support with libdumbtts package
83     # ++ optional withIvona libdumbtts
84   ;
86   pythonPath = [ pyxdg ];
88   configureFlags = [
89     # Audio method falls back from left to right.
90     "--with-default-audio-method=\"libao,pulse,alsa,oss\""
91     "--with-systemdsystemunitdir=${placeholder "out"}/lib/systemd/system"
92   ] ++ optional withPulse "--with-pulse"
93     ++ optional withAlsa "--with-alsa"
94     ++ optional withLibao "--with-libao"
95     ++ optional withOss "--with-oss"
96     ++ optional withEspeak "--with-espeak-ng"
97     ++ optional withPico "--with-pico"
98     # ++ optional withFestival "--with-flint"
99     # ++ optional withIvona "--with-ivona"
100   ;
102   postPatch = ''
103     substituteInPlace config/speechd.conf --replace "DefaultModule espeak" "DefaultModule ${selectedDefaultModule}"
104     substituteInPlace src/modules/pico.c --replace "/usr/share/pico/lang" "${svox}/share/pico/lang"
105   '';
107   postInstall = ''
108     wrapPythonPrograms
109   '';
111   enableParallelBuilding = true;
113   meta = with lib; {
114     description = "Common interface to speech synthesis";
115     homepage = "https://devel.freebsoft.org/speechd";
116     license = licenses.gpl2Plus;
117     maintainers = with maintainers; [ berce ];
118     platforms = platforms.linux;
119   };