projects/guix·blob python-team · refs

796 lines · 29.5 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014, 2015 David Thompson <[email protected]>
3;;; Copyright © 2014 Andreas Enge <[email protected]>
4;;; Copyright © 2014 Cyrill Schenkel <[email protected]>
5;;; Copyright © 2014 Ian Denhardt <[email protected]>
6;;; Copyright © 2015 Paul van der Walt <[email protected]>
7;;; Copyright © 2016, 2018, 2019, 2020 Leo Famulari <[email protected]>
8;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <[email protected]>
9;;; Copyright © 2019 Evan Straw <[email protected]>
10;;; Copyright © 2020, 2021, 2026 Ricardo Wurmus <[email protected]>
11;;; Copyright © 2020 Lars-Dominik Braun <[email protected]>
12;;; Copyright © 2020–2023 Simon Streit <[email protected]>
13;;; Copyright © 2021 Noah Evans <[email protected]>
14;;; Copyright © 2025 Janneke Nieuwenhuizen <[email protected]>
15;;;
16;;; This file is part of GNU Guix.
17;;;
18;;; GNU Guix is free software; you can redistribute it and/or modify it
19;;; under the terms of the GNU General Public License as published by
20;;; the Free Software Foundation; either version 3 of the License, or (at
21;;; your option) any later version.
22;;;
23;;; GNU Guix is distributed in the hope that it will be useful, but
24;;; WITHOUT ANY WARRANTY; without even the implied warranty of
25;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26;;; GNU General Public License for more details.
27;;;
28;;; You should have received a copy of the GNU General Public License
29;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
30
31(define-module (gnu packages mpd)
32 #:use-module (gnu packages)
33 #:use-module ((guix licenses) #:prefix license:)
34 #:use-module (guix gexp)
35 #:use-module (guix packages)
36 #:use-module (guix download)
37 #:use-module (guix git-download)
38 #:use-module (guix utils)
39 #:use-module (guix build-system cargo)
40 #:use-module (guix build-system cmake)
41 #:use-module (guix build-system gnu)
42 #:use-module (guix build-system meson)
43 #:use-module (guix build-system pyproject)
44 #:use-module (guix build-system qt)
45 #:use-module (gnu packages algebra)
46 #:use-module (gnu packages audio)
47 #:use-module (gnu packages autotools)
48 #:use-module (gnu packages base)
49 #:use-module (gnu packages bash)
50 #:use-module (gnu packages boost)
51 #:use-module (gnu packages cdrom)
52 #:use-module (gnu packages cpp)
53 #:use-module (gnu packages dns)
54 #:use-module (gnu packages file-systems)
55 #:use-module (gnu packages freedesktop) ;elogind
56 #:use-module (gnu packages gettext)
57 #:use-module (gnu packages gnome)
58 #:use-module (gnu packages gnupg)
59 #:use-module (gnu packages gtk)
60 #:use-module (gnu packages icu4c)
61 #:use-module (gnu packages kde-frameworks)
62 #:use-module (gnu packages libusb)
63 #:use-module (gnu packages lua)
64 #:use-module (gnu packages readline)
65 #:use-module (gnu packages ruby-xyz)
66 #:use-module (gnu packages check)
67 #:use-module (gnu packages compression)
68 #:use-module (gnu packages curl)
69 #:use-module (gnu packages documentation)
70 #:use-module (gnu packages glib)
71 #:use-module (gnu packages linux)
72 #:use-module (gnu packages mp3)
73 #:use-module (gnu packages music)
74 #:use-module (gnu packages ncurses)
75 #:use-module (gnu packages pcre)
76 #:use-module (gnu packages perl)
77 #:use-module (gnu packages pkg-config)
78 #:use-module (gnu packages pretty-print)
79 #:use-module (gnu packages python)
80 #:use-module (gnu packages python-build)
81 #:use-module (gnu packages python-xyz)
82 #:use-module (gnu packages pulseaudio)
83 #:use-module (gnu packages qt)
84 #:use-module (gnu packages serialization)
85 #:use-module (gnu packages sphinx)
86 #:use-module (gnu packages sqlite)
87 #:use-module (gnu packages tls)
88 #:use-module (gnu packages video)
89 #:use-module (gnu packages web)
90 #:use-module (gnu packages xiph)
91 #:use-module (gnu packages xml))
92
93(define-public libmpdclient
94 (package
95 (name "libmpdclient")
96 (version "2.27")
97 (source (origin
98 (method url-fetch)
99 (uri
100 (string-append "https://musicpd.org/download/libmpdclient/"
101 (car (string-split version #\.))
102 "/libmpdclient-" version ".tar.xz"))
103 (sha256
104 (base32
105 "1n7av8099g19g996bgah0q36wjh28pjjhw5vlb7g9n0ipid5p548"))))
106 (build-system meson-build-system)
107 (native-inputs
108 (list pkg-config
109 ;; For building HTML documentation.
110 doxygen
111 ;; For tests.
112 check))
113 (arguments
114 `(#:configure-flags
115 (list "-Ddocumentation=true"
116 "-Dtest=true")))
117 (synopsis "Music Player Daemon client library")
118 (description "A stable, documented, asynchronous API library for
119interfacing MPD in the C, C++ & Objective C languages.")
120 (home-page "https://www.musicpd.org/libs/libmpdclient/")
121 (license license:bsd-3)))
122
123(define-public mpd
124 (package
125 (name "mpd")
126 (version "0.24.15")
127 (source (origin
128 (method url-fetch)
129 (uri
130 (string-append "https://musicpd.org/download/mpd/"
131 (version-major+minor version)
132 "/mpd-" version ".tar.xz"))
133 (sha256
134 (base32
135 "0my4qkij74cri0k65zf6y021kgpmpixckganc40nilpwwfy70k2j"))))
136 (build-system meson-build-system)
137 (arguments
138 (list
139 #:configure-flags #~(list "-Ddocumentation=enabled"
140 "-Dsystemd=enabled"
141 "-Dtest=true")
142 #:phases
143 #~(modify-phases %standard-phases
144 (add-after 'unpack 'enable-elogind
145 (lambda _
146 (substitute* "src/lib/systemd/meson.build"
147 (("libsystemd") "libelogind"))
148 ;; XXX: systemd dependency overwritten internally, leads to bad
149 ;; errors
150 (substitute* "src/lib/systemd/meson.build"
151 (("systemd_dep = declare_dependency" all)
152 (string-append "_" all)))
153 (substitute* "meson.build"
154 (("systemd_dep,") "systemd_dep, _systemd_dep,"))))
155 (add-after 'install 'split-package
156 (lambda _
157 ;; The HTML manual accounts for over 40% of the disk
158 ;; space used by the package.
159 (let* ((old (string-append #$output "/share/doc"))
160 (new (string-append #$output:doc "/share/doc")))
161 (mkdir-p (dirname new))
162 (rename-file old new)))))))
163 (inputs (append
164 (if (target-linux?) (list liburing) '())
165 (list ao
166 alsa-lib
167 avahi
168 chromaprint
169 curl
170 dbus
171 elogind
172 expat
173 ffmpeg
174 flac
175 fmt
176 glib
177 icu4c
178 ;; The LAME decoder comes from FFmpeg, but is added here so that
179 ;; configure picks up the LAME encoder.
180 lame
181 libgme
182 libid3tag
183 libmpdclient
184 libnfs
185 libopenmpt
186 libsamplerate
187 libshout
188 libsndfile
189 libvorbis
190 opus
191 pcre2
192 pipewire
193 pulseaudio
194 soxr
195 sqlite
196 yajl
197 zlib
198 zziplib)))
199 (native-inputs (list pkg-config python-sphinx googletest
200 ;; See test/meson.build for information about these
201 ;; additional dependencies.
202 ;;
203 ;; Used when zziplib feature is enabled.
204 zip))
205 (outputs (list "out" "doc"))
206 ;; Missing optional inputs:
207 ;; libcdio_paranoia
208 ;; libmms
209 ;; libadplug
210 ;; libaudiofile
211 ;; faad2
212 ;; fluidsynth
213 ;; libmpg123
214 ;; libmodplug
215 ;; libmpcdec
216 ;; libsidplay2
217 ;; libwavpack
218 ;; libwildmidi
219 ;; libtwolame
220 ;; libroar
221 ;; libjack
222 ;; OpenAL
223 (synopsis "Music Player Daemon")
224 (description "Music Player Daemon (MPD) is a flexible, powerful,
225server-side application for playing music. Through plugins and libraries it
226can play a variety of sound files while being controlled by its network
227protocol.")
228 (home-page "https://www.musicpd.org/")
229 (properties `((release-monitoring-url . "https://musicpd.org")))
230 (license license:gpl2)))
231
232(define-public mpd-mpc
233 (package
234 (name "mpd-mpc")
235 (version "0.35")
236 (source
237 (origin
238 (method git-fetch)
239 (uri
240 (git-reference
241 (url "https://github.com/MusicPlayerDaemon/mpc")
242 (commit (string-append "v" version))))
243 (file-name (git-file-name name version))
244 (sha256
245 (base32
246 "1fv9v5jmcw8ba4bfg5mxdfwy4skaifls3843f23z6qpcg67nfmx1"))))
247 (build-system meson-build-system)
248 (arguments
249 (list #:phases
250 #~(modify-phases %standard-phases
251 (add-after 'unpack 'remove-bogus-rsync-requirement
252 ;; Meson thinks a maintainer ‘upload to musicpd.org’ task
253 ;; merits a hard dependency on rsync. Convince it otherwise.
254 ;; Don't use ‘true’ so that the build will fail if it is ever
255 ;; actually invoked.
256 (lambda _
257 (substitute* "doc/meson.build"
258 (("rsync") "ls"))))
259 (add-after 'install 'move-completion
260 (lambda* (#:key outputs #:allow-other-keys)
261 (let* ((out (assoc-ref outputs "out"))
262 (contrib (string-append out "/share/doc/mpc/contrib"))
263 (completion
264 (string-append out "/etc/bash_completion.d/")))
265 (mkdir-p completion)
266 (rename-file (string-append contrib "/mpc-completion.bash")
267 (string-append completion "/mpc"))))))))
268 (inputs (list libmpdclient))
269 (native-inputs
270 (list pkg-config python-sphinx))
271 (synopsis "Music Player Daemon client")
272 (description "MPC is a minimalist command line interface to MPD, the music
273player daemon.")
274 (home-page "https://www.musicpd.org/clients/mpc/")
275 (license license:gpl2)))
276
277(define-public ncmpc
278 (package
279 (name "ncmpc")
280 (version "0.54")
281 (source (origin
282 (method url-fetch)
283 (uri
284 (string-append "http://musicpd.org/download/ncmpc/"
285 (version-major version)
286 "/ncmpc-" version ".tar.xz"))
287 (sha256
288 (base32
289 "04fbqhg6spd28hlgbdj15jb27r423r7dwx31sg2z82i0033fcy7n"))))
290 (build-system meson-build-system)
291 (inputs (list boost fmt pcre libmpdclient ncurses))
292 (native-inputs
293 (list gettext-minimal ; for xgettext
294 pkg-config
295 python-sphinx))
296 (synopsis "Curses Music Player Daemon client")
297 (description "ncmpc is a fully featured MPD client, which runs in a
298terminal using ncurses.")
299 (home-page "https://www.musicpd.org/clients/ncmpc/")
300 (license license:gpl2)))
301
302(define-public ncmpcpp
303 (package
304 (name "ncmpcpp")
305 (version "0.10.1")
306 (source (origin
307 (method git-fetch)
308 (uri (git-reference
309 (url "https://github.com/ncmpcpp/ncmpcpp")
310 (commit (string-append version))))
311 (file-name (git-file-name name version))
312 (sha256
313 (base32
314 "1chs7xpbsd1kmrdi4z41s0qcl7b661548jj6va1najgm5r5mwxy3"))))
315 (build-system gnu-build-system)
316 (inputs (list boost-1.83
317 curl
318 fftw
319 icu4c
320 libmpdclient
321 ncurses
322 readline
323 taglib))
324 (native-inputs
325 (list autoconf-2.71
326 automake
327 libtool
328 pkg-config))
329 (arguments
330 (list #:configure-flags
331 #~(list "BOOST_LIB_SUFFIX=" "--with-taglib" "--enable-clock"
332 "--enable-visualizer")))
333 (synopsis "Featureful ncurses based MPD client inspired by ncmpc")
334 (description "Ncmpcpp is an mpd client with a UI very similar to ncmpc,
335but it provides new useful features such as support for regular expressions
336for library searches, extended song format, items filtering, the ability to
337sort playlists, and a local file system browser.")
338 (home-page "https://ncmpcpp.rybczak.net/")
339 (license license:gpl2+)))
340
341(define-public mpdscribble
342 (package
343 (name "mpdscribble")
344 (version "0.26")
345 (source (origin
346 (method url-fetch)
347 (uri (string-append "http://www.musicpd.org/download/mpdscribble/"
348 version "/mpdscribble-" version ".tar.xz"))
349 (sha256
350 (base32
351 "02b3pxafxx9whimb83g5mz9xkc8438700h61arr70rf4i6dq5mdr"))))
352 (build-system meson-build-system)
353 (inputs (list boost curl fmt libgcrypt libmpdclient))
354 (native-inputs (list pkg-config))
355 (synopsis "MPD client for track scrobbling")
356 (description "mpdscribble is a Music Player Daemon client which submits
357information about tracks being played to a scrobbler, such as Libre.FM.")
358 (home-page "https://www.musicpd.org/clients/mpdscribble/")
359 (license license:gpl2+)))
360
361(define-public python-mpd2
362 (package
363 (name "python-mpd2")
364 (version "3.1.2")
365 (source
366 (origin
367 (method git-fetch)
368 (uri (git-reference
369 (url "https://github.com/Mic92/python-mpd2")
370 (commit (string-append "v" version))))
371 (file-name (git-file-name name version))
372 (sha256
373 (base32 "1vpxd1vj03zzhm87rq840w6ha6j7pixhnv74qqmmmfq5xvfifayy"))))
374 (build-system pyproject-build-system)
375 (arguments
376 (list
377 #:test-flags #~(list "-m" "unittest" "mpd.tests")
378 #:phases
379 #~(modify-phases %standard-phases
380 (replace 'check
381 (lambda* (#:key tests? test-flags #:allow-other-keys)
382 (if tests?
383 (apply invoke "python" test-flags)
384 (format #t "test suite not run~%")))))))
385 (native-inputs
386 (list python-mock python-setuptools python-wheel))
387 (home-page "https://github.com/Mic92/python-mpd2")
388 (synopsis "Python MPD client library")
389 (description "Python-mpd2 is a Python library which provides a client
390interface for the Music Player Daemon.")
391 (license license:lgpl3+)))
392
393(define-public sonata
394 (package
395 (name "sonata")
396 (version "1.7.3")
397 (source (origin
398 (method git-fetch)
399 (uri (git-reference
400 (url "https://github.com/multani/sonata")
401 (commit (string-append "v" version))))
402 (file-name (git-file-name name version))
403 (sha256
404 (base32
405 "0jipamk3gq85kxhq8vd6sw5rjyiyx5cfadafikc5k0q0fw67w83v"))))
406 (build-system pyproject-build-system)
407 (arguments
408 (list
409 ;; Invalid command "test"
410 #:tests? #false
411 #:modules '((guix build gnu-build-system)
412 (guix build pyproject-build-system)
413 ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
414 (guix build utils))
415 #:imported-modules `(,@%pyproject-build-system-modules
416 (guix build glib-or-gtk-build-system))
417 #:phases
418 #~(modify-phases %standard-phases
419 (add-after 'install 'glib-or-gtk-wrap
420 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))
421 (add-after 'unpack 'fix-importlib
422 (lambda _
423 (substitute* "sonata/main.py"
424 (("importlib.resources.files\\(__name__\\)")
425 "importlib.resources.files(\"sonata\")"))))
426 (add-after 'wrap 'wrap-sonata
427 (lambda _
428 (let ((gi-typelib-path (getenv "GI_TYPELIB_PATH")))
429 (wrap-program (string-append #$output "/bin/sonata")
430 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))))))
431 (native-inputs
432 (list gettext-minimal
433 python-setuptools
434 python-wheel))
435 (inputs
436 (list bash-minimal
437 python-mpd2
438 gtk+
439 gsettings-desktop-schemas
440 gobject-introspection
441 adwaita-icon-theme
442 gvfs
443 python-pygobject))
444 (synopsis "Elegant client for the Music Player Daemon")
445 (description "Sonata is an elegant graphical client for the Music Player
446Daemon (MPD). It supports playlists, multiple profiles (connecting to different
447MPD servers, search and multimedia key support.")
448 (home-page "https://www.nongnu.org/sonata/")
449 (license license:gpl3+)))
450
451(define-public ashuffle
452 (package
453 (name "ashuffle")
454 (version "3.14.9")
455 (source (origin
456 (method git-fetch)
457 (uri (git-reference
458 (url "https://github.com/joshkunz/ashuffle")
459 (commit (string-append "v" version))))
460 (file-name (git-file-name name version))
461 (sha256
462 (base32
463 "06n0mk8cxsw5ycmzxmvwykz7pf6k67qj5g1l8jjwckn7289ll3ba"))))
464 (native-inputs (list pkg-config))
465 (inputs
466 (list abseil-cpp-cxxstd17
467 googletest
468 libmpdclient
469 yaml-cpp))
470 (build-system meson-build-system)
471 (arguments
472 (list #:configure-flags
473 #~'("-Dtests=enabled"
474 "-Dunsupported_use_system_absl=true"
475 "-Dunsupported_use_system_gtest=true"
476 "-Dunsupported_use_system_yamlcpp=true")
477 #:phases
478 #~(modify-phases %standard-phases
479 (add-after 'unpack 'fix-dependencies
480 (lambda _
481 (substitute* "meson.build"
482 (("'absl_low_level_hash',") "")))))))
483 (home-page "https://github.com/joshkunz/ashuffle")
484 (synopsis "Automatic library-wide shuffle for mpd")
485 (description "ashuffle is an application for automatically shuffling your
486MPD library in a similar way to many other music players' 'shuffle library'
487feature. ashuffle works like any other MPD client, and can be used alongside
488other MPD frontends.")
489 (license license:expat)))
490
491(define-public mpdris2
492 (package
493 (name "mpdris2")
494 (version "0.9.1")
495 (source (origin
496 (method git-fetch)
497 (uri (git-reference
498 (url "https://github.com/eonpatapon/mpDris2")
499 (commit version)))
500 (file-name (git-file-name name version))
501 (sha256
502 (base32
503 "17ys8ccr3h6vix0agvhz859slz0phhk7lwqn5bg4az8s7zgqm3nm"))))
504 (build-system gnu-build-system)
505 (arguments
506 (list
507 #:phases
508 #~(modify-phases %standard-phases
509 (add-after 'install 'wrap-program
510 (lambda* (#:key inputs #:allow-other-keys)
511 (let ((python-path (getenv "GUIX_PYTHONPATH")))
512 (wrap-program (string-append #$output "/bin/mpDris2")
513 `("GUIX_PYTHONPATH" ":" prefix (,python-path)))))))))
514 (inputs
515 (list bash-minimal
516 python
517 python-dbus-1.2
518 python-mpd2
519 python-mutagen
520 python-pygobject))
521 (native-inputs
522 (list autoconf
523 automake
524 gettext-minimal
525 intltool
526 which))
527 (synopsis "MPRIS V2.1 support for MPD")
528 (description "mpDris2 is a client for the Music Player Daemon providing
529MPRIS 2 support.")
530 (home-page "https://github.com/eonpatapon/mpDris2")
531 (license license:gpl3+)))
532
533(define-public mpdris2-rs
534 (package
535 (name "mpdris2-rs")
536 (version "1.1.1")
537 (source
538 (origin
539 (method git-fetch)
540 (uri (git-reference
541 (url "https://github.com/szclsya/mpdris2-rs")
542 (commit (string-append "v" version))))
543 (file-name (git-file-name name version))
544 (sha256
545 (base32 "023m4g1kgr2q2vllaij7nlxd5gp3vklvbhf5drymgqz3pcmslb52"))))
546 (build-system cargo-build-system)
547 (arguments
548 (list
549 #:install-source? #f
550 #:phases
551 #~(modify-phases %standard-phases
552 (add-after 'install 'install-systemd-unit
553 (lambda _
554 (let ((unit-dir (in-vicinity #$output "lib/systemd/user/")))
555 (substitute* "misc/mpdris2-rs.service"
556 (("/usr/local/bin/mpdris2-rs")
557 (in-vicinity #$output "bin/mpdris2-rs")))
558 (install-file "misc/mpdris2-rs.service" unit-dir)))))))
559 (inputs (cargo-inputs 'mpdris2-rs))
560 (home-page "https://github.com/szclsya/mpdris2-rs")
561 (synopsis "Exposing MPRIS V2.2 D-Bus interface for mpd")
562 (description
563 "A lightweight implementation of MPD to D-Bus bridge, which exposes MPD
564player and playlist information onto MPRIS2 interface so other programs can use
565this generic interface to retrieve MPD's playback state.
566
567Distinctively, mpdris2-rs uses MPD protocol's native
568@command{readpicture}/@command{albumart} methods to fetch album arts. This
569means mpdris2-rs won't need any access to your local filesystem (apart from
570your @env{XDG_RUNTIME_DIR} for temporarily storing fetched albumarts) and can
571provide album arts even with remote MPD servers and Internet radios.")
572 (license license:gpl3)))
573
574(define-public cantata
575 (package
576 (name "cantata")
577 (version "3.4.0")
578 (source (origin
579 (method git-fetch)
580 (uri (git-reference
581 (url "https://github.com/nullobsi/cantata")
582 (commit (string-append "v" version))))
583 (file-name (git-file-name name version))
584 (sha256
585 (base32
586 "1hjq73w5lnh2gj51bnaqym0lds82zzlwjr2ndz2m8xrcv2w2q0lg"))
587 (modules '((guix build utils)))
588 (snippet
589 #~(begin
590 (with-directory-excursion "3rdparty"
591 (for-each delete-file-recursively
592 '("karchive"
593 "kcategorizedview"
594 "qtsingleapplication")))
595 (delete-file-recursively "support/fonts")))))
596 (build-system qt-build-system)
597 (arguments
598 (list #:qtbase qtbase
599 #:tests? #f)) ; No test suite
600 (native-inputs
601 (list pkg-config))
602 (inputs
603 (list avahi
604 eudev
605 ffmpeg
606 karchive
607 kitemviews
608 libcddb
609 libcdio-paranoia
610 qtbase
611 qtmultimedia
612 qtsvg
613 qtwayland
614 zlib))
615 (synopsis "Graphical MPD Client")
616 (description "Cantata is a graphical client for the Music Player Daemon
617(MPD). Its user interface is highly customizable, supporting multiple
618collections, ratings, and dynamic playlists. A local cache of the music
619library will be created to provide a hierarchy of albums and artists along
620with albumart.")
621 (home-page "https://github.com/nullobsi/cantata")
622 (license license:gpl3+)))
623
624(define-public mcg
625 (package
626 (name "mcg")
627 (version "3.1")
628 (source (origin
629 (method git-fetch)
630 (uri (git-reference
631 (url "https://gitlab.com/coderkun/mcg")
632 (commit (string-append "v" version))))
633 (file-name (git-file-name name version))
634 (sha256
635 (base32
636 "087d3gvx8z1yj7rg9d9h1x02vkw57h4v6xf5pxqyhqyk2435kk17"))))
637 (build-system meson-build-system)
638 (arguments
639 (list
640 #:glib-or-gtk? #t
641 #:phases
642 #~(modify-phases %standard-phases
643 (add-after 'install 'wrap-program
644 (lambda* (#:key outputs #:allow-other-keys)
645 (let ((prog (string-append (assoc-ref outputs "out")
646 "/bin/mcg")))
647 (wrap-program prog
648 `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH")))
649 `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH"))))))))))
650 (inputs (list avahi
651 bash-minimal
652 dconf
653 gsettings-desktop-schemas
654 gtk+
655 python
656 python-pygobject))
657 (native-inputs (list desktop-file-utils
658 gettext-minimal
659 `(,glib "bin")
660 gobject-introspection
661 `(,gtk+ "bin")
662 pkg-config))
663 (synopsis "Covergrid for the MPD")
664 (description
665 "mcg (CoverGrid) is a client for the Music Player Daemon (MPD), focusing
666on albums instead of single tracks. It is not intended to be a replacement
667for your favorite MPD client but an addition to get a better
668album-experience.")
669 (home-page "https://gitlab.com/coderkun/mcg")
670 (license license:gpl3+)))
671
672(define-public mpdevil
673 (package
674 (name "mpdevil")
675 (version "1.10.2")
676 (source (origin
677 (method git-fetch)
678 (uri (git-reference
679 (url "https://github.com/SoongNoonien/mpdevil")
680 (commit (string-append "v" version))))
681 (file-name (git-file-name name version))
682 (sha256
683 (base32 "0ghmw3xiz567qd1iv1ggkv6zl1jb5d40mz27npk2zvlpikmqpc6c"))))
684 (build-system meson-build-system)
685 (arguments
686 (list
687 #:glib-or-gtk? #t
688 #:phases
689 #~(modify-phases %standard-phases
690 (add-after 'glib-or-gtk-wrap 'python-and-gi-wrap
691 (lambda _
692 (let ((prog (string-append #$output "/bin/mpdevil")))
693 (wrap-program prog
694 `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH")))
695 `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH"))))))))))
696 (inputs (list bash-minimal
697 gtk+
698 python
699 python-mpd2
700 python-pycairo
701 python-pygobject))
702 (native-inputs (list gettext-minimal `(,glib "bin") gobject-introspection))
703 (home-page "https://github.com/SoongNoonien/mpdevil")
704 (synopsis "Music browser for the MPD")
705 (description "mpdevil is a music browser for the Music Player Daemon (MPD),
706which is focused on playing local music without the need of managing playlists.
707Instead of maintaining a client side database of your music library,
708mpdevil loads all tags and covers on demand.")
709 (license license:gpl3+)))
710
711(define-public mympd
712 (package
713 (name "mympd")
714 (version "13.0.6")
715 (source (origin
716 (method git-fetch)
717 (uri (git-reference
718 (url "https://github.com/jcorporation/myMPD")
719 (commit (string-append "v" version))))
720 (file-name (git-file-name name version))
721 (sha256
722 (base32
723 "17mx6qkdcnm4z6qw0ns8wmihahcnk3kidfcr6fapa34cdadsjapg"))))
724 (outputs '("out" "doc"))
725 (build-system cmake-build-system)
726 (arguments
727 (list
728 #:configure-flags
729 #~(list "-DCMAKE_INSTALL_LOCALSTATEDIR=/var"
730 "-DMYMPD_BUILD_TESTING=ON"
731 "-DMYMPD_DOC_HTML=ON")
732 #:phases
733 #~(modify-phases %standard-phases
734 (replace 'check
735 (lambda* (#:key tests? #:allow-other-keys)
736 (when tests?
737 ;; The following test requires network connectivity.
738 (invoke "ctest" "--exclude-regex" "test_http_client"))))
739 (add-after 'install 'move-doc
740 (lambda _
741 (let ((old (string-append #$output "/share/doc"))
742 (new (string-append #$output:doc "/share/doc")))
743 (mkdir-p (dirname new))
744 (rename-file old new)))))))
745 (native-inputs (list jekyll jq perl pkg-config))
746 (inputs (list flac libid3tag lua openssl pcre2))
747 (home-page "https://jcorporation.github.io/")
748 (synopsis "Web-based MPD client")
749 (description "MyMPD is a mobile-friendly web client for the Music Player
750Daemon (MPD).")
751 (license license:gpl3+)))
752
753(define-public rmpc
754 (package
755 (name "rmpc")
756 (version "0.11.0")
757 (source
758 (origin
759 (method url-fetch)
760 (uri (crate-uri "rmpc" version))
761 (file-name (string-append name "-" version ".tar.gz"))
762 (sha256
763 (base32 "0j2jahbm49jl1116cdl9f47pi0rmi6h4qy5gajwswr9dnld36803"))))
764 (build-system cargo-build-system)
765 (arguments
766 (list
767 #:install-source? #f
768 #:modules
769 '((guix build cargo-build-system)
770 (guix build utils)
771 (ice-9 match))
772 #:phases
773 #~(modify-phases %standard-phases
774 (add-after 'install 'install-completions
775 (lambda* (#:key outputs #:allow-other-keys)
776 (for-each
777 (match-lambda
778 ((file . path)
779 (mkdir-p (in-vicinity #$output (dirname path)))
780 (copy-file file (string-append #$output "/" path))))
781 '(("target/man/rmpc.1" . "share/man/man1/rmpc.1")
782 ("target/completions/rmpc.bash" .
783 "share/bash-completion/completions/rmpc")
784 ("target/completions/rmpc.fish" .
785 "share/fish/vendor_completions.d/rmpc.fish")
786 ("target/completions/_rmpc" .
787 "share/zsh/site-functions/_rmpc"))))))))
788 (inputs (cargo-inputs 'rmpc))
789 (home-page "https://rmpc.mierak.dev/")
790 (synopsis "Configurable TUI client for MPD")
791 (description
792 "rmpc is a terminal based Music Player Daemon client heavily inspired by
793@command{ncmpcpp} and @command{ranger}/@command{lf} file managers. It has
794support for synchronized lyrics, and displaying album cover art with various
795terminal image protocols.")
796 (license license:bsd-3)))