26 withDbusPython ? false,
27 withMusicBrainzNgs ? false,
29 withPypresence ? false,
33 withGstPlugins ? withGstreamerBackend,
34 withGstreamerBackend ? true,
36 withXineBackend ? true,
47 python3.pkgs.buildPythonApplication {
48 pname = "quodlibet${tag}";
49 version = "4.6.0-unstable-2024-08-08";
57 src = fetchFromGitHub {
60 rev = "3dcf31dfc8db9806d1f73a47fdabc950d35ded1d";
61 hash = "sha256-8qWuxTvMF6ksDkbZ6wRLPCJK1cSqgGMPac/ht6qVpnA=";
64 patches = [ ./fix-gdist-python-3.12.patch ];
66 build-system = [ python3.pkgs.setuptools ];
74 ++ (with python3.pkgs; [
93 ++ lib.optionals (withXineBackend) [ xine-lib ]
94 ++ lib.optionals (withGstreamerBackend) (
100 ++ lib.optionals (withGstPlugins) [
117 ++ lib.optionals withDbusPython [ dbus-python ]
118 ++ lib.optionals withMusicBrainzNgs [ musicbrainzngs ]
119 ++ lib.optionals withPahoMqtt [ paho-mqtt ]
120 ++ lib.optionals withPypresence [ pypresence ]
121 ++ lib.optionals withSoco [ soco ];
131 ++ (with python3.pkgs; [
139 # missing translation strings in potfiles
140 "--deselect=tests/test_po.py::TPOTFILESIN::test_missing"
142 "--deselect=tests/plugin/test_covers.py::test_live_cover_download"
143 "--deselect=tests/test_browsers_iradio.py::TInternetRadio::test_click_add_station"
144 # upstream does actually not enforce source code linting
145 "--ignore=tests/quality"
147 ++ lib.optionals (withXineBackend || !withGstPlugins) [
148 "--ignore=tests/plugin/test_replaygain.py"
151 env.LC_ALL = "en_US.UTF-8";
154 export GDK_PIXBUF_MODULE_FILE=${librsvg}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache
155 export HOME=$(mktemp -d)
156 export XDG_DATA_DIRS="$out/share:${gtk3}/share/gsettings-schemas/${gtk3.name}:$XDG_ICON_DIRS:$XDG_DATA_DIRS"
162 xvfb-run -s '-screen 0 1920x1080x24' \
163 dbus-run-session --config-file=${dbus}/share/dbus-1/session.conf \
169 preFixup = lib.optionalString (kakasi != null) ''
170 gappsWrapperArgs+=(--prefix PATH : ${kakasi}/bin)
174 description = "GTK-based audio player written in Python, using the Mutagen tagging library";
176 Quod Libet is a GTK-based audio player written in Python, using
177 the Mutagen tagging library. It's designed around the idea that
178 you know how to organize your music better than we do. It lets
179 you make playlists based on regular expressions (don't worry,
180 regular searches work too). It lets you display and edit any
181 tags you want in the file. And it lets you do this for all the
182 file formats it supports. Quod Libet easily scales to libraries
183 of thousands (or even tens of thousands) of songs. It also
184 supports most of the features you expect from a modern media
185 player, like Unicode support, tag editing, Replay Gain, podcasts
186 & internet radio, and all major audio formats.
188 homepage = "https://quodlibet.readthedocs.io/en/latest";
189 license = licenses.gpl2Plus;
190 maintainers = with maintainers; [