nixpkgs/pkgs/applications/audio/cadence/default.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

112 lines
3.0 KiB
Nix
Raw Normal View History

{ lib
, libjack2
, fetchpatch
2021-11-02 10:00:43 +00:00
, fetchFromGitHub
, jack_capture
, pkg-config
2020-02-26 16:54:08 +00:00
, pulseaudioFull
2018-08-04 21:05:42 +00:00
, qtbase
, mkDerivation
, python3
2018-08-04 21:05:42 +00:00
}:
#ladish missing, claudia can't work.
#pulseaudio needs fixes (patchShebangs .pa ...)
#desktop needs icons and exec fixing.
2018-08-04 21:05:42 +00:00
mkDerivation rec {
2019-12-08 03:13:27 +00:00
version = "0.9.1";
pname = "cadence";
2018-08-04 21:05:42 +00:00
2021-11-02 10:00:43 +00:00
src = fetchFromGitHub {
owner = "falkTX";
repo = "Cadence";
rev = "v${version}";
sha256 = "sha256-QFC4wiVF8wphhrammxtc+VMZJpXY5OGHs6DNa21+6B8=";
2018-08-04 21:05:42 +00:00
};
patches = [
# Fix installation without DESTDIR
(fetchpatch {
url = "https://github.com/falkTX/Cadence/commit/1fd3275e7daf4b75f59ef1f85a9e2e93bd5c0731.patch";
sha256 = "0q791jsh8vmjg678dzhbp1ykq8xrrlxl1mbgs3g8if1ccj210vd8";
})
2020-12-07 00:05:59 +00:00
# Fix build with Qt 5.15
(fetchpatch {
url = "https://github.com/falkTX/Cadence/commit/c167f35fbb76c4246c730b29262a59da73010412.patch";
sha256 = "1gm9q6gx03sla5vcnisznc95pjdi2703f8b3mj2kby9rfx2pylyh";
})
];
postPatch = ''
2021-11-02 10:00:43 +00:00
libjackso=$(realpath ${lib.makeLibraryPath [libjack2]}/libjack.so.0);
substituteInPlace ./src/jacklib.py --replace libjack.so.0 $libjackso
substituteInPlace ./src/cadence.py --replace "/usr/bin/pulseaudio" \
"${lib.makeBinPath[pulseaudioFull]}/pulseaudio"
substituteInPlace ./c++/jackbridge/JackBridge.cpp --replace libjack.so.0 $libjackso
'';
nativeBuildInputs = [
pkg-config
];
2018-08-04 21:05:42 +00:00
buildInputs = [
qtbase
jack_capture
2020-02-26 16:54:08 +00:00
pulseaudioFull
2021-11-02 10:00:43 +00:00
(
(python3.withPackages (ps: with ps; [
pyqt5
dbus-python
]))
)
];
2018-08-04 21:05:42 +00:00
makeFlags = [
"PREFIX=${placeholder "out"}"
"SYSCONFDIR=${placeholder "out"}/etc"
];
2018-08-04 21:05:42 +00:00
dontWrapQtApps = true;
# Replace with our own wrappers. They need to be changed manually since it wouldn't work otherwise.
2021-11-02 10:00:43 +00:00
preFixup =
let
outRef = placeholder "out";
prefix = "${outRef}/share/cadence/src";
scriptAndSource = lib.mapAttrs'
(script: source:
lib.nameValuePair ("${outRef}/bin/" + script) ("${prefix}/" + source)
)
{
"cadence" = "cadence.py";
"claudia" = "claudia.py";
"catarina" = "catarina.py";
"catia" = "catia.py";
"cadence-jacksettings" = "jacksettings.py";
"cadence-aloop-daemon" = "cadence_aloop_daemon.py";
"cadence-logs" = "logs.py";
"cadence-render" = "render.py";
"claudia-launcher" = "claudia_launcher.py";
"cadence-session-start" = "cadence_session_start.py";
};
in
lib.mapAttrsToList
(script: source: ''
rm -f ${script}
makeQtWrapper ${source} ${script} \
--prefix PATH : "${lib.makeBinPath [
jack_capture # cadence-render
pulseaudioFull # cadence, cadence-session-start
]}"
'')
scriptAndSource;
2018-08-04 21:05:42 +00:00
meta = {
homepage = "https://github.com/falkTX/Cadence/";
2018-08-04 21:05:42 +00:00
description = "Collection of tools useful for audio production";
2021-01-15 13:21:58 +00:00
license = lib.licenses.gpl2Plus;
maintainers = with lib.maintainers; [ ];
platforms = [ "x86_64-linux" ];
2018-08-04 21:05:42 +00:00
};
}