depot/third_party/nixpkgs/pkgs/applications/audio/soundkonverter/default.nix

174 lines
4.2 KiB
Nix

# currently needs to be installed into an environment and needs a `kbuildsycoca5` run afterwards for plugin discovery
{
mkDerivation,
fetchFromGitHub,
fetchpatch,
lib,
makeWrapper,
cmake,
extra-cmake-modules,
pkg-config,
libkcddb,
kconfig,
kconfigwidgets,
ki18n,
kdelibs4support,
kio,
solid,
kwidgetsaddons,
kxmlgui,
qtbase,
phonon,
taglib,
# optional backends
withCD ? true,
cdparanoia,
withFlac ? true,
flac,
withMidi ? true,
fluidsynth,
timidity,
withSpeex ? false,
speex,
withVorbis ? true,
vorbis-tools,
vorbisgain,
withMp3 ? true,
lame,
mp3gain,
withAac ? true,
faad2,
aacgain,
withUnfreeAac ? false,
faac,
withFfmpeg ? true,
ffmpeg-full,
withMplayer ? false,
mplayer,
withSox ? true,
sox,
withOpus ? true,
opusTools,
withTwolame ? false,
twolame,
withApe ? false,
monkeysAudio,
withWavpack ? false,
wavpack,
}:
assert withAac -> withFfmpeg || withUnfreeAac;
assert withUnfreeAac -> withAac;
let
runtimeDeps =
[ ]
++ lib.optional withCD cdparanoia
++ lib.optional withFlac flac
++ lib.optional withSpeex speex
++ lib.optional withFfmpeg ffmpeg-full
++ lib.optional withMplayer mplayer
++ lib.optional withSox sox
++ lib.optional withOpus opusTools
++ lib.optional withTwolame twolame
++ lib.optional withApe monkeysAudio
++ lib.optional withWavpack wavpack
++ lib.optional withUnfreeAac faac
++ lib.optionals withMidi [
fluidsynth
timidity
]
++ lib.optionals withVorbis [
vorbis-tools
vorbisgain
]
++ lib.optionals withMp3 [
lame
mp3gain
]
++ lib.optionals withAac [
faad2
aacgain
];
in
mkDerivation rec {
pname = "soundkonverter";
version = "3.0.1";
src = fetchFromGitHub {
owner = "dfaust";
repo = "soundkonverter";
rev = "v" + version;
sha256 = "1g2khdsjmsi4zzynkq8chd11cbdhjzmi37r9jhpal0b730nq9x7l";
};
patches = [
# already merged into master, so it can go during the next release
(fetchpatch {
url = "https://patch-diff.githubusercontent.com/raw/dfaust/soundkonverter/pull/87.patch";
sha256 = "sha256-XIpD4ZMTZVcu+F27OtpRy51H+uQgpd5l22IZ6XsD64w=";
name = "soundkonverter_taglib.patch";
stripLen = 1;
})
];
nativeBuildInputs = [
cmake
extra-cmake-modules
pkg-config
kdelibs4support
makeWrapper
];
propagatedBuildInputs = [
libkcddb
kconfig
kconfigwidgets
ki18n
kdelibs4support
kio
solid
kwidgetsaddons
kxmlgui
qtbase
phonon
];
buildInputs = [ taglib ] ++ runtimeDeps;
# encoder plugins go to ${out}/lib so they're found by kbuildsycoca5
cmakeFlags = [ "-DCMAKE_INSTALL_PREFIX=$out" ];
sourceRoot = "${src.name}/src";
# add runt-time deps to PATH
postInstall = ''
wrapProgram $out/bin/soundkonverter --prefix PATH : ${lib.makeBinPath runtimeDeps}
'';
meta = {
homepage = "https://github.com/dfaust/soundkonverter";
license = lib.licenses.gpl2;
maintainers = [ lib.maintainers.schmittlauch ];
description = "Audio file converter, CD ripper and Replay Gain tool";
mainProgram = "soundkonverter";
longDescription = ''
soundKonverter is a frontend to various audio converters.
The key features are:
- Audio file conversion
- Replay Gain calculation
- CD ripping
soundKonverter supports reading and writing tags and covers for many formats, so they are preserved when converting files.
It is extendable by plugins and supports many backends including:
- Audio file conversion
Backends: faac, faad, ffmpeg, flac, lame, mplayer, neroaac, timidity, fluidsynth, vorbistools, opustools, sox, twolame,
flake, mac, shorten, wavpack and speex
Formats: ogg vorbis, mp3, flac, wma, aac, ac3, opus, alac, mp2, als, amr nb, amr wb, ape, speex, m4a, mp1, musepack shorten,
tta, wavpack, ra, midi, mod, 3gp, rm, avi, mkv, ogv, mpeg, mov, mp4, flv, wmv and rv
- Replay Gain calculation
Backends: aacgain, metaflac, mp3gain, vorbisgain, wvgain, mpcgain
Formats: aac, mp3, flac, ogg vorbis, wavpack, musepack
- CD ripping
Backends: cdparanoia
'';
};
}