nixpkgs/pkgs/applications/audio/cmus/default.nix
Ihar Hrachyshka dd0f03a56c treewide: remove usage of deprecated apple_sdk framework stubs
They are not doing anything right now. This is in preparation for their
complete removal from the tree.

Note: several changes that affect the derivation inputs (e.g. removal of
references to stub paths in build instructions) were left out. They will
be cleaned up the next iteration and will require special care.

Note: this PR is a result of a mix of ugly regex (not AST) based
automation and some manual labor. For reference, the regex automation
part was hacked in: https://github.com/booxter/nix-clean-apple_sdk

Signed-off-by: Ihar Hrachyshka <ihar.hrachyshka@gmail.com>
2025-04-19 20:28:20 -04:00

171 lines
4.2 KiB
Nix

{
config,
lib,
stdenv,
fetchFromGitHub,
ncurses,
pkg-config,
libiconv,
alsaSupport ? stdenv.hostPlatform.isLinux,
alsa-lib ? null,
# simple fallback for everyone else
aoSupport ? !stdenv.hostPlatform.isLinux,
libao ? null,
jackSupport ? false,
libjack ? null,
samplerateSupport ? jackSupport,
libsamplerate ? null,
ossSupport ? false,
alsa-oss ? null,
pulseaudioSupport ? config.pulseaudio or false,
libpulseaudio ? null,
sndioSupport ? false,
sndio ? null,
mprisSupport ? stdenv.hostPlatform.isLinux,
systemd ? null,
# TODO: add these
#, artsSupport
#, roarSupport
#, sunSupport
#, waveoutSupport
cddbSupport ? true,
libcddb ? null,
cdioSupport ? true,
libcdio ? null,
libcdio-paranoia ? null,
cueSupport ? true,
libcue ? null,
discidSupport ? false,
libdiscid ? null,
ffmpegSupport ? true,
ffmpeg ? null,
flacSupport ? true,
flac ? null,
madSupport ? true,
libmad ? null,
mikmodSupport ? true,
libmikmod ? null,
modplugSupport ? true,
libmodplug ? null,
mpcSupport ? true,
libmpcdec ? null,
tremorSupport ? false,
tremor ? null,
vorbisSupport ? true,
libvorbis ? null,
wavpackSupport ? true,
wavpack ? null,
opusSupport ? true,
opusfile ? null,
aacSupport ? false,
faad2 ? null, # already handled by ffmpeg
mp4Support ? false,
mp4v2 ? null, # ffmpeg does support mp4 better
# not in nixpkgs
#, vtxSupport ? true, libayemu ? null
}:
assert samplerateSupport -> jackSupport;
# vorbis and tremor are mutually exclusive
assert vorbisSupport -> !tremorSupport;
assert tremorSupport -> !vorbisSupport;
let
mkFlag =
b: f: dep:
if b then
{
flags = [ f ];
deps = [ dep ];
}
else
{
flags = [ ];
deps = [ ];
};
opts = [
# Audio output
(mkFlag alsaSupport "CONFIG_ALSA=y" alsa-lib)
(mkFlag aoSupport "CONFIG_AO=y" libao)
(mkFlag jackSupport "CONFIG_JACK=y" libjack)
(mkFlag samplerateSupport "CONFIG_SAMPLERATE=y" libsamplerate)
(mkFlag ossSupport "CONFIG_OSS=y" alsa-oss)
(mkFlag pulseaudioSupport "CONFIG_PULSE=y" libpulseaudio)
(mkFlag sndioSupport "CONFIG_SNDIO=y" sndio)
(mkFlag mprisSupport "CONFIG_MPRIS=y" systemd)
#(mkFlag artsSupport "CONFIG_ARTS=y")
#(mkFlag roarSupport "CONFIG_ROAR=y")
#(mkFlag sunSupport "CONFIG_SUN=y")
#(mkFlag waveoutSupport "CONFIG_WAVEOUT=y")
# Input file formats
(mkFlag cddbSupport "CONFIG_CDDB=y" libcddb)
(mkFlag cdioSupport "CONFIG_CDIO=y" [
libcdio
libcdio-paranoia
])
(mkFlag cueSupport "CONFIG_CUE=y" libcue)
(mkFlag discidSupport "CONFIG_DISCID=y" libdiscid)
(mkFlag ffmpegSupport "CONFIG_FFMPEG=y" ffmpeg)
(mkFlag flacSupport "CONFIG_FLAC=y" flac)
(mkFlag madSupport "CONFIG_MAD=y" libmad)
(mkFlag mikmodSupport "CONFIG_MIKMOD=y" libmikmod)
(mkFlag modplugSupport "CONFIG_MODPLUG=y" libmodplug)
(mkFlag mpcSupport "CONFIG_MPC=y" libmpcdec)
(mkFlag tremorSupport "CONFIG_TREMOR=y" tremor)
(mkFlag vorbisSupport "CONFIG_VORBIS=y" libvorbis)
(mkFlag wavpackSupport "CONFIG_WAVPACK=y" wavpack)
(mkFlag opusSupport "CONFIG_OPUS=y" opusfile)
(mkFlag mp4Support "CONFIG_MP4=y" mp4v2)
(mkFlag aacSupport "CONFIG_AAC=y" faad2)
#(mkFlag vtxSupport "CONFIG_VTX=y" libayemu)
];
in
stdenv.mkDerivation rec {
pname = "cmus";
version = "2.12.0";
src = fetchFromGitHub {
owner = "cmus";
repo = "cmus";
rev = "v${version}";
hash = "sha256-8hgibGtkiwzenMI9YImIApRmw2EzTwE6RhglALpUkp4=";
};
nativeBuildInputs = [ pkg-config ];
buildInputs =
[ ncurses ]
++ lib.optionals stdenv.hostPlatform.isDarwin [
libiconv
]
++ lib.flatten (lib.concatMap (a: a.deps) opts);
prefixKey = "prefix=";
configureFlags = [
"CONFIG_WAV=y"
"HOSTCC=${stdenv.cc.targetPrefix}cc"
] ++ lib.concatMap (a: a.flags) opts;
makeFlags = [ "LD=$(CC)" ];
meta = with lib; {
description = "Small, fast and powerful console music player for Linux and *BSD";
homepage = "https://cmus.github.io/";
license = licenses.gpl2;
maintainers = [ maintainers.oxij ];
platforms = platforms.linux ++ platforms.darwin;
};
}