1{
2 lib,
3 stdenv,
4 autoreconfHook,
5 fetchFromGitLab,
6 fetchpatch,
7 flac,
8 libao,
9 libvorbis,
10 ncurses,
11 opusfile,
12 pkg-config,
13}:
14
15stdenv.mkDerivation {
16 pname = "squishyball";
17 version = "unstable-2020-11-23";
18
19 src = fetchFromGitLab {
20 domain = "gitlab.xiph.org";
21 owner = "xiph";
22 repo = "squishyball";
23 rev = "27590fe6bac545e2dd3eacf048edbd969682263a";
24 sha256 = "07zs8wx1ahf3q505fk9b6cgzlkhnayfsscch46yy9s1wgxgphj7s";
25 };
26
27 nativeBuildInputs = [
28 autoreconfHook
29 pkg-config
30 ];
31
32 buildInputs = [
33 flac
34 libao
35 libvorbis
36 ncurses
37 opusfile
38 ];
39
40 patches = [
41 ./gnu-screen.patch
42
43 # Patch pending upstream inclusion for ncurses-6.3 support:
44 # https://gitlab.xiph.org/xiph/squishyball/-/issues/1
45 (fetchpatch {
46 name = "ncurses-6.3.patch";
47 url = "https://gitlab.xiph.org/xiph/squishyball/uploads/5609ceaf85ebb6dc297c0efe61b9a1b7/0001-mincurses.c-use-ncurses-API-to-enter-raw-mode-ncurse.patch";
48 sha256 = "06llp7cd77f4vvhz8qdld551dnlpjxf98j7rmp3i1x1kng4f0iy3";
49 })
50 ];
51
52 postInstall = ''
53 # Why doesn’t this happen automagically?
54 mkdir -p $out/share/man/man1
55 cp squishyball.1 $out/share/man/man1
56 '';
57
58 meta = with lib; {
59 description = "Tool to perform sample comparison testing on the command line";
60 longDescription = ''
61 squishyball is a simple command-line utility for performing
62 double-blind A/B, A/B/X or X/X/Y testing on the command line.
63 The user specifies two input files to be compared and uses the
64 keyboard during playback to flip between the randomized samples
65 to perform on-the-fly compar‐ isons. After a predetermined
66 number of trials, squishyball prints the trial results to
67 stdout and exits. Results (stdout) may be redirected to a file
68 without affecting interactive use of the terminal.
69
70 squishyball can also be used to perform casual, non-randomized
71 comparisons of groups of up to ten samples; this is the default
72 mode of operation.
73 '';
74 homepage = "https://gitlab.xiph.org/xiph/squishyball";
75 license = licenses.gpl2Plus;
76 maintainers = with maintainers; [ michalrus ];
77 platforms = platforms.linux;
78 mainProgram = "squishyball";
79 };
80}