This repository has no description
2.1 kB
104 lines
1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 autoconf,
6 automake,
7 pkg-config,
8 libpulseaudio,
9 alsa-lib,
10 nix-update-script,
11}:
12
13stdenv.mkDerivation (finalAttrs: {
14 pname = "dectalk";
15 version = "0-unstable-2026-10-08";
16
17 src = fetchFromGitHub {
18 owner = "dectalk";
19 repo = "dectalk";
20 rev = "986ea12ec8dac85881394d7bd7daf1f1d5098b9a";
21 hash = "sha256-/6IaMJoTeIAXopqVdo65Tgi+Ldtw768lFK9RiBMFhY4=";
22 };
23
24 nativeBuildInputs = [
25 autoconf
26 automake
27 pkg-config
28 ];
29
30 buildInputs = [
31 libpulseaudio
32 alsa-lib
33 ];
34
35 postPatch = ''
36 # Replace git version detection with static version since .git is not available
37 sed -i 's/m4_esyscmd_s(echo $(git describe --always)$(git status --porcelain | awk .*))/${
38 builtins.substring 0 7 finalAttrs.src.rev
39 }/' src/configure.ac
40 '';
41
42 configurePhase = ''
43 runHook preConfigure
44 cd src
45 ./autogen.sh
46 ./configure --prefix=$out
47 cd ..
48 runHook postConfigure
49 '';
50
51 buildPhase = ''
52 runHook preBuild
53 make -C src -j$NIX_BUILD_CORES
54 runHook postBuild
55 '';
56
57 installPhase = ''
58 runHook preInstall
59 mkdir -p $out/bin $out/lib $out/dic
60
61 # Libraries
62 cp dist/lib/*.so $out/lib/
63
64 # Main binaries
65 for bin in say dtmemory aclock; do
66 if [ -f "dist/$bin" ]; then
67 cp "dist/$bin" $out/bin/
68 fi
69 done
70
71 # Tools
72 if [ -d dist/tools ]; then
73 cp dist/tools/* $out/bin/
74 fi
75
76 # Dictionaries
77 cp dist/dic/* $out/dic/
78
79 # DECtalk config — must be at $out/DECtalk.conf (compiled-in DECTALK_INSTALL_PREFIX)
80 cp dist/DECtalk.conf $out/DECtalk.conf
81
82 runHook postInstall
83 '';
84
85 passthru.updateScript = nix-update-script {
86 extraArgs = [
87 "--flake"
88 "--version-regex"
89 "(0-unstable-.*)"
90 "--version=branch"
91 "--system"
92 "x86_64-linux"
93 ];
94 };
95
96 meta = {
97 description = "Modern builds of the DECtalk text-to-speech engine";
98 homepage = "https://github.com/dectalk/dectalk";
99 # license = lib.licenses.unfree;
100 license = lib.licenses.free;
101 platforms = lib.platforms.linux;
102 mainProgram = "say";
103 };
104})