Commit | Line | Data |
---|---|---|
892d8a81 | 1 | ;;; GNU Guix --- Functional package management for GNU |
927ff2c3 | 2 | ;;; Copyright © 2014, 2015 David Thompson <dthompson2@worcester.edu> |
b0193286 | 3 | ;;; Copyright © 2014 Andreas Enge <andreas@enge.fr> |
009c5b5c | 4 | ;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com> |
29a7c98a | 5 | ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net> |
e42dc624 | 6 | ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org> |
f52bd828 | 7 | ;;; Copyright © 2016, 2018, 2019 Leo Famulari <leo@famulari.name> |
7da9e792 | 8 | ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> |
892d8a81 DT |
9 | ;;; |
10 | ;;; This file is part of GNU Guix. | |
11 | ;;; | |
12 | ;;; GNU Guix is free software; you can redistribute it and/or modify it | |
13 | ;;; under the terms of the GNU General Public License as published by | |
14 | ;;; the Free Software Foundation; either version 3 of the License, or (at | |
15 | ;;; your option) any later version. | |
16 | ;;; | |
17 | ;;; GNU Guix is distributed in the hope that it will be useful, but | |
18 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of | |
19 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
20 | ;;; GNU General Public License for more details. | |
21 | ;;; | |
22 | ;;; You should have received a copy of the GNU General Public License | |
23 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. | |
24 | ||
25 | (define-module (gnu packages mpd) | |
26 | #:use-module (gnu packages) | |
7dc68701 | 27 | #:use-module ((guix licenses) #:prefix license:) |
892d8a81 DT |
28 | #:use-module (guix packages) |
29 | #:use-module (guix download) | |
29a7c98a | 30 | #:use-module (guix utils) |
892d8a81 | 31 | #:use-module (guix build-system gnu) |
7da9e792 | 32 | #:use-module (guix build-system meson) |
efe0b143 | 33 | #:use-module (guix build-system python) |
7dc68701 | 34 | #:use-module (gnu packages avahi) |
e42dc624 | 35 | #:use-module (gnu packages boost) |
7c0ed27a | 36 | #:use-module (gnu packages gcc) |
6c86cef5 CB |
37 | #:use-module (gnu packages gettext) |
38 | #:use-module (gnu packages gnome) | |
39 | #:use-module (gnu packages gtk) | |
58acabc3 | 40 | #:use-module (gnu packages icu4c) |
e42dc624 | 41 | #:use-module (gnu packages readline) |
ac257f12 | 42 | #:use-module (gnu packages check) |
7dc68701 DT |
43 | #:use-module (gnu packages compression) |
44 | #:use-module (gnu packages curl) | |
99828fa7 | 45 | #:use-module (gnu packages documentation) |
7dc68701 DT |
46 | #:use-module (gnu packages glib) |
47 | #:use-module (gnu packages linux) | |
48 | #:use-module (gnu packages mp3) | |
4d01bd3c | 49 | #:use-module (gnu packages ncurses) |
cd220e60 | 50 | #:use-module (gnu packages pcre) |
7dc68701 | 51 | #:use-module (gnu packages pkg-config) |
efe0b143 | 52 | #:use-module (gnu packages python) |
44d10b1f | 53 | #:use-module (gnu packages python-xyz) |
7dc68701 | 54 | #:use-module (gnu packages pulseaudio) |
cd0322a3 | 55 | #:use-module (gnu packages sqlite) |
7dc68701 | 56 | #:use-module (gnu packages video) |
654b27e5 | 57 | #:use-module (gnu packages xiph)) |
892d8a81 | 58 | |
654b27e5 | 59 | (define-public libmpdclient |
892d8a81 DT |
60 | (package |
61 | (name "libmpdclient") | |
69c69c2d | 62 | (version "2.16") |
892d8a81 DT |
63 | (source (origin |
64 | (method url-fetch) | |
65 | (uri | |
c59ea46f | 66 | (string-append "https://musicpd.org/download/libmpdclient/" |
892d8a81 | 67 | (car (string-split version #\.)) |
a53a925f | 68 | "/libmpdclient-" version ".tar.xz")) |
892d8a81 DT |
69 | (sha256 |
70 | (base32 | |
69c69c2d | 71 | "0r24cl3i9nvs6a47mvwaxk1kb5wmnhkhrw1q5cq9010fgjvdlszs")))) |
7da9e792 TGR |
72 | (build-system meson-build-system) |
73 | (native-inputs | |
74 | `(("pkg-config" ,pkg-config) | |
75 | ||
76 | ;; For building HTML documentation. | |
77 | ("doxygen" ,doxygen) | |
78 | ||
79 | ;; For tests. | |
80 | ("check" ,check))) | |
81 | (arguments | |
82 | `(#:configure-flags | |
83 | (list "-Ddocumentation=true" | |
84 | "-Dtest=true"))) | |
892d8a81 DT |
85 | (synopsis "Music Player Daemon client library") |
86 | (description "A stable, documented, asynchronous API library for | |
87 | interfacing MPD in the C, C++ & Objective C languages.") | |
e9aa6b5e | 88 | (home-page "https://www.musicpd.org/libs/libmpdclient/") |
7dc68701 DT |
89 | (license license:bsd-3))) |
90 | ||
654b27e5 | 91 | (define-public mpd |
7dc68701 DT |
92 | (package |
93 | (name "mpd") | |
f52bd828 | 94 | (version "0.21.4") |
7dc68701 DT |
95 | (source (origin |
96 | (method url-fetch) | |
97 | (uri | |
943100f6 | 98 | (string-append "https://musicpd.org/download/mpd/" |
29a7c98a | 99 | (version-major+minor version) |
58acabc3 | 100 | "/mpd-" version ".tar.xz")) |
7dc68701 DT |
101 | (sha256 |
102 | (base32 | |
f52bd828 LF |
103 | "1ix52vfa8k8my4xyr8b0phg8605b2xchyzyva908m08vpzm14w94")))) |
104 | (build-system meson-build-system) | |
87b52095 | 105 | (arguments |
f52bd828 LF |
106 | `(#:configure-flags '("-Ddocumentation=true") ; The default is 'false'... |
107 | #:phases | |
87b52095 | 108 | (modify-phases %standard-phases |
f52bd828 LF |
109 | (add-before 'configure 'expand-C++-include-path |
110 | ;; Make <gcc>/include/c++/ext/string_conversions.h find <stdlib.h>. | |
111 | (lambda* (#:key inputs #:allow-other-keys) | |
112 | (let* ((path "CPLUS_INCLUDE_PATH") | |
113 | (gcc (assoc-ref inputs "gcc")) | |
114 | (c++ (string-append gcc "/include/c++"))) | |
115 | (setenv path (string-append c++ ":" (getenv path))) | |
87b52095 | 116 | #t)))))) |
7dc68701 DT |
117 | (inputs `(("ao" ,ao) |
118 | ("alsa-lib" ,alsa-lib) | |
119 | ("avahi" ,avahi) | |
58acabc3 | 120 | ("boost" ,boost) |
7dc68701 DT |
121 | ("curl" ,curl) |
122 | ("ffmpeg" ,ffmpeg) | |
123 | ("flac" ,flac) | |
124 | ("glib" ,glib) | |
58acabc3 | 125 | ("icu4c" ,icu4c) |
241caa62 LF |
126 | ;; The LAME decoder comes from FFmpeg, but is added here so that |
127 | ;; configure picks up the LAME encoder. | |
7dc68701 DT |
128 | ("lame" ,lame) |
129 | ("libid3tag" ,libid3tag) | |
7dc68701 DT |
130 | ("libmpdclient" ,libmpdclient) |
131 | ("libsamplerate" ,libsamplerate) | |
132 | ("libsndfile" ,libsndfile) | |
133 | ("libvorbis" ,libvorbis) | |
134 | ("opus" ,opus) | |
7dc68701 DT |
135 | ("pulseaudio" ,pulseaudio) |
136 | ("sqlite" ,sqlite) | |
137 | ("zlib" ,zlib))) | |
f52bd828 LF |
138 | ;; MPD > 0.21 requires > GCC 6 |
139 | (native-inputs `(("gcc" ,gcc-8) | |
140 | ("gcc-lib" ,gcc-8 "lib") | |
141 | ("pkg-config" ,pkg-config) | |
142 | ("python-sphinx" ,python-sphinx))) | |
7dc68701 DT |
143 | ;; Missing optional inputs: |
144 | ;; libyajl | |
145 | ;; libcdio_paranoia | |
146 | ;; libmms | |
147 | ;; libadplug | |
148 | ;; libaudiofile | |
149 | ;; faad2 | |
150 | ;; fluidsynth | |
151 | ;; libgme | |
152 | ;; libshout | |
153 | ;; libmpg123 | |
154 | ;; libmodplug | |
155 | ;; libmpcdec | |
156 | ;; libsidplay2 | |
157 | ;; libwavpack | |
158 | ;; libwildmidi | |
159 | ;; libtwolame | |
160 | ;; libroar | |
161 | ;; libjack | |
162 | ;; OpenAL | |
163 | (synopsis "Music Player Daemon") | |
164 | (description "Music Player Daemon (MPD) is a flexible, powerful, | |
165 | server-side application for playing music. Through plugins and libraries it | |
166 | can play a variety of sound files while being controlled by its network | |
167 | protocol.") | |
e9aa6b5e | 168 | (home-page "https://www.musicpd.org/") |
7dc68701 | 169 | (license license:gpl2))) |
4d01bd3c | 170 | |
654b27e5 | 171 | (define-public mpd-mpc |
773b2792 PW |
172 | (package |
173 | (name "mpd-mpc") | |
33279c2a | 174 | (version "0.31") |
773b2792 PW |
175 | (source (origin |
176 | (method url-fetch) | |
177 | (uri | |
62d14d24 | 178 | (string-append "https://www.musicpd.org/download/mpc/" |
773b2792 PW |
179 | (car (string-split version #\.)) |
180 | "/mpc-" version ".tar.xz")) | |
181 | (sha256 | |
182 | (base32 | |
33279c2a | 183 | "0b9bsn4sl26xc6wdcms51x9yxznkxkppaycn8gnv4rd1m21kwdv2")))) |
62d14d24 | 184 | (build-system meson-build-system) |
773b2792 | 185 | (inputs `(("libmpdclient" ,libmpdclient))) |
33279c2a LF |
186 | (native-inputs |
187 | `(("pkg-config" ,pkg-config) | |
188 | ("python-sphinx" ,python-sphinx))) | |
773b2792 PW |
189 | (synopsis "Music Player Daemon client") |
190 | (description "MPC is a minimalist command line interface to MPD, the music | |
191 | player daemon.") | |
e9aa6b5e | 192 | (home-page "https://www.musicpd.org/clients/mpc/") |
773b2792 PW |
193 | (license license:gpl2))) |
194 | ||
654b27e5 | 195 | (define-public ncmpc |
4d01bd3c DT |
196 | (package |
197 | (name "ncmpc") | |
947babea | 198 | (version "0.33") |
4d01bd3c DT |
199 | (source (origin |
200 | (method url-fetch) | |
201 | (uri | |
202 | (string-append "http://musicpd.org/download/ncmpc/" | |
947babea | 203 | (version-major version) |
3efee6a4 | 204 | "/ncmpc-" version ".tar.xz")) |
4d01bd3c DT |
205 | (sha256 |
206 | (base32 | |
947babea | 207 | "19fp7xkpai4lq3vmpbppgh3ism7lg2sibv237c0sl5a0hls4mq4l")))) |
fbde7b08 TGR |
208 | (build-system meson-build-system) |
209 | (arguments | |
210 | `(#:configure-flags | |
cd220e60 LF |
211 | ;; Otherwise, they are installed incorrectly, in |
212 | ;; '$out/share/man/man/man1'. | |
213 | (list (string-append "-Dmandir=" (assoc-ref %outputs "out") | |
214 | "/share")) | |
7c0ed27a TGR |
215 | #:phases |
216 | (modify-phases %standard-phases | |
217 | (add-before 'configure 'expand-C++-include-path | |
218 | ;; Make <gcc>/include/c++/ext/string_conversions.h find <stdlib.h>. | |
219 | (lambda* (#:key inputs #:allow-other-keys) | |
220 | (let* ((path "CPLUS_INCLUDE_PATH") | |
221 | (gcc (assoc-ref inputs "gcc")) | |
222 | (c++ (string-append gcc "/include/c++"))) | |
223 | (setenv path (string-append c++ ":" (getenv path))) | |
224 | #t)))))) | |
b42b5afd | 225 | (inputs `(("gcc" ,gcc-8) ; for its C++14 support |
cd220e60 LF |
226 | ("boost" ,boost) |
227 | ("pcre" ,pcre) | |
4d01bd3c DT |
228 | ("libmpdclient" ,libmpdclient) |
229 | ("ncurses" ,ncurses))) | |
fbde7b08 | 230 | (native-inputs `(("gettext" ,gettext-minimal) ; for xgettext |
cd220e60 LF |
231 | ("pkg-config" ,pkg-config) |
232 | ("python-sphinx" ,python-sphinx))) | |
9e771e3b | 233 | (synopsis "Curses Music Player Daemon client") |
4d01bd3c DT |
234 | (description "ncmpc is a fully featured MPD client, which runs in a |
235 | terminal using ncurses.") | |
e9aa6b5e | 236 | (home-page "https://www.musicpd.org/clients/ncmpc/") |
4d01bd3c | 237 | (license license:gpl2))) |
009c5b5c | 238 | |
654b27e5 | 239 | (define-public ncmpcpp |
009c5b5c CS |
240 | (package |
241 | (name "ncmpcpp") | |
93cbcc26 | 242 | (version "0.8.2") |
009c5b5c CS |
243 | (source (origin |
244 | (method url-fetch) | |
245 | (uri | |
a708fea4 | 246 | (string-append "https://ncmpcpp.rybczak.net/stable/ncmpcpp-" |
009c5b5c CS |
247 | version ".tar.bz2")) |
248 | (sha256 | |
249 | (base32 | |
93cbcc26 | 250 | "0m0mjb049sl62vx13h9waavysa30mk0rphacksnvf94n13la62v5")))) |
009c5b5c CS |
251 | (build-system gnu-build-system) |
252 | (inputs `(("libmpdclient" ,libmpdclient) | |
4cb9b726 | 253 | ("boost" ,boost) |
e42dc624 | 254 | ("readline" ,readline) |
a22722c1 | 255 | ("ncurses" ,ncurses) |
a4c7c57c | 256 | ("taglib" ,taglib) |
a708fea4 LF |
257 | ("icu4c" ,icu4c) |
258 | ("curl" ,curl))) | |
e42dc624 | 259 | (native-inputs |
c7794307 | 260 | `(("pkg-config" ,pkg-config))) |
e42dc624 PW |
261 | (arguments |
262 | '(#:configure-flags | |
c7794307 | 263 | '("BOOST_LIB_SUFFIX=" "--with-taglib"))) |
009c5b5c CS |
264 | (synopsis "Featureful ncurses based MPD client inspired by ncmpc") |
265 | (description "Ncmpcpp is an mpd client with a UI very similar to ncmpc, | |
266 | but it provides new useful features such as support for regular expressions | |
267 | for library searches, extended song format, items filtering, the ability to | |
8f65585b | 268 | sort playlists, and a local file system browser.") |
a708fea4 | 269 | (home-page "https://ncmpcpp.rybczak.net/") |
009c5b5c | 270 | (license license:gpl2+))) |
927ff2c3 DT |
271 | |
272 | (define-public mpdscribble | |
273 | (package | |
274 | (name "mpdscribble") | |
275 | (version "0.22") | |
276 | (source (origin | |
277 | (method url-fetch) | |
278 | (uri (string-append "http://www.musicpd.org/download/mpdscribble/" | |
279 | version "/mpdscribble-" version ".tar.gz")) | |
280 | (sha256 | |
281 | (base32 | |
282 | "0f0ybx380x2z2g1qvdndpvcrhkrgsfqckhz3ryydq2w3pl12v27z")))) | |
283 | (build-system gnu-build-system) | |
284 | (inputs `(("libmpdclient" ,libmpdclient) | |
285 | ("curl" ,curl) | |
286 | ("glib" ,glib))) | |
287 | (native-inputs `(("pkg-config" ,pkg-config))) | |
288 | (synopsis "MPD client for track scrobbling") | |
289 | (description "mpdscribble is a Music Player Daemon client which submits | |
290 | information about tracks being played to a scrobbler, such as Libre.FM.") | |
fc2847b1 | 291 | (home-page "https://www.musicpd.org/clients/mpdscribble/") |
927ff2c3 | 292 | (license license:gpl2+))) |
efe0b143 LF |
293 | |
294 | (define-public python-mpd2 | |
295 | (package | |
296 | (name "python-mpd2") | |
297 | (version "0.5.5") | |
298 | (source (origin | |
299 | (method url-fetch) | |
300 | (uri (pypi-uri "python-mpd2" version)) | |
301 | (sha256 | |
302 | (base32 | |
303 | "0laypd7h1j14b4vrmiayqlzdsh2j5hc3zv4l0fqvbrbw9y6763ii")))) | |
304 | (build-system python-build-system) | |
305 | (arguments | |
306 | '(#:phases | |
307 | (modify-phases %standard-phases | |
308 | (replace 'check | |
e8e3c357 | 309 | (lambda _ (invoke "python" "mpd_test.py")))))) |
efe0b143 LF |
310 | (native-inputs `(("python-mock" ,python-mock))) |
311 | (home-page "https://github.com/Mic92/python-mpd2") | |
312 | (synopsis "Python MPD client library") | |
313 | (description "Python-mpd2 is a Python library which provides a client | |
314 | interface for the Music Player Daemon.") | |
5c31f4aa | 315 | (license license:lgpl3+))) |
efe0b143 LF |
316 | |
317 | (define-public python2-mpd2 | |
5c31f4aa | 318 | (package-with-python2 python-mpd2)) |
6c86cef5 CB |
319 | |
320 | (define-public sonata | |
321 | (package | |
322 | (name "sonata") | |
323 | (version "1.7b1") | |
324 | (source (origin | |
325 | (method url-fetch) | |
326 | (uri | |
327 | (string-append "https://github.com/multani/sonata/archive/v" | |
328 | version ".tar.gz")) | |
329 | (file-name (string-append name "-" version ".tar.gz")) | |
330 | (sha256 | |
331 | (base32 | |
332 | "07gq2nxqwxs0qyxjbay7k5j25zd386bn7wdr2dl1gk53diwnn7s0")))) | |
333 | (build-system python-build-system) | |
334 | (arguments | |
335 | `(#:modules ((guix build gnu-build-system) | |
336 | (guix build python-build-system) | |
337 | ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:) | |
338 | (guix build utils)) | |
339 | #:imported-modules (,@%gnu-build-system-modules | |
340 | (guix build python-build-system) | |
341 | (guix build glib-or-gtk-build-system)) | |
342 | #:phases | |
343 | (modify-phases %standard-phases | |
344 | (add-after 'install 'glib-or-gtk-wrap | |
345 | (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)) | |
346 | (add-after 'install 'wrap-sonata | |
347 | (lambda* (#:key outputs #:allow-other-keys) | |
348 | (let ((out (assoc-ref outputs "out")) | |
349 | (gi-typelib-path (getenv "GI_TYPELIB_PATH"))) | |
350 | (wrap-program (string-append out "/bin/sonata") | |
351 | `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))) | |
352 | #t))))) | |
353 | (native-inputs | |
7c90d0f4 | 354 | `(("gettext" ,gettext-minimal))) |
6c86cef5 CB |
355 | (inputs |
356 | `(("python-mpd2" ,python-mpd2) | |
357 | ("gtk+" ,gtk+) | |
358 | ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) | |
359 | ("gobject-introspection" ,gobject-introspection) | |
360 | ("adwaita-icon-theme" ,adwaita-icon-theme) | |
361 | ("python-pygobject" ,python-pygobject))) | |
362 | (synopsis "Elegant client for the Music Player Daemon") | |
363 | (description "Sonata is an elegant graphical client for the Music Player | |
364 | Daemon (MPD). It supports playlists, multiple profiles (connecting to different | |
365 | MPD servers, search and multimedia key support.") | |
340978d7 | 366 | (home-page "https://www.nongnu.org/sonata/") |
6c86cef5 | 367 | (license license:gpl3+))) |