push sheeet
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

This commit is contained in:
Dark Steveneq
2025-10-09 14:15:47 +02:00
commit 646b892680
49168 changed files with 5897842 additions and 0 deletions

1263
pkgs/README.md Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,102 @@
{
lib,
stdenv,
multiStdenv,
fetchFromGitHub,
requireFile,
unzip,
wine,
cmake,
makeWrapper,
wrapQtAppsHook,
file,
libX11,
qt5,
vst2-sdk,
}:
let
version = "1.3.3";
airwave-src = fetchFromGitHub {
owner = "phantom-code";
repo = "airwave";
rev = version;
sha256 = "1ban59skw422mak3cp57lj27hgq5d3a4f6y79ysjnamf8rpz9x4s";
};
wine-wow64 = wine.override {
wineRelease = "stable";
wineBuild = "wineWow";
};
wine-xembed = wine-wow64.overrideDerivation (oldAttrs: {
patchFlags = [ "-p2" ];
patches = [ "${airwave-src}/fix-xembed-wine-windows.patch" ];
});
in
multiStdenv.mkDerivation {
pname = "airwave";
inherit version;
src = airwave-src;
nativeBuildInputs = [
cmake
makeWrapper
wrapQtAppsHook
];
buildInputs = [
file
libX11
qt5.qtbase
wine-xembed
];
postPatch = ''
# Binaries not used directly should land in libexec/.
substituteInPlace src/common/storage.cpp --replace '"/bin"' '"/libexec"'
# For airwave-host-32.exe.so, point wineg++ to 32-bit versions of
# these libraries, as $NIX_LDFLAGS contains only 64-bit ones.
substituteInPlace src/host/CMakeLists.txt --replace '-m32' \
'-m32 -L${wine-xembed}/lib -L${wine-xembed}/lib/wine -L${multiStdenv.cc.libc.out}/lib/32'
'';
# libstdc++.so link gets lost in 64-bit executables during
# shrinking.
dontPatchELF = true;
# Cf. https://github.com/phantom-code/airwave/issues/57
hardeningDisable = [ "format" ];
cmakeFlags = [ "-DVSTSDK_PATH=${vst2-sdk}" ];
postInstall = ''
mv $out/bin $out/libexec
mkdir $out/bin
mv $out/libexec/airwave-manager $out/bin
wrapProgram $out/libexec/airwave-host-32.exe --set WINELOADER ${wine-xembed}/bin/wine
wrapProgram $out/libexec/airwave-host-64.exe --set WINELOADER ${wine-xembed}/bin/wine64
'';
meta = {
description = "WINE-based VST bridge for Linux VST hosts";
longDescription = ''
Airwave is a wine based VST bridge, that allows for the use of
Windows 32- and 64-bit VST 2.4 audio plugins with Linux VST
hosts. Due to the use of shared memory, only one extra copying
is made for each data transfer. Airwave also uses the XEMBED
protocol to correctly embed the plugin editor into the host
window.
'';
homepage = "https://github.com/phantom-code/airwave";
license = lib.licenses.mit;
platforms = [ "x86_64-linux" ];
maintainers = with lib.maintainers; [ michalrus ];
hydraPlatforms = [ ];
};
}

View File

@@ -0,0 +1,12 @@
--- a/libs/ardour/wscript
+++ b/libs/ardour/wscript
@@ -379,8 +379,7 @@ def build(bld):
# remove '${DEFINES_ST:DEFINES}' from run_str.
# x86_64-w64-mingw32-as (mingw) -D flag is for debug messages
- if bld.env['build_target'] == 'mingw':
- class asm(Task.classes['asm']): run_str = '${AS} ${ASFLAGS} ${ASMPATH_ST:INCPATHS} ${AS_SRC_F}${SRC} ${AS_TGT_F}${TGT}'
+ class asm(Task.classes['asm']): run_str = '${AS} ${ASFLAGS} ${ASMPATH_ST:INCPATHS} ${AS_SRC_F}${SRC} ${AS_TGT_F}${TGT}'
# operate on copy to avoid adding sources twice
sources = list(libardour_sources)

View File

@@ -0,0 +1,55 @@
From 1217722e4bf6c65b5c24da17a7de4bf712ca6775 Mon Sep 17 00:00:00 2001
From: Tamara Schmitz <tamara.zoe.schmitz@posteo.de>
Date: Sat, 17 Jun 2023 14:05:53 +0200
Subject: [PATCH] add NixOS plugin paths as default search paths
Since NixOS uses unusual paths, we should tell Ardour about this. During
first launch, Ardour does indeed check for environmentals but not when
you press the "Reset to Defaults" button in the Settings menu. This
path fixes this by including NixOS paths in the defaults.
---
libs/ardour/plugin_manager.cc | 5 +++--
libs/ardour/search_paths.cc | 4 ++++
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/libs/ardour/plugin_manager.cc b/libs/ardour/plugin_manager.cc
index a572ed55dd..3dd6c2fda6 100644
--- a/libs/ardour/plugin_manager.cc
+++ b/libs/ardour/plugin_manager.cc
@@ -305,7 +305,8 @@ PluginManager::PluginManager ()
if (lxvst_path.length() == 0) {
lxvst_path = "/usr/local/lib64/lxvst:/usr/local/lib/lxvst:/usr/lib64/lxvst:/usr/lib/lxvst:"
"/usr/local/lib64/linux_vst:/usr/local/lib/linux_vst:/usr/lib64/linux_vst:/usr/lib/linux_vst:"
- "/usr/lib/vst:/usr/local/lib/vst";
+ "/usr/lib/vst:/usr/local/lib/vst:$HOME/.nix-profile/lib/vst:"
+ "$HOME/.lxvst:$HOME/.nix-profile/lib/lxvst:/run/current-system/sw/lib/lxvst:/etc/profiles/per-user/$USER/lib/lxvst";
}
/* first time setup, use 'default' path */
@@ -2040,7 +2041,7 @@ PluginManager::vst3_refresh (bool cache_only)
std::string prog = PBD::get_win_special_folder_path (CSIDL_PROGRAM_FILES);
vst3_discover_from_path (Glib::build_filename (prog, "Common Files", "VST3"), cache_only);
#else
- vst3_discover_from_path ("~/.vst3:/usr/local/lib/vst3:/usr/lib/vst3", cache_only);
+ vst3_discover_from_path ("~/.vst3:/usr/local/lib/vst3:/usr/lib/vst3:~/.nix-profile/lib/vst3:/run/current-system/sw/lib/vst3:/etc/profiles/per-user/$USER/lib/vst3", cache_only);
#endif
}
diff --git a/libs/ardour/search_paths.cc b/libs/ardour/search_paths.cc
index e6d8744369..b9774cb006 100644
--- a/libs/ardour/search_paths.cc
+++ b/libs/ardour/search_paths.cc
@@ -112,6 +112,10 @@ ladspa_search_path ()
spath.push_back ("/usr/local/lib/ladspa");
spath.push_back ("/usr/lib64/ladspa");
spath.push_back ("/usr/lib/ladspa");
+ spath.push_back ("/run/current-system/sw/lib/ladspa");
+ spath.push_back (path_expand ("$HOME/.ladspa"));
+ spath.push_back (path_expand ("$HOME/.nix-profile/lib/ladspa"));
+ spath.push_back (path_expand ("/etc/profiles/per-user/$USER/lib/ladspa"));
#endif
#ifdef __APPLE__
--
2.40.1

View File

@@ -0,0 +1,242 @@
{
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
];
};
}
)

View File

@@ -0,0 +1,112 @@
{
stdenv,
fetchurl,
alsa-lib,
cairo,
dpkg,
freetype,
gdk-pixbuf,
glib,
gtk3,
lib,
xorg,
libglvnd,
libjack2,
ffmpeg,
libxkbcommon,
xdg-utils,
zlib,
pulseaudio,
wrapGAppsHook3,
makeWrapper,
}:
stdenv.mkDerivation rec {
pname = "bitwig-studio";
version = "3.3.11";
src = fetchurl {
url = "https://downloads.bitwig.com/stable/${version}/${pname}-${version}.deb";
sha256 = "sha256-cF8gVPjM0KUcKOW09uFccp4/lzbUmZcBkVOwr/A/8Yw=";
};
nativeBuildInputs = [
dpkg
makeWrapper
wrapGAppsHook3
];
dontBuild = true;
dontWrapGApps = true; # we only want $gappsWrapperArgs here
buildInputs = with xorg; [
alsa-lib
cairo
freetype
gdk-pixbuf
glib
gtk3
libxcb
xcbutil
xcbutilwm
zlib
libXtst
libxkbcommon
pulseaudio
libjack2
libX11
libglvnd
libXcursor
(lib.getLib stdenv.cc.cc)
];
ldLibraryPath = lib.strings.makeLibraryPath buildInputs;
installPhase = ''
runHook preInstall
mkdir -p $out/bin
cp -r opt/bitwig-studio $out/libexec
ln -s $out/libexec/bitwig-studio $out/bin/bitwig-studio
cp -r usr/share $out/share
runHook postInstall
'';
postFixup = ''
# patchelf fails to set rpath on BitwigStudioEngine, so we use
# the LD_LIBRARY_PATH way
find $out -type f -executable \
-not -name '*.so.*' \
-not -name '*.so' \
-not -name '*.jar' \
-not -path '*/resources/*' | \
while IFS= read -r f ; do
patchelf --set-interpreter "${stdenv.cc.bintools.dynamicLinker}" $f
wrapProgram $f \
"''${gappsWrapperArgs[@]}" \
--prefix LD_LIBRARY_PATH : "${ldLibraryPath}" \
--prefix PATH : "${lib.makeBinPath [ ffmpeg ]}" \
--suffix PATH : "${lib.makeBinPath [ xdg-utils ]}"
done
'';
meta = with lib; {
description = "Digital audio workstation";
longDescription = ''
Bitwig Studio is a multi-platform music-creation system for
production, performance and DJing, with a focus on flexible
editing tools and a super-fast workflow.
'';
homepage = "https://www.bitwig.com/";
license = licenses.unfree;
platforms = [ "x86_64-linux" ];
maintainers = with maintainers; [
bfortz
michalrus
mrVanDalo
];
sourceProvenance = [ lib.sourceTypes.binaryNativeCode ];
};
}

View File

@@ -0,0 +1,125 @@
{
stdenv,
fetchurl,
alsa-lib,
cairo,
dpkg,
ffmpeg,
freetype,
gdk-pixbuf,
glib,
gtk3,
lib,
libglvnd,
libjack2,
libjpeg,
libxkbcommon,
makeWrapper,
pipewire,
pulseaudio,
wrapGAppsHook3,
xdg-utils,
xorg,
zlib,
}:
stdenv.mkDerivation rec {
pname = "bitwig-studio";
version = "4.4.10";
src = fetchurl {
url = "https://downloads.bitwig.com/stable/${version}/${pname}-${version}.deb";
sha256 = "sha256-gtQ1mhXk0AqGidZk5TCzSR58pD1JJoELMBmELtqyb4U=";
};
nativeBuildInputs = [
dpkg
makeWrapper
wrapGAppsHook3
];
dontBuild = true;
dontWrapGApps = true; # we only want $gappsWrapperArgs here
buildInputs = with xorg; [
alsa-lib
cairo
freetype
gdk-pixbuf
glib
gtk3
libglvnd
libjack2
# libjpeg8 is required for converting jpeg's to colour palettes
libjpeg
libxcb
libXcursor
libX11
libXtst
libxkbcommon
pipewire
pulseaudio
(lib.getLib stdenv.cc.cc)
xcbutil
xcbutilwm
zlib
];
installPhase = ''
runHook preInstall
mkdir -p $out/bin
cp -r opt/bitwig-studio $out/libexec
ln -s $out/libexec/bitwig-studio $out/bin/bitwig-studio
cp -r usr/share $out/share
substitute usr/share/applications/com.bitwig.BitwigStudio.desktop \
$out/share/applications/com.bitwig.BitwigStudio.desktop \
--replace-fail "Exec=bitwig-studio" "Exec=$out/bin/bitwig-studio"
runHook postInstall
'';
postFixup = ''
# patchelf fails to set rpath on BitwigStudioEngine, so we use
# the LD_LIBRARY_PATH way
find $out -type f -executable \
-not -name '*.so.*' \
-not -name '*.so' \
-not -name '*.jar' \
-not -name 'jspawnhelper' \
-not -path '*/resources/*' | \
while IFS= read -r f ; do
patchelf --set-interpreter "${stdenv.cc.bintools.dynamicLinker}" $f
# make xdg-open overrideable at runtime
wrapProgram $f \
"''${gappsWrapperArgs[@]}" \
--prefix PATH : "${lib.makeBinPath [ ffmpeg ]}" \
--suffix PATH : "${lib.makeBinPath [ xdg-utils ]}" \
--suffix LD_LIBRARY_PATH : "${lib.strings.makeLibraryPath buildInputs}"
done
find $out -type f -executable -name 'jspawnhelper' | \
while IFS= read -r f ; do
patchelf --set-interpreter "${stdenv.cc.bintools.dynamicLinker}" $f
done
'';
meta = with lib; {
description = "Digital audio workstation";
longDescription = ''
Bitwig Studio is a multi-platform music-creation system for
production, performance and DJing, with a focus on flexible
editing tools and a super-fast workflow.
'';
homepage = "https://www.bitwig.com/";
license = licenses.unfree;
platforms = [ "x86_64-linux" ];
maintainers = with maintainers; [
bfortz
michalrus
mrVanDalo
];
sourceProvenance = [ lib.sourceTypes.binaryNativeCode ];
};
}

View File

@@ -0,0 +1,145 @@
{
stdenv,
fetchurl,
alsa-lib,
atk,
cairo,
dpkg,
ffmpeg,
freetype,
gdk-pixbuf,
glib,
gtk3,
harfbuzz,
lcms,
lib,
libglvnd,
libjack2,
libjpeg,
libnghttp2,
libudev-zero,
libxkbcommon,
makeWrapper,
pango,
pipewire,
vulkan-loader,
wrapGAppsHook3,
xcb-imdkit,
xdg-utils,
xorg,
zlib,
}:
stdenv.mkDerivation rec {
pname = "bitwig-studio-unwrapped";
version = "5.3.13";
src = fetchurl {
name = "bitwig-studio-${version}.deb";
url = "https://www.bitwig.com/dl/Bitwig%20Studio/${version}/installer_linux/";
hash = "sha256-tx+Dz9fTm4DIobwLa055ZOCMG+tU7vQl11NFnEKMAno=";
};
nativeBuildInputs = [
dpkg
makeWrapper
wrapGAppsHook3
];
dontBuild = true;
dontWrapGApps = true; # we only want $gappsWrapperArgs here
buildInputs = [
alsa-lib
atk
cairo
freetype
gdk-pixbuf
glib
gtk3
harfbuzz
lcms
libglvnd
libjack2
# libjpeg8 is required for converting jpeg's to colour palettes
libjpeg
libnghttp2
xorg.libxcb
xorg.libXcursor
xorg.libX11
xorg.libXtst
libxkbcommon
libudev-zero
pango
pipewire
(lib.getLib stdenv.cc.cc)
vulkan-loader
xcb-imdkit
xorg.xcbutil
xorg.xcbutilwm
zlib
];
installPhase = ''
runHook preInstall
mkdir -p $out/bin
cp -r opt/bitwig-studio $out/libexec
ln -s $out/libexec/bitwig-studio $out/bin/bitwig-studio
cp -r usr/share $out/share
# Bitwig includes a copy of libxcb-imdkit.
# Removing it will force it to use our version.
rm $out/libexec/lib/bitwig-studio/libxcb-imdkit.so.1
substitute usr/share/applications/com.bitwig.BitwigStudio.desktop \
$out/share/applications/com.bitwig.BitwigStudio.desktop \
--replace-fail "Exec=bitwig-studio" "Exec=$out/bin/bitwig-studio"
runHook postInstall
'';
postFixup = ''
# patchelf fails to set rpath on BitwigStudioEngine, so we use
# the LD_LIBRARY_PATH way
find $out -type f -executable \
-not -name '*.so.*' \
-not -name '*.so' \
-not -name '*.jar' \
-not -name 'jspawnhelper' \
-not -path '*/resources/*' | \
while IFS= read -r f ; do
patchelf --set-interpreter "${stdenv.cc.bintools.dynamicLinker}" $f
# make xdg-open overrideable at runtime
wrapProgram $f \
"''${gappsWrapperArgs[@]}" \
--prefix PATH : "${lib.makeBinPath [ ffmpeg ]}" \
--suffix PATH : "${lib.makeBinPath [ xdg-utils ]}" \
--suffix LD_LIBRARY_PATH : "${lib.strings.makeLibraryPath buildInputs}"
done
find $out -type f -executable -name 'jspawnhelper' | \
while IFS= read -r f ; do
patchelf --set-interpreter "${stdenv.cc.bintools.dynamicLinker}" $f
done
'';
meta = {
description = "Digital audio workstation";
longDescription = ''
Bitwig Studio is a multi-platform music-creation system for
production, performance and DJing, with a focus on flexible
editing tools and a super-fast workflow.
'';
homepage = "https://www.bitwig.com/";
license = lib.licenses.unfree;
platforms = [ "x86_64-linux" ];
maintainers = with lib.maintainers; [
bfortz
michalrus
mrVanDalo
];
sourceProvenance = [ lib.sourceTypes.binaryNativeCode ];
};
}

View File

@@ -0,0 +1,49 @@
{
stdenv,
bubblewrap,
mktemp,
writeShellScript,
bitwig-studio-unwrapped,
}:
stdenv.mkDerivation {
inherit (bitwig-studio-unwrapped) version;
pname = "bitwig-studio";
dontUnpack = true;
dontConfigure = true;
dontBuild = true;
dontPatchELF = true;
dontStrip = true;
installPhase =
let
wrapper = writeShellScript "bitwig-studio" ''
set -e
echo "Creating temporary directory"
TMPDIR=$(${mktemp}/bin/mktemp --directory)
echo "Temporary directory: $TMPDIR"
echo "Copying default Vamp Plugin settings"
cp -r ${bitwig-studio-unwrapped}/libexec/resources/VampTransforms $TMPDIR
echo "Changing permissions to be writable"
chmod -R u+w $TMPDIR/VampTransforms
echo "Starting Bitwig Studio in Bubblewrap Environment"
${bubblewrap}/bin/bwrap \
--bind / / \
--bind $TMPDIR/VampTransforms ${bitwig-studio-unwrapped}/libexec/resources/VampTransforms \
--dev-bind /dev /dev \
${bitwig-studio-unwrapped}/bin/bitwig-studio \
|| true
echo "Bitwig exited, removing temporary directory"
rm -rf $TMPDIR
'';
in
''
mkdir -p $out/bin
cp ${wrapper} $out/bin/bitwig-studio
cp -r ${bitwig-studio-unwrapped}/share $out
'';
}

View File

@@ -0,0 +1,74 @@
{
lib,
stdenv,
fetchFromGitHub,
legacy ? false,
libinput,
pkg-config,
makeWrapper,
openal,
alure,
libXtst,
libX11,
}:
let
inherit (lib) optionals;
in
stdenv.mkDerivation rec {
pname = "bucklespring";
version = "1.5.1";
src = fetchFromGitHub {
owner = "zevv";
repo = "bucklespring";
rev = "v${version}";
sha256 = "0prhqibivxzmz90k79zpwx3c97h8wa61rk5ihi9a5651mnc46mna";
};
nativeBuildInputs = [
pkg-config
makeWrapper
];
buildInputs = [
openal
alure
]
++ optionals legacy [
libXtst
libX11
]
++ optionals (!legacy) [ libinput ];
makeFlags = optionals (!legacy) [ "libinput=1" ];
installPhase = ''
runHook preInstall
mkdir -p $out/share/wav
cp -r $src/wav $out/share/.
install -D ./buckle.desktop $out/share/applications/buckle.desktop
install -D ./buckle $out/bin/buckle
wrapProgram $out/bin/buckle --add-flags "-p $out/share/wav"
runHook postInstall
'';
meta = with lib; {
description = "Nostalgia bucklespring keyboard sound";
mainProgram = "buckle";
longDescription = ''
When built with libinput (wayland or bare console),
users need to be in the input group to use this:
<code>users.users.alice.extraGroups = [ "input" ];</code>
'';
homepage = "https://github.com/zevv/bucklespring";
license = licenses.gpl2Only;
platforms = platforms.unix;
maintainers = [ ];
};
}

View File

@@ -0,0 +1,124 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch2,
alsa-lib,
file,
fluidsynth,
jack2,
liblo,
libpulseaudio,
libsndfile,
pkg-config,
python3Packages,
which,
gtk2 ? null,
gtk3 ? null,
qtbase ? null,
withFrontend ? true,
withGtk2 ? true,
withGtk3 ? true,
withQt ? true,
wrapQtAppsHook ? null,
}:
assert withQt -> qtbase != null;
assert withQt -> wrapQtAppsHook != null;
stdenv.mkDerivation (finalAttrs: {
pname = "carla";
version = "2.5.10";
src = fetchFromGitHub {
owner = "falkTX";
repo = "carla";
rev = "v${finalAttrs.version}";
hash = "sha256-21QaFCIjGjRTcJtf2nwC5RcVJF8JgcFPIbS8apvf9tw=";
};
nativeBuildInputs = [
python3Packages.wrapPython
pkg-config
which
wrapQtAppsHook
];
pythonPath =
with python3Packages;
[
rdflib
pyliblo3
]
++ lib.optional withFrontend pyqt5;
buildInputs = [
file
liblo
alsa-lib
fluidsynth
jack2
libpulseaudio
libsndfile
]
++ lib.optional withQt qtbase
++ lib.optional withGtk2 gtk2
++ lib.optional withGtk3 gtk3;
propagatedBuildInputs = finalAttrs.pythonPath;
enableParallelBuilding = true;
installFlags = [ "PREFIX=$(out)" ];
postPatch = ''
# --with-appname="$0" is evaluated with $0=.carla-wrapped instead of carla. Fix that.
for file in $(grep -rl -- '--with-appname="$0"'); do
filename="$(basename -- "$file")"
substituteInPlace "$file" --replace-fail '--with-appname="$0"' "--with-appname=\"$filename\""
done
''
+ lib.optionalString withGtk2 ''
# Will try to dlopen() libgtk-x11-2.0 at runtime when using the bridge.
substituteInPlace source/bridges-ui/Makefile \
--replace-fail '$(CXX) $(OBJS_GTK2)' '$(CXX) $(OBJS_GTK2) -lgtk-x11-2.0'
'';
dontWrapQtApps = true;
postFixup = ''
# Also sets program_PYTHONPATH and program_PATH variables
wrapPythonPrograms
wrapPythonProgramsIn "$out/share/carla/resources" "$out $pythonPath"
find "$out/share/carla" -maxdepth 1 -type f -not -name "*.py" -print0 | while read -d "" f; do
patchPythonScript "$f"
done
patchPythonScript "$out/share/carla/carla_settings.py"
for program in $out/bin/*; do
wrapQtApp "$program" \
--prefix PATH : "$program_PATH:${which}/bin" \
--set PYTHONNOUSERSITE true
done
find "$out/share/carla/resources" -maxdepth 1 -type f -not -name "*.py" -print0 | while read -d "" f; do
wrapQtApp "$f" \
--prefix PATH : "$program_PATH:${which}/bin" \
--set PYTHONNOUSERSITE true
done
'';
meta = with lib; {
homepage = "https://kx.studio/Applications:Carla";
description = "Audio plugin host";
longDescription = ''
It currently supports LADSPA (including LRDF), DSSI, LV2, VST2/3
and AU plugin formats, plus GIG, SF2 and SFZ file support.
It uses JACK as the default and preferred audio driver but also
supports native drivers like ALSA, DirectSound or CoreAudio.
'';
license = licenses.gpl2Plus;
maintainers = [ maintainers.minijackson ];
platforms = platforms.linux;
};
})

View File

@@ -0,0 +1,13 @@
--- a/src/core/util_string.cpp 2014-10-27 22:52:11.875981552 +0100
+++ b/src/core/util_string.cpp 2014-10-27 22:54:18.613001994 +0100
@@ -40,6 +40,10 @@
#include <linux/limits.h>
#endif // __PLATFORM_LINUX__
+#ifdef __PLATFORM_MACOSX__
+#include <limits.h>
+#endif // __PLATFORM_MACOSX__
+
#include <stdio.h>
using namespace std;

View File

@@ -0,0 +1,51 @@
{
stdenv,
lib,
fetchurl,
alsa-lib,
bison,
flex,
libsndfile,
which,
DarwinTools,
xcbuild,
}:
stdenv.mkDerivation rec {
version = "1.4.2.0";
pname = "chuck";
src = fetchurl {
url = "http://chuck.cs.princeton.edu/release/files/chuck-${version}.tgz";
sha256 = "sha256-hIwsC9rYgXWSTFqUufKGqoT0Gnsf4nR4KQ0iSVbj8xg=";
};
nativeBuildInputs = [
flex
bison
which
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
DarwinTools
xcbuild
];
buildInputs = [ libsndfile ] ++ lib.optional (!stdenv.hostPlatform.isDarwin) alsa-lib;
patches = [ ./darwin-limits.patch ];
makeFlags = [
"-C src"
"DESTDIR=$(out)/bin"
];
buildFlags = [ (if stdenv.hostPlatform.isDarwin then "mac" else "linux-alsa") ];
meta = with lib; {
description = "Programming language for real-time sound synthesis and music creation";
homepage = "http://chuck.cs.princeton.edu";
license = licenses.gpl2;
platforms = platforms.unix;
maintainers = with maintainers; [ ftrvxmtrx ];
mainProgram = "chuck";
};
}

View File

@@ -0,0 +1,142 @@
{
lib,
stdenv,
fetchFromGitHub,
boost,
cmake,
chromaprint,
gettext,
gst_all_1,
liblastfm,
qtbase,
qtx11extras,
qttools,
taglib_1,
fftw,
glew,
qjson,
sqlite,
libgpod,
libplist,
usbmuxd,
libmtp,
libpulseaudio,
gvfs,
libcdio,
pcre,
projectm_3,
protobuf,
qca-qt5,
pkg-config,
sparsehash,
config,
wrapQtAppsHook,
gst_plugins,
util-linuxMinimal,
libunwind,
libselinux,
elfutils,
libsepol,
orc,
alsa-lib,
}:
let
withIpod = config.clementine.ipod or false;
withMTP = config.clementine.mtp or true;
withCD = config.clementine.cd or true;
withCloud = config.clementine.cloud or true;
in
stdenv.mkDerivation (finalAttrs: {
pname = "clementine";
version = "1.4.1-58-gbae968a2f";
src = fetchFromGitHub {
owner = "clementine-player";
repo = "Clementine";
tag = finalAttrs.version;
hash = "sha256-Ni+nbi0bADIPo9rPtt06loJ3MNU+y9bs1EZSenLfJSU=";
};
nativeBuildInputs = [
cmake
pkg-config
wrapQtAppsHook
util-linuxMinimal
libunwind
libselinux
elfutils
libsepol
orc
];
buildInputs = [
boost
chromaprint
fftw
gettext
glew
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-bad
gst_all_1.gstreamer
gvfs
liblastfm
libpulseaudio
pcre
projectm_3
protobuf
qca-qt5
qjson
qtbase
qtx11extras
qttools
sqlite
taglib_1
alsa-lib
]
# gst_plugins needed for setup-hooks
++ gst_plugins
++ lib.optionals withIpod [
libgpod
libplist
usbmuxd
]
++ lib.optionals withMTP [ libmtp ]
++ lib.optionals withCD [ libcdio ]
++ lib.optionals withCloud [ sparsehash ];
postPatch = ''
sed -i src/CMakeLists.txt \
-e 's,-Werror,,g' \
-e 's,-Wno-unknown-warning-option,,g' \
-e 's,-Wno-unused-private-field,,g'
sed -i CMakeLists.txt \
-e 's,libprotobuf.a,protobuf,g'
'';
preConfigure = ''
rm -rf ext/{,lib}clementine-spotifyblob
'';
cmakeFlags = [
(lib.cmakeFeature "FORCE_GIT_REVISION" "1.3.1")
(lib.cmakeBool "USE_SYSTEM_PROJECTM" true)
(lib.cmakeBool "SPOTIFY_BLOB" false)
];
dontWrapQtApps = true;
postInstall = ''
wrapQtApp $out/bin/clementine \
--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0"
'';
meta = {
homepage = "https://www.clementine-player.org";
description = "Multiplatform music player";
license = lib.licenses.gpl3Plus;
platforms = lib.platforms.linux;
mainProgram = "clementine";
maintainers = with lib.maintainers; [ ttuegel ];
};
})

View File

@@ -0,0 +1,173 @@
{
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;
};
}

View File

@@ -0,0 +1,46 @@
{
stdenv,
lib,
fetchFromGitHub,
cmake,
pkg-config,
udev,
protobuf,
}:
stdenv.mkDerivation rec {
pname = "codecserver";
version = "0.2.0";
src = fetchFromGitHub {
owner = "jketterl";
repo = "codecserver";
rev = version;
sha256 = "sha256-JzaVBFl3JsFNDm4gy1qOKA9uAjUjNeMiI39l5gfH0aE=";
};
nativeBuildInputs = [
cmake
pkg-config
];
buildInputs = [
udev
];
propagatedBuildInputs = [ protobuf ];
postFixup = ''
substituteInPlace "$out"/lib/pkgconfig/codecserver.pc \
--replace-fail '=''${prefix}//' '=/' \
--replace-fail '=''${exec_prefix}//' '=/'
'';
meta = with lib; {
homepage = "https://github.com/jketterl/codecserver";
description = "Modular audio codec server";
license = licenses.gpl3Only;
platforms = platforms.unix;
mainProgram = "codecserver";
};
}

View File

@@ -0,0 +1,69 @@
{
lib,
stdenv,
csound,
desktop-file-utils,
fetchFromGitHub,
python3,
python-qt,
qmake,
qtwebengine,
qtxmlpatterns,
rtmidi,
wrapQtAppsHook,
}:
stdenv.mkDerivation rec {
pname = "csound-qt";
version = "1.1.3";
src = fetchFromGitHub {
owner = "CsoundQt";
repo = "CsoundQt";
rev = "v${version}";
hash = "sha256-ZdQwWRAr6AKLmZ/L0lSxIlvWRLoZIKinn7BAQiR+luk=";
};
patches = [
./rtmidipath.patch
];
nativeBuildInputs = [
qmake
qtwebengine
qtxmlpatterns
wrapQtAppsHook
];
buildInputs = [
csound
desktop-file-utils
rtmidi
];
qmakeFlags = [
"qcs.pro"
"CONFIG+=rtmidi"
"CONFIG+=pythonqt"
"CONFIG+=record_support"
"CONFIG+=html_webengine"
"CSOUND_INCLUDE_DIR=${csound}/include/csound"
"CSOUND_LIBRARY_DIR=${csound}/lib"
"RTMIDI_DIR=${rtmidi.src}"
"PYTHONQT_SRC_DIR=${python-qt.src}"
"PYTHONQT_LIB_DIR=${python-qt}/lib"
"LIBS+=-L${python-qt}/lib"
"INSTALL_DIR=${placeholder "out"}"
"SHARE_DIR=${placeholder "out"}/share"
"PYTHON_DIR=${python3}"
"PYTHON_VERSION=3.${python3.sourceVersion.minor}"
];
meta = with lib; {
description = "CsoundQt is a frontend for Csound with editor, integrated help, widgets and other features";
homepage = "https://csoundqt.github.io/";
license = licenses.gpl2;
platforms = platforms.linux;
maintainers = with maintainers; [ hlolli ];
};
}

View File

@@ -0,0 +1,17 @@
diff --git a/src/src.pri b/src/src.pri
index e5e0c896..9a9fa513 100644
--- a/src/src.pri
+++ b/src/src.pri
@@ -155,9 +155,9 @@ pythonqt {
"src/pyqcsobject.cpp"
}
rtmidi {
- HEADERS += "src/../$${RTMIDI_DIR}/RtMidi.h"
- SOURCES += "src/../$${RTMIDI_DIR}/RtMidi.cpp"
- INCLUDEPATH += src/../$${RTMIDI_DIR}
+ HEADERS += "$${RTMIDI_DIR}/RtMidi.h"
+ SOURCES += "$${RTMIDI_DIR}/RtMidi.cpp"
+ INCLUDEPATH += $${RTMIDI_DIR}
}
perfThread_build {

View File

@@ -0,0 +1,90 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
libsndfile,
libsamplerate,
flex,
bison,
boost,
gettext,
portaudio,
alsa-lib ? null,
libpulseaudio ? null,
libjack2 ? null,
liblo ? null,
ladspa-sdk ? null,
fluidsynth ? null,
# , gmm ? null # opcodes don't build with gmm 5.1
eigen ? null,
curl ? null,
tcltk ? null,
fltk ? null,
}:
stdenv.mkDerivation {
pname = "csound";
version = "6.18.1-unstable-2024-07-02";
hardeningDisable = [ "format" ];
src = fetchFromGitHub {
owner = "csound";
repo = "csound";
rev = "2536da284dd70ec7272040cb0763f70ae57123c4";
sha256 = "sha256-NDYltwmjBsX1DWCjy8/4cXMSl3/mK+HaQHSKUmRR9TI=";
};
cmakeFlags = [
"-DBUILD_CSOUND_AC=0"
] # fails to find Score.hpp
++ lib.optional stdenv.hostPlatform.isDarwin "-DCS_FRAMEWORK_DEST=${placeholder "out"}/lib"
# Ignore gettext in CMAKE_PREFIX_PATH on cross to prevent find_program picking up the wrong gettext
++ lib.optional (
stdenv.hostPlatform != stdenv.buildPlatform
) "-DCMAKE_IGNORE_PATH=${lib.getBin gettext}/bin";
nativeBuildInputs = [
cmake
flex
bison
gettext
];
buildInputs = [
libsndfile
libsamplerate
boost
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
portaudio
]
++ lib.optionals stdenv.hostPlatform.isLinux (
builtins.filter (optional: optional != null) [
alsa-lib
libpulseaudio
libjack2
liblo
ladspa-sdk
fluidsynth
eigen
curl
tcltk
fltk
]
);
postInstall = lib.optional stdenv.hostPlatform.isDarwin ''
mkdir -p $out/Library/Frameworks
ln -s $out/lib/CsoundLib64.framework $out/Library/Frameworks
'';
meta = with lib; {
description = "Sound design, audio synthesis, and signal processing system, providing facilities for music composition and performance on all major operating systems and platforms";
homepage = "https://csound.com/";
license = licenses.lgpl21Plus;
maintainers = [ maintainers.marcweber ];
platforms = platforms.unix;
broken = stdenv.hostPlatform.isDarwin;
};
}

View File

@@ -0,0 +1,196 @@
{
lib,
config,
clangStdenv,
fetchFromGitHub,
autoconf,
automake,
libtool,
intltool,
pkg-config,
jansson,
swift-corelibs-libdispatch,
# deadbeef can use either gtk2 or gtk3
gtk2Support ? false,
gtk2,
gtk3Support ? true,
gtk3,
gsettings-desktop-schemas,
wrapGAppsHook3,
# input plugins
vorbisSupport ? true,
libvorbis,
mp123Support ? true,
libmad,
flacSupport ? true,
flac,
wavSupport ? true,
libsndfile,
cdaSupport ? true,
libcdio,
libcddb,
aacSupport ? true,
faad2,
opusSupport ? true,
opusfile,
wavpackSupport ? false,
wavpack,
ffmpegSupport ? false,
ffmpeg,
apeSupport ? true,
yasm,
# misc plugins
zipSupport ? true,
libzip,
artworkSupport ? true,
imlib2,
hotkeysSupport ? true,
libX11,
osdSupport ? true,
dbus,
# output plugins
alsaSupport ? true,
alsa-lib,
pulseSupport ? config.pulseaudio or true,
libpulseaudio,
pipewireSupport ? true,
pipewire,
# effect plugins
resamplerSupport ? true,
libsamplerate,
overloadSupport ? true,
zlib,
# transports
remoteSupport ? true,
curl,
}:
assert gtk2Support || gtk3Support;
let
inherit (lib) optionals;
version = "1.10.0";
in
clangStdenv.mkDerivation {
pname = "deadbeef";
inherit version;
src = fetchFromGitHub {
owner = "DeaDBeeF-Player";
repo = "deadbeef";
fetchSubmodules = true;
rev = version;
hash = "sha256-qa0ULmE15lV2vkyXPNW9kSISQZEANrjwJwykTiifk5Q=";
};
buildInputs = [
jansson
swift-corelibs-libdispatch
]
++ optionals gtk2Support [
gtk2
]
++ optionals gtk3Support [
gtk3
gsettings-desktop-schemas
]
++ optionals vorbisSupport [
libvorbis
]
++ optionals mp123Support [
libmad
]
++ optionals flacSupport [
flac
]
++ optionals wavSupport [
libsndfile
]
++ optionals cdaSupport [
libcdio
libcddb
]
++ optionals aacSupport [
faad2
]
++ optionals opusSupport [
opusfile
]
++ optionals zipSupport [
libzip
]
++ optionals ffmpegSupport [
ffmpeg
]
++ optionals apeSupport [
yasm
]
++ optionals artworkSupport [
imlib2
]
++ optionals hotkeysSupport [
libX11
]
++ optionals osdSupport [
dbus
]
++ optionals alsaSupport [
alsa-lib
]
++ optionals pulseSupport [
libpulseaudio
]
++ optionals pipewireSupport [
pipewire
]
++ optionals resamplerSupport [
libsamplerate
]
++ optionals overloadSupport [
zlib
]
++ optionals wavpackSupport [
wavpack
]
++ optionals remoteSupport [
curl
];
nativeBuildInputs = [
autoconf
automake
intltool
libtool
pkg-config
]
++ optionals gtk3Support [
wrapGAppsHook3
];
enableParallelBuilding = true;
preConfigure = ''
./autogen.sh
'';
postPatch = ''
# Fix the build on c++17 compiler:
# https://github.com/DeaDBeeF-Player/deadbeef/issues/3012
# TODO: remove after 1.9.5 release.
substituteInPlace plugins/adplug/Makefile.am --replace 'adplug_la_CXXFLAGS = ' 'adplug_la_CXXFLAGS = -std=c++11 '
'';
meta = with lib; {
description = "Ultimate Music Player for GNU/Linux";
mainProgram = "deadbeef";
homepage = "http://deadbeef.sourceforge.net/";
downloadPage = "https://github.com/DeaDBeeF-Player/deadbeef";
license = licenses.gpl2;
platforms = [
"x86_64-linux"
"i686-linux"
];
maintainers = [ ];
};
}

View File

@@ -0,0 +1,52 @@
{
lib,
stdenv,
fetchFromGitHub,
autoconf,
automake,
libtool,
pkg-config,
libxml2,
deadbeef,
glib,
gtk3,
}:
stdenv.mkDerivation rec {
pname = "deadbeef-headerbar-gtk3-plugin";
version = "1.2";
src = fetchFromGitHub {
owner = "saivert";
repo = "ddb_misc_headerbar_GTK3";
rev = "v${version}";
sha256 = "1v1schvnps7ypjqgcbqi74a45w8r2gbhrawz7filym22h1qr9wn0";
};
nativeBuildInputs = [
autoconf
automake
libtool
pkg-config
libxml2
];
buildInputs = [
deadbeef
glib
gtk3
];
# Choose correct installation path
# https://github.com/saivert/ddb_misc_headerbar_GTK3/commit/50ff75f76aa9d40761e352311670a894bfcd5cf6#r30319680
makeFlags = [ "pkglibdir=$(out)/lib/deadbeef" ];
preConfigure = "./autogen.sh";
meta = with lib; {
description = "Plug-in that adds GTK 3 header bar to the DeaDBeeF music player";
homepage = "https://github.com/saivert/ddb_misc_headerbar_GTK3";
license = licenses.gpl2Plus;
maintainers = [ maintainers.jtojnar ];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,40 @@
{
lib,
stdenv,
fetchFromGitHub,
pkg-config,
deadbeef,
gtkmm3,
libxmlxx3,
}:
stdenv.mkDerivation {
pname = "deadbeef-lyricbar-plugin";
version = "unstable-2019-01-29";
src = fetchFromGitHub {
owner = "C0rn3j";
repo = "deadbeef-lyricbar";
rev = "8f99b92ef827c451c43fc7dff38ae4f15c355e8e";
sha256 = "108hx5530f4xm8p9m2bk79nq7jkhcj39ad3vmxb2y6h6l2zv5kwl";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [
deadbeef
gtkmm3
libxmlxx3
];
NIX_CFLAGS_COMPILE = "-Wno-incompatible-pointer-types";
buildFlags = [ "gtk3" ];
meta = with lib; {
description = "Plugin for DeaDBeeF audio player that fetches and shows the songs lyrics";
homepage = "https://github.com/C0rn3j/deadbeef-lyricbar";
license = licenses.mit;
maintainers = [ maintainers.jtojnar ];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,39 @@
{
lib,
stdenv,
fetchFromGitHub,
deadbeef,
autoreconfHook,
pkg-config,
glib,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "deadbeef-mpris2-plugin";
version = "1.16";
src = fetchFromGitHub {
owner = "DeaDBeeF-Player";
repo = "deadbeef-mpris2-plugin";
rev = "v${finalAttrs.version}";
hash = "sha256-f6iHgwLdzQJJEquyuUQGWFfOfpjH/Hxh9IqQ5HkYrog=";
};
nativeBuildInputs = [
autoreconfHook
pkg-config
];
buildInputs = [
deadbeef
glib
];
meta = with lib; {
description = "MPRISv2 plugin for the DeaDBeeF music player";
homepage = "https://github.com/DeaDBeeF-Player/deadbeef-mpris2-plugin/";
license = licenses.gpl2;
platforms = platforms.linux;
maintainers = [ ];
};
})

View File

@@ -0,0 +1,50 @@
{
deadbeef,
fetchFromGitHub,
fftw,
glib,
gtk3,
lib,
pkg-config,
stdenv,
}:
stdenv.mkDerivation {
pname = "deadbeef-musical-spectrum-plugin";
version = "unstable-2020-07-01";
src = fetchFromGitHub {
owner = "cboxdoerfer";
repo = "ddb_musical_spectrum";
rev = "a97fd4e1168509911ab43ba32d815b5489000a06";
sha256 = "0p33wyqi27y0q1mvjv5nn6l3vvqlg6b8yd6k2l07bax670bl0q3g";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [
deadbeef
fftw
glib
gtk3
];
makeFlags = [ "gtk3" ];
NIX_CFLAGS_COMPILE = "-Wno-incompatible-pointer-types";
installPhase = ''
runHook preInstall
mkdir -p $out/lib/deadbeef
install -v -c -m 644 gtk3/ddb_vis_musical_spectrum_GTK3.so $out/lib/deadbeef/
runHook postInstall
'';
meta = with lib; {
description = "Musical spectrum plugin for the DeaDBeeF music player";
homepage = "https://github.com/cboxdoerfer/ddb_musical_spectrum";
license = licenses.gpl2Plus;
platforms = platforms.linux;
maintainers = [ maintainers.ddelabru ];
};
}

View File

@@ -0,0 +1,51 @@
{
lib,
stdenv,
fetchFromGitHub,
pkg-config,
deadbeef,
gtk3,
}:
stdenv.mkDerivation {
pname = "deadbeef-playlist-manager-plugin";
version = "unstable-2021-05-02";
src = fetchFromGitHub {
owner = "kpcee";
repo = "deadbeef-playlist-manager";
rev = "b1393022b2d9ea0a19b845420146e0fc56cd9c0a";
sha256 = "sha256-dsKthlQ0EuX4VhO8K9VTyX3zN8ytzDUbSi/xSMB4xRw=";
};
nativeBuildInputs = [
pkg-config
];
buildInputs = [
deadbeef
gtk3
];
installPhase = ''
runHook preInstall
mkdir -p $out/lib/deadbeef/
cp *.so $out/lib/deadbeef/
runHook postInstall
'';
buildFlags = [
"CFLAGS=-I${deadbeef}/include/deadbeef"
"gtk3"
];
meta = with lib; {
description = "Removes duplicate and vanished files from the current playlist";
homepage = "https://github.com/kpcee/deadbeef-playlist-manager";
license = licenses.gpl2Plus;
maintainers = [ maintainers.cmm ];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,51 @@
{
lib,
stdenv,
fetchFromGitHub,
pkg-config,
deadbeef,
gtk3,
perl,
libdbusmenu,
}:
stdenv.mkDerivation rec {
pname = "deadbeef-statusnotifier-plugin";
version = "1.6";
src = fetchFromGitHub {
owner = "vovochka404";
repo = "deadbeef-statusnotifier-plugin";
rev = "v${version}";
sha256 = "sha256-6WEbY59vPNrL3W5GUwFQJimmSS+td8Ob+G46fPAxfV4=";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [
deadbeef
gtk3
libdbusmenu
];
buildFlags = [ "gtk3" ];
postPatch = ''
substituteInPlace tools/glib-mkenums \
--replace /usr/bin/perl "${perl}/bin/perl"
'';
installPhase = ''
runHook preInstall
mkdir -p $out/lib/deadbeef
cp build/sni_gtk3.so $out/lib/deadbeef
runHook postInstall
'';
meta = with lib; {
description = "DeaDBeeF StatusNotifier Plugin";
homepage = "https://github.com/vovochka404/deadbeef-statusnotifier-plugin";
license = licenses.gpl3Plus;
maintainers = [ maintainers.kurnevsky ];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,47 @@
{
lib,
stdenv,
fetchFromGitHub,
deadbeef,
pkg-config,
gtk3,
sqlite,
}:
stdenv.mkDerivation {
pname = "deadbeef-waveform-seekbar-plugin";
version = "0-unstable-2024-11-13";
# using a fork because original throws a compilation error
src = fetchFromGitHub {
owner = "Jbsco";
repo = "ddb_waveform_seekbar";
rev = "2e5ea867a77e37698524d22f41fc59ffae16e63d";
hash = "sha256-m6lBF+Yq1gah6kjb9VvIsjVg1i++08JPLzcLLMt+8J8=";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [
deadbeef
gtk3
sqlite
];
makeFlags = [ "gtk3" ];
installPhase = ''
runHook preInstall
mkdir -p $out/lib/deadbeef/
install -v -c -m 644 gtk3/ddb_misc_waveform_GTK3.so $out/lib/deadbeef/
runHook postInstall
'';
meta = {
description = "Waveform Seekbar plugin for DeaDBeeF audio player";
homepage = "https://github.com/cboxdoerfer/ddb_waveform_seekbar";
license = lib.licenses.gpl2Plus;
platforms = lib.platforms.linux;
maintainers = [ lib.maintainers.deudz ];
};
}

View File

@@ -0,0 +1,19 @@
{
symlinkJoin,
deadbeef,
makeWrapper,
plugins,
}:
symlinkJoin {
name = "deadbeef-with-plugins-${deadbeef.version}";
paths = [ deadbeef ] ++ plugins;
nativeBuildInputs = [ makeWrapper ];
postBuild = ''
wrapProgram $out/bin/deadbeef \
--set DEADBEEF_PLUGIN_DIR "$out/lib/deadbeef"
'';
}

View File

@@ -0,0 +1,83 @@
{
mkDerivation,
lib,
fetchFromGitHub,
fftw,
libsndfile,
qtbase,
qtmultimedia,
qmake,
}:
let
reaperFork = {
src = fetchFromGitHub {
sha256 = "07m2wf2gqyya95b65gawrnr4pvc9jyzmg6h8sinzgxlpskz93wwc";
rev = "39053e8896eedd7b3e8a9e9a9ffd80f1fc6ceb16";
repo = "REAPER";
owner = "gillesdegottex";
};
meta = with lib; {
license = licenses.asl20;
};
};
libqaudioextra = {
src = fetchFromGitHub {
sha256 = "0m6x1qm7lbjplqasr2jhnd2ndi0y6z9ybbiiixnlwfm23sp15wci";
rev = "9ae051989a8fed0b2f8194b1501151909a821a89";
repo = "libqaudioextra";
owner = "gillesdegottex";
};
meta = with lib; {
license = licenses.gpl3Plus;
};
};
in
mkDerivation rec {
pname = "dfasma";
version = "1.4.5";
src = fetchFromGitHub {
sha256 = "09fcyjm0hg3y51fnjax88m93im39nbynxj79ffdknsazmqw9ac0h";
rev = "v${version}";
repo = "dfasma";
owner = "gillesdegottex";
};
buildInputs = [
fftw
libsndfile
qtbase
qtmultimedia
];
nativeBuildInputs = [ qmake ];
postPatch = ''
cp -Rv "${reaperFork.src}"/* external/REAPER
cp -Rv "${libqaudioextra.src}"/* external/libqaudioextra
substituteInPlace dfasma.pro --replace "CONFIG += file_sdif" "";
'';
meta = with lib; {
description = "Analyse and compare audio files in time and frequency";
mainProgram = "dfasma";
longDescription = ''
DFasma is free open-source software to compare audio files by time and
frequency. The comparison is first visual, using wavforms and spectra. It
is also possible to listen to time-frequency segments in order to allow
perceptual comparison. It is basically dedicated to analysis. Even though
there are basic functionalities to align the signals in time and
amplitude, this software does not aim to be an audio editor.
'';
homepage = "https://gillesdegottex.gitlab.io/dfasma-website/";
license = [
licenses.gpl3Plus
reaperFork.meta.license
];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,58 @@
{
stdenv,
lib,
pkg-config,
fetchurl,
cmake,
libjack2,
alsa-lib,
libsndfile,
liblo,
lv2,
qt6,
xorg,
}:
stdenv.mkDerivation rec {
pname = "drumkv1";
version = "1.3.2";
src = fetchurl {
url = "mirror://sourceforge/drumkv1/drumkv1-${version}.tar.gz";
hash = "sha256-Z9F9lbLSAJRlVh7tnSMNTlK7FiZhhlVfeHPlbbVuWXk=";
};
buildInputs = [
libjack2
alsa-lib
libsndfile
liblo
lv2
xorg.libX11
qt6.qtbase
qt6.qtwayland
qt6.qtsvg
];
nativeBuildInputs = [
pkg-config
cmake
qt6.wrapQtAppsHook
];
cmakeFlags = [
# disable experimental feature "LV2 port change request"
"-DCONFIG_LV2_PORT_CHANGE_REQUEST=false"
# override libdir -- temporary until upstream fixes CMakeLists.txt
"-DCMAKE_INSTALL_LIBDIR=lib"
];
meta = with lib; {
description = "Old-school drum-kit sampler synthesizer with stereo fx";
mainProgram = "drumkv1_jack";
homepage = "http://drumkv1.sourceforge.net/";
license = licenses.gpl2Plus;
platforms = platforms.linux;
maintainers = [ maintainers.theredstonedev ];
};
}

View File

@@ -0,0 +1,13 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 34f3094..b161ba8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,7 +4,7 @@ if (VCPKG)
include("${CMAKE_SOURCE_DIR}/cmake/vcpkg.cmake")
endif ()
-project("Easy Audio Sync"
+project("easyaudiosync"
VERSION 1.1.2
DESCRIPTION "Audio library syncing and conversion utility"
HOMEPAGE_URL "https://github.com/complexlogic/EasyAudioSync"

View File

@@ -0,0 +1,35 @@
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index e7befae..e7dc255 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -86,7 +86,6 @@ if (UNIX)
)
endif ()
if (APPLE)
- if (DMG)
set_target_properties(${EXECUTABLE_NAME} PROPERTIES
MACOSX_BUNDLE ON
MACOSX_BUNDLE_EXECUTABLE_NAME "${EXECUTABLE_NAME}"
@@ -94,21 +93,12 @@ if (UNIX)
MACOSX_BUNDLE_ICON_FILE "${EXECUTABLE_NAME}.icns"
MACOSX_BUNDLE_GUI_IDENTIFIER "${RDNS_NAME}"
MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJECT_VERSION}"
- MACOSX_BUNDLE_BUNDLE_NAME "${PROJECT_NAME}"
+ MACOSX_BUNDLE_BUNDLE_NAME "Easy Audio Sync"
MACOSX_BUNDLE_SHORT_VERSION_STRING "${PROJECT_VERSION}"
MACOSX_BUNDLE_BUNDLE_VERSION "${PROJECT_VERSION}"
MACOSX_BUNDLE_COPYRIGHT "Public Domain"
)
- install(CODE "include(BundleUtilities)\nfixup_bundle(\"${PROJECT_BINARY_DIR}/${EXECUTABLE_NAME}.app\" \"\" \"\")")
- add_custom_target(my_install COMMAND ${CMAKE_COMMAND} --build . --target install WORKING_DIRECTORY "${PROJECT_BINARY_DIR}")
- add_custom_target(dmg
- COMMAND mv "${EXECUTABLE_NAME}.app" "${PROJECT_NAME}.app" # fixup_bundle won't accept app names with spaces so need to manually rename
- COMMAND "${MACDEPLOYQT}" "${PROJECT_NAME}.app" -dmg
- COMMAND mv "${PROJECT_NAME}.dmg" "${EXECUTABLE_NAME}-${PROJECT_VERSION}-${CMAKE_OSX_ARCHITECTURES}.dmg"
- WORKING_DIRECTORY "${PROJECT_BINARY_DIR}")
- add_dependencies(dmg my_install)
- endif ()
else ()
install(TARGETS ${EXECUTABLE_NAME} DESTINATION "${CMAKE_INSTALL_PREFIX}/bin")
set (DATA_DIR "${CMAKE_INSTALL_PREFIX}/share")

View File

@@ -0,0 +1,21 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7065538..1946574 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -19,14 +19,8 @@ set(EXECUTABLE_OUTPUT_PATH "${PROJECT_BINARY_DIR}")
set(VS_STARTUP_PROJECT ${EXECUTABLE_NAME})
# Configure options
-if (WIN32 OR APPLE)
- set(QT_VERSION "6")
-else ()
- set(QT_VERSION "5" CACHE STRING "Qt major version to use (5 or 6).")
- if (NOT (QT_VERSION STREQUAL "5" OR QT_VERSION STREQUAL "6"))
- message(FATAL_ERROR "Unsupported Qt version '${QT_VERSION}'. Only 5 and 6 are supported")
- endif ()
-endif ()
+set(QT_VERSION "6")
+
if (APPLE)
option(DMG "Make deployable DMG" OFF)
endif ()

View File

@@ -0,0 +1,101 @@
{
lib,
stdenv,
fetchFromGitHub,
pkg-config,
cmake,
qtbase,
qttools,
spdlog,
ffmpeg,
taglib,
wrapQtAppsHook,
makeDesktopItem,
copyDesktopItems,
}:
stdenv.mkDerivation rec {
pname = "easyaudiosync";
version = "1.1.2";
src = fetchFromGitHub {
owner = "complexlogic";
repo = "EasyAudioSync";
rev = "v${version}";
hash = "sha256-UCOL4DzynKjNDvS0HZ4/K+Wn5lOqHZ0bNop0zqJl5kc=";
};
patches = [
./0001-fix-project-name.patch
./0003-fix-darwin-app.patch
./0004-force-qt6.patch
];
nativeBuildInputs = [
cmake
pkg-config
wrapQtAppsHook
]
++ lib.optional stdenv.hostPlatform.isLinux copyDesktopItems;
buildInputs = [
qtbase
qttools
ffmpeg
spdlog
taglib
];
installPhase = ''
runHook preInstall
''
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
mkdir -p $out/Applications
mv "easyaudiosync.app" "Easy Audio Sync.app"
cp -r "Easy Audio Sync.app" $out/Applications
''
+ lib.optionalString stdenv.hostPlatform.isLinux ''
install -Dm755 easyaudiosync $out/bin/easyaudiosync
for RES in 48 64 128 256; do
install -Dm755 "$src/assets/icons/easyaudiosync''${RES}.png" "$out/share/icons/hicolor/''${RES}x''${RES}/apps/easyaudiosync.png"
done
install -Dm755 "$src/assets/icons/easyaudiosync.svg" "$out/share/icons/hicolor/scalable/apps/easyaudiosync.svg"
''
+ ''
runHook postInstall
'';
desktopItems = [
(makeDesktopItem {
name = "easyaudiosync";
exec = "easyaudiosync";
icon = "easyaudiosync";
desktopName = "Easy Audio Sync";
categories = [
"Qt"
"Audio"
"AudioVideo"
];
comment = "Audio library syncing and conversion utility";
})
];
meta = with lib; {
description = "Audio library syncing and conversion utility";
longDescription = ''
Easy Audio Sync is an audio library syncing and conversion utility.
The intended use is syncing an audio library with many lossless files to a mobile device
with limited storage.
The program's design is inspired by the rsync utility. It supports folder-based
source to destination syncing, with added audio transcoding capability, and is
GUI-based instead of CLI-based.
'';
homepage = "https://github.com/complexlogic/EasyAudioSync";
license = licenses.unlicense;
maintainers = with maintainers; [ matteopacini ];
platforms = platforms.linux ++ platforms.darwin;
};
}

View File

@@ -0,0 +1,142 @@
{
stdenv,
lib,
fetchFromGitHub,
fetchpatch,
replaceVars,
# build system
autoconf,
automake,
cmake,
libtool,
makeWrapper,
ninja,
pkg-config,
ronn,
which,
# dependencies
alsa-plugins,
asyncSupport ? true,
klattSupport ? true,
mbrola,
mbrolaSupport ? true,
pcaudiolib,
pcaudiolibSupport ? true,
sonic,
sonicSupport ? true,
speechPlayerSupport ? true,
ucdSupport ? false,
buildPackages,
}:
let
version = "1.52.0.1-unstable-2025-09-09";
src = fetchFromGitHub {
owner = "espeak-ng";
repo = "espeak-ng";
rev = "0d451f8c1c6ae837418b823bd9c4cbc574ea9ff5";
hash = "sha256-wpPi+YjSLhsEWfE3KEbL4A7o48qtz9fLRZ/u4xGOM2g=";
};
ucd-tools = stdenv.mkDerivation {
pname = "ucd-tools";
inherit version src;
sourceRoot = "${src.name}/src/ucd-tools";
# fix compatibility with CMake (https://cmake.org/cmake/help/v4.0/policy/CMP0000.html)
postPatch = ''
echo 'cmake_minimum_required(VERSION 4.0)' >> CMakeLists.txt
'';
nativeBuildInputs = [ cmake ];
installPhase = ''
runHook preInstall
mkdir $out
cp -v libucd.a $out/
runHook postInstall
'';
};
in
stdenv.mkDerivation rec {
pname = "espeak-ng";
inherit version src;
patches = [
# https://github.com/espeak-ng/espeak-ng/pull/2274
(fetchpatch {
name = "libsonic.patch";
url = "https://github.com/espeak-ng/espeak-ng/commit/83e646e711af608fafa8c01dd812cd29e073f644.patch";
hash = "sha256-UHuURyqRy/JVYYJH5EI5J2cpBfCNeTE24sMmheb+D2Q=";
})
]
++ lib.optionals mbrolaSupport [
# Hardcode correct mbrola paths.
(replaceVars ./mbrola.patch {
inherit mbrola;
})
];
postPatch = lib.optionalString ucdSupport ''
ln -s ${ucd-tools}/libucd.a src/ucd-tools/libucd.a
'';
nativeBuildInputs = [
autoconf
automake
cmake
libtool
ninja
pkg-config
ronn
makeWrapper
which
]
# Provide a native espeak-ng when cross compiling so intonations can be built
++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
buildPackages.espeak-ng
];
buildInputs =
lib.optional mbrolaSupport mbrola
++ lib.optional pcaudiolibSupport pcaudiolib
++ lib.optional sonicSupport sonic;
cmakeFlags = [
(lib.cmakeBool "BUILD_SHARED_LIBS" true)
(lib.cmakeBool "USE_ASYNC" asyncSupport)
(lib.cmakeBool "USE_KLATT" klattSupport)
(lib.cmakeBool "USE_LIBPCAUDIO" pcaudiolibSupport)
(lib.cmakeBool "USE_LIBSONIC" sonicSupport)
(lib.cmakeBool "USE_MBROLA" mbrolaSupport)
(lib.cmakeBool "USE_SPEECHPLAYER" speechPlayerSupport)
]
# Point CMake to the native builds binary dir when cross compiling
++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
"-DNativeBuild_DIR=${buildPackages.espeak-ng}/bin/"
];
postInstall = lib.optionalString stdenv.hostPlatform.isLinux ''
wrapProgram $out/bin/espeak-ng \
--set ALSA_PLUGIN_DIR ${alsa-plugins}/lib/alsa-lib
'';
passthru = {
inherit mbrolaSupport ucd-tools;
};
meta = {
description = "Speech synthesizer that supports more than hundred languages and accents";
homepage = "https://github.com/espeak-ng/espeak-ng";
changelog = "https://github.com/espeak-ng/espeak-ng/blob/${src.rev}/ChangeLog.md";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ aske ];
platforms = lib.platforms.all;
mainProgram = "espeak-ng";
};
}

View File

@@ -0,0 +1,26 @@
diff --git a/src/libespeak-ng/mbrowrap.c b/src/libespeak-ng/mbrowrap.c
index e3e4b702..de06dd21 100644
--- a/src/libespeak-ng/mbrowrap.c
+++ b/src/libespeak-ng/mbrowrap.c
@@ -209,7 +209,7 @@ static int start_mbrola(const char *voice_path)
signal(SIGTERM, SIG_IGN);
snprintf(charbuf, sizeof(charbuf), "%g", mbr_volume);
- execlp("mbrola", "mbrola", "-e", "-v", charbuf,
+ execlp("@mbrola/bin/mbrola@", "mbrola", "-e", "-v", charbuf,
voice_path, "-", "-.wav", (char *)NULL);
/* if execution reaches this point then the exec() failed */
snprintf(mbr_errorbuf, sizeof(mbr_errorbuf),
diff --git a/src/libespeak-ng/synth_mbrola.c b/src/libespeak-ng/synth_mbrola.c
index 5f9b0458..26a05635 100644
--- a/src/libespeak-ng/synth_mbrola.c
+++ b/src/libespeak-ng/synth_mbrola.c
@@ -95,7 +95,7 @@ espeak_ng_STATUS LoadMbrolaTable(const char *mbrola_voice, const char *phtrans,
if (!load_MBR())
return ENS_MBROLA_NOT_FOUND;
- sprintf(path, "%s/mbrola/%s", path_home, mbrola_voice);
+ sprintf(path, "%s/@mbrola@/%s", path_home, mbrola_voice);
#if PLATFORM_POSIX
// if not found, then also look in
// $data_dir/mbrola/xx, $data_dir/mbrola/xx/xx, $data_dir/mbrola/voices/xx

View File

@@ -0,0 +1,45 @@
{
lib,
stdenv,
fetchurl,
unzip,
portaudio,
}:
stdenv.mkDerivation rec {
pname = "espeak";
version = "1.48.04";
src = fetchurl {
url = "mirror://sourceforge/espeak/espeak-${version}-source.zip";
sha256 = "0n86gwh9pw0jqqpdz7mxggllfr8k0r7pc67ayy7w5z6z79kig6mz";
};
nativeBuildInputs = [ unzip ];
buildInputs = [ portaudio ];
patches = [
./gcc6.patch
];
prePatch = ''
sed -e s,/bin/ln,ln,g -i src/Makefile
sed -e 's,^CXXFLAGS=-O2,CXXFLAGS=-O2 -D PATH_ESPEAK_DATA=\\\"$(DATADIR)\\\",' -i src/Makefile
''
+ (lib.optionalString (portaudio.api_version == 19) ''
cp src/portaudio19.h src/portaudio.h
'');
configurePhase = ''
cd src
makeFlags="PREFIX=$out DATADIR=$out/share/espeak-data"
'';
meta = with lib; {
description = "Compact open source software speech synthesizer";
mainProgram = "espeak";
homepage = "https://espeak.sourceforge.net/";
license = licenses.gpl3Plus;
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,79 @@
{
lib,
stdenv,
fetchurl,
pkg-config,
unzip,
portaudio,
wxGTK32,
sox,
}:
stdenv.mkDerivation rec {
pname = "espeakedit";
version = "1.48.03";
src = fetchurl {
url = "mirror://sourceforge/espeak/espeakedit-${version}.zip";
sha256 = "0x8s7vpb7rw5x37yjzy1f98m4f2csdg89libb74fm36gn8ly0hli";
};
nativeBuildInputs = [
pkg-config
unzip
];
buildInputs = [
portaudio
wxGTK32
];
# TODO:
# Uhm, seems like espeakedit still wants espeak-data/ in $HOME, even thought
# it should use $espeak/share/espeak-data. Have to contact upstream to get
# this fixed.
#
# Workaround:
# cp -r $(nix-build -A espeak)/share/espeak-data ~
# chmod +w ~/espeak-data
patches = [
./gcc6.patch
./espeakedit-fix-makefile.patch
./espeakedit-configurable-sox-path.patch
./espeakedit-configurable-path-espeak-data.patch
./espeakedit-gcc6.patch
./espeakedit-wxgtk30.patch
];
postPatch = ''
# Disable -Wall flag because it's noisy
sed -i "s/-Wall//g" src/Makefile
# Fixup paths (file names from above espeak-configurable* patches)
for file in src/compiledata.cpp src/readclause.cpp src/speech.h; do
sed -e "s|@sox@|${sox}/bin/sox|" \
-e "s|@prefix@|$out|" \
-i "$file"
done
''
+ lib.optionalString (portaudio.api_version == 19) ''
cp src/portaudio19.h src/portaudio.h
'';
buildPhase = ''
make -C src
'';
installPhase = ''
mkdir -p "$out/bin"
cp src/espeakedit "$out/bin"
'';
meta = with lib; {
description = "Phoneme editor for espeak";
mainProgram = "espeakedit";
homepage = "https://espeak.sourceforge.net/";
license = licenses.gpl3Plus;
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,15 @@
Don't hardcode /usr, use @prefix@.
Author: Bjørn Forsman
diff -uNr espeakedit-1.48.03.orig/src/speech.h espeakedit-1.48.03/src/speech.h
--- espeakedit-1.48.03.orig/src/speech.h 2014-03-04 17:48:12.000000000 +0100
+++ espeakedit-1.48.03/src/speech.h 2014-07-22 18:21:40.860790719 +0200
@@ -58,7 +58,7 @@
// will look for espeak_data directory here, and also in user's home directory
#ifndef PATH_ESPEAK_DATA
- #define PATH_ESPEAK_DATA "/usr/share/espeak-data"
+ #define PATH_ESPEAK_DATA "@prefix@/share/espeak-data"
#endif
typedef unsigned short USHORT;

View File

@@ -0,0 +1,27 @@
Make the path to 'sox' configurable by marking it '@sox@' (easy to match with sed).
Author: Bjørn Forsman
diff -uNr espeakedit-1.48.03.orig/src/compiledata.cpp espeakedit-1.48.03/src/compiledata.cpp
--- espeakedit-1.48.03.orig/src/compiledata.cpp 2014-03-04 17:48:11.000000000 +0100
+++ espeakedit-1.48.03/src/compiledata.cpp 2014-07-22 16:38:50.261388452 +0200
@@ -1884,7 +1884,7 @@
fname2 = msg;
}
- sprintf(command,"sox \"%s%s.wav\" -r %d -c1 -t wav %s\n",path_source,fname2,samplerate_native, fname_temp);
+ sprintf(command,"@sox@ \"%s%s.wav\" -r %d -c1 -t wav %s\n",path_source,fname2,samplerate_native, fname_temp);
if(system(command) != 0)
{
failed = 1;
diff -uNr espeakedit-1.48.03.orig/src/readclause.cpp espeakedit-1.48.03/src/readclause.cpp
--- espeakedit-1.48.03.orig/src/readclause.cpp 2014-03-04 17:48:11.000000000 +0100
+++ espeakedit-1.48.03/src/readclause.cpp 2014-07-22 16:38:37.190440504 +0200
@@ -892,7 +892,7 @@
if((fd_temp = mkstemp(fname_temp)) >= 0)
{
close(fd_temp);
- sprintf(command,"sox \"%s\" -r %d -c1 -t wav %s\n", fname, samplerate, fname_temp);
+ sprintf(command,"@sox@ \"%s\" -r %d -c1 -t wav %s\n", fname, samplerate, fname_temp);
if(system(command) == 0)
{
fname = fname_temp;

View File

@@ -0,0 +1,26 @@
Fix broken Makefile:
* fix syntax error (missing '\' to continue line):
Makefile:19: *** recipe commences before first target. Stop.
* Get portaudio library flags from pkg-config (to get -Lpath/to/portaudio/lib etc.)
Author: Bjørn Forsman
diff -uNr espeakedit-1.48.03.orig/src/Makefile espeakedit-1.48.03/src/Makefile
--- espeakedit-1.48.03.orig/src/Makefile 2013-03-13 15:52:02.000000000 +0100
+++ espeakedit-1.48.03/src/Makefile 2014-07-22 15:34:17.524114822 +0200
@@ -12,12 +12,11 @@
WX_LIBS = -pthread `wx-config --libs`
-LIBS=-lstdc++ -lportaudio
+LIBS=-lstdc++ `pkg-config --libs portaudio-2.0`
#LIBS=-lstdc++ /usr/lib/x86_64-linux-gnu/libportaudio.so.2
-CPPFLAGS = -Wall -g -fexceptions `wx-config --cflags`
- -I/usr/include/wx-2.8 \
- -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES
+CPPFLAGS = -Wall -g -fexceptions `wx-config --cflags` \
+ -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES \
-D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA -D_ESPEAKEDIT
CXXFLAGS = -O2 -Wall -fexceptions `wx-config --cflags` \

View File

@@ -0,0 +1,57 @@
diff --git i/src/compiledata.cpp w/src/compiledata.cpp
index f1bcb30..30e9e2d 100755
--- i/src/compiledata.cpp
+++ w/src/compiledata.cpp
@@ -212,7 +212,7 @@ enum {
kTUNE_SPLIT,
};
-static const char utf8_bom[] = {0xef,0xbb,0xbf,0};
+static const char utf8_bom[] = {char(0xef),char(0xbb),char(0xbf),0};
static keywtab_t k_intonation[] = {
{"tune", 0, kTUNE},
diff --git i/src/espeakedit.cpp w/src/espeakedit.cpp
index bde03ea..071689d 100755
--- i/src/espeakedit.cpp
+++ w/src/espeakedit.cpp
@@ -744,7 +744,7 @@ void MyFrame::OnTools(wxCommandEvent& event)
int debug_flag=0;
char fname_log[sizeof(path_dsource)+12];
char err_fname[sizeof(path_home)+15];
- static const char utf8_bom[] = {0xef,0xbb,0xbf,0};
+ static const char utf8_bom[] = {char(0xef),char(0xbb),char(0xbf),0};
switch(event.GetId())
{
diff --git i/src/extras.cpp w/src/extras.cpp
index fa6ac3b..ee68f59 100644
--- i/src/extras.cpp
+++ w/src/extras.cpp
@@ -335,16 +335,16 @@ void Lexicon_It(int pass)
static const char *vowels1 = "aeiou";
static const char *vowels2 = "aeou";
- static const char ex1[] = {'a',0xc3,0xac,0}; // aì
- static const char ex2[] = {'e',0xc3,0xac,0}; // eì
- static const char ex3[] = {0xc3,0xb9,'a',0}; // ùa
- static const char ex4[] = {0xc3,0xb9,'e',0}; // ùe
- static const char ex5[] = {0xc3,0xb9,'i',0}; // ùi
- static const char ex6[] = {0xc3,0xb9,'o',0}; // ùo
- static const char ex7[] = {'c',0xc3,0xac,'a',0}; // cìa
- static const char ex8[] = {'c',0xc3,0xac,'o',0}; // cìo
- static const char ex9[] = {'c',0xc3,0xac,'u',0}; // cìu
- static const char ex10[] = {'g','l',0xc3,0xac,0}; // glì
+ static const char ex1[] = {'a',char(0xc3),char(0xac),0}; // aì
+ static const char ex2[] = {'e',char(0xc3),char(0xac),0}; // eì
+ static const char ex3[] = {char(0xc3),char(0xb9),'a',0}; // ùa
+ static const char ex4[] = {char(0xc3),char(0xb9),'e',0}; // ùe
+ static const char ex5[] = {char(0xc3),char(0xb9),'i',0}; // ùi
+ static const char ex6[] = {char(0xc3),char(0xb9),'o',0}; // ùo
+ static const char ex7[] = {'c',char(0xc3),char(0xac),'a',0}; // cìa
+ static const char ex8[] = {'c',char(0xc3),char(0xac),'o',0}; // cìo
+ static const char ex9[] = {'c',char(0xc3),char(0xac),'u',0}; // cìu
+ static const char ex10[] = {'g','l',char(0xc3),char(0xac),0}; // glì
static const char *exceptions[] = {ex1, ex2, ex3, ex4, ex5, ex6, ex7, ex8, ex9, ex10, NULL};

View File

@@ -0,0 +1,32 @@
diff -uNr a/src/espeakedit.cpp b/src/espeakedit.cpp
--- a/src/espeakedit.cpp
+++ b/src/espeakedit.cpp
@@ -123,7 +126,7 @@ bool MyApp::OnInit(void)
{//=====================
int j;
-wxChar *p;
+const wxChar *p;
char param[120];
diff -uNr a/src/spect.cpp b/src/spect.cpp
--- a/src/spect.cpp
+++ b/src/spect.cpp
@@ -1,6 +1,7 @@
/***************************************************************************
* Copyright (C) 2005 to 2007 by Jonathan Duddington *
* email: jonsd@users.sourceforge.net *
+ * Copyright (C) 2013 by Reece H. Dunn *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
@@ -92,6 +93,8 @@ float SpectTilt(int value, int freq)
SpectFrame::SpectFrame(SpectFrame *copy)
+ : FONT_SMALL(8,wxSWISS,wxNORMAL,wxNORMAL)
+ , FONT_MEDIUM(9,wxSWISS,wxNORMAL,wxNORMAL)
{//=====================================
int ix;

View File

@@ -0,0 +1,13 @@
diff --git c/src/tr_languages.cpp i/src/tr_languages.cpp
index ec210a5..9503f47 100755
--- c/src/tr_languages.cpp
+++ i/src/tr_languages.cpp
@@ -198,7 +198,7 @@ static const unsigned short chars_ignore_zwnj_hyphen[] = {
0x200d, 1, // zero width joiner
0, 0 };
-const char string_ordinal[] = {0xc2,0xba,0}; // masculine ordinal character, UTF-8
+const char string_ordinal[] = {char(0xc2),char(0xba),0}; // masculine ordinal character, UTF-8
static Translator* NewTranslator(void)

View File

@@ -0,0 +1,75 @@
{
stdenv,
lib,
fetchFromGitHub,
cmake,
libuchardet,
pkg-config,
shntool,
flac,
opusTools,
vorbis-tools,
mp3gain,
lame,
taglib,
wavpack,
vorbisgain,
monkeysAudio,
sox,
gtk3,
qtbase,
qttools,
wrapQtAppsHook,
}:
stdenv.mkDerivation rec {
pname = "flacon";
version = "12.0.0";
src = fetchFromGitHub {
owner = "flacon";
repo = "flacon";
rev = "v${version}";
sha256 = "sha256-r9SdQg6JTMoGxO2xUtkkBe5F5cajnsndZEq20BjJGuU=";
};
nativeBuildInputs = [
cmake
pkg-config
wrapQtAppsHook
];
buildInputs = [
qtbase
qttools
libuchardet
taglib
];
bin_path = lib.makeBinPath [
shntool
flac
opusTools
vorbis-tools
mp3gain
lame
wavpack
monkeysAudio
vorbisgain
sox
];
postInstall = ''
wrapProgram $out/bin/flacon \
--suffix XDG_DATA_DIRS : "${gtk3}/share/gsettings-schemas/${gtk3.name}" \
--prefix PATH : "$bin_path";
'';
meta = with lib; {
description = "Extracts audio tracks from an audio CD image to separate tracks";
mainProgram = "flacon";
homepage = "https://flacon.github.io/";
license = licenses.lgpl21;
platforms = platforms.linux;
maintainers = with maintainers; [ snglth ];
};
}

View File

@@ -0,0 +1,53 @@
{
lib,
stdenv,
fetchFromGitHub,
autoconf,
automake,
pkg-config,
fftwFloat,
libjack2,
libsigcxx,
libxml2,
wxGTK,
}:
stdenv.mkDerivation {
pname = "freqtweak";
version = "unstable-2019-08-03";
src = fetchFromGitHub {
owner = "essej";
repo = "freqtweak";
rev = "d4205337558d36657a4ee6b3afb29358aa18c0fd";
sha256 = "10cq27mdgrrc54a40al9ahi0wqd0p2c1wxbdg518q8pzfxaxs5fi";
};
nativeBuildInputs = [
autoconf
automake
pkg-config
];
buildInputs = [
fftwFloat
libjack2
libsigcxx
libxml2
wxGTK
];
preConfigure = ''
sh autogen.sh
'';
enableParallelBuilding = true;
meta = with lib; {
homepage = "http://essej.net/freqtweak/";
description = "Realtime audio frequency spectral manipulation";
maintainers = [ maintainers.magnetophon ];
platforms = platforms.linux;
license = licenses.gpl2Plus;
mainProgram = "freqtweak";
};
}

View File

@@ -0,0 +1,96 @@
{
lib,
stdenv,
fetchurl,
unzip,
copyDesktopItems,
makeDesktopItem,
imagemagick,
SDL,
isStereo ? false,
}:
let
pname = "goattracker" + lib.optionalString isStereo "-stereo";
desktopItem = makeDesktopItem {
name = pname;
desktopName = "GoatTracker 2" + lib.optionalString isStereo " Stereo";
genericName = "Music Tracker";
exec = if isStereo then "gt2stereo" else "goattrk2";
icon = "goattracker";
categories = [
"AudioVideo"
"AudioVideoEditing"
];
keywords = [
"tracker"
"music"
];
};
in
stdenv.mkDerivation (finalAttrs: {
inherit pname;
version =
if isStereo then
"2.77" # stereo
else
"2.77"; # normal
src = fetchurl {
url = "mirror://sourceforge/goattracker2/GoatTracker_${finalAttrs.version}${lib.optionalString isStereo "_Stereo"}.zip";
sha256 =
if isStereo then
"1hiig2d152sv9kazwz33i56x1c54h5sh21ipkqnp6qlnwj8x1ksy" # stereo
else
"sha256-lsK9amqzrKL1uxixx2SsbqaawkXK4UACpyzYfFVFYe8="; # normal
};
sourceRoot = "src";
nativeBuildInputs = [
copyDesktopItems
unzip
imagemagick
];
buildInputs = [ SDL ];
# PREFIX gets treated as BINDIR.
makeFlags = [ "PREFIX=$(out)/bin/" ];
# The zip contains some build artifacts.
prePatch = ''
make clean
'';
# The destination does not get created automatically.
preBuild = ''
mkdir -p $out/bin
'';
# Other files get installed during the build phase.
installPhase = ''
runHook preInstall
convert goattrk2.bmp goattracker.png
install -Dm644 goattracker.png $out/share/icons/hicolor/32x32/apps/goattracker.png
${lib.optionalString (
!isStereo
) "install -Dm644 ../linux/goattracker.1 $out/share/man/man1/goattracker.1"}
runHook postInstall
'';
desktopItems = [ desktopItem ];
meta = {
description =
"Crossplatform music editor for creating Commodore 64 music. Uses reSID library by Dag Lem and supports alternatively HardSID & CatWeasel devices"
+ lib.optionalString isStereo " - Stereo version";
homepage = "https://cadaver.github.io/tools.html";
downloadPage = "https://sourceforge.net/projects/goattracker2/";
license = lib.licenses.gpl2Plus;
mainProgram = if isStereo then "gt2stereo" else "goattrk2";
maintainers = with lib.maintainers; [ fgaz ];
platforms = lib.platforms.all;
};
})

View File

@@ -0,0 +1,34 @@
{
lib,
fetchFromGitHub,
pythonPackages,
}:
with pythonPackages;
buildPythonApplication rec {
pname = "greg";
version = "0.4.8";
format = "setuptools";
disabled = !isPy3k;
src = fetchFromGitHub {
owner = "manolomartinez";
repo = "greg";
tag = "v${version}";
sha256 = "sha256-o4+tXVJTgT52JyJOC+Glr2cvZjbTaZL8TIsmz+A4vE4=";
};
propagatedBuildInputs = [
setuptools
feedparser
];
meta = with lib; {
homepage = "https://github.com/manolomartinez/greg";
description = "Command-line podcast aggregator";
mainProgram = "greg";
license = licenses.gpl3;
maintainers = with maintainers; [ edwtjo ];
};
}

View File

@@ -0,0 +1,141 @@
{
lib,
stdenv,
fetchFromGitHub,
avahi,
bluez,
boost,
curl,
eigen,
faust,
fftw,
gettext,
glib,
glib-networking,
glibmm,
adwaita-icon-theme,
gsettings-desktop-schemas,
gtk3,
gtkmm3,
hicolor-icon-theme,
intltool,
ladspaH,
libjack2,
libsndfile,
lilv,
lrdf,
lv2,
pkg-config,
python3,
sassc,
serd,
sord,
sratom,
wafHook,
wrapGAppsHook3,
zita-convolver,
zita-resampler,
optimizationSupport ? false, # Enable support for native CPU extensions
}:
let
inherit (lib) optional;
in
stdenv.mkDerivation (finalAttrs: {
pname = "guitarix";
version = "0.46.0";
src = fetchFromGitHub {
owner = "brummer10";
repo = "guitarix";
rev = "V${finalAttrs.version}";
fetchSubmodules = true;
hash = "sha256-AftC6fQEDzG/3C/83YbK/++bRgP7vPD0E2X6KEWpowc=";
};
sourceRoot = "${finalAttrs.src.name}/trunk";
nativeBuildInputs = [
gettext
hicolor-icon-theme
intltool
pkg-config
python3
wafHook
wrapGAppsHook3
];
buildInputs = [
avahi
bluez
boost
curl
eigen
faust
fftw
glib
glib-networking.out
glibmm
adwaita-icon-theme
gsettings-desktop-schemas
gtk3
gtkmm3
ladspaH
libjack2
libsndfile
lilv
lrdf
lv2
sassc
serd
sord
sratom
zita-convolver
zita-resampler
];
wafConfigureFlags = [
"--no-font-cache-update"
"--shared-lib"
"--no-desktop-update"
"--enable-nls"
"--install-roboto-font"
]
++ optional optimizationSupport "--optimization";
env.NIX_CFLAGS_COMPILE = toString [ "-fpermissive" ];
meta = with lib; {
description = "Virtual guitar amplifier for Linux running with JACK";
mainProgram = "guitarix";
longDescription = ''
guitarix is a virtual guitar amplifier for Linux running with
JACK (Jack Audio Connection Kit). It is free as in speech and
free as in beer. Its free sourcecode allows to build it for
other UNIX-like systems also, namely for BSD and for MacOSX.
It takes the signal from your guitar as any real amp would do:
as a mono-signal from your sound card. Your tone is processed by
a main amp and a rack-section. Both can be routed separately and
deliver a processed stereo-signal via JACK. You may fill the
rack with effects from more than 25 built-in modules spanning
from a simple noise-gate to brain-slashing modulation-fx like
flanger, phaser or auto-wah. Your signal is processed with
minimum latency. On any properly set-up Linux-system you do not
need to wait for more than 10 milli-seconds for your playing to
be delivered, processed by guitarix.
guitarix offers the range of sounds you would expect from a
full-featured universal guitar-amp. You can get crisp
clean-sounds, nice overdrive, fat distortion and a diversity of
crazy sounds never heard before.
'';
homepage = "https://github.com/brummer10/guitarix";
license = licenses.gpl3Plus;
maintainers = with maintainers; [
lord-valen
];
platforms = platforms.linux;
};
})

View File

@@ -0,0 +1,122 @@
{
stdenv,
alsa-lib,
autoPatchelfHook,
dpkg,
evince,
fetchurl,
flac,
lib,
libmicrohttpd,
libogg,
libusb-compat-0_1,
llvmPackages,
mpfr,
qtcharts,
qtdeclarative,
qtwayland,
qtwebengine,
qtwebview,
wavpack,
wrapQtAppsHook,
}:
let
version = "5.13.0-35";
srcs = {
aarch64-linux = fetchurl {
url = "https://signalyst.com/bins/bookworm/hqplayer5desktop_${version}_arm64.deb";
hash = "sha256-ofS+EDNHKv94GSi9DrZPUhosAZsjSuP8rQghldKZmkU=";
};
x86_64-linux = fetchurl {
url = "https://signalyst.com/bins/noble/hqplayer5desktop_${version}_amd64.deb";
hash = "sha256-ej4H7SuDMkihlJsHcvPIFSGghyqCvVY/7LbCdq6lky4=";
};
};
in
stdenv.mkDerivation {
pname = "hqplayer-desktop";
inherit version;
src =
srcs.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
nativeBuildInputs = [
autoPatchelfHook
dpkg
wrapQtAppsHook
];
buildInputs = [
alsa-lib
flac
stdenv.cc.cc.lib
libmicrohttpd
libogg
libusb-compat-0_1
llvmPackages.openmp
mpfr
qtcharts
qtdeclarative
qtwayland
qtwebengine
qtwebview
wavpack
];
dontPatch = true;
dontConfigure = true;
dontBuild = true;
installPhase = ''
runHook preInstall
# main executable
mkdir -p "$out"/bin
mv ./usr/bin/* "$out"/bin
# documentation
mkdir -p "$doc/share/doc/hqplayer-desktop" "$doc/share/applications"
mv ./usr/share/doc/hqplayer5desktop/* "$doc/share/doc/hqplayer-desktop"
mv ./usr/share/applications/hqplayer5desktop-manual.desktop "$doc/share/applications"
# desktop files
mkdir -p "$out/share/applications"
mv ./usr/share/applications/* "$out/share/applications"
# pixmaps
mkdir -p "$out/share/pixmaps"
mv ./usr/share/pixmaps/* "$out/share/pixmaps"
runHook postInstall
'';
# doc has dependencies on evince that is not required by main app
outputs = [
"out"
"doc"
];
postInstall = ''
for desktopFile in $out/share/applications/hqplayer5{client,desktop}.desktop; do
substituteInPlace "$desktopFile" \
--replace /usr/bin "$out"/bin
done
substituteInPlace "$doc/share/applications/hqplayer5desktop-manual.desktop" \
--replace /usr/share/doc/hqplayer5desktop "$doc/share/doc/hqplayer-desktop" \
--replace evince "${evince}/bin/evince"
'';
postFixup = ''
patchelf --replace-needed libomp.so.5 libomp.so $out/bin/.hqplayer5*-wrapped
'';
meta = with lib; {
homepage = "https://www.signalyst.com";
description = "High-end upsampling multichannel software HD-audio player";
license = licenses.unfree;
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
platforms = builtins.attrNames srcs;
maintainers = with maintainers; [ lovesegfault ];
};
}

View File

@@ -0,0 +1,45 @@
{
mkDerivation,
lib,
fetchFromGitHub,
alsa-lib,
pkg-config,
qtbase,
qtscript,
qmake,
}:
mkDerivation {
pname = "iannix";
version = "unstable-2020-12-09";
src = fetchFromGitHub {
owner = "iannix";
repo = "IanniX";
rev = "287b51d9b90b3e16ae206c0c4292599619f7b159";
sha256 = "AhoP+Ok78Vk8Aee/RP572hJeM8O7v2ZTvFalOZZqRy8=";
};
nativeBuildInputs = [
pkg-config
qmake
];
buildInputs = [
alsa-lib
qtbase
qtscript
];
qmakeFlags = [ "PREFIX=/" ];
installFlags = [ "INSTALL_ROOT=$(out)" ];
meta = with lib; {
description = "Graphical open-source sequencer";
mainProgram = "iannix";
homepage = "https://www.iannix.org/";
license = licenses.lgpl3;
platforms = platforms.linux;
maintainers = with maintainers; [ freezeboy ];
};
}

View File

@@ -0,0 +1,47 @@
From 42eda1afc1cfb0506b02baae894fb32f7e21755d Mon Sep 17 00:00:00 2001
From: ckie <git-525ff67@ckie.dev>
Date: Fri, 10 Mar 2023 04:39:38 +0200
Subject: [PATCH] Avoid using vendored dependencies we have in nixpkgs
---
CMakeLists.txt | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 136e7b0..5416da1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -246,8 +246,6 @@ qt6_add_resources(RESOURCES_OBJ resources/qml.qrc)
qt6_add_big_resources(RESOURCES_OBJ resources/other.qrc)
set_property(SOURCE "${RESOURCES_OBJ}" PROPERTY SKIP_AUTOMOC ON)
-set(ARMADILLO_INCLUDE_DIR external/armadillo/include)
-set(TOMLPP_INCLUDE_DIR external/tomlplusplus/include)
### SEARCH AUDIO MODULES
@@ -334,17 +332,15 @@ target_include_directories(in-formant SYSTEM PRIVATE ${ARMADILLO_INCLUDE_DIR} ${
target_link_libraries(in-formant PRIVATE Eigen3::Eigen ${FFTW_LIBRARIES} Qt6::Charts Qt6::Quick Qt6::QuickControls2 Qt6::QuickTemplates2 Qt6::Qml Qt6::Widgets Qt6::OpenGL Qt6::Gui Qt6::Core)
target_link_directories(in-formant PRIVATE ${FFTW_LIBRARY_DIRS})
-set(BUILD_SHARED_LIBS TRUE)
-add_subdirectory(external/freetype EXCLUDE_FROM_ALL)
+find_package(Freetype)
target_link_libraries(in-formant PRIVATE freetype)
-set(BUILD_SHARED_LIBS)
add_subdirectory(external/rpmalloc EXCLUDE_FROM_ALL)
target_link_libraries(in-formant PRIVATE rpcxx_only)
-add_subdirectory(external/libsamplerate)
-target_link_libraries(in-formant PRIVATE lsr)
-target_include_directories(in-formant PRIVATE external/libsamplerate/src)
+
+find_library(LIBSAMPLERATE_LIBRARY NAMES samplerate libsamplerate-0 samplerate-0)
+target_link_libraries(in-formant PRIVATE ${LIBSAMPLERATE_LIBRARY})
target_compile_definitions(in-formant PRIVATE
-DINFORMANT_VERSION=${CUR_VERSION} -DARMA_DONT_USE_WRAPPER
--
2.39.0

View File

@@ -0,0 +1,77 @@
{
stdenv,
cmake,
lib,
fetchFromGitHub,
wrapQtAppsHook,
qtbase,
qtcharts,
fftw,
libtorch-bin,
portaudio,
eigen,
xorg,
pkg-config,
autoPatchelfHook,
soxr,
libsamplerate,
armadillo,
tomlplusplus,
}:
stdenv.mkDerivation {
pname = "in-formant";
version = "unstable-2022-09-15";
src = fetchFromGitHub {
owner = "in-formant";
repo = "in-formant";
rev = "e0606feecff70f0fd4226ff8f116e46817dd7462";
hash = "sha256-/4eKny9M2e8Lb9LOiKBj9QLE00CAaD+2ZAwn48lnvKQ=";
fetchSubmodules = true;
};
patches = [
# Ignore the freetype sources bundled as a submodule:
# /nix/store/…-harfbuzz-7.0.0/lib/libharfbuzz.so.0: undefined reference to `FT_Get_Transform'
./0001-Avoid-using-vendored-dependencies-we-have-in-nixpkgs.patch
];
nativeBuildInputs = [
cmake
pkg-config
wrapQtAppsHook
autoPatchelfHook
];
buildInputs = [
qtbase
qtcharts
fftw
libtorch-bin
portaudio
eigen
xorg.libxcb
soxr
libsamplerate
armadillo
tomlplusplus
];
installPhase = ''
mkdir -p $out/bin
cp in-formant $out/bin
install -Dm444 $src/dist-res/in-formant.desktop -t $out/share/applications
install -Dm444 $src/dist-res/in-formant.png -t $out/share/icons/hicolor/512x512/apps
'';
meta = with lib; {
description = "Real-time pitch and formant tracking software";
mainProgram = "in-formant";
homepage = "https://github.com/in-formant/in-formant";
license = licenses.asl20;
# currently broken on i686-linux and aarch64-linux due to other nixpkgs dependencies
platforms = [ "x86_64-linux" ];
maintainers = [ ];
};
}

View File

@@ -0,0 +1,45 @@
{
lib,
mkDerivation,
fetchFromGitHub,
pkg-config,
qmake,
qtbase,
libjack2,
}:
mkDerivation {
pname = "jack_autoconnect";
# It does not have any versions (yet?)
version = "unstable-2021-02-01";
src = fetchFromGitHub {
owner = "kripton";
repo = "jack_autoconnect";
rev = "fe0c8f69149e30979e067646f80b9d326341c02b";
sha256 = "sha256-imvNc498Q2W9RKmiOoNepSoJzIv2tGvFG6hx+seiifw=";
};
buildInputs = [
qtbase
libjack2
];
nativeBuildInputs = [
pkg-config
qmake
];
installPhase = ''
mkdir -p -- "$out/bin"
cp -- jack_autoconnect "$out/bin"
'';
meta = with lib; {
homepage = "https://github.com/kripton/jack_autoconnect";
description = "Tiny application that reacts on port registrations by clients and connects them";
mainProgram = "jack_autoconnect";
maintainers = with maintainers; [ unclechu ];
license = licenses.gpl2Only;
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,58 @@
{
mkDerivation,
lib,
fetchFromGitHub,
pkg-config,
scons,
qtbase,
lash,
libjack2,
jack ? libjack2,
alsa-lib,
fetchpatch,
}:
mkDerivation rec {
pname = "jackmix";
version = "0.6.0";
src = fetchFromGitHub {
owner = "kampfschlaefer";
repo = "jackmix";
rev = version;
sha256 = "0p59411vk38lccn24r7nih10jpgg9i46yc26zpc3x13amxwwpd4h";
};
patches = [
./no_error.patch
(fetchpatch {
name = "sconstruct-python3.patch";
url = "https://github.com/kampfschlaefer/jackmix/commit/3a0c868b267728fdbc69cc3dc1941edac27d97f6.patch";
hash = "sha256-MLgxIiZ0+C1IVEci9Q347DR+SJUlPG2N3iPvuhRptJU=";
})
];
nativeBuildInputs = [
scons
pkg-config
];
buildInputs = [
qtbase
lash
jack
alsa-lib
];
installPhase = ''
install -D jackmix/jackmix $out/bin/jackmix
'';
meta = with lib; {
description = "Matrix-Mixer for the Jack-Audio-connection-Kit";
mainProgram = "jackmix";
homepage = "https://github.com/kampfschlaefer/jackmix";
license = licenses.gpl2Only;
maintainers = with maintainers; [ kampfschlaefer ];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,13 @@
diff --git a/SConstruct b/SConstruct
index 8bf6517..a432aa9 100644
--- a/SConstruct
+++ b/SConstruct
@@ -16,7 +16,7 @@ env = Environment(
env.Replace(LIBS="")
env.Replace(LIBPATH="")
-env.MergeFlags(['-Wall', '-Werror', '-g', '-fpic', '-std=c++11'])
+env.MergeFlags(['-g', '-fpic', '-std=c++11'])
tests = {}
tests.update(env['PKGCONFIG_TESTS'])

View File

@@ -0,0 +1,123 @@
{
copyDesktopItems,
fetchFromGitHub,
fetchpatch,
glibmm,
gst_all_1,
lib,
libarchive,
makeDesktopItem,
pipewire,
pkg-config,
pulseaudio,
qmake,
qtbase,
qtsvg,
qtwayland,
stdenv,
usePipewire ? true,
usePulseaudio ? false,
wrapQtAppsHook,
}:
assert lib.asserts.assertMsg (
usePipewire != usePulseaudio
) "You need to enable one and only one of pulseaudio or pipewire support";
stdenv.mkDerivation (finalAttrs: {
pname = "jamesdsp";
version = "2.7.0";
src = fetchFromGitHub {
owner = "Audio4Linux";
repo = "JDSP4Linux";
fetchSubmodules = true;
rev = finalAttrs.version;
hash = "sha256-eVndqIqJ3DRceuFMT++g2riXq0CL5r+TWbvzvaYIfZ8=";
};
nativeBuildInputs = [
qmake
pkg-config
copyDesktopItems
wrapQtAppsHook
];
patches = [
(fetchpatch {
url = "https://github.com/Audio4Linux/JDSP4Linux/pull/241.patch";
hash = "sha256-RtVKlw2ca8An4FodeD0RN95z9yHDHBgAxsEwLAmW7co=";
name = "fix-build-with-new-pipewire.patch";
})
./fix-build-on-qt6_9.diff
];
buildInputs = [
glibmm
libarchive
qtbase
qtsvg
qtwayland
]
++ lib.optionals usePipewire [
pipewire
]
++ lib.optionals usePulseaudio [
pulseaudio
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
gst_all_1.gstreamer
];
preFixup = lib.optionalString usePulseaudio ''
qtWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0")
'';
qmakeFlags = lib.optionals usePulseaudio [ "CONFIG+=USE_PULSEAUDIO" ];
# https://github.com/Audio4Linux/JDSP4Linux/issues/228
env.NIX_CFLAGS_COMPILE = toString [
"-Wno-error=incompatible-pointer-types"
"-Wno-error=implicit-int"
"-Wno-error=implicit-function-declaration"
];
desktopItems = [
(makeDesktopItem {
name = "jamesdsp";
desktopName = "JamesDSP";
genericName = "Audio effects processor";
exec = "jamesdsp";
icon = "jamesdsp";
comment = "JamesDSP for Linux";
categories = [
"AudioVideo"
"Audio"
];
startupNotify = false;
keywords = [
"equalizer"
"audio"
"effect"
];
})
];
postInstall = ''
install -D resources/icons/icon.png $out/share/pixmaps/jamesdsp.png
install -D resources/icons/icon.svg $out/share/icons/hicolor/scalable/apps/jamesdsp.svg
'';
meta = {
broken = (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64);
description = "Audio effect processor for PipeWire clients";
mainProgram = "jamesdsp";
homepage = "https://github.com/Audio4Linux/JDSP4Linux";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [
pasqui23
wineee
];
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,22 @@
diff --git a/src/subprojects/AutoEqIntegration/AeqPackageManager.cpp b/src/subprojects/AutoEqIntegration/AeqPackageManager.cpp
index 01940a1..2ec9c5b 100644
--- a/src/subprojects/AutoEqIntegration/AeqPackageManager.cpp
+++ b/src/subprojects/AutoEqIntegration/AeqPackageManager.cpp
@@ -133,7 +133,7 @@ QtPromise::QPromise<AeqVersion> AeqPackageManager::getLocalVersion()
return QtPromise::QPromise<AeqVersion>{[&](
const QtPromise::QPromiseResolve<AeqVersion>& resolve,
const QtPromise::QPromiseReject<AeqVersion>& reject) {
- QFile versionJson = (databaseDirectory() + "/version.json");
+ QFile versionJson(databaseDirectory() + "/version.json");
if(!versionJson.exists())
{
reject();
@@ -159,7 +159,7 @@ QtPromise::QPromise<QVector<AeqMeasurement>> AeqPackageManager::getLocalIndex()
return QtPromise::QPromise<QVector<AeqMeasurement>>{[&](
const QtPromise::QPromiseResolve<QVector<AeqMeasurement>>& resolve,
const QtPromise::QPromiseReject<QVector<AeqMeasurement>>& reject) {
- QFile indexJson = (databaseDirectory() + "/index.json");
+ QFile indexJson(databaseDirectory() + "/index.json");
if(!indexJson.exists())
{
reject();

View File

@@ -0,0 +1,60 @@
{
lib,
stdenv,
fetchFromGitHub,
autoreconfHook,
automake,
fftw,
ladspaH,
libxml2,
pkg-config,
perlPackages,
}:
stdenv.mkDerivation rec {
pname = "swh-plugins";
version = "0.4.17";
src = fetchFromGitHub {
owner = "swh";
repo = "ladspa";
rev = "v${version}";
sha256 = "sha256-eOtIhNcuItREUShI8JRlBVKfMfovpdfIYu+m37v4KLE=";
};
preBuild = ''
shopt -s globstar
for f in **/Makefile; do
substituteInPlace "$f" \
--replace-quiet 'ranlib' '${stdenv.cc.targetPrefix}ranlib'
done
shopt -u globstar
'';
nativeBuildInputs = [
autoreconfHook
perlPackages.perl
perlPackages.XMLParser
pkg-config
perlPackages.perl
perlPackages.XMLParser
];
buildInputs = [
fftw
ladspaH
libxml2
];
postPatch = ''
patchShebangs --build . ./metadata/ makestub.pl
cp ${automake}/share/automake-*/mkinstalldirs .
'';
meta = with lib; {
homepage = "http://plugin.org.uk/";
description = "LADSPA format audio plugins";
license = licenses.gpl2Only;
maintainers = [ maintainers.magnetophon ];
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,50 @@
{
lib,
stdenv,
fetchurl,
}:
stdenv.mkDerivation rec {
pname = "ladspa-sdk";
version = "1.15";
src = fetchurl {
url = "https://www.ladspa.org/download/ladspa_sdk_${version}.tgz";
sha256 = "1vgx54cgsnc3ncl9qbgjbmq12c444xjafjkgr348h36j16draaa2";
};
sourceRoot = "ladspa_sdk_${version}/src";
strictDeps = true;
patchPhase = ''
sed -i 's@/usr/@$(out)/@g' Makefile
substituteInPlace Makefile \
--replace /tmp/test.wav $NIX_BUILD_TOP/${sourceRoot}/test.wav
'';
makeFlags = [
"CC=${stdenv.cc.targetPrefix}cc"
"CPP=${stdenv.cc.targetPrefix}c++"
];
# The default target also runs tests, which we don't want to do in
# the build phase as it would break cross.
buildFlags = [ "targets" ];
# Tests try to create and play a sound file. Playing will fail, but
# it's probably still useful to run the part that creates the file.
doCheck = true;
meta = {
description = "SDK for the LADSPA audio plugin standard";
longDescription = ''
The LADSPA SDK, including the ladspa.h API header file,
ten example LADSPA plugins and
three example programs (applyplugin, analyseplugin and listplugins).
'';
homepage = "http://www.ladspa.org/ladspa_sdk/overview.html";
license = lib.licenses.lgpl2;
maintainers = [ lib.maintainers.magnetophon ];
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,30 @@
{
lib,
stdenv,
fetchurl,
}:
stdenv.mkDerivation rec {
pname = "ladspa.h";
version = "1.15";
src = fetchurl {
url = "https://www.ladspa.org/download/ladspa_sdk_${version}.tgz";
sha256 = "1vgx54cgsnc3ncl9qbgjbmq12c444xjafjkgr348h36j16draaa2";
};
installPhase = ''
mkdir -p $out/include
cp src/ladspa.h $out/include/ladspa.h
'';
meta = {
description = "LADSPA format audio plugins header file";
longDescription = ''
The ladspa.h API header file from the LADSPA SDK.
For the full SDK, use the ladspa-sdk package.
'';
homepage = "http://www.ladspa.org/ladspa_sdk/overview.html";
license = lib.licenses.lgpl2;
maintainers = [ lib.maintainers.magnetophon ];
platforms = lib.platforms.all;
};
}

View File

@@ -0,0 +1,78 @@
{
lib,
rustPlatform,
fetchFromGitHub,
makeWrapper,
pkg-config,
stdenv,
openssl,
withALSA ? stdenv.hostPlatform.isLinux,
alsa-lib,
alsa-plugins,
withPortAudio ? false,
portaudio,
withPulseAudio ? false,
libpulseaudio,
withRodio ? true,
withAvahi ? false,
withMDNS ? true,
withDNS-SD ? false,
avahi-compat,
tlsBackend ? "native-tls", # "native-tls" "rustls-tls-native-roots" "rustls-tls-webpki-roots"
}:
rustPlatform.buildRustPackage rec {
pname = "librespot";
version = "0.7.1";
src = fetchFromGitHub {
owner = "librespot-org";
repo = "librespot";
rev = "v${version}";
hash = "sha256-gBMzvQxmy+GYzrOKWmbhl56j49BK8W8NYO2RrvS4mWI=";
};
cargoHash = "sha256-PiGIxMIA/RL+YkpG1f46zyAO5anx9Ii+anKrANCM+rk=";
nativeBuildInputs = [
pkg-config
makeWrapper
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
rustPlatform.bindgenHook
];
buildInputs = [
openssl
]
++ lib.optional withALSA alsa-lib
++ lib.optional withDNS-SD avahi-compat
++ lib.optional withPortAudio portaudio
++ lib.optional withPulseAudio libpulseaudio;
buildNoDefaultFeatures = true;
buildFeatures = [
tlsBackend
]
++ lib.optional withRodio "rodio-backend"
++ lib.optional withMDNS "with-libmdns"
++ lib.optional withDNS-SD "with-dns-sd"
++ lib.optional withALSA "alsa-backend"
++ lib.optional withAvahi "with-avahi"
++ lib.optional withPortAudio "portaudio-backend"
++ lib.optional withPulseAudio "pulseaudio-backend";
postFixup = lib.optionalString withALSA ''
wrapProgram "$out/bin/librespot" \
--set ALSA_PLUGIN_DIR '${alsa-plugins}/lib/alsa-lib'
'';
meta = {
description = "Open Source Spotify client library and playback daemon";
mainProgram = "librespot";
homepage = "https://github.com/librespot-org/librespot";
changelog = "https://github.com/librespot-org/librespot/blob/v${version}/CHANGELOG.md";
license = with lib.licenses; [ mit ];
maintainers = with lib.maintainers; [ bennofs ];
};
}

View File

@@ -0,0 +1,38 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
qtbase,
wrapQtAppsHook,
}:
stdenv.mkDerivation rec {
pname = "linvstmanager";
version = "1.1.1";
src = fetchFromGitHub {
owner = "Goli4thus";
repo = "linvstmanager";
rev = "v${version}";
hash = "sha256-K6eugimMy/MZgHYkg+zfF8DDqUuqqoeymxHtcFGu2Uk=";
};
nativeBuildInputs = [
cmake
wrapQtAppsHook
];
buildInputs = [
qtbase
];
meta = with lib; {
description = "Graphical companion application for various bridges like LinVst, etc";
mainProgram = "linvstmanager";
homepage = "https://github.com/Goli4thus/linvstmanager";
license = with licenses; [ gpl3 ];
platforms = platforms.linux;
maintainers = [ maintainers.GabrielDougherty ];
};
}

View File

@@ -0,0 +1,86 @@
{
lib,
fetchFromGitHub,
fetchpatch,
cmake,
pkg-config,
alsa-lib ? null,
carla ? null,
fftwFloat,
fltk13,
fluidsynth ? null,
lame ? null,
libgig ? null,
libjack2 ? null,
libpulseaudio ? null,
libsamplerate,
libsoundio ? null,
libsndfile,
libvorbis ? null,
portaudio ? null,
qtbase,
qtx11extras,
qttools,
SDL ? null,
mkDerivation,
}:
mkDerivation rec {
pname = "lmms";
version = "1.2.2";
src = fetchFromGitHub {
owner = "LMMS";
repo = "lmms";
rev = "v${version}";
sha256 = "006hwv1pbh3y5whsxkjk20hsbgwkzr4dawz43afq1gil69y7xpda";
fetchSubmodules = true;
};
nativeBuildInputs = [
cmake
qttools
pkg-config
];
buildInputs = [
carla
alsa-lib
fftwFloat
fltk13
fluidsynth
lame
libgig
libjack2
libpulseaudio
libsamplerate
libsndfile
libsoundio
libvorbis
portaudio
qtbase
qtx11extras
SDL # TODO: switch to SDL2 in the next version
];
patches = [
(fetchpatch {
url = "https://raw.githubusercontent.com/archlinux/svntogit-community/cf64acc45e3264c6923885867e2dbf8b7586a36b/trunk/lmms-carla-export.patch";
sha256 = "sha256-wlSewo93DYBN2PvrcV58dC9kpoo9Y587eCeya5OX+j4=";
})
];
cmakeFlags = [ "-DWANT_QT5=ON" ];
meta = with lib; {
description = "DAW similar to FL Studio (music production software)";
mainProgram = "lmms";
homepage = "https://lmms.io";
license = licenses.gpl2Plus;
platforms = [
"x86_64-linux"
"i686-linux"
];
maintainers = [ ];
};
}

View File

@@ -0,0 +1,42 @@
{
lib,
qt5,
stdenv,
gitMinimal,
fetchFromGitHub,
cmake,
alsa-lib,
qttools,
}:
stdenv.mkDerivation rec {
pname = "lpd8editor";
version = "0.0.16";
src = fetchFromGitHub {
owner = "charlesfleche";
repo = "lpd8editor";
rev = "v${version}";
hash = "sha256-lRp2RhNiIf1VrryfKqYFSbKG3pktw3M7B49fXVoj+C8=";
};
buildInputs = [
qttools
alsa-lib
];
nativeBuildInputs = [
cmake
gitMinimal
qt5.wrapQtAppsHook
];
meta = with lib; {
description = "Linux editor for the Akai LPD8";
homepage = "https://github.com/charlesfleche/lpd8editor";
license = licenses.mit;
maintainers = with maintainers; [ pinpox ];
mainProgram = "lpd8editor";
platforms = platforms.all;
};
}

View File

@@ -0,0 +1,55 @@
{
stdenv,
lib,
fetchFromSourcehut,
pkg-config,
meson,
ninja,
lv2,
lilv,
curl,
elfutils,
xorg,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "lv2lint";
version = "0.16.2";
src = fetchFromSourcehut {
domain = "open-music-kontrollers.ch";
owner = "~hp";
repo = "lv2lint";
rev = finalAttrs.version;
hash = "sha256-NkzbKteLZ+P+Py+CMOYYipvu6psDslWnM1MAV1XB0TM=";
};
nativeBuildInputs = [
pkg-config
meson
ninja
];
buildInputs = [
lv2
lilv
curl
elfutils
xorg.libX11
];
mesonFlags = [
(lib.mesonEnable "online-tests" true)
(lib.mesonEnable "elf-tests" true)
(lib.mesonEnable "x11-tests" true)
];
meta = with lib; {
description = "Check whether a given LV2 plugin is up to the specification";
homepage = "https://git.open-music-kontrollers.ch/~hp/lv2lint";
license = licenses.artistic2;
maintainers = [ maintainers.magnetophon ];
platforms = platforms.linux;
mainProgram = "lv2lint";
};
})

View File

@@ -0,0 +1,49 @@
{
lib,
stdenv,
fetchFromGitHub,
faust2jaqt,
faust2lv2,
}:
stdenv.mkDerivation rec {
pname = "CharacterCompressor";
version = "0.3.3";
src = fetchFromGitHub {
owner = "magnetophon";
repo = "CharacterCompressor";
rev = "V${version}";
sha256 = "1h0bhjhx023476gbijq842b6f8z71zcyn4c9mddwyb18w9cdamp5";
};
buildInputs = [
faust2jaqt
faust2lv2
];
dontWrapQtApps = true;
buildPhase = ''
faust2jaqt -vec -time -t 99999 CharacterCompressor.dsp
faust2jaqt -vec -time -t 99999 CharacterCompressorMono.dsp
faust2lv2 -vec -time -gui -t 99999 CharacterCompressor.dsp
faust2lv2 -vec -time -gui -t 99999 CharacterCompressorMono.dsp
'';
installPhase = ''
mkdir -p $out/bin
for f in $(find . -executable -type f); do
cp $f $out/bin/
done
mkdir -p $out/lib/lv2
cp -r CharacterCompressor.lv2/ $out/lib/lv2
cp -r CharacterCompressorMono.lv2/ $out/lib/lv2
'';
meta = {
description = "Compressor with character. For jack and lv2";
homepage = "https://github.com/magnetophon/CharacterCompressor";
license = lib.licenses.gpl3;
maintainers = [ lib.maintainers.magnetophon ];
};
}

View File

@@ -0,0 +1,53 @@
{
lib,
stdenv,
fetchFromGitHub,
faust2jaqt,
faust2lv2,
}:
stdenv.mkDerivation rec {
pname = "CompBus";
version = "1.1.1";
src = fetchFromGitHub {
owner = "magnetophon";
repo = "CompBus";
rev = "V${version}";
sha256 = "0yhj680zgk4dn4fi8j3apm72f3z2mjk12amf2a7p0lwn9iyh4a2z";
};
buildInputs = [
faust2jaqt
faust2lv2
];
dontWrapQtApps = true;
buildPhase = ''
for f in *.dsp;
do
faust2jaqt -time -vec -double -t 99999 $f
done
for f in *.dsp;
do
faust2lv2 -time -vec -double -gui -t 99999 $f
done
'';
installPhase = ''
mkdir -p $out/lib/lv2
mv *.lv2/ $out/lib/lv2
mkdir -p $out/bin
for f in $(find . -executable -type f); do
cp $f $out/bin/
done
'';
meta = {
description = "Group of compressors mixed into a bus, sidechained from that mix bus. For jack and lv2";
homepage = "https://github.com/magnetophon/CompBus";
license = lib.licenses.gpl3;
maintainers = [ lib.maintainers.magnetophon ];
};
}

View File

@@ -0,0 +1,48 @@
{
lib,
stdenv,
fetchFromGitHub,
faust2jaqt,
faust2lv2,
}:
stdenv.mkDerivation rec {
pname = "constant-detune-chorus";
version = "0.1.3";
src = fetchFromGitHub {
owner = "magnetophon";
repo = "constant-detune-chorus";
rev = "V${version}";
sha256 = "1sipmc25fr7w7xqx1r0y6i2zwfkgszzwvhk1v15mnsb3cqvk8ybn";
};
buildInputs = [
faust2jaqt
faust2lv2
];
dontWrapQtApps = true;
buildPhase = ''
faust2jaqt -time -vec -t 99999 ConstantDetuneChorus.dsp
faust2lv2 -time -vec -t 99999 -gui ConstantDetuneChorus.dsp
'';
installPhase = ''
mkdir -p $out/bin
for f in $(find . -executable -type f); do
cp $f $out/bin/
done
mkdir -p $out/lib/lv2
cp -r ConstantDetuneChorus.lv2/ $out/lib/lv2
'';
meta = {
description = "Chorus algorithm that maintains constant and symmetric detuning depth (in cents), regardless of modulation rate. For jack and lv2";
homepage = "https://github.com/magnetophon/constant-detune-chorus";
license = lib.licenses.gpl3;
maintainers = [ lib.maintainers.magnetophon ];
# ERROR3 : n is NaN in an Interval
broken = true;
};
}

View File

@@ -0,0 +1,46 @@
{
lib,
stdenv,
fetchFromGitHub,
faust2jaqt,
faust2lv2,
}:
stdenv.mkDerivation rec {
pname = "LazyLimiter";
version = "0.3.2";
src = fetchFromGitHub {
owner = "magnetophon";
repo = "LazyLimiter";
rev = "V${version}";
sha256 = "10xdydwmsnkx8hzsm74pa546yahp29wifydbc48yywv3sfj5anm7";
};
buildInputs = [
faust2jaqt
faust2lv2
];
dontWrapQtApps = true;
buildPhase = ''
faust2jaqt -vec -time -t 99999 LazyLimiter.dsp
faust2lv2 -vec -time -t 99999 -gui LazyLimiter.dsp
'';
installPhase = ''
mkdir -p $out/bin
for f in $(find . -executable -type f); do
cp $f $out/bin/
done
mkdir -p $out/lib/lv2
cp -r LazyLimiter.lv2/ $out/lib/lv2
'';
meta = {
description = "Fast yet clean lookahead limiter for jack and lv2";
homepage = "https://magnetophon.github.io/LazyLimiter/";
license = lib.licenses.gpl2;
maintainers = [ lib.maintainers.magnetophon ];
};
}

View File

@@ -0,0 +1,54 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
faust2jaqt,
faust2lv2,
}:
stdenv.mkDerivation rec {
pname = "MBdistortion";
version = "1.1.1";
src = fetchFromGitHub {
owner = "magnetophon";
repo = "MBdistortion";
rev = "V${version}";
sha256 = "0mdzaqmxzgspfgx9w1hdip18y17hwpdcgjyq1rrfm843vkascwip";
};
patches = [
(fetchpatch {
url = "https://github.com/magnetophon/MBdistortion/commit/10e35084b88c559f1b63760cf40fd5ef5a6745a5.patch";
sha256 = "0hwjl3rzvn3id0sr0qs8f37jdmr915mdan8miaf78ra0ir3wnk76";
})
];
buildInputs = [
faust2jaqt
faust2lv2
];
dontWrapQtApps = true;
buildPhase = ''
faust2jaqt -time -vec -t 99999 MBdistortion.dsp
faust2lv2 -time -vec -gui -t 99999 MBdistortion.dsp
'';
installPhase = ''
mkdir -p $out/bin
for f in $(find . -executable -type f); do
cp $f $out/bin/
done
mkdir -p $out/lib/lv2
cp -r MBdistortion.lv2/ $out/lib/lv2
'';
meta = {
description = "Mid-side multiband distortion for jack and lv2";
homepage = "https://github.com/magnetophon/MBdistortion";
license = lib.licenses.gpl2;
maintainers = [ lib.maintainers.magnetophon ];
};
}

View File

@@ -0,0 +1,46 @@
{
lib,
stdenv,
fetchFromGitHub,
faust2jaqt,
faust2lv2,
}:
stdenv.mkDerivation rec {
pname = "RhythmDelay";
version = "2.1";
src = fetchFromGitHub {
owner = "magnetophon";
repo = "RhythmDelay";
rev = "V${version}";
sha256 = "1j0bjl9agz43dcrcrbiqd7fv7xsxgd65s4ahhv5pvcr729y0fxg4";
};
buildInputs = [
faust2jaqt
faust2lv2
];
dontWrapQtApps = true;
buildPhase = ''
faust2jaqt -time -vec -t 99999 RhythmDelay.dsp
faust2lv2 -time -vec -t 99999 -gui RhythmDelay.dsp
'';
installPhase = ''
mkdir -p $out/bin
for f in $(find . -executable -type f); do
cp $f $out/bin/
done
mkdir -p $out/lib/lv2
cp -r RhythmDelay.lv2/ $out/lib/lv2
'';
meta = {
description = "Tap a rhythm into your delay! For jack and lv2";
homepage = "https://github.com/magnetophon/RhythmDelay";
license = lib.licenses.gpl3;
maintainers = [ lib.maintainers.magnetophon ];
};
}

View File

@@ -0,0 +1,61 @@
{
lib,
stdenv,
fetchFromGitHub,
faust2jack,
faust2lv2,
helmholtz,
mrpeach,
puredata-with-plugins,
jack-example-tools,
}:
stdenv.mkDerivation rec {
pname = "VoiceOfFaust";
version = "1.1.7";
src = fetchFromGitHub {
owner = "magnetophon";
repo = "VoiceOfFaust";
tag = "V${version}";
sha256 = "sha256-wsc4yzytK2hPVBQwMhdhjnH1pDtpkNCFJnItyzszEs0=";
};
plugins = [
helmholtz
mrpeach
];
pitchTracker = puredata-with-plugins plugins;
nativeBuildInputs = [
faust2jack
faust2lv2
];
# ld: crtbegin.o: relocation R_X86_64_32 against hidden symbol `__TMC_END__' can not be used when making a PIE object
# ld: failed to set dynamic section sizes: bad value
hardeningDisable = [ "pie" ];
enableParallelBuilding = true;
dontWrapQtApps = true;
makeFlags = [
"PREFIX=$(out)"
];
patchPhase = ''
sed -i "s@jack_connect@${jack-example-tools}/bin/jack_connect@g" launchers/synthWrapper
sed -i "s@pd -nodac@${pitchTracker}/bin/pd -nodac@g" launchers/pitchTracker
sed -i "s@../PureData/OscSendVoc.pd@$out/bin/PureData/OscSendVoc.pd@g" launchers/pitchTracker
sed -i "s@pd -nodac@${pitchTracker}/bin/pd -nodac@g" launchers/pitchTrackerGUI
sed -i "s@../PureData/OscSendVoc.pd@$out/bin/PureData/OscSendVoc.pd@g" launchers/pitchTrackerGUI
'';
meta = {
description = "Turn your voice into a synthesizer";
homepage = "https://github.com/magnetophon/VoiceOfFaust";
license = lib.licenses.agpl3Only;
maintainers = [ lib.maintainers.magnetophon ];
};
}

View File

@@ -0,0 +1,58 @@
{
lib,
stdenv,
fetchFromGitHub,
faust2jaqt,
faust2lv2,
}:
stdenv.mkDerivation rec {
pname = "faustCompressors";
version = "1.2";
src = fetchFromGitHub {
owner = "magnetophon";
repo = "faustCompressors";
rev = "v${version}";
sha256 = "144f6g17q4m50kxzdncsfzdyycdfprnpwdaxcwgxj4jky1xsha1d";
};
buildInputs = [
faust2jaqt
faust2lv2
];
dontWrapQtApps = true;
buildPhase = ''
echo "hack out autoComp.dsp due to https://github.com/grame-cncm/faust/407/issues "
rm autoComp.dsp
for f in *.dsp;
do
echo "compiling standalone from" $f
faust2jaqt -time -double -t 99999 $f
done
for f in *.dsp;
do
echo "Compiling plugin from" $f
faust2lv2 -time -double -gui -t 99999 $f
done
'';
installPhase = ''
mkdir -p $out/lib/lv2
mv *.lv2/ $out/lib/lv2
mkdir -p $out/bin
rm newlib.sh
for f in $(find . -executable -type f); do
cp $f $out/bin/
done
'';
meta = {
description = "Collection of bread and butter compressors";
homepage = "https://github.com/magnetophon/faustCompressors";
license = lib.licenses.gpl3;
maintainers = [ lib.maintainers.magnetophon ];
};
}

View File

@@ -0,0 +1,53 @@
{
lib,
stdenv,
fetchFromGitHub,
faust2jaqt,
faust2lv2,
}:
stdenv.mkDerivation rec {
pname = "pluginUtils";
version = "1.1";
src = fetchFromGitHub {
owner = "magnetophon";
repo = "pluginUtils";
rev = "V${version}";
sha256 = "1hnr5sp7k6ypf4ks61lnyqx44dkv35yllf3a3xcbrw7yqzagwr1c";
};
buildInputs = [
faust2jaqt
faust2lv2
];
dontWrapQtApps = true;
buildPhase = ''
for f in *.dsp
do
echo "Building jack standalone for $f"
faust2jaqt -vec -time -t 99999 "$f"
echo "Building lv2 for $f"
faust2lv2 -vec -time -gui -t 99999 "$f"
done
'';
installPhase = ''
rm -f *.dsp
rm -f *.lib
mkdir -p $out/lib/lv2
mv *.lv2/ $out/lib/lv2
mkdir -p $out/bin
for f in $(find . -executable -type f); do
cp $f $out/bin/
done
'';
meta = {
description = "Some simple utility lv2 plugins";
homepage = "https://github.com/magnetophon/pluginUtils";
license = lib.licenses.gpl3;
maintainers = [ lib.maintainers.magnetophon ];
};
}

View File

@@ -0,0 +1,49 @@
{
lib,
stdenv,
fetchFromGitHub,
faust2jaqt,
faust2lv2,
}:
stdenv.mkDerivation rec {
pname = "shelfMultiBand";
version = "0.6.1";
src = fetchFromGitHub {
owner = "magnetophon";
repo = "shelfMultiBand";
rev = "V${version}";
sha256 = "1b1h4z5fs2xm7wvw11p9wnd0bxs3m88124f5phh0gwvpsdrd0im5";
};
buildInputs = [
faust2jaqt
faust2lv2
];
dontWrapQtApps = true;
buildPhase = ''
faust2jaqt -vec -double -time -t 99999 shelfMultiBand.dsp
faust2jaqt -vec -double -time -t 99999 shelfMultiBandMono.dsp
faust2lv2 -vec -double -time -gui -t 99999 shelfMultiBandMono.dsp
faust2lv2 -vec -double -time -gui -t 99999 shelfMultiBand.dsp
'';
installPhase = ''
mkdir -p $out/bin
for f in $(find . -executable -type f); do
cp $f $out/bin/
done
mkdir -p $out/lib/lv2
cp -r shelfMultiBand.lv2/ $out/lib/lv2
cp -r shelfMultiBandMono.lv2/ $out/lib/lv2
'';
meta = {
description = "Multiband compressor made from shelving filters";
homepage = "https://github.com/magnetophon/shelfMultiBand";
license = lib.licenses.gpl3;
maintainers = [ lib.maintainers.magnetophon ];
};
}

View File

@@ -0,0 +1,60 @@
{
stdenv,
lib,
fetchFromGitHub,
runCommandLocal,
mbrola-voices,
}:
let
pname = "mbrola";
version = "3.3-unstable-2024-01-29";
meta = with lib; {
license = licenses.agpl3Plus;
maintainers = with maintainers; [ davidak ];
platforms = platforms.all;
description = "Speech synthesizer based on the concatenation of diphones";
homepage = "https://github.com/numediart/MBROLA";
};
bin = stdenv.mkDerivation {
pname = "${pname}-bin";
inherit version;
src = fetchFromGitHub {
owner = "numediart";
repo = "MBROLA";
rev = "bf17e9e1416a647979ac683657a536e8ca5d880e";
hash = "sha256-ZjCl1gx/6sGtpXAYO4sAh6dutjwzClQ7kZoq0WaaBlU=";
};
# required for cross compilation
makeFlags = [ "CC=${stdenv.cc.targetPrefix}cc" ];
env = lib.optionalAttrs stdenv.cc.isGNU {
NIX_CFLAGS_COMPILE = "-Wno-error=implicit-function-declaration";
};
installPhase = ''
runHook preInstall
install -D Bin/mbrola $out/bin/mbrola
rm -rf $out/share/mbrola/voices/*
runHook postInstall
'';
meta = meta // {
description = "Speech synthesizer based on the concatenation of diphones (binary only)";
};
};
in
runCommandLocal "${pname}-${version}"
{
inherit pname version meta;
}
''
mkdir -p "$out/share/mbrola"
ln -s '${mbrola-voices}/data' "$out/share/mbrola/voices"
ln -s '${bin}/bin' "$out/"
''

View File

@@ -0,0 +1,50 @@
{
lib,
stdenv,
fetchFromGitHub,
mbrola,
languages ? [ ],
}:
let
src = fetchFromGitHub {
owner = "numediart";
repo = "MBROLA-voices";
rev = "fe05a0ccef6a941207fd6aaad0b31294a1f93a51";
hash = "sha256-QBUggnde5iNeCESzxE0btVVTDOxc3Kdk483mdGUXHvA=";
};
meta = {
description = "Speech synthesizer based on the concatenation of diphones (voice files)";
homepage = "https://github.com/numediart/MBROLA-voices";
license = mbrola.meta.license;
};
in
if (languages == [ ]) then
src // { inherit meta; }
else
stdenv.mkDerivation {
pname = "mbrola-voices";
version = "0-unstable-2020-03-30";
inherit src;
postPatch = ''
shopt -s extglob
pushd data
rm -rfv !(${lib.concatStringsSep "|" languages})
popd
'';
installPhase = ''
runHook preInstall
mkdir $out
cp -R data $out/
runHook postInstall
'';
inherit meta;
}

View File

@@ -0,0 +1,80 @@
{
cmake,
fetchFromGitLab,
lib,
libnotify,
mkDerivation,
pkg-config,
qtbase,
qtdeclarative,
qtgraphicaleffects,
qtquickcontrols2,
qttools,
qtwebengine,
stdenv,
}:
mkDerivation rec {
pname = "MellowPlayer";
version = "3.6.8";
src = fetchFromGitLab {
owner = "ColinDuquesnoy";
repo = "MellowPlayer";
rev = version;
hash = "sha256-rsF2xQet7U8d4oGU/HgghvE3vvmkxjlGXPBlLD9mWTk=";
};
nativeBuildInputs = [
cmake
pkg-config
];
buildInputs = [
libnotify
qtbase
qtdeclarative
qtgraphicaleffects
qtquickcontrols2
qttools
qtwebengine
];
doCheck = true;
cmakeFlags = [ "-DBUILD_TESTS=ON" ];
preCheck = ''
# Running the tests requires a location at the home directory for logging.
export HOME="$NIX_BUILD_TOP/home"
mkdir -p "$HOME/.local/share/MellowPlayer.Tests/MellowPlayer.Tests/Logs"
# Without this, the tests fail because they cannot create the QT Window
export QT_QPA_PLATFORM=offscreen
''
# TODO: The tests are failing because it can't locate QT plugins. Is there a better way to do this?
+ (builtins.concatStringsSep "\n" (
lib.lists.flatten (
map (pkg: [
(lib.optionalString (pkg ? qtPluginPrefix) ''
export QT_PLUGIN_PATH="${pkg}/${pkg.qtPluginPrefix}"''${QT_PLUGIN_PATH:+':'}$QT_PLUGIN_PATH
'')
(lib.optionalString (pkg ? qtQmlPrefix) ''
export QML2_IMPORT_PATH="${pkg}/${pkg.qtQmlPrefix}"''${QML2_IMPORT_PATH:+':'}$QML2_IMPORT_PATH
'')
]) buildInputs
)
));
meta = with lib; {
inherit (qtbase.meta) platforms;
broken = stdenv.hostPlatform.isDarwin; # test build fails, but the project is not maintained anymore
description = "Cloud music integration for your desktop";
mainProgram = "MellowPlayer";
homepage = "https://gitlab.com/ColinDuquesnoy/MellowPlayer";
license = licenses.gpl2;
maintainers = with maintainers; [ kalbasit ];
};
}

401
pkgs/applications/audio/midas/deps.nix generated Normal file
View File

@@ -0,0 +1,401 @@
# This is a generated file. Do not modify!
# Following are the Debian packages constituting the closure of: libstdc++6 libcurl4 libfreetype6 libasound2 libx11-6 libxext6
{ fetchurl }:
[
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/g/gcc-12/gcc-12-base_12.2.0-14_amd64.deb";
sha256 = "1a03df5a57833d65b5bb08cfa19d50e76f29088dc9e64fb934af42d9023a0807";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/g/gcc-12/libgcc-s1_12.2.0-14_amd64.deb";
sha256 = "f3d1d48c0599aea85b7f2077a01d285badc42998c1a1e7473935d5cf995c8141";
})
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/g/glibc/libc6_2.36-9+deb12u2_amd64.deb";
sha256 = "b50aac01737995d399b49fdfa213236c382e1dc1d402e61c8dcc669af3a41b19";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/g/gcc-12/libstdc++6_12.2.0-14_amd64.deb";
sha256 = "9b1b269020cec6aced3b39f096f7b67edd1f0d4ab24f412cb6506d0800e19cbf";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/b/brotli/libbrotli1_1.0.9-2+b6_amd64.deb";
sha256 = "563b4caec1aa5e876bd3355b36e7a38e1484baf5a293b48d1e8bd22db786e4d7";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/e/e2fsprogs/libcom-err2_1.47.0-2_amd64.deb";
sha256 = "8010e4285276bb344c05ae780deae2fffb45e237116c3a78481365c5954125ec";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/k/krb5/libkrb5support0_1.20.1-2+deb12u1_amd64.deb";
sha256 = "e489a9282c4b765c29d9eda7c4747e1cb58be71161012c3a57e2a8bc63dc0f5a";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/k/krb5/libk5crypto3_1.20.1-2+deb12u1_amd64.deb";
sha256 = "6a91eee690e6ad2207df3a355fc329a58d8e31bf5ca9a9dd4de8f7a1c812ddc5";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/k/keyutils/libkeyutils1_1.6.3-2_amd64.deb";
sha256 = "cfac89e6a7a54ff3c6a4f843310e25efeddaa771baeae470bd98bd588c373563";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/o/openssl/libssl3_3.0.11-1~deb12u1_amd64.deb";
sha256 = "e3348978d10f036948ecabbe540c4c581e79793070a8b7f480a46c34c381ac1f";
name = "libssl3_3.0.11-1deb12u1_amd64.deb";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/k/krb5/libkrb5-3_1.20.1-2+deb12u1_amd64.deb";
sha256 = "03ebdf235600f4a8a6d4fbc7080de0a776b1a701f43c4e9697944757591d7809";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/k/krb5/libgssapi-krb5-2_1.20.1-2+deb12u1_amd64.deb";
sha256 = "6631304ce4b5b9ba0af3fdebf088a734aed2d28ffad2a03ba79e4fcb2e226dd6";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/libu/libunistring/libunistring2_1.0-2_amd64.deb";
sha256 = "d466bbfe011d764d793c1d9d777cad9c7cf65b938e11598f27408171ad95a951";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/libi/libidn2/libidn2-0_2.3.3-1+b1_amd64.deb";
sha256 = "d50716d5824083d667427817d506b45d3f59dc77e1ca52de000f3f62d4918afa";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/g/gmp/libgmp10_6.2.1+dfsg1-1.1_amd64.deb";
sha256 = "187aedef2ed763f425c1e523753b9719677633c7eede660401739e9c893482bd";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/n/nettle/libnettle8_3.8.1-2_amd64.deb";
sha256 = "45922e6e289ffd92f0f92d2bb9159e84236ff202d552a461bf10e5335b3f0261";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/n/nettle/libhogweed6_3.8.1-2_amd64.deb";
sha256 = "ed8185c28b2cb519744a5a462dcd720d3b332c9b88a1d0002eac06dc8550cb94";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/libf/libffi/libffi8_3.4.4-1_amd64.deb";
sha256 = "6d9f6c25c30efccce6d4bceaa48ea86c329a3432abb360a141f76ac223a4c34a";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/p/p11-kit/libp11-kit0_0.24.1-2_amd64.deb";
sha256 = "251330faddbf013f060fcdb41f4b0c037c8a6e89ba7c09b04bfcc4e3f0807b22";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/libt/libtasn1-6/libtasn1-6_4.19.0-2_amd64.deb";
sha256 = "eec4dc9d949d2c666b1da3fa762a340e8ba10c3a04d3eed32749a97695c15641";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/g/gnutls28/libgnutls30_3.7.9-2_amd64.deb";
sha256 = "0c8dac5177d72fb9a38dfe28ae5f9fad3331c7c793abbb8e67362760c7ec5c76";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg2-1_amd64.deb";
sha256 = "7dc5127b8dd0da80e992ba594954c005ae4359d839a24eb65d0d8129b5235c84";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/c/cyrus-sasl2/libsasl2-modules-db_2.1.28+dfsg-10_amd64.deb";
sha256 = "3ac4fd6cbe3b3b06e68d24b931bf3eb9385b42f15604a37ed25310e948ca0ee6";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/c/cyrus-sasl2/libsasl2-2_2.1.28+dfsg-10_amd64.deb";
sha256 = "11ee190ad39f8d7af441d2c8347388b9449434c73acc67b4b372445ac4152efa";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/o/openldap/libldap-2.5-0_2.5.13+dfsg-5_amd64.deb";
sha256 = "4b6c30f6554149c594628d945edc6003f0eea8d0cc1341638c0e71375db147ed";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/n/nghttp2/libnghttp2-14_1.52.0-1_amd64.deb";
sha256 = "faf52ab52cc91e5ca1fec230a51b2b25634409d8fbcbff5c9c8d128bea755b2d";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/libp/libpsl/libpsl5_0.21.2-1_amd64.deb";
sha256 = "4f0d35610204e4e754b057748719744114621f2f6f4202d846c314860a981afb";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/z/zlib/zlib1g_1.2.13.dfsg-1_amd64.deb";
sha256 = "d7dd1d1411fedf27f5e27650a6eff20ef294077b568f4c8c5e51466dc7c08ce4";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/r/rtmpdump/librtmp1_2.4+20151223.gitfa8646d.1-2+b2_amd64.deb";
sha256 = "e1f69020dc2c466e421ec6a58406b643be8b5c382abf0f8989011c1d3df91c87";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/libs/libssh2/libssh2-1_1.10.0-3+b1_amd64.deb";
sha256 = "d20a3ee34fa84ad8bd381e8be6e9c2c2ea32347cff5e1169c10e978d43f54f24";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/libz/libzstd/libzstd1_1.5.4+dfsg2-5_amd64.deb";
sha256 = "6315b5ac38b724a710fb96bf1042019398cb656718b1522279a5185ed39318fa";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/c/curl/libcurl4_7.88.1-10+deb12u3_amd64.deb";
sha256 = "c4d2cbd54d6cb0a6a0ede613090b1eb6e28cdc05912ac11d617fb0d8dc493cdc";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/libp/libpng1.6/libpng16-16_1.6.39-2_amd64.deb";
sha256 = "dc32727dca9a87ba317da7989572011669f568d10159b9d8675ed7aedd26d686";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/f/freetype/libfreetype6_2.12.1+dfsg-5_amd64.deb";
sha256 = "72ef03236f1936e72a0faf86a547425b0eff3c5fd0b43f8669012182cf376354";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/a/alsa-lib/libasound2-data_1.2.8-1_all.deb";
sha256 = "fe0780d2d3674b2977e0acb0d48b448ad72ba1642564b7dc537f55e839984c2d";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/a/alsa-lib/libasound2_1.2.8-1+b1_amd64.deb";
sha256 = "44c77b076a7b11ae99712439022d822245b1994c435da564ebd320bb676faf4c";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/libx/libxau/libxau6_1.0.9-1_amd64.deb";
sha256 = "679db1c4579ec7c61079adeaae8528adeb2e4bf5465baa6c56233b995d714750";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/libm/libmd/libmd0_1.0.4-2_amd64.deb";
sha256 = "03539fd30c509e27101d13a56e52eda9062bdf1aefe337c07ab56def25a13eab";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/libb/libbsd/libbsd0_0.11.7-2_amd64.deb";
sha256 = "bb31cc8b40f962a85b2cec970f7f79cc704a1ae4bad24257a822055404b2c60b";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_amd64.deb";
sha256 = "ecb8536f5fb34543b55bb9dc5f5b14c9dbb4150a7bddb3f2287b7cab6e9d25ef";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/libx/libxcb/libxcb1_1.15-1_amd64.deb";
sha256 = "fdc61332a3892168f3cc9cfa1fe9cf11a91dc3e0acacbc47cbc50ebaa234cc71";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/libx/libx11/libx11-data_1.8.4-2+deb12u1_all.deb";
sha256 = "30dc02bd10805d159a19676de17dbbf3330ec0139a92f7e5b7e5e5453d63832c";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/libx/libx11/libx11-6_1.8.4-2+deb12u1_amd64.deb";
sha256 = "6314d111fca4bf6f9aedd504b4daa534ec9b5607e840b67bfdd278a37ec5e506";
})
]
[
(fetchurl {
url = "https://snapshot.debian.org/archive/debian/20231124T031419Z/pool/main/libx/libxext/libxext6_1.3.4-1+b1_amd64.deb";
sha256 = "504b7be9d7df4f6f4519e8dd4d6f9d03a9fb911a78530fa23a692fba3058cba6";
})
]
]

View File

@@ -0,0 +1,4 @@
#!/bin/sh -eu
cd "$(dirname "$0")"
deps=$(nix-build --no-link -A x32edit.deps ../../../..)
cat "$deps" > deps.nix

View File

@@ -0,0 +1,84 @@
{
stdenv,
fetchurl,
lib,
brand,
type,
version,
homepage,
url,
hash,
runCommand,
dpkg,
vmTools,
runtimeShell,
bubblewrap,
...
}:
let
debian =
let
debs = lib.flatten (import ./deps.nix { inherit fetchurl; });
in
runCommand "x32edit-debian" { nativeBuildInputs = [ dpkg ]; } (
lib.concatMapStringsSep "\n" (deb: ''
dpkg-deb -x ${deb} $out
'') debs
);
in
stdenv.mkDerivation rec {
pname = "${lib.toLower type}-edit";
inherit version;
src = fetchurl {
inherit url hash;
};
sourceRoot = ".";
dontBuild = true;
dontStrip = true;
installPhase = ''
mkdir -p $out/bin
cp ${type}-Edit $out/bin/.${pname}
cat >$out/bin/${pname} <<EOF
#!${runtimeShell} -eu
exec ${lib.getExe bubblewrap} \
--dev-bind / / \
--ro-bind "${debian}/lib" /lib \
--ro-bind "${debian}/lib64" /lib64 \
--tmpfs /usr \
--ro-bind "${debian}/usr/lib" /usr/lib \
$out/bin/.${pname}
EOF
chmod 755 $out/bin/${pname}
'';
passthru.deps =
let
distro = vmTools.debDistros.debian12x86_64;
in
vmTools.debClosureGenerator {
name = "x32edit-dependencies";
inherit (distro) urlPrefix;
packagesLists = [ distro.packagesList ];
packages = [
"libstdc++6"
"libcurl4"
"libfreetype6"
"libasound2"
"libx11-6"
"libxext6"
];
};
meta = with lib; {
inherit homepage;
description = "Editor for the ${brand} ${type} digital mixer";
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
license = licenses.unfree;
platforms = platforms.linux;
maintainers = [ maintainers.magnetophon ];
};
}

View File

@@ -0,0 +1,13 @@
{ callPackage, ... }@args:
callPackage ./generic.nix (
args
// rec {
brand = "Midas";
type = "M32";
version = "4.4";
url = "https://cdn.mediavalet.com/aunsw/musictribe/bpXmqFLKmkCfv8Xfp2fzGA/p_73LRnDKUyTLCRF8SiAhg/Original/${type}-Edit_LINUX_${version}.tar.gz";
hash = "sha256-/rzTIRYP982upiyPlg1B5L+ggSFb5jfmGKAQGhKghaA=";
homepage = "https://midasconsoles.com/midas/product?modelCode=P0B3I";
}
)

View File

@@ -0,0 +1,13 @@
{ callPackage, ... }@args:
callPackage ./generic.nix (
args
// rec {
brand = "Behringer";
type = "X32";
version = "4.4";
url = "https://cdn.mediavalet.com/aunsw/musictribe/or9fQ8syH0ShGn-Pei63wQ/POJZwJV4MkWLkgr0ex3f6Q/Original/${type}-Edit_LINUX_${version}.tar.gz";
hash = "sha256-OOh0UnaKes8U2vNkavsCQF9021lFMPLX1gU1ENaWZHs=";
homepage = "https://www.behringer.com/behringer/product?modelCode=P0ASF";
}
)

View File

@@ -0,0 +1,66 @@
{
lib,
stdenv,
fetchFromGitHub,
qmake,
wrapQtAppsHook,
qt6Packages,
bison,
flex,
which,
alsa-lib,
libsndfile,
libpulseaudio,
libjack2,
audioBackend ? "pulse", # "pulse", "alsa", or "jack"
}:
stdenv.mkDerivation (finalAttrs: {
pname = "miniaudicle";
version = "1.5.4.2";
src = fetchFromGitHub {
owner = "ccrma";
repo = "miniAudicle";
rev = "chuck-${finalAttrs.version}";
hash = "sha256-LYr9Fc4Siqk0BFKHVXfIV2XskJYAN+/0P+nb6FJLsLE=";
fetchSubmodules = true;
};
sourceRoot = "${finalAttrs.src.name}/src";
postPatch = ''
echo '#define GIT_REVISION "${finalAttrs.version}-NixOS"' > git-rev.h
substituteInPlace miniAudicle.pro \
--replace-fail "/usr/local" $out
'';
nativeBuildInputs = [
bison
flex
which
qmake
wrapQtAppsHook
];
buildInputs = [
alsa-lib
libsndfile
qt6Packages.qscintilla
]
++ lib.optional (audioBackend == "pulse") libpulseaudio
++ lib.optional (audioBackend == "jack") libjack2;
buildFlags = [ "linux-${audioBackend}" ];
meta = with lib; {
description = "Light-weight integrated development environment for the ChucK digital audio programming language";
mainProgram = "miniAudicle";
homepage = "https://audicle.cs.princeton.edu/mini/";
downloadPage = "https://audicle.cs.princeton.edu/mini/linux/";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ fgaz ];
platforms = platforms.all;
broken = stdenv.hostPlatform.isDarwin; # not attempted
};
})

View File

@@ -0,0 +1,163 @@
{
lib,
stdenv,
fetchFromGitHub,
chromaprint,
cmake,
faad2,
ffmpeg,
fftw,
flac,
gbenchmark,
glibcLocales,
gtest,
hidapi,
lame,
libebur128,
libdjinterop,
libGLU,
libid3tag,
libkeyfinder,
libmad,
libmodplug,
libopus,
libsecret,
libshout,
libsndfile,
libusb1,
libvorbis,
libxcb,
lilv,
lv2,
microsoft-gsl,
mp4v2,
opusfile,
pkg-config,
portaudio,
portmidi,
protobuf,
qt5compat,
qtbase,
qtdeclarative,
qtkeychain,
qtsvg,
rubberband,
serd,
sord,
soundtouch,
sratom,
sqlite,
taglib,
upower,
vamp-plugin-sdk,
wavpack,
wrapQtAppsHook,
}:
stdenv.mkDerivation rec {
pname = "mixxx";
version = "2.5.3";
src = fetchFromGitHub {
owner = "mixxxdj";
repo = "mixxx";
rev = version;
hash = "sha256-WmYoblIVygLnjNaFnRoEHmfnQcaBtIVOBZicEwD4NMw=";
};
# Should be removed when bumping to 2.6.x
postPatch = ''
substituteInPlace CMakeLists.txt \
--replace-warn "LIBDJINTEROP_VERSION 0.24.3" "LIBDJINTEROP_VERSION 0.26.1"
'';
nativeBuildInputs = [
cmake
pkg-config
wrapQtAppsHook
];
buildInputs = [
chromaprint
faad2
ffmpeg
fftw
flac
gbenchmark
glibcLocales
gtest
hidapi
lame
libebur128
libGLU
libid3tag
libdjinterop
libkeyfinder
libmad
libmodplug
libopus
libsecret
libshout
libsndfile
libusb1
libvorbis
libxcb
lilv
lv2
microsoft-gsl
mp4v2
opusfile
portaudio
portmidi
protobuf
qt5compat
qtbase
qtdeclarative
qtkeychain
qtsvg
rubberband
serd
sord
soundtouch
sratom
sqlite
taglib
upower
vamp-plugin-sdk
wavpack
];
qtWrapperArgs = [ "--set LOCALE_ARCHIVE ${glibcLocales}/lib/locale/locale-archive" ];
# mixxx installs udev rules to DATADIR instead of SYSCONFDIR
# let's disable this and install udev rules manually via postInstall
# see https://github.com/mixxxdj/mixxx/blob/2.3.5/CMakeLists.txt#L1381-L1392
cmakeFlags = [
"-DINSTALL_USER_UDEV_RULES=OFF"
# "BUILD_TESTING=OFF" must imply "BUILD_BENCH=OFF"
"-DBUILD_BENCH=OFF"
];
postInstall = lib.optionalString stdenv.hostPlatform.isLinux ''
rules="$src/res/linux/mixxx-usb-uaccess.rules"
if [ ! -f "$rules" ]; then
echo "$rules is missing, must update the Nix file."
exit 1
fi
mkdir -p "$out/lib/udev/rules.d"
cp "$rules" "$out/lib/udev/rules.d/69-mixxx-usb-uaccess.rules"
'';
meta = {
homepage = "https://mixxx.org";
description = "Digital DJ mixing software";
mainProgram = "mixxx";
changelog = "https://github.com/mixxxdj/mixxx/blob/${version}/CHANGELOG.md";
license = lib.licenses.gpl2;
maintainers = with lib.maintainers; [
benley
bfortz
];
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,97 @@
{
stdenv,
lib,
fetchFromGitHub,
unstableGitUpdater,
pkg-config,
glfw,
libvgm,
libX11,
libXau,
libXdmcp,
cppunit,
}:
stdenv.mkDerivation {
pname = "mmlgui";
version = "210420-preview-unstable-2024-04-15";
src = fetchFromGitHub {
owner = "superctr";
repo = "mmlgui";
rev = "e49f225ac2b2d46056b2c45a5d31c544227c4968";
fetchSubmodules = true;
hash = "sha256-hj2k1BrE8AA2HTBEO03RammlZV2U4KW0gLJmFNiaSvI=";
};
postPatch = ''
# Actually wants pkgconf but that seems abit broken:
# https://github.com/NixOS/nixpkgs/pull/147503#issuecomment-1055943897
# Removing a pkgconf-specific option makes it work with pkg-config
substituteInPlace libvgm.mak \
--replace '--with-path=/usr/local/lib/pkgconfig' ""
# Use correct pkg-config
substituteInPlace {imgui,libvgm}.mak \
--replace 'pkg-config' "\''$(PKG_CONFIG)"
# Don't force building tests
substituteInPlace Makefile \
--replace 'all: $(MMLGUI_BIN) test' 'all: $(MMLGUI_BIN)'
# Breaking change in libvgm
substituteInPlace src/emu_player.cpp \
--replace 'Resmpl_SetVals(&resmpl, 0xff' 'Resmpl_SetVals(&resmpl, RSMODE_LINEAR'
'';
strictDeps = true;
nativeBuildInputs = [
pkg-config
];
buildInputs = [
glfw
libvgm
]
++ lib.optionals stdenv.hostPlatform.isLinux [
libX11
libXau
libXdmcp
];
checkInputs = [
cppunit
];
makeFlags = [
"RELEASE=1"
];
enableParallelBuilding = true;
doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
installPhase = ''
runHook preInstall
install -Dm755 {,$out/}bin/mmlgui
mkdir -p $out/share/ctrmml
mv ctrmml/sample $out/share/ctrmml/
runHook postInstall
'';
passthru.updateScript = unstableGitUpdater {
url = "https://github.com/superctr/mmlgui.git";
};
meta = with lib; {
homepage = "https://github.com/superctr/mmlgui";
description = "MML (Music Macro Language) editor and compiler GUI, powered by the ctrmml framework";
license = licenses.gpl2Only;
maintainers = with maintainers; [ OPNA2608 ];
platforms = platforms.all;
mainProgram = "mmlgui";
};
}

View File

@@ -0,0 +1,36 @@
{
lib,
pythonPackages,
fetchPypi,
mopidy,
}:
pythonPackages.buildPythonApplication rec {
pname = "mopidy-bandcamp";
version = "1.1.5";
pyproject = true;
src = fetchPypi {
inherit version;
pname = "Mopidy-Bandcamp";
hash = "sha256-wg9zcOKfZQRhpyA1Cu5wvdwKpmrlcr2m9mrqBHgUXAQ=";
};
build-system = [
pythonPackages.setuptools
];
dependencies = [
mopidy
pythonPackages.pykka
];
pythonImportsCheck = [ "mopidy_bandcamp" ];
meta = with lib; {
description = "Mopidy extension for playing music from bandcamp";
homepage = "https://github.com/impliedchaos/mopidy-bandcamp";
license = licenses.mit;
maintainers = with maintainers; [ desttinghim ];
};
}

View File

@@ -0,0 +1,59 @@
{
lib,
newScope,
python,
}:
# Create a custom scope so we are consistent in which python version is used
lib.makeScope newScope (
self: with self; {
inherit python;
pythonPackages = python.pkgs;
mopidy = callPackage ./mopidy.nix { };
mopidy-bandcamp = callPackage ./bandcamp.nix { };
mopidy-listenbrainz = callPackage ./listenbrainz.nix { };
mopidy-iris = callPackage ./iris.nix { };
mopidy-jellyfin = callPackage ./jellyfin.nix { };
mopidy-local = callPackage ./local.nix { };
mopidy-moped = callPackage ./moped.nix { };
mopidy-mopify = callPackage ./mopify.nix { };
mopidy-mpd = callPackage ./mpd.nix { };
mopidy-mpris = callPackage ./mpris.nix { };
mopidy-muse = callPackage ./muse.nix { };
mopidy-musicbox-webclient = callPackage ./musicbox-webclient.nix { };
mopidy-notify = callPackage ./notify.nix { };
mopidy-podcast = callPackage ./podcast.nix { };
mopidy-scrobbler = callPackage ./scrobbler.nix { };
mopidy-somafm = callPackage ./somafm.nix { };
mopidy-soundcloud = callPackage ./soundcloud.nix { };
mopidy-spotify = callPackage ./spotify.nix { };
mopidy-tidal = callPackage ./tidal.nix { };
mopidy-tunein = callPackage ./tunein.nix { };
mopidy-youtube = callPackage ./youtube.nix { };
mopidy-ytmusic = callPackage ./ytmusic.nix { };
mopidy-subidy = callPackage ./subidy.nix { };
}
)

View File

@@ -0,0 +1,41 @@
{
lib,
pythonPackages,
fetchPypi,
mopidy,
}:
pythonPackages.buildPythonApplication rec {
pname = "mopidy-iris";
version = "3.70.0";
pyproject = true;
src = fetchPypi {
pname = "mopidy_iris";
inherit version;
hash = "sha256-md/1blTTtjiAAb/jiLE2EfiSlIUwEga8U7OiuKa466k=";
};
build-system = [
pythonPackages.setuptools
];
dependencies = [
mopidy
pythonPackages.configobj
pythonPackages.requests
pythonPackages.tornado
];
# no tests implemented
doCheck = false;
pythonImportsCheck = [ "mopidy_iris" ];
meta = with lib; {
homepage = "https://github.com/jaedb/Iris";
description = "Fully-functional Mopidy web client encompassing Spotify and many other backends";
license = licenses.asl20;
maintainers = [ maintainers.rvolosatovs ];
};
}

View File

@@ -0,0 +1,37 @@
{
lib,
pythonPackages,
fetchPypi,
mopidy,
}:
pythonPackages.buildPythonApplication rec {
pname = "mopidy-jellyfin";
version = "1.0.6";
pyproject = true;
src = fetchPypi {
inherit version;
pname = "mopidy_jellyfin";
hash = "sha256-IKCPypMuluR0+mMALp8lB1oB1pSw4rN4rOl/eKn+Qvo=";
};
build-system = [ pythonPackages.setuptools ];
dependencies = [
mopidy
pythonPackages.unidecode
pythonPackages.websocket-client
];
# no tests implemented
doCheck = false;
pythonImportsCheck = [ "mopidy_jellyfin" ];
meta = with lib; {
homepage = "https://github.com/jellyfin/mopidy-jellyfin";
description = "Mopidy extension for playing audio files from Jellyfin";
license = licenses.asl20;
maintainers = [ maintainers.pstn ];
};
}

View File

@@ -0,0 +1,35 @@
{
lib,
pythonPackages,
fetchFromGitHub,
mopidy,
}:
pythonPackages.buildPythonApplication rec {
pname = "mopidy-listenbrainz";
version = "0.3.0";
pyproject = true;
src = fetchFromGitHub {
owner = "suaviloquence";
repo = "mopidy-listenbrainz";
tag = "v${version}";
hash = "sha256-kYZgG2KQMTxMR8tdwwCKkfexDcxcndXG9LSdlnoN/CY=";
};
build-system = [
pythonPackages.setuptools
];
dependencies = [
mopidy
pythonPackages.musicbrainzngs
];
meta = {
homepage = "https://github.com/suaviloquence/mopidy-listenbrainz";
description = "Mopidy extension for recording played tracks and getting recommendations to Listenbrainz, a libre alternative to Last.fm";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ bohanubis ];
};
}

View File

@@ -0,0 +1,40 @@
{
lib,
mopidy,
pythonPackages,
fetchPypi,
}:
pythonPackages.buildPythonApplication rec {
pname = "mopidy-local";
version = "3.3.0";
pyproject = true;
src = fetchPypi {
inherit version;
pname = "mopidy_local";
hash = "sha256-y6btbGk5UiVan178x7d9jq5OTnKMbuliHv0aRxuZK3o=";
};
build-system = [
pythonPackages.setuptools
];
dependencies = [
mopidy
pythonPackages.uritools
];
nativeCheckInputs = [
pythonPackages.pytestCheckHook
];
pythonImportsCheck = [ "mopidy_local" ];
meta = with lib; {
homepage = "https://github.com/mopidy/mopidy-local";
description = "Mopidy extension for playing music from your local music archive";
license = licenses.asl20;
maintainers = with maintainers; [ ruuda ];
};
}

View File

@@ -0,0 +1,39 @@
{
lib,
pythonPackages,
fetchPypi,
mopidy,
glibcLocales,
}:
pythonPackages.buildPythonApplication rec {
pname = "mopidy-moped";
version = "0.7.1";
pyproject = true;
src = fetchPypi {
inherit version;
pname = "Mopidy-Moped";
sha256 = "15461174037d87af93dd59a236d4275c5abf71cea0670ffff24a7d0399a8a2e4";
};
LC_ALL = "en_US.UTF-8";
buildInputs = [ glibcLocales ];
build-system = [ pythonPackages.setuptools ];
dependencies = [ mopidy ];
# no tests implemented
doCheck = false;
pythonImportsCheck = [ "mopidy_moped" ];
meta = with lib; {
homepage = "https://github.com/martijnboland/moped";
description = "Web client for Mopidy";
license = licenses.mit;
maintainers = [ ];
hydraPlatforms = [ ];
};
}

View File

@@ -0,0 +1,73 @@
{
lib,
stdenv,
fetchFromGitHub,
pythonPackages,
wrapGAppsNoGuiHook,
gst_all_1,
glib-networking,
gobject-introspection,
pipewire,
nixosTests,
}:
pythonPackages.buildPythonApplication rec {
pname = "mopidy";
version = "3.4.2";
pyproject = true;
src = fetchFromGitHub {
owner = "mopidy";
repo = "mopidy";
tag = "v${version}";
hash = "sha256-2OFav2HaQq/RphmZxLyL1n3suwzt1Y/d4h33EdbStjk=";
};
nativeBuildInputs = [ wrapGAppsNoGuiHook ];
buildInputs =
with gst_all_1;
[
glib-networking
gst-plugins-bad
gst-plugins-base
gst-plugins-good
gst-plugins-ugly
gst-plugins-rs
]
++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ pipewire ];
propagatedNativeBuildInputs = [ gobject-introspection ];
propagatedBuildInputs = [ gobject-introspection ];
build-system = [ pythonPackages.setuptools ];
dependencies =
with pythonPackages;
[
gst-python
pygobject3
pykka
requests
setuptools
tornado
]
++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ dbus-python ];
# There are no tests
doCheck = false;
passthru.tests = {
inherit (nixosTests) mopidy;
};
meta = {
homepage = "https://www.mopidy.com/";
description = "Extensible music server that plays music from local disk, Spotify, SoundCloud, and more";
mainProgram = "mopidy";
license = lib.licenses.asl20;
maintainers = [ lib.maintainers.fpletz ];
hydraPlatforms = [ ];
};
}

View File

@@ -0,0 +1,39 @@
{
lib,
pythonPackages,
fetchPypi,
mopidy,
}:
pythonPackages.buildPythonApplication rec {
pname = "mopidy-mopify";
version = "1.7.3";
pyproject = true;
src = fetchPypi {
inherit version;
pname = "Mopidy-Mopify";
hash = "sha256-RlCC+39zC+LeA/QDWPHYx5TrEwOgVrnvcH1Xg12qSLE=";
};
build-system = [
pythonPackages.setuptools
];
dependencies = [
mopidy
pythonPackages.configobj
];
# no tests implemented
doCheck = false;
pythonImportsCheck = [ "mopidy_mopify" ];
meta = with lib; {
homepage = "https://github.com/dirkgroenen/mopidy-mopify";
description = "Mopidy webclient based on the Spotify webbased interface";
license = licenses.gpl3;
maintainers = [ maintainers.Gonzih ];
};
}

View File

@@ -0,0 +1,33 @@
{
lib,
pythonPackages,
fetchPypi,
mopidy,
}:
pythonPackages.buildPythonApplication rec {
pname = "mopidy-mpd";
version = "3.3.0";
pyproject = true;
src = fetchPypi {
inherit version;
pname = "Mopidy-MPD";
hash = "sha256-CeLMRqj9cwBvQrOx7XHVV8MjDjwOosONVlsN2o+vTVM=";
};
build-system = [ pythonPackages.setuptools ];
dependencies = [ mopidy ];
# no tests implemented
doCheck = false;
pythonImportsCheck = [ "mopidy_mpd" ];
meta = with lib; {
homepage = "https://github.com/mopidy/mopidy-mpd";
description = "Mopidy extension for controlling playback from MPD clients";
license = licenses.asl20;
maintainers = [ maintainers.tomahna ];
};
}

View File

@@ -0,0 +1,38 @@
{
lib,
pythonPackages,
fetchPypi,
mopidy,
}:
pythonPackages.buildPythonApplication rec {
pname = "mopidy-mpris";
version = "3.0.3";
pyproject = true;
src = fetchPypi {
inherit version;
pname = "Mopidy-MPRIS";
hash = "sha256-rHQgNIyludTEL7RDC8dIpyGTMOt1Tazn6i/orKlSP4U=";
};
build-system = [
pythonPackages.setuptools
];
dependencies = [
mopidy
pythonPackages.pydbus
];
doCheck = false;
pythonImportsCheck = [ "mopidy_mpris" ];
meta = with lib; {
homepage = "https://www.mopidy.com/";
description = "Mopidy extension for controlling Mopidy through D-Bus using the MPRIS specification";
license = licenses.asl20;
maintainers = [ maintainers.nickhu ];
};
}

View File

@@ -0,0 +1,39 @@
{
lib,
pythonPackages,
fetchPypi,
mopidy,
}:
pythonPackages.buildPythonApplication rec {
pname = "mopidy-muse";
version = "0.0.33";
pyproject = true;
src = fetchPypi {
inherit version;
pname = "Mopidy-Muse";
hash = "sha256-CEPAPWtMrD+HljyqBB6EAyGVeOjzkvVoEywlE4XEJGs=";
};
build-system = [
pythonPackages.setuptools
];
dependencies = [
mopidy
pythonPackages.pykka
];
pythonImportsCheck = [ "mopidy_muse" ];
# has no tests
doCheck = false;
meta = with lib; {
description = "Mopidy web client with Snapcast support";
homepage = "https://github.com/cristianpb/muse";
license = licenses.asl20;
maintainers = [ ];
};
}

View File

@@ -0,0 +1,37 @@
{
lib,
fetchFromGitHub,
pythonPackages,
mopidy,
}:
pythonPackages.buildPythonApplication rec {
pname = "mopidy-musicbox-webclient";
version = "3.1.0";
pyproject = true;
src = fetchFromGitHub {
owner = "pimusicbox";
repo = "mopidy-musicbox-webclient";
tag = "v${version}";
sha256 = "1lzarazq67gciyn6r8cdms0f7j0ayyfwhpf28z93ydb280mfrrb9";
};
build-system = [
pythonPackages.setuptools
];
dependencies = [
mopidy
];
doCheck = false;
meta = {
description = "Mopidy frontend extension and web client with additional features for Pi MusicBox";
homepage = "https://github.com/pimusicbox/mopidy-musicbox-webclient";
changelog = "https://github.com/pimusicbox/mopidy-musicbox-webclient/blob/v${version}/CHANGELOG.rst";
license = lib.licenses.asl20;
maintainers = [ ];
};
}

Some files were not shown because too many files have changed in this diff Show More