anvil-editor: init at 0.4
[NixPkgs.git] / pkgs / applications / audio / strawberry / default.nix
blob58ac8f60ff1c73a068232acbbb92002216a74758
1 { stdenv
2 , lib
3 , fetchFromGitHub
4 , cmake
5 , pkg-config
6 , wrapQtAppsHook
7 , alsa-lib
8 , boost
9 , chromaprint
10 , fftw
11 , gnutls
12 , libcdio
13 , libebur128
14 , libmtp
15 , libpthreadstubs
16 , libtasn1
17 , libXdmcp
18 , ninja
19 , pcre
20 , protobuf
21 , sqlite
22 , taglib
23 , libgpod
24 , libidn2
25 , libpulseaudio
26 , libselinux
27 , libsepol
28 , p11-kit
29 , util-linux
30 , qtbase
31 , qtx11extras ? null # doesn't exist in qt6
32 , qttools
33 , withGstreamer ? true
34 , glib-networking
35 , gst_all_1
36 , withVlc ? true
37 , libvlc
38 , nix-update-script
41 let
42   inherit (lib) optionals optionalString;
45 stdenv.mkDerivation rec {
46   pname = "strawberry";
47   version = "1.1.3";
49   src = fetchFromGitHub {
50     owner = "jonaski";
51     repo = pname;
52     rev = version;
53     hash = "sha256-yca1BJWhSUVamqSKfvEzU3xbzdR+kwfSs0pyS08oUR0=";
54     fetchSubmodules = true;
55   };
57   # the big strawberry shown in the context menu is *very* much in your face, so use the grey version instead
58   postPatch = ''
59     substituteInPlace src/context/contextalbum.cpp \
60       --replace pictures/strawberry.png pictures/strawberry-grey.png
61   '';
63   buildInputs = [
64     alsa-lib
65     boost
66     chromaprint
67     fftw
68     gnutls
69     libcdio
70     libebur128
71     libidn2
72     libmtp
73     libpthreadstubs
74     libtasn1
75     libXdmcp
76     pcre
77     protobuf
78     sqlite
79     taglib
80     qtbase
81     qtx11extras
82   ] ++ optionals stdenv.hostPlatform.isLinux [
83     libgpod
84     libpulseaudio
85     libselinux
86     libsepol
87     p11-kit
88   ] ++ optionals withGstreamer (with gst_all_1; [
89     glib-networking
90     gstreamer
91     gst-libav
92     gst-plugins-base
93     gst-plugins-good
94     gst-plugins-bad
95     gst-plugins-ugly
96   ]) ++ optionals withVlc [ libvlc ];
98   nativeBuildInputs = [
99     cmake
100     ninja
101     pkg-config
102     qttools
103     wrapQtAppsHook
104   ] ++ optionals stdenv.hostPlatform.isLinux [
105     util-linux
106   ];
108   postInstall = optionalString withGstreamer ''
109     qtWrapperArgs+=(
110       --prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0"
111       --prefix GIO_EXTRA_MODULES : "${glib-networking.out}/lib/gio/modules"
112     )
113   '';
115   passthru.updateScript = nix-update-script { };
117   meta = with lib; {
118     description = "Music player and music collection organizer";
119     homepage = "https://www.strawberrymusicplayer.org/";
120     changelog = "https://raw.githubusercontent.com/jonaski/strawberry/${version}/Changelog";
121     license = licenses.gpl3Only;
122     maintainers = with maintainers; [ peterhoeg ];
123     # upstream says darwin should work but they lack maintainers as of 0.6.6
124     platforms = platforms.linux;
125     mainProgram = "strawberry";
126   };