;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
;;; Copyright © 2016, 2018, 2019, 2020 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019 Evan Straw <evan.straw99@gmail.com>
-;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2020 Lars-Dominik Braun <lars@6xq.net>
-;;; Copyright © 2020 Simon Streit <simon@netpanic.org>
+;;; Copyright © 2020, 2021 Simon Streit <simon@netpanic.org>
+;;; Copyright © 2021 Noah Evans <noah@nevans.me>
;;;
;;; This file is part of GNU Guix.
;;;
(define-module (gnu packages mpd)
#:use-module (gnu packages)
#:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix gexp)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (gnu packages autotools)
#:use-module (gnu packages avahi)
#:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
+ #:use-module (gnu packages build-tools) ;meson-next
#:use-module (gnu packages boost)
#:use-module (gnu packages cdrom)
+ #:use-module (gnu packages cmake) ;for MPD
+ #:use-module (gnu packages freedesktop) ;elogind
#:use-module (gnu packages gettext)
#:use-module (gnu packages gnome)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages pcre)
#:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages pretty-print)
#:use-module (gnu packages python)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages pulseaudio)
(define-public libmpdclient
(package
(name "libmpdclient")
- (version "2.19")
+ (version "2.20")
(source (origin
(method url-fetch)
(uri
"/libmpdclient-" version ".tar.xz"))
(sha256
(base32
- "12d1fzlkcnjw4ayk2wp11vhglfcvr5k02arzdbkhiavq496av2hm"))))
+ "0z979qcjc0dqmpn3q9j174a29akx3zmavz6q6hg31hrrx5l3yy8q"))))
(build-system meson-build-system)
(native-inputs
- `(("pkg-config" ,pkg-config)
-
- ;; For building HTML documentation.
- ("doxygen" ,doxygen)
-
- ;; For tests.
- ("check" ,check)))
+ (list pkg-config
+ ;; For building HTML documentation.
+ doxygen
+ ;; For tests.
+ check))
(arguments
`(#:configure-flags
(list "-Ddocumentation=true"
(define-public mpd
(package
(name "mpd")
- (version "0.22.3")
+ (version "0.23.8")
(source (origin
(method url-fetch)
(uri
"/mpd-" version ".tar.xz"))
(sha256
(base32
- "1kvcarqijyw07bdqszjsn62plmncaid5az0q542p6rsygc1i501k"))))
+ "1kvq9shd6b7y02r386s1chjmvs44wij5bfzn6qgq46dmyfdmdfw6"))))
(build-system meson-build-system)
(arguments
- `(#:configure-flags '("-Ddocumentation=enabled")))
- (inputs `(("ao" ,ao)
- ("alsa-lib" ,alsa-lib)
- ("avahi" ,avahi)
- ("boost" ,boost)
- ("curl" ,curl)
- ("ffmpeg" ,ffmpeg)
- ("flac" ,flac)
- ("glib" ,glib)
- ("icu4c" ,icu4c)
- ;; The LAME decoder comes from FFmpeg, but is added here so that
- ;; configure picks up the LAME encoder.
- ("lame" ,lame)
- ("libid3tag" ,libid3tag)
- ("libmpdclient" ,libmpdclient)
- ("libsamplerate" ,libsamplerate)
- ("libsndfile" ,libsndfile)
- ("libvorbis" ,libvorbis)
- ("opus" ,opus)
- ("pulseaudio" ,pulseaudio)
- ("sqlite" ,sqlite)
- ("zlib" ,zlib)))
- (native-inputs `(("pkg-config" ,pkg-config)
- ("python-sphinx" ,python-sphinx)))
+ (list
+ #:configure-flags #~(list "-Ddocumentation=enabled"
+ "-Dsystemd=enabled")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'enable-elogind
+ (lambda _
+ (substitute* "src/lib/systemd/meson.build"
+ (("libsystemd") "libelogind"))
+ ;; XXX: systemd dependency overwritten internally, leads to bad
+ ;; errors
+ (substitute* "src/lib/systemd/meson.build"
+ (("systemd_dep = declare_dependency" all)
+ (string-append "_" all)))
+ (substitute* "meson.build"
+ (("systemd_dep,") "systemd_dep, _systemd_dep,")))))))
+ (inputs (list ao
+ alsa-lib
+ avahi
+ boost
+ curl
+ elogind
+ ffmpeg
+ flac
+ fmt
+ glib
+ icu4c
+ ;; The LAME decoder comes from FFmpeg, but is added here so that
+ ;; configure picks up the LAME encoder.
+ lame
+ libid3tag
+ libmpdclient
+ libsamplerate
+ libsndfile
+ libvorbis
+ opus
+ pulseaudio
+ sqlite
+ zlib))
+ (native-inputs (list cmake pkg-config python-sphinx))
;; Missing optional inputs:
;; libyajl
;; libcdio_paranoia
can play a variety of sound files while being controlled by its network
protocol.")
(home-page "https://www.musicpd.org/")
+ (properties `((release-monitoring-url . "https://musicpd.org")))
(license license:gpl2)))
(define-public mpd-mpc
(package
(name "mpd-mpc")
- (version "0.33")
+ (version "0.34")
(source (origin
(method url-fetch)
(uri
"/mpc-" version ".tar.xz"))
(sha256
(base32
- "15hjpzqs83v1zx49x8nkpwy9hpl1jxd55z1w50vm82gm32zcqh2g"))))
+ "086sdx88zvgbv4j9kw4qlrsw1n621d6j6403pcid045wahv3y7k9"))))
(build-system meson-build-system)
- (inputs `(("libmpdclient" ,libmpdclient)))
+ (arguments
+ (list #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'remove-bogus-rsync-requirement
+ ;; Meson thinks a maintainer ‘upload to musicpd.org’ task
+ ;; merits a hard dependency on rsync. Convince it otherwise.
+ ;; Don't use ‘true’ so that the build will fail if it is ever
+ ;; actually invoked.
+ (lambda _
+ (substitute* "doc/meson.build"
+ (("rsync") "ls")))))))
+ (inputs (list libmpdclient))
(native-inputs
- `(("pkg-config" ,pkg-config)
- ("python-sphinx" ,python-sphinx)))
+ (list pkg-config python-sphinx))
(synopsis "Music Player Daemon client")
(description "MPC is a minimalist command line interface to MPD, the music
player daemon.")
(define-public ncmpc
(package
(name "ncmpc")
- (version "0.42")
+ (version "0.47")
(source (origin
(method url-fetch)
(uri
"/ncmpc-" version ".tar.xz"))
(sha256
(base32
- "0kfdyvqd2dfrxll5bla8mm10xvpngshlmyjf6wic4wbafqflgxx5"))))
+ "1714saz8m6y2chby0c1qh3vgqc3srlr1jq98vhzmjykcpjqj7nk1"))))
(build-system meson-build-system)
- (arguments
- `(#:configure-flags
- ;; Otherwise, they are installed incorrectly, in
- ;; '$out/share/man/man/man1'.
- (list (string-append "-Dmandir=" (assoc-ref %outputs "out")
- "/share"))))
- (inputs `(("boost" ,boost)
- ("pcre" ,pcre)
- ("libmpdclient" ,libmpdclient)
- ("ncurses" ,ncurses)))
- (native-inputs `(("gettext" ,gettext-minimal) ; for xgettext
- ("pkg-config" ,pkg-config)
- ("python-sphinx" ,python-sphinx)))
+ (inputs (list boost pcre libmpdclient ncurses))
+ (native-inputs
+ (list gettext-minimal ; for xgettext
+ pkg-config
+ python-sphinx))
(synopsis "Curses Music Player Daemon client")
(description "ncmpc is a fully featured MPD client, which runs in a
terminal using ncurses.")
(define-public ncmpcpp
(package
(name "ncmpcpp")
- (version "0.8.2")
+ (version "0.9.2")
(source (origin
(method url-fetch)
(uri
version ".tar.bz2"))
(sha256
(base32
- "0m0mjb049sl62vx13h9waavysa30mk0rphacksnvf94n13la62v5"))))
+ "06rs734n120jp51hr0fkkhxrm7zscbhpdwls0m5b5cccghazdazs"))))
(build-system gnu-build-system)
- (inputs `(("libmpdclient" ,libmpdclient)
- ("boost" ,boost)
- ("readline" ,readline)
- ("ncurses" ,ncurses)
- ("taglib" ,taglib)
- ("icu4c" ,icu4c)
- ("curl" ,curl)))
+ (inputs (list libmpdclient
+ boost
+ readline
+ ncurses
+ taglib
+ icu4c
+ curl))
(native-inputs
- `(("pkg-config" ,pkg-config)))
+ (list pkg-config))
(arguments
'(#:configure-flags
'("BOOST_LIB_SUFFIX=" "--with-taglib" "--enable-clock")))
(define-public mpdscribble
(package
(name "mpdscribble")
- (version "0.23")
+ (version "0.24")
(source (origin
(method url-fetch)
(uri (string-append "http://www.musicpd.org/download/mpdscribble/"
version "/mpdscribble-" version ".tar.xz"))
(sha256
(base32
- "0s66zqscb44p88cl3kcv5jkjcqsskcnrv7xgrjhzrchf2kcpwf53"))))
+ "1rx8n8pvx3a6n6z51pgy00p4rs93iqy95d3ha9q7xf5k92kwpd7n"))))
(build-system meson-build-system)
- (inputs `(("boost" ,boost)
- ("curl" ,curl)
- ("libgcrypt" ,libgcrypt)
- ("libmpdclient" ,libmpdclient)))
- (native-inputs `(("pkg-config" ,pkg-config)))
+ (inputs (list boost curl libgcrypt libmpdclient))
+ (native-inputs (list pkg-config))
(synopsis "MPD client for track scrobbling")
(description "mpdscribble is a Music Player Daemon client which submits
information about tracks being played to a scrobbler, such as Libre.FM.")
(define-public python-mpd2
(package
(name "python-mpd2")
- (version "0.5.5")
+ (version "3.0.4")
(source (origin
(method url-fetch)
(uri (pypi-uri "python-mpd2" version))
(sha256
(base32
- "0laypd7h1j14b4vrmiayqlzdsh2j5hc3zv4l0fqvbrbw9y6763ii"))))
+ "1r8saq1460yfa0sxfrvxqs2r453wz2xchlc9gzbpqznr49786rvs"))))
(build-system python-build-system)
(arguments
'(#:phases
(modify-phases %standard-phases
(replace 'check
- (lambda _ (invoke "python" "mpd_test.py"))))))
- (native-inputs `(("python-mock" ,python-mock)))
+ (lambda _ (invoke "python" "-m" "pytest" "mpd/tests.py"))))))
+ (native-inputs
+ (list python-mock python-pytest))
(home-page "https://github.com/Mic92/python-mpd2")
(synopsis "Python MPD client library")
(description "Python-mpd2 is a Python library which provides a client
interface for the Music Player Daemon.")
(license license:lgpl3+)))
-(define-public python2-mpd2
- (package-with-python2 python-mpd2))
-
(define-public sonata
(package
(name "sonata")
- (version "1.7b1")
+ (version "1.7.0")
(source (origin
(method git-fetch)
(uri (git-reference
(file-name (git-file-name name version))
(sha256
(base32
- "1npbxlrg6k154qybfd250nq2p96kxdsdkj9wwnp93gljnii3g8wh"))))
+ "0rl8w7s2asff626clzfvyz987l2k4ml5dg417mqp9v8a962q0v2x"))))
(build-system python-build-system)
(arguments
`(#:modules ((guix build gnu-build-system)
(native-inputs
`(("gettext" ,gettext-minimal)))
(inputs
- `(("python-mpd2" ,python-mpd2)
- ("gtk+" ,gtk+)
- ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
- ("gobject-introspection" ,gobject-introspection)
- ("adwaita-icon-theme" ,adwaita-icon-theme)
- ("python-pygobject" ,python-pygobject)))
+ (list python-mpd2
+ gtk+
+ gsettings-desktop-schemas
+ gobject-introspection
+ adwaita-icon-theme
+ python-pygobject))
(synopsis "Elegant client for the Music Player Daemon")
(description "Sonata is an elegant graphical client for the Music Player
Daemon (MPD). It supports playlists, multiple profiles (connecting to different
(sha256
(base32
"11aa95cg0yca2m2d00sar6wr14g3lc7cfm9bin1h7lk7asdm8azp"))))
- (native-inputs `(("pkg-config" ,pkg-config)))
- (inputs `(("libmpdclient" ,libmpdclient)))
+ (native-inputs (list pkg-config))
+ (inputs (list libmpdclient))
(build-system meson-build-system)
(home-page "https://github.com/joshkunz/ashuffle")
(synopsis "Automatic library-wide shuffle for mpd")
(define-public mpdris2
(package
(name "mpdris2")
- (version "0.8")
+ (version "0.9.1")
(source (origin
(method git-fetch)
(uri (git-reference
(file-name (git-file-name name version))
(sha256
(base32
- "048b8acsd1b8kcxzd9fsh5p9g2an9c4rznicfcpyrsjz5syv894h"))))
+ "17ys8ccr3h6vix0agvhz859slz0phhk7lwqn5bg4az8s7zgqm3nm"))))
(build-system gnu-build-system)
;; Manually wrap the binary, because we’re not using python-build-system.
(arguments
(add-after 'install 'wrap-program
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
- (python-path (getenv "PYTHONPATH")))
+ (python-path (getenv "GUIX_PYTHONPATH")))
(wrap-program (string-append out "/bin/mpDris2")
- `("PYTHONPATH" ":" prefix (,python-path)))
+ `("GUIX_PYTHONPATH" ":" prefix (,python-path)))
#t))))))
(inputs
- `(("python-mpd2" ,python-mpd2)
- ("python-dbus" ,python-dbus)
- ("python-pygobject" ,python-pygobject)
- ("python" ,python))) ; Sets PYTHONPATH.
+ (list python-mpd2 python-dbus python-pygobject python)) ; Sets GUIX_PYTHONPATH.
;; For bootstrapping.
(native-inputs
`(("autoconf" ,autoconf)
(arguments
`(#:tests? #f)) ; No test suite
(native-inputs
- `(("pkg-config" ,pkg-config)))
+ (list pkg-config))
(inputs
- `(("eudev", eudev)
- ("ffmpeg" ,ffmpeg)
- ("libcdio-paranoia" ,libcdio-paranoia)
- ("libebur128" ,libebur128)
- ("libmtp" ,libmtp)
- ("mpg123" ,mpg123)
- ("qtbase" ,qtbase)
- ("qtmultimedia" ,qtmultimedia)
- ("qtsvg" ,qtsvg)
- ("taglib" ,taglib)
- ("zlib" ,zlib)))
+ (list eudev
+ ffmpeg
+ libcdio-paranoia
+ libebur128
+ libmtp
+ mpg123
+ qtbase-5
+ qtmultimedia-5
+ qtsvg-5
+ taglib
+ zlib))
(synopsis "Graphical MPD Client")
(description "Cantata is a graphical client for the Music Player Daemon
(MPD), using the Qt5 toolkit. Its user interface is highly customizable,
artists along with albumart.")
(home-page "https://github.com/cdrummond/cantata")
(license license:gpl3+)))
+
+(define-public mcg
+ (package
+ (name "mcg")
+ (version "2.1.2")
+ (source
+ (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://gitlab.com/coderkun/mcg")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "01iqxydssxyi4s644dwl64vm7xhn0szd99hdpywbipvb7kwp5196"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("glib:bin" ,glib "bin")
+ ("gobject-introspection" ,gobject-introspection)
+ ("pkg-config" ,pkg-config)))
+ (inputs
+ (list avahi dconf gsettings-desktop-schemas gtk+ python-pygobject))
+ (arguments
+ `(#:imported-modules ((guix build glib-or-gtk-build-system)
+ ,@%python-build-system-modules)
+ #:modules ((guix build python-build-system)
+ ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
+ (guix build utils))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'wrap-program
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((prog (string-append (assoc-ref outputs "out")
+ "/bin/mcg")))
+ (wrap-program prog
+ `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH")))
+ `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))))
+ (add-after 'wrap-program 'glib-or-gtk-wrap
+ (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
+ (synopsis "Covergrid for the MPD")
+ (description
+ "mcg (CoverGrid) is a client for the Music Player Daemon (MPD), focusing
+on albums instead of single tracks. It is not intended to be a replacement
+for your favorite MPD client but an addition to get a better
+album-experience.")
+ (home-page "https://gitlab.com/coderkun/mcg")
+ (license license:gpl3+)))
+
+(define-public mpdevil
+ (package
+ (name "mpdevil")
+ (version "1.7.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/SoongNoonien/mpdevil")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1va8fqlz8qb68gvacnzmp4asnipi11316n1cv2wb41sml9d7v00j"))))
+ (build-system meson-build-system)
+ (arguments
+ (list
+ #:glib-or-gtk? #t
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'glib-or-gtk-wrap 'python-and-gi-wrap
+ (lambda _
+ (let ((prog (string-append #$output "/bin/mpdevil")))
+ (wrap-program prog
+ `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH")))
+ `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH"))))))))))
+ (inputs (list bash-minimal gtk+ python python-mpd2 python-pygobject))
+ (native-inputs (list `(,glib "bin")))
+ (home-page "https://github.com/SoongNoonien/mpdevil")
+ (synopsis "Music browser for the MPD")
+ (description "mpdevil is a music browser for the Music Player Daemon (MPD),
+which is focused on playing local music without the need of managing playlists.
+Instead of maintaining a client side database of your music library,
+mpdevil loads all tags and covers on demand.")
+ (license license:gpl3+)))