nixos/doh-server: init
[NixPkgs.git] / pkgs / applications / audio / soundkonverter / default.nix
blob1155ba492ddf87ef1547fb7fdc54aff1f0da52b4
1 # currently needs to be installed into an environment and needs a `kbuildsycoca5` run afterwards for plugin discovery
3   mkDerivation,
4   fetchFromGitHub,
5   fetchpatch,
6   lib,
7   makeWrapper,
8   cmake,
9   extra-cmake-modules,
10   pkg-config,
11   libkcddb,
12   kconfig,
13   kconfigwidgets,
14   ki18n,
15   kdelibs4support,
16   kio,
17   solid,
18   kwidgetsaddons,
19   kxmlgui,
20   qtbase,
21   phonon,
22   taglib,
23   # optional backends
24   withCD ? true,
25   cdparanoia,
26   withFlac ? true,
27   flac,
28   withMidi ? true,
29   fluidsynth,
30   timidity,
31   withSpeex ? false,
32   speex,
33   withVorbis ? true,
34   vorbis-tools,
35   vorbisgain,
36   withMp3 ? true,
37   lame,
38   mp3gain,
39   withAac ? true,
40   faad2,
41   aacgain,
42   withUnfreeAac ? false,
43   faac,
44   withFfmpeg ? true,
45   ffmpeg-full,
46   withMplayer ? false,
47   mplayer,
48   withSox ? true,
49   sox,
50   withOpus ? true,
51   opusTools,
52   withTwolame ? false,
53   twolame,
54   withApe ? false,
55   monkeysAudio,
56   withWavpack ? false,
57   wavpack,
60 assert withAac -> withFfmpeg || withUnfreeAac;
61 assert withUnfreeAac -> withAac;
63 let
64   runtimeDeps =
65     [ ]
66     ++ lib.optional withCD cdparanoia
67     ++ lib.optional withFlac flac
68     ++ lib.optional withSpeex speex
69     ++ lib.optional withFfmpeg ffmpeg-full
70     ++ lib.optional withMplayer mplayer
71     ++ lib.optional withSox sox
72     ++ lib.optional withOpus opusTools
73     ++ lib.optional withTwolame twolame
74     ++ lib.optional withApe monkeysAudio
75     ++ lib.optional withWavpack wavpack
76     ++ lib.optional withUnfreeAac faac
77     ++ lib.optionals withMidi [
78       fluidsynth
79       timidity
80     ]
81     ++ lib.optionals withVorbis [
82       vorbis-tools
83       vorbisgain
84     ]
85     ++ lib.optionals withMp3 [
86       lame
87       mp3gain
88     ]
89     ++ lib.optionals withAac [
90       faad2
91       aacgain
92     ];
95 mkDerivation rec {
96   pname = "soundkonverter";
97   version = "3.0.1";
98   src = fetchFromGitHub {
99     owner = "dfaust";
100     repo = "soundkonverter";
101     rev = "v" + version;
102     sha256 = "1g2khdsjmsi4zzynkq8chd11cbdhjzmi37r9jhpal0b730nq9x7l";
103   };
104   patches = [
105     # already merged into master, so it can go during the next release
106     (fetchpatch {
107       url = "https://patch-diff.githubusercontent.com/raw/dfaust/soundkonverter/pull/87.patch";
108       sha256 = "sha256-XIpD4ZMTZVcu+F27OtpRy51H+uQgpd5l22IZ6XsD64w=";
109       name = "soundkonverter_taglib.patch";
110       stripLen = 1;
111     })
112   ];
114   nativeBuildInputs = [
115     cmake
116     extra-cmake-modules
117     pkg-config
118     kdelibs4support
119     makeWrapper
120   ];
121   propagatedBuildInputs = [
122     libkcddb
123     kconfig
124     kconfigwidgets
125     ki18n
126     kdelibs4support
127     kio
128     solid
129     kwidgetsaddons
130     kxmlgui
131     qtbase
132     phonon
133   ];
134   buildInputs = [ taglib ] ++ runtimeDeps;
135   # encoder plugins go to ${out}/lib so they're found by kbuildsycoca5
136   cmakeFlags = [ "-DCMAKE_INSTALL_PREFIX=$out" ];
137   sourceRoot = "${src.name}/src";
138   # add runt-time deps to PATH
139   postInstall = ''
140     wrapProgram $out/bin/soundkonverter --prefix PATH : ${lib.makeBinPath runtimeDeps}
141   '';
142   meta = {
143     homepage = "https://github.com/dfaust/soundkonverter";
144     license = lib.licenses.gpl2;
145     maintainers = [ lib.maintainers.schmittlauch ];
146     description = "Audio file converter, CD ripper and Replay Gain tool";
147     mainProgram = "soundkonverter";
148     longDescription = ''
149       soundKonverter is a frontend to various audio converters.
151       The key features are:
152       - Audio file conversion
153       - Replay Gain calculation
154       - CD ripping
156       soundKonverter supports reading and writing tags and covers for many formats, so they are preserved when converting files.
158       It is extendable by plugins and supports many backends including:
160       - Audio file conversion
161         Backends: faac, faad, ffmpeg, flac, lame, mplayer, neroaac, timidity, fluidsynth, vorbistools, opustools, sox, twolame,
162         flake, mac, shorten, wavpack and speex
163         Formats: ogg vorbis, mp3, flac, wma, aac, ac3, opus, alac, mp2, als, amr nb, amr wb, ape, speex, m4a, mp1, musepack shorten,
164         tta, wavpack, ra, midi, mod, 3gp, rm, avi, mkv, ogv, mpeg, mov, mp4, flv, wmv and rv
166       - Replay Gain calculation
167         Backends: aacgain, metaflac, mp3gain, vorbisgain, wvgain, mpcgain
168         Formats: aac, mp3, flac, ogg vorbis, wavpack, musepack
170       - CD ripping
171         Backends: cdparanoia
172     '';
173   };