Files
nixpkgs/pkgs/applications/audio/ardour/default.nix
Dark Steveneq 646b892680
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s
push sheeet
2025-10-09 14:15:47 +02:00

243 lines
5.6 KiB
Nix

{
lib,
stdenv,
fetchgit,
fetchzip,
alsa-lib,
aubio,
boost,
cairomm,
cppunit,
curl,
dbus,
doxygen,
ffmpeg,
fftw,
fftwSinglePrec,
flac,
fluidsynth,
glibc,
glibmm,
graphviz,
harvid,
hidapi,
itstool,
kissfft,
libarchive,
libjack2,
liblo,
libltc,
libogg,
libpulseaudio,
librdf_rasqal,
libsamplerate,
libsigcxx,
libsndfile,
libusb1,
libuv,
libwebsockets,
libxml2,
libxslt,
lilv,
lrdf,
lv2,
makeWrapper,
pango,
pangomm,
perl,
pkg-config,
python3,
qm-dsp,
readline,
rubberband,
serd,
sord,
soundtouch,
sratom,
suil,
taglib,
vamp-plugin-sdk,
wafHook,
xjadeo,
xorg,
optimize ? true, # disable to print Lua DSP script output to stdout
videoSupport ? true,
}:
stdenv.mkDerivation (
finalAttrs:
let
majorVersion = lib.versions.major finalAttrs.version;
in
{
pname = "ardour";
version = "8.12";
# We can't use `fetchFromGitea` here, as attempting to fetch release archives from git.ardour.org
# result in an empty archive. See https://tracker.ardour.org/view.php?id=7328 for more info.
src = fetchgit {
url = "git://git.ardour.org/ardour/ardour.git";
rev = finalAttrs.version;
hash = "sha256-4IgBQ53cwPA35YwNQyo+qBqsMGv+TLn6w1zaDX97erE=";
};
bundledContent = fetchzip {
url = "https://web.archive.org/web/20221026200824/http://stuff.ardour.org/loops/ArdourBundledMedia.zip";
hash = "sha256-IbPQWFeyMuvCoghFl1ZwZNNcSvLNsH84rGArXnw+t7A=";
# archive does not contain a single folder at the root
stripRoot = false;
};
patches = [
# AS=as in the environment causes build failure https://tracker.ardour.org/view.php?id=8096
./as-flags.patch
./default-plugin-search-paths.patch
];
# Ardour's wscript requires git revision and date to be available.
# Since they are not, let's generate the file manually.
postPatch = ''
printf '#include "libs/ardour/ardour/revision.h"\nnamespace ARDOUR { const char* revision = "${finalAttrs.version}"; const char* date = ""; }\n' > libs/ardour/revision.cc
sed 's|/usr/include/libintl.h|${glibc.dev}/include/libintl.h|' -i wscript
patchShebangs ./tools/
substituteInPlace libs/ardour/video_tools_paths.cc \
--replace-fail 'ffmpeg_exe = X_("");' 'ffmpeg_exe = X_("${ffmpeg}/bin/ffmpeg");' \
--replace-fail 'ffprobe_exe = X_("");' 'ffprobe_exe = X_("${ffmpeg}/bin/ffprobe");'
'';
nativeBuildInputs = [
doxygen
graphviz # for dot
itstool
makeWrapper
perl
pkg-config
python3
wafHook
];
buildInputs = [
alsa-lib
aubio
boost
cairomm
cppunit
curl
dbus
ffmpeg
fftw
fftwSinglePrec
flac
fluidsynth
glibmm
hidapi
itstool
kissfft
libarchive
libjack2
liblo
libltc
libogg
libpulseaudio
librdf_rasqal
libsamplerate
libsigcxx
libsndfile
libusb1
libuv
libwebsockets
libxml2
libxslt
lilv
lrdf
lv2
pango
pangomm
perl
python3
qm-dsp
readline
rubberband
serd
sord
soundtouch
sratom
suil
taglib
vamp-plugin-sdk
xorg.libXinerama
xorg.libXrandr
]
++ lib.optionals videoSupport [
harvid
xjadeo
];
wafConfigureFlags = [
"--cxx17"
"--docs"
"--freedesktop"
"--no-phone-home"
"--ptformat"
"--run-tests"
"--test"
# since we don't have https://github.com/agfline/LibAAF yet,
# we need to use some of ardours internal libs, see:
# https://discourse.ardour.org/t/ardour-8-2-released/109615/6
# and
# https://discourse.ardour.org/t/ardour-8-2-released/109615/8
# "--use-external-libs"
]
++ lib.optional optimize "--optimize";
postInstall = ''
# wscript does not install these for some reason
install -vDm 644 "build/gtk2_ardour/ardour.xml" \
-t "$out/share/mime/packages"
install -vDm 644 "build/gtk2_ardour/ardour${majorVersion}.desktop" \
-t "$out/share/applications"
for size in 16 22 32 48 256 512; do
install -vDm 644 "gtk2_ardour/resources/Ardour-icon_''${size}px.png" \
"$out/share/icons/hicolor/''${size}x''${size}/apps/ardour${majorVersion}.png"
done
install -vDm 644 "ardour.1"* -t "$out/share/man/man1"
# install additional bundled beats, chords and progressions
cp -rp "${finalAttrs.bundledContent}"/* "$out/share/ardour${majorVersion}/media"
''
+ lib.optionalString videoSupport ''
# `harvid` and `xjadeo` must be accessible in `PATH` for video to work.
wrapProgram "$out/bin/ardour${majorVersion}" \
--prefix PATH : "${
lib.makeBinPath [
harvid
xjadeo
]
}"
'';
LINKFLAGS = "-lpthread";
meta = {
description = "Multi-track hard disk recording software";
longDescription = ''
Ardour is a digital audio workstation (DAW), You can use it to
record, edit and mix multi-track audio and midi. Produce your
own CDs. Mix video soundtracks. Experiment with new ideas about
music and sound.
Please consider supporting the ardour project financially:
https://community.ardour.org/donate
'';
homepage = "https://ardour.org/";
license = lib.licenses.gpl2Plus;
mainProgram = "ardour8";
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [
magnetophon
mitchmindtree
ryand56
];
};
}
)