about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/audio
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2022-01-03 23:55:00 +0000
committerAlyssa Ross <hi@alyssa.is>2022-02-19 11:03:39 +0000
commitf4cf97a04cd5d0b86aa46baec9fb228a8f671c03 (patch)
tree28192415ff39a661d0001563bf81cc93fa25d16d /nixpkgs/pkgs/applications/audio
parentf8422837c9bde058e8f2de37702e7e94b2226040 (diff)
parent18c84ea816348e2a098390101b92d1e39a9dbd45 (diff)
downloadnixlib-f4cf97a04cd5d0b86aa46baec9fb228a8f671c03.tar
nixlib-f4cf97a04cd5d0b86aa46baec9fb228a8f671c03.tar.gz
nixlib-f4cf97a04cd5d0b86aa46baec9fb228a8f671c03.tar.bz2
nixlib-f4cf97a04cd5d0b86aa46baec9fb228a8f671c03.tar.lz
nixlib-f4cf97a04cd5d0b86aa46baec9fb228a8f671c03.tar.xz
nixlib-f4cf97a04cd5d0b86aa46baec9fb228a8f671c03.tar.zst
nixlib-f4cf97a04cd5d0b86aa46baec9fb228a8f671c03.zip
Merge commit '18c84ea816348e2a098390101b92d1e39a9dbd45'
Conflicts:
	nixpkgs/nixos/modules/misc/documentation.nix
	nixpkgs/pkgs/applications/networking/browsers/firefox/packages.nix
	nixpkgs/pkgs/applications/window-managers/sway/default.nix
	nixpkgs/pkgs/build-support/rust/build-rust-package/default.nix
	nixpkgs/pkgs/development/go-modules/generic/default.nix
	nixpkgs/pkgs/development/interpreters/ruby/default.nix
	nixpkgs/pkgs/development/interpreters/ruby/patchsets.nix
	nixpkgs/pkgs/development/libraries/boehm-gc/7.6.6.nix
	nixpkgs/pkgs/development/python-modules/django-mailman3/default.nix
	nixpkgs/pkgs/servers/mail/mailman/web.nix
	nixpkgs/pkgs/top-level/aliases.nix
	nixpkgs/pkgs/top-level/all-packages.nix
	nixpkgs/pkgs/top-level/impure.nix
Diffstat (limited to 'nixpkgs/pkgs/applications/audio')
-rw-r--r--nixpkgs/pkgs/applications/audio/CHOWTapeModel/default.nix72
-rw-r--r--nixpkgs/pkgs/applications/audio/ChowKick/default.nix106
-rw-r--r--nixpkgs/pkgs/applications/audio/aether-lv2/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/audio/ardour/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/ashuffle/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/audacious/default.nix10
-rw-r--r--nixpkgs/pkgs/applications/audio/audacity/0001-Use-a-different-approach-to-estimate-the-disk-space-.patch355
-rw-r--r--nixpkgs/pkgs/applications/audio/audacity/default.nix79
-rw-r--r--nixpkgs/pkgs/applications/audio/aumix/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/audio/bambootracker/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/bespokesynth/default.nix8
-rw-r--r--nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio4.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/cadence/default.nix86
-rw-r--r--nixpkgs/pkgs/applications/audio/callaudiod/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/carla/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/cdparanoia/default.nix9
-rw-r--r--nixpkgs/pkgs/applications/audio/clerk/default.nix20
-rw-r--r--nixpkgs/pkgs/applications/audio/ecasound/default.nix11
-rw-r--r--nixpkgs/pkgs/applications/audio/espeak-ng/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/espeak/default.nix5
-rw-r--r--nixpkgs/pkgs/applications/audio/espeak/edit.nix5
-rw-r--r--nixpkgs/pkgs/applications/audio/faust/faust2.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/faustPhysicalModeling/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/fluidsynth/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/audio/fomp/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/foo-yc20/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/freqtweak/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/ft2-clone/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/giada/default.nix64
-rw-r--r--nixpkgs/pkgs/applications/audio/gigedit/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/audio/gmu/default.nix20
-rw-r--r--nixpkgs/pkgs/applications/audio/gnome-podcasts/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/gtklick/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/audio/helio-workstation/default.nix10
-rw-r--r--nixpkgs/pkgs/applications/audio/helvum/default.nix64
-rw-r--r--nixpkgs/pkgs/applications/audio/hybridreverb2/default.nix53
-rw-r--r--nixpkgs/pkgs/applications/audio/hydrogen/0.nix34
-rw-r--r--nixpkgs/pkgs/applications/audio/hydrogen/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/jamulus/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/jconvolver/default.nix114
-rw-r--r--nixpkgs/pkgs/applications/audio/jmusicbot/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/kapitonov-plugins-pack/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/kid3/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/ladspa-plugins/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/audio/lastfmsubmitd/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/audio/libopenmpt/default.nix12
-rw-r--r--nixpkgs/pkgs/applications/audio/librespot/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/audio/linuxband/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/audio/lmms/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/lollypop/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/losslessaudiochecker/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/audio/lsp-plugins/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/mi2ly/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/audio/mi2ly/default.upstream3
-rw-r--r--nixpkgs/pkgs/applications/audio/midi-visualizer/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/milkytracker/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/mimms/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/audio/mixxx/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/mmtc/default.nix13
-rw-r--r--nixpkgs/pkgs/applications/audio/mod-arpeggiator-lv2/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/audio/mod-distortion/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/molot-lite/default.nix9
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/iris.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/jellyfin.nix25
-rw-r--r--nixpkgs/pkgs/applications/audio/mp3blaster/default.nix12
-rw-r--r--nixpkgs/pkgs/applications/audio/mpc/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/mpdevil/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/munt/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/audio/musescore/default.nix8
-rw-r--r--nixpkgs/pkgs/applications/audio/musikcube/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/audio/ncmpc/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/ncspot/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/audio/netease-cloud-music-gtk/cargo-lock.patch2007
-rw-r--r--nixpkgs/pkgs/applications/audio/netease-cloud-music-gtk/default.nix61
-rwxr-xr-xnixpkgs/pkgs/applications/audio/netease-cloud-music-gtk/update-cargo-lock.sh20
-rw-r--r--nixpkgs/pkgs/applications/audio/netease-music-tui/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/noisetorch/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/non/default.nix14
-rw-r--r--nixpkgs/pkgs/applications/audio/nootka/unstable.nix32
-rw-r--r--nixpkgs/pkgs/applications/audio/ocenaudio/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/orca-c/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/padthv1/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/pamix/default.nix16
-rw-r--r--nixpkgs/pkgs/applications/audio/paprefs/default.nix8
-rw-r--r--nixpkgs/pkgs/applications/audio/patchmatrix/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/audio/pavucontrol/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/audio/plexamp/default.nix13
-rw-r--r--nixpkgs/pkgs/applications/audio/pocket-casts/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/audio/praat/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/pt2-clone/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/ptcollab/default.nix17
-rw-r--r--nixpkgs/pkgs/applications/audio/pulseaudio-ctl/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/pulseaudio-dlna/0001-setup.py-remove-dbus-python-from-list.patch25
-rw-r--r--nixpkgs/pkgs/applications/audio/pulseaudio-dlna/default.nix87
-rw-r--r--nixpkgs/pkgs/applications/audio/qjackctl/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/qpwgraph/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/audio/qtractor/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/reaper/default.nix8
-rw-r--r--nixpkgs/pkgs/applications/audio/rofi-pulse-select/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/audio/roomeqwizard/default.nix118
-rw-r--r--nixpkgs/pkgs/applications/audio/schismtracker/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/setbfree/default.nix10
-rw-r--r--nixpkgs/pkgs/applications/audio/sfizz/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/audio/snapcast/default.nix5
-rw-r--r--nixpkgs/pkgs/applications/audio/snd/default.nix9
-rw-r--r--nixpkgs/pkgs/applications/audio/songrec/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/sony-headphones-client/default.nix44
-rwxr-xr-xnixpkgs/pkgs/applications/audio/soundwireserver/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/audio/spot/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/spotify/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/spotifyd/default.nix19
-rw-r--r--nixpkgs/pkgs/applications/audio/strawberry/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/sublime-music/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/audio/surge-XT/default.nix93
-rw-r--r--nixpkgs/pkgs/applications/audio/swh-lv2/default.nix10
-rw-r--r--nixpkgs/pkgs/applications/audio/synthv1/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/tagutil/default.nix5
-rw-r--r--nixpkgs/pkgs/applications/audio/tenacity/default.nix148
-rw-r--r--nixpkgs/pkgs/applications/audio/tonelib-gfx/default.nix71
-rw-r--r--nixpkgs/pkgs/applications/audio/tonelib-jam/default.nix70
-rw-r--r--nixpkgs/pkgs/applications/audio/tonelib-zoom/default.nix56
-rw-r--r--nixpkgs/pkgs/applications/audio/transcribe/default.nix63
-rw-r--r--nixpkgs/pkgs/applications/audio/vimpc/default.nix11
-rw-r--r--nixpkgs/pkgs/applications/audio/vmpk/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/vocal/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/audio/wavegain/default.nix17
-rw-r--r--nixpkgs/pkgs/applications/audio/whipper/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/x42-avldrums/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/x42-plugins/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/zam-plugins/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/zrythm/default.nix173
-rw-r--r--nixpkgs/pkgs/applications/audio/zynaddsubfx/default.nix13
133 files changed, 4625 insertions, 766 deletions
diff --git a/nixpkgs/pkgs/applications/audio/CHOWTapeModel/default.nix b/nixpkgs/pkgs/applications/audio/CHOWTapeModel/default.nix
index 9b9649cf9f8a..3eff818cca90 100644
--- a/nixpkgs/pkgs/applications/audio/CHOWTapeModel/default.nix
+++ b/nixpkgs/pkgs/applications/audio/CHOWTapeModel/default.nix
@@ -1,68 +1,76 @@
-{ alsa-lib
-, curl
-, fetchFromGitHub
-, freeglut
-, freetype
-, libGL
-, libXcursor
-, libXext
-, libXinerama
-, libXrandr
-, libjack2
-, pkg-config
-, python3
-, stdenv
-, lib
-}:
+{ alsa-lib, at-spi2-core, cmake, curl, dbus, libepoxy, fetchFromGitHub, freeglut
+, freetype, gcc-unwrapped, gtk3, lib, libGL, libXcursor, libXdmcp, libXext
+, libXinerama, libXrandr, libXtst, libdatrie, libjack2, libpsl, libselinux
+, libsepol, libsysprof-capture, libthai, libxkbcommon, lv2, pcre, pkg-config
+, python3, sqlite, stdenv }:
 
 stdenv.mkDerivation rec {
   pname = "CHOWTapeModel";
-  version = "unstable-2020-12-12";
+  version = "2.10.0";
 
   src = fetchFromGitHub {
     owner = "jatinchowdhury18";
     repo = "AnalogTapeModel";
-    rev = "a7cf10c3f790d306ce5743bb731e4bc2c1230d70";
-    sha256 = "09nq8x2dwabncbp039dqm1brzcz55zg9kpxd4p5348xlaz5m4661";
+    rev = "v${version}";
+    sha256 = "sha256-iuT7OBRBtMkjcTHayCcne1mNqkcxzKnEYl62n65V7Z4=";
     fetchSubmodules = true;
   };
 
-  nativeBuildInputs = [
-    pkg-config
-  ];
+  nativeBuildInputs = [ pkg-config cmake ];
 
   buildInputs = [
     alsa-lib
+    at-spi2-core
     curl
+    dbus
+    libepoxy
     freeglut
     freetype
+    gtk3
     libGL
     libXcursor
+    libXdmcp
     libXext
     libXinerama
     libXrandr
+    libXtst
+    libdatrie
     libjack2
+    libpsl
+    libselinux
+    libsepol
+    libsysprof-capture
+    libthai
+    libxkbcommon
+    lv2
+    pcre
     python3
+    sqlite
+    gcc-unwrapped
   ];
 
-  buildPhase = ''
-    cd Plugin/
-    ./build_linux.sh
-  '';
+  cmakeFlags = [
+    "-DCMAKE_AR=${gcc-unwrapped}/bin/gcc-ar"
+    "-DCMAKE_RANLIB=${gcc-unwrapped}/bin/gcc-ranlib"
+    "-DCMAKE_NM=${gcc-unwrapped}/bin/gcc-nm"
+  ];
+
+  postPatch = "cd Plugin";
 
   installPhase = ''
     mkdir -p $out/lib/lv2 $out/lib/vst3 $out/bin $out/share/doc/CHOWTapeModel/
-    cd Builds/LinuxMakefile/build/
-    cp CHOWTapeModel.a  $out/lib
-    cp -r CHOWTapeModel.lv2 $out/lib/lv2
-    cp -r CHOWTapeModel.vst3 $out/lib/vst3
-    cp CHOWTapeModel  $out/bin
+    cd CHOWTapeModel_artefacts/Release
+    cp libCHOWTapeModel_SharedCode.a  $out/lib
+    cp -r LV2/CHOWTapeModel.lv2 $out/lib/lv2
+    cp -r VST3/CHOWTapeModel.vst3 $out/lib/vst3
+    cp Standalone/CHOWTapeModel  $out/bin
     cp ../../../../Manual/ChowTapeManual.pdf $out/share/doc/CHOWTapeModel/
   '';
 
   meta = with lib; {
     homepage = "https://github.com/jatinchowdhury18/AnalogTapeModel";
-    description = "Physical modelling signal processing for analog tape recording. LV2, VST3 and standalone";
+    description =
+      "Physical modelling signal processing for analog tape recording. LV2, VST3 and standalone";
     license = with licenses; [ gpl3Only ];
     maintainers = with maintainers; [ magnetophon ];
     platforms = platforms.linux;
diff --git a/nixpkgs/pkgs/applications/audio/ChowKick/default.nix b/nixpkgs/pkgs/applications/audio/ChowKick/default.nix
new file mode 100644
index 000000000000..b3ad00bf63a8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/ChowKick/default.nix
@@ -0,0 +1,106 @@
+{ alsa-lib
+, at-spi2-core
+, brotli
+, cmake
+, curl
+, dbus
+, libepoxy
+, fetchFromGitHub
+, freeglut
+, freetype
+, gtk2-x11
+, lib
+, libGL
+, libXcursor
+, libXdmcp
+, libXext
+, libXinerama
+, libXrandr
+, libXtst
+, libdatrie
+, libjack2
+, libpsl
+, libselinux
+, libsepol
+, libsysprof-capture
+, libthai
+, libxkbcommon
+, lv2
+, pcre
+, pkg-config
+, python3
+, sqlite
+, stdenv
+, util-linuxMinimal
+, webkitgtk
+}:
+
+stdenv.mkDerivation rec {
+  pname = "ChowKick";
+  version = "1.1.1";
+
+  src = fetchFromGitHub {
+    owner = "Chowdhury-DSP";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0amnp0p7ckbbr9dcbdnld1ryv46kvza2dj8m6hzmi7c1s4df8x5q";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    cmake
+  ];
+  buildInputs = [
+    alsa-lib
+    at-spi2-core
+    brotli
+    curl
+    dbus
+    libepoxy
+    freeglut
+    freetype
+    gtk2-x11
+    libGL
+    libXcursor
+    libXdmcp
+    libXext
+    libXinerama
+    libXrandr
+    libXtst
+    libdatrie
+    libjack2
+    libpsl
+    libselinux
+    libsepol
+    libsysprof-capture
+    libthai
+    libxkbcommon
+    lv2
+    pcre
+    python3
+    sqlite
+    util-linuxMinimal
+    webkitgtk
+  ];
+
+  cmakeFlags = [
+    "-DCMAKE_AR=${stdenv.cc.cc}/bin/gcc-ar"
+    "-DCMAKE_RANLIB=${stdenv.cc.cc}/bin/gcc-ranlib"
+  ];
+
+  installPhase = ''
+    mkdir -p $out/lib/lv2 $out/lib/vst3 $out/bin
+    cp -r ChowKick_artefacts/Release/LV2//${pname}.lv2 $out/lib/lv2
+    cp -r ChowKick_artefacts/Release/VST3/${pname}.vst3 $out/lib/vst3
+    cp ChowKick_artefacts/Release/Standalone/${pname}  $out/bin
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/Chowdhury-DSP/ChowKick";
+    description = "Kick synthesizer based on old-school drum machine circuits";
+    license = with licenses; [ bsd3 ];
+    maintainers = with maintainers; [ magnetophon ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/aether-lv2/default.nix b/nixpkgs/pkgs/applications/audio/aether-lv2/default.nix
new file mode 100644
index 000000000000..e912c7fa49a4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/aether-lv2/default.nix
@@ -0,0 +1,33 @@
+{ lib, stdenv, fetchFromGitHub, lv2, libX11, libGL, libGLU, mesa, cmake }:
+
+stdenv.mkDerivation rec {
+  pname = "aether-lv2";
+  version = "1.2.1";
+
+  src = fetchFromGitHub {
+    owner = "Dougal-s";
+    repo = "aether";
+    rev = "v${version}";
+    sha256 = "0xhih4smjxn87s0f4gaab51d8594qlp0lyypzxl5lm37j1i9zigs";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [
+    lv2 libX11 libGL libGLU mesa
+  ];
+
+  installPhase = ''
+    mkdir -p $out/lib/lv2
+    cp -r aether.lv2 $out/lib/lv2
+  '';
+
+  meta = with lib; {
+    homepage = "https://dougal-s.github.io/Aether/";
+    description = "An algorithmic reverb LV2 based on Cloudseed";
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.linux;
+    license = licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/ardour/default.nix b/nixpkgs/pkgs/applications/audio/ardour/default.nix
index 2bd6cf03cc08..d5afcac86cd4 100644
--- a/nixpkgs/pkgs/applications/audio/ardour/default.nix
+++ b/nixpkgs/pkgs/applications/audio/ardour/default.nix
@@ -52,7 +52,7 @@
 , vamp-plugin-sdk
 , wafHook
 , xjadeo
-, videoSupport ? false
+, videoSupport ? true
 }:
 stdenv.mkDerivation rec {
   pname = "ardour";
diff --git a/nixpkgs/pkgs/applications/audio/ashuffle/default.nix b/nixpkgs/pkgs/applications/audio/ashuffle/default.nix
index e445132ee3c0..90a2abe8adfb 100644
--- a/nixpkgs/pkgs/applications/audio/ashuffle/default.nix
+++ b/nixpkgs/pkgs/applications/audio/ashuffle/default.nix
@@ -10,13 +10,13 @@
 
 stdenv.mkDerivation rec {
   pname = "ashuffle";
-  version = "3.10.1";
+  version = "3.12.5";
 
   src = fetchFromGitHub {
     owner = "joshkunz";
     repo = "ashuffle";
     rev = "v${version}";
-    sha256 = "103jhajqwryiaf52qqgshajcnsxsz4l8gn3sz6bxs7k0yq5x1knr";
+    sha256 = "sha256-dPgv6EzRxRdHkGvys601Bkg9Srd8oEjoE9jbAin74Vk=";
     fetchSubmodules = true;
   };
 
diff --git a/nixpkgs/pkgs/applications/audio/audacious/default.nix b/nixpkgs/pkgs/applications/audio/audacious/default.nix
index a6c8221c9f72..7cd22d258315 100644
--- a/nixpkgs/pkgs/applications/audio/audacious/default.nix
+++ b/nixpkgs/pkgs/applications/audio/audacious/default.nix
@@ -11,15 +11,15 @@
 
 mkDerivation rec {
   pname = "audacious";
-  version = "4.0.5";
+  version = "4.1";
 
   src = fetchurl {
     url = "http://distfiles.audacious-media-player.org/audacious-${version}.tar.bz2";
-    sha256 = "028zjgz0p7ys15lk2a30m5zcv9xrx3ga50wjsh4m4zxilgkakbji";
+    sha256 = "0p734psjjvjcmla2hg5h6a9v1prvy63jj9xm2g2ngs49jy7qan0z";
   };
   pluginsSrc = fetchurl {
     url = "http://distfiles.audacious-media-player.org/audacious-plugins-${version}.tar.bz2";
-    sha256 = "0ny5w1agr9jaz5w3wyyxf1ygmzmd1sivaf97lcm4z4w6529520lz";
+    sha256 = "0k0xnqmxi5lna034i2cnzvfzrykxmv4fbs1nkrc9sd2ma1igrmns";
   };
 
   nativeBuildInputs = [ gettext pkg-config ];
@@ -36,8 +36,10 @@ mkDerivation rec {
     libopenmpt
   ];
 
+  configureFlags = [ "--disable-gtk" ];
+
   # Here we build both audacious and audacious-plugins in one
-  # derivations, since they really expect to be in the same prefix.
+  # derivation, since they really expect to be in the same prefix.
   # This is slighly tricky.
   builder = builtins.toFile "builder.sh" ''
     # First build audacious.
diff --git a/nixpkgs/pkgs/applications/audio/audacity/0001-Use-a-different-approach-to-estimate-the-disk-space-.patch b/nixpkgs/pkgs/applications/audio/audacity/0001-Use-a-different-approach-to-estimate-the-disk-space-.patch
new file mode 100644
index 000000000000..33b7554db448
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/audacity/0001-Use-a-different-approach-to-estimate-the-disk-space-.patch
@@ -0,0 +1,355 @@
+From deeb435829d73524df851f6f4c2d4be552c99230 Mon Sep 17 00:00:00 2001
+From: Dmitry Vedenko <dmitry@crsib.me>
+Date: Fri, 1 Oct 2021 16:21:22 +0300
+Subject: [PATCH] Use a different approach to estimate the disk space usage
+
+New a approach is a bit less precise, but removes the requirement for the "private" SQLite3 table and allows Audacity to be built against system SQLite3.
+---
+ cmake-proxies/sqlite/CMakeLists.txt |   5 -
+ src/DBConnection.h                  |   4 +-
+ src/ProjectFileIO.cpp               | 269 +++++-----------------------
+ 3 files changed, 44 insertions(+), 234 deletions(-)
+
+diff --git a/cmake-proxies/sqlite/CMakeLists.txt b/cmake-proxies/sqlite/CMakeLists.txt
+index 63d70637c..d7b9b95ef 100644
+--- a/cmake-proxies/sqlite/CMakeLists.txt
++++ b/cmake-proxies/sqlite/CMakeLists.txt
+@@ -19,11 +19,6 @@ list( APPEND INCLUDES
+ 
+ list( APPEND DEFINES
+    PRIVATE
+-      #
+-      # We need the dbpage table for space calculations.
+-      #
+-      SQLITE_ENABLE_DBPAGE_VTAB=1
+-
+       # Can't be set after a WAL mode database is initialized, so change
+       # the default here to ensure all project files get the same page 
+       # size.
+diff --git a/src/DBConnection.h b/src/DBConnection.h
+index 16a7fc9d4..07d3af95e 100644
+--- a/src/DBConnection.h
++++ b/src/DBConnection.h
+@@ -75,8 +75,8 @@ public:
+       LoadSampleBlock,
+       InsertSampleBlock,
+       DeleteSampleBlock,
+-      GetRootPage,
+-      GetDBPage
++      GetSampleBlockSize,
++      GetAllSampleBlocksSize
+    };
+    sqlite3_stmt *Prepare(enum StatementID id, const char *sql);
+ 
+diff --git a/src/ProjectFileIO.cpp b/src/ProjectFileIO.cpp
+index 3b3e2e1fd..c9bc45af4 100644
+--- a/src/ProjectFileIO.cpp
++++ b/src/ProjectFileIO.cpp
+@@ -35,6 +35,7 @@ Paul Licameli split from AudacityProject.cpp
+ #include "widgets/ProgressDialog.h"
+ #include "wxFileNameWrapper.h"
+ #include "xml/XMLFileReader.h"
++#include "MemoryX.h"`
+ 
+ #undef NO_SHM
+ #if !defined(__WXMSW__)
+@@ -2357,255 +2358,69 @@ int64_t ProjectFileIO::GetTotalUsage()
+ }
+ 
+ //
+-// Returns the amount of disk space used by the specified sample blockid or all
+-// of the sample blocks if the blockid is 0.  It does this by using the raw SQLite
+-// pages available from the "sqlite_dbpage" virtual table to traverse the SQLite
+-// table b-tree described here:  https://www.sqlite.org/fileformat.html
++// Returns the estimation of disk space used by the specified sample blockid or all
++// of the sample blocks if the blockid is 0. This does not include small overhead
++// of the internal SQLite structures, only the size used by the data
+ //
+ int64_t ProjectFileIO::GetDiskUsage(DBConnection &conn, SampleBlockID blockid /* = 0 */)
+ {
+-   // Information we need to track our travels through the b-tree
+-   typedef struct
+-   {
+-      int64_t pgno;
+-      int currentCell;
+-      int numCells;
+-      unsigned char data[65536];
+-   } page;
+-   std::vector<page> stack;
+-
+-   int64_t total = 0;
+-   int64_t found = 0;
+-   int64_t right = 0;
+-   int rc;
++   sqlite3_stmt* stmt = nullptr;
+ 
+-   // Get the rootpage for the sampleblocks table.
+-   sqlite3_stmt *stmt =
+-      conn.Prepare(DBConnection::GetRootPage,
+-                    "SELECT rootpage FROM sqlite_master WHERE tbl_name = 'sampleblocks';");
+-   if (stmt == nullptr || sqlite3_step(stmt) != SQLITE_ROW)
++   if (blockid == 0)
+    {
+-      return 0;
+-   }
+-
+-   // And store it in our first stack frame
+-   stack.push_back({sqlite3_column_int64(stmt, 0)});
++      static const char* statement =
++R"(SELECT 
++	sum(length(blockid) + length(sampleformat) + 
++	length(summin) + length(summax) + length(sumrms) + 
++	length(summary256) + length(summary64k) +
++	length(samples))
++FROM sampleblocks;)";
+ 
+-   // All done with the statement
+-   sqlite3_clear_bindings(stmt);
+-   sqlite3_reset(stmt);
+-
+-   // Prepare/retrieve statement to read raw database page
+-   stmt = conn.Prepare(DBConnection::GetDBPage,
+-      "SELECT data FROM sqlite_dbpage WHERE pgno = ?1;");
+-   if (stmt == nullptr)
+-   {
+-      return 0;
++      stmt = conn.Prepare(DBConnection::GetAllSampleBlocksSize, statement);
+    }
+-
+-   // Traverse the b-tree until we've visited all of the leaf pages or until
+-   // we find the one corresponding to the passed in sample blockid. Because we
+-   // use an integer primary key for the sampleblocks table, the traversal will
+-   // be in ascending blockid sequence.
+-   do
++   else
+    {
+-      // Acces the top stack frame
+-      page &pg = stack.back();
++      static const char* statement =
++R"(SELECT 
++	length(blockid) + length(sampleformat) + 
++	length(summin) + length(summax) + length(sumrms) + 
++	length(summary256) + length(summary64k) +
++	length(samples)
++FROM sampleblocks WHERE blockid = ?1;)";
+ 
+-      // Read the page from the sqlite_dbpage table if it hasn't yet been loaded
+-      if (pg.numCells == 0)
+-      {
+-         // Bind the page number
+-         sqlite3_bind_int64(stmt, 1, pg.pgno);
++      stmt = conn.Prepare(DBConnection::GetSampleBlockSize, statement);
++   }
+ 
+-         // And retrieve the page
+-         if (sqlite3_step(stmt) != SQLITE_ROW)
++   auto cleanup = finally(
++      [stmt]() {
++         // Clear statement bindings and rewind statement
++         if (stmt != nullptr)
+          {
+-            // REVIEW: Likely harmless failure - says size is zero on
+-            // this error.
+-            // LLL: Yea, but not much else we can do.
+-            return 0;
++            sqlite3_clear_bindings(stmt);
++            sqlite3_reset(stmt);
+          }
++      });
+ 
+-         // Copy the page content to the stack frame
+-         memcpy(&pg.data,
+-                sqlite3_column_blob(stmt, 0),
+-                sqlite3_column_bytes(stmt, 0));
+-
+-         // And retrieve the total number of cells within it
+-         pg.numCells = get2(&pg.data[3]);
+-
+-         // Reset statement for next usage
+-         sqlite3_clear_bindings(stmt);
+-         sqlite3_reset(stmt);
+-      }
+-
+-      //wxLogDebug("%*.*spgno %lld currentCell %d numCells %d", (stack.size() - 1) * 2, (stack.size() - 1) * 2, "", pg.pgno, pg.currentCell, pg.numCells);
+-
+-      // Process an interior table b-tree page
+-      if (pg.data[0] == 0x05)
+-      {
+-         // Process the next cell if we haven't examined all of them yet
+-         if (pg.currentCell < pg.numCells)
+-         {
+-            // Remember the right-most leaf page number.
+-            right = get4(&pg.data[8]);
+-
+-            // Iterate over the cells.
+-            //
+-            // If we're not looking for a specific blockid, then we always push the
+-            // target page onto the stack and leave the loop after a single iteration.
+-            //
+-            // Otherwise, we match the blockid against the highest integer key contained
+-            // within the cell and if the blockid falls within the cell, we stack the
+-            // page and stop the iteration.
+-            //
+-            // In theory, we could do a binary search for a specific blockid here, but
+-            // because our sample blocks are always large, we will get very few cells
+-            // per page...usually 6 or less.
+-            //
+-            // In both cases, the stacked page can be either an internal or leaf page.
+-            bool stacked = false;
+-            while (pg.currentCell < pg.numCells)
+-            {
+-               // Get the offset to this cell using the offset in the cell pointer
+-               // array.
+-               //
+-               // The cell pointer array starts immediately after the page header
+-               // at offset 12 and the retrieved offset is from the beginning of
+-               // the page.
+-               int celloff = get2(&pg.data[12 + (pg.currentCell * 2)]);
+-
+-               // Bump to the next cell for the next iteration.
+-               pg.currentCell++;
+-
+-               // Get the page number this cell describes
+-               int pagenum = get4(&pg.data[celloff]);
+-
+-               // And the highest integer key, which starts at offset 4 within the cell.
+-               int64_t intkey = 0;
+-               get_varint(&pg.data[celloff + 4], &intkey);
+-
+-               //wxLogDebug("%*.*sinternal - right %lld celloff %d pagenum %d intkey %lld", (stack.size() - 1) * 2, (stack.size() - 1) * 2, " ", right, celloff, pagenum, intkey);
+-
+-               // Stack the described page if we're not looking for a specific blockid
+-               // or if this page contains the given blockid.
+-               if (!blockid || blockid <= intkey)
+-               {
+-                  stack.push_back({pagenum, 0, 0});
+-                  stacked = true;
+-                  break;
+-               }
+-            }
+-
+-            // If we pushed a new page onto the stack, we need to jump back up
+-            // to read the page
+-            if (stacked)
+-            {
+-               continue;
+-            }
+-         }
++   if (blockid != 0)
++   {
++      int rc = sqlite3_bind_int64(stmt, 1, blockid);
+ 
+-         // We've exhausted all the cells with this page, so we stack the right-most
+-         // leaf page.  Ensure we only process it once.
+-         if (right)
+-         {
+-            stack.push_back({right, 0, 0});
+-            right = 0;
+-            continue;
+-         }
+-      }
+-      // Process a leaf table b-tree page
+-      else if (pg.data[0] == 0x0d)
++      if (rc != SQLITE_OK)
+       {
+-         // Iterate over the cells
+-         //
+-         // If we're not looking for a specific blockid, then just accumulate the
+-         // payload sizes. We will be reading every leaf page in the sampleblocks
+-         // table.
+-         //
+-         // Otherwise we break out when we find the matching blockid. In this case,
+-         // we only ever look at 1 leaf page.
+-         bool stop = false;
+-         for (int i = 0; i < pg.numCells; i++)
+-         {
+-            // Get the offset to this cell using the offset in the cell pointer
+-            // array.
+-            //
+-            // The cell pointer array starts immediately after the page header
+-            // at offset 8 and the retrieved offset is from the beginning of
+-            // the page.
+-            int celloff = get2(&pg.data[8 + (i * 2)]);
+-
+-            // Get the total payload size in bytes of the described row.
+-            int64_t payload = 0;
+-            int digits = get_varint(&pg.data[celloff], &payload);
+-
+-            // Get the integer key for this row.
+-            int64_t intkey = 0;
+-            get_varint(&pg.data[celloff + digits], &intkey);
+-
+-            //wxLogDebug("%*.*sleaf - celloff %4d intkey %lld payload %lld", (stack.size() - 1) * 2, (stack.size() - 1) * 2, " ", celloff, intkey, payload);
+-
+-            // Add this payload size to the total if we're not looking for a specific
+-            // blockid
+-            if (!blockid)
+-            {
+-               total += payload;
+-            }
+-            // Otherwise, return the payload size for a matching row
+-            else if (blockid == intkey)
+-            {
+-               return payload;
+-            }
+-         }
++         conn.ThrowException(false);
+       }
++   }
+ 
+-      // Done with the current branch, so pop back up to the previous one (if any)
+-      stack.pop_back();
+-   } while (!stack.empty());
+-
+-   // Return the total used for all sample blocks
+-   return total;
+-}
+-
+-// Retrieves a 2-byte big-endian integer from the page data
+-unsigned int ProjectFileIO::get2(const unsigned char *ptr)
+-{
+-   return (ptr[0] << 8) | ptr[1];
+-}
+-
+-// Retrieves a 4-byte big-endian integer from the page data
+-unsigned int ProjectFileIO::get4(const unsigned char *ptr)
+-{
+-   return ((unsigned int) ptr[0] << 24) |
+-          ((unsigned int) ptr[1] << 16) |
+-          ((unsigned int) ptr[2] << 8)  |
+-          ((unsigned int) ptr[3]);
+-}
+-
+-// Retrieves a variable length integer from the page data. Returns the
+-// number of digits used to encode the integer and the stores the
+-// value at the given location.
+-int ProjectFileIO::get_varint(const unsigned char *ptr, int64_t *out)
+-{
+-   int64_t val = 0;
+-   int i;
++   int rc = sqlite3_step(stmt);
+ 
+-   for (i = 0; i < 8; ++i)
++   if (rc != SQLITE_ROW)
+    {
+-      val = (val << 7) + (ptr[i] & 0x7f);
+-      if ((ptr[i] & 0x80) == 0)
+-      {
+-         *out = val;
+-         return i + 1;
+-      }
++      conn.ThrowException(false);
+    }
+ 
+-   val = (val << 8) + (ptr[i] & 0xff);
+-   *out = val;
++   const int64_t size = sqlite3_column_int64(stmt, 0);
+ 
+-   return 9;
++   return size;
+ }
+ 
+ InvisibleTemporaryProject::InvisibleTemporaryProject()
+-- 
+2.33.1
+
diff --git a/nixpkgs/pkgs/applications/audio/audacity/default.nix b/nixpkgs/pkgs/applications/audio/audacity/default.nix
index 566024881b4a..0e4afa4af7cf 100644
--- a/nixpkgs/pkgs/applications/audio/audacity/default.nix
+++ b/nixpkgs/pkgs/applications/audio/audacity/default.nix
@@ -3,7 +3,6 @@
 , fetchFromGitHub
 , fetchpatch
 , cmake
-, wxGTK
 , pkg-config
 , python3
 , gettext
@@ -18,7 +17,6 @@
 , sqlite
 , sratom
 , suil
-, alsa-lib
 , libsndfile
 , soxr
 , flac
@@ -28,11 +26,13 @@
 , libopus
 , ffmpeg
 , soundtouch
-, pcre /*, portaudio - given up fighting their portaudio.patch */
+, pcre
+/*, portaudio - given up fighting their portaudio.patch */
 , linuxHeaders
+, alsa-lib
 , at-spi2-core
 , dbus
-, epoxy
+, libepoxy
 , libXdmcp
 , libXtst
 , libpthreadstubs
@@ -40,6 +40,16 @@
 , libsepol
 , libxkbcommon
 , util-linux
+, wxGTK
+, AppKit ? null
+, AudioToolbox ? null
+, AudioUnit ? null
+, Carbon ? null
+, Cocoa ? null
+, CoreAudio ? null
+, CoreAudioKit ? null
+, CoreServices ? null
+, wxmac
 }:
 
 # TODO
@@ -49,14 +59,20 @@
 let
   inherit (lib) optionals;
 
+  wxWidgets_src = fetchFromGitHub {
+    owner = "audacity";
+    repo = "wxWidgets";
+    rev = "07e7d832c7a337aedba3537b90b2c98c4d8e2985";
+    sha256 = "1mawnkcrmqj98jp0jxlnh9xkc950ca033ccb51c7035pzmi9if9a";
+    fetchSubmodules = true;
+  };
+
   wxGTK' = wxGTK.overrideAttrs (oldAttrs: rec {
-    src = fetchFromGitHub {
-      owner = "audacity";
-      repo = "wxWidgets";
-      rev = "07e7d832c7a337aedba3537b90b2c98c4d8e2985";
-      sha256 = "1mawnkcrmqj98jp0jxlnh9xkc950ca033ccb51c7035pzmi9if9a";
-      fetchSubmodules = true;
-    };
+    src = wxWidgets_src;
+  });
+
+  wxmac' = wxmac.overrideAttrs (oldAttrs: rec {
+    src = wxWidgets_src;
   });
 
 in
@@ -84,28 +100,18 @@ stdenv.mkDerivation rec {
       sha256 = "0zp2iydd46analda9cfnbmzdkjphz5m7dynrdj5qdnmq6j3px9fw";
       name = "audacity_xdg_paths.patch";
     })
+    # This is required to make audacity work with nixpkgs’ sqlite
+    # https://github.com/audacity/audacity/pull/1802 rebased onto 3.0.2
+    ./0001-Use-a-different-approach-to-estimate-the-disk-space-.patch
   ];
 
   postPatch = ''
     touch src/RevisionIdent.h
-
+  '' + lib.optionalString stdenv.isLinux ''
     substituteInPlace src/FileNames.cpp \
       --replace /usr/include/linux/magic.h ${linuxHeaders}/include/linux/magic.h
   '';
 
-  # audacity only looks for ffmpeg at runtime, so we need to link it in manually
-  NIX_LDFLAGS = toString [
-    "-lavcodec"
-    "-lavdevice"
-    "-lavfilter"
-    "-lavformat"
-    "-lavresample"
-    "-lavutil"
-    "-lpostproc"
-    "-lswresample"
-    "-lswscale"
-  ];
-
   nativeBuildInputs = [
     cmake
     gettext
@@ -116,7 +122,6 @@ stdenv.mkDerivation rec {
   ];
 
   buildInputs = [
-    alsa-lib
     expat
     ffmpeg
     file
@@ -138,12 +143,11 @@ stdenv.mkDerivation rec {
     sratom
     suil
     twolame
-    wxGTK'
-    wxGTK'.gtk
   ] ++ optionals stdenv.isLinux [
+    alsa-lib # for portaudio
     at-spi2-core
     dbus
-    epoxy
+    libepoxy
     libXdmcp
     libXtst
     libpthreadstubs
@@ -151,6 +155,19 @@ stdenv.mkDerivation rec {
     libselinux
     libsepol
     util-linux
+    wxGTK'
+    wxGTK'.gtk
+  ] ++ optionals stdenv.isDarwin [
+    wxmac'
+    AppKit
+    Cocoa
+    CoreAudioKit
+    AudioUnit AudioToolbox CoreAudio CoreServices Carbon # for portaudio
+  ];
+
+  cmakeFlags = [
+    "-Daudacity_use_ffmpeg=linked"
+    "-DDISABLE_DYNAMIC_LOADING_FFMPEG=ON"
   ];
 
   doCheck = false; # Test fails
@@ -159,7 +176,7 @@ stdenv.mkDerivation rec {
     description = "Sound editor with graphical UI";
     homepage = "https://www.audacityteam.org/";
     license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ lheckemann ];
-    platforms = platforms.linux;
+    maintainers = with maintainers; [ lheckemann veprbl ];
+    platforms = platforms.unix;
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/aumix/default.nix b/nixpkgs/pkgs/applications/audio/aumix/default.nix
index b1808ed90f11..51dda20cc3a1 100644
--- a/nixpkgs/pkgs/applications/audio/aumix/default.nix
+++ b/nixpkgs/pkgs/applications/audio/aumix/default.nix
@@ -1,30 +1,34 @@
-{lib, stdenv, fetchurl, gettext, ncurses
+{ lib
+, stdenv
+, fetchurl
+, gettext
+, ncurses
 , gtkGUI ? false
-, pkg-config ? null
-, gtk2 ? null}:
-
-assert gtkGUI -> pkg-config != null && gtk2 != null;
+, pkg-config
+, gtk2
+}:
 
 stdenv.mkDerivation rec {
-  name = "aumix-2.9.1";
+  pname = "aumix";
+  version = "2.9.1";
+
   src = fetchurl {
-    url = "http://www.jpj.net/~trevor/aumix/releases/${name}.tar.bz2";
+    url = "http://www.jpj.net/~trevor/aumix/releases/aumix-${version}.tar.bz2";
     sha256 = "0a8fwyxnc5qdxff8sl2sfsbnvgh6pkij4yafiln0fxgg6bal7knj";
   };
 
   buildInputs = [ gettext ncurses ]
-    ++ (if gtkGUI then [pkg-config gtk2] else []);
+    ++ lib.optionals gtkGUI [ pkg-config gtk2 ];
 
-  meta = {
+  meta = with lib; {
     description = "Audio mixer for X and the console";
     longDescription = ''
       Aumix adjusts an audio mixer from X, the console, a terminal,
       the command line or a script.
     '';
     homepage = "http://www.jpj.net/~trevor/aumix.html";
-    license = lib.licenses.gpl2Plus;
-
-    maintainers = [ ];
-    platforms = lib.platforms.linux;
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ ];
+    platforms = platforms.linux;
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/bambootracker/default.nix b/nixpkgs/pkgs/applications/audio/bambootracker/default.nix
index 591c14c1adfa..b2cce97bbc46 100644
--- a/nixpkgs/pkgs/applications/audio/bambootracker/default.nix
+++ b/nixpkgs/pkgs/applications/audio/bambootracker/default.nix
@@ -30,13 +30,9 @@ mkDerivation rec {
 
   postConfigure = "make qmake_all";
 
-  # 1. installs app bundle on darwin, move to app bundle dir & link binary to bin
-  # 2. wrapQtAppsHook fails to wrap mach-o binaries automatically, manually call wrapper
-  #    (see https://github.com/NixOS/nixpkgs/issues/102044)
   postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
     mkdir -p $out/Applications
     mv $out/{bin,Applications}/BambooTracker.app
-    wrapQtApp $out/Applications/BambooTracker.app/Contents/MacOS/BambooTracker
     ln -s $out/{Applications/BambooTracker.app/Contents/MacOS,bin}/BambooTracker
   '';
 
diff --git a/nixpkgs/pkgs/applications/audio/bespokesynth/default.nix b/nixpkgs/pkgs/applications/audio/bespokesynth/default.nix
index c3c33267f65d..e8d2ada38783 100644
--- a/nixpkgs/pkgs/applications/audio/bespokesynth/default.nix
+++ b/nixpkgs/pkgs/applications/audio/bespokesynth/default.nix
@@ -106,7 +106,13 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     description = "Software modular synth with controllers support, scripting and VST";
     homepage = "https://github.com/awwbees/BespokeSynth";
-    license = licenses.gpl3Plus;
+    license = with licenses; [
+      gpl3Plus
+
+      # This package is unfree and not distributable due to the license of VST2.
+      # see #145607
+      unfree
+    ];
     maintainers = with maintainers; [ astro ];
     platforms = platforms.all;
   };
diff --git a/nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio4.nix b/nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio4.nix
index 447bc7d6635d..003608ea6020 100644
--- a/nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio4.nix
+++ b/nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio4.nix
@@ -6,11 +6,11 @@
 
 stdenv.mkDerivation rec {
   pname = "bitwig-studio";
-  version = "4.0.1";
+  version = "4.1.2";
 
   src = fetchurl {
     url = "https://downloads.bitwig.com/stable/${version}/${pname}-${version}.deb";
-    sha256 = "sha256-yhCAKlbLjyBywkSYY1aqbUGFlAHBLR8g8xPDIqoUIZk=";
+    sha256 = "sha256-fXrpTOA6Uh4DgGU+3A7SV23Sb+Z2Ud4rCPmMk5I1MnA=";
   };
 
   nativeBuildInputs = [ dpkg makeWrapper wrapGAppsHook ];
diff --git a/nixpkgs/pkgs/applications/audio/cadence/default.nix b/nixpkgs/pkgs/applications/audio/cadence/default.nix
index 62bf32eb71d0..72f13bdb09bf 100644
--- a/nixpkgs/pkgs/applications/audio/cadence/default.nix
+++ b/nixpkgs/pkgs/applications/audio/cadence/default.nix
@@ -3,7 +3,7 @@
 , coreutils
 , libjack2
 , fetchpatch
-, fetchzip
+, fetchFromGitHub
 , jack_capture
 , pkg-config
 , pulseaudioFull
@@ -20,9 +20,11 @@ mkDerivation rec {
   version = "0.9.1";
   pname = "cadence";
 
-  src = fetchzip {
-    url = "https://github.com/falkTX/Cadence/archive/v${version}.tar.gz";
-    sha256 = "07z8grnnpkd0nf3y3r6qjlk1jlzrbhdrp9mnhrhhmws54p1bhl20";
+  src = fetchFromGitHub {
+    owner = "falkTX";
+    repo = "Cadence";
+    rev = "v${version}";
+    sha256 = "sha256-QFC4wiVF8wphhrammxtc+VMZJpXY5OGHs6DNa21+6B8=";
   };
 
   patches = [
@@ -39,11 +41,11 @@ mkDerivation rec {
   ];
 
   postPatch = ''
-      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
+    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 = [
@@ -54,10 +56,12 @@ mkDerivation rec {
     qtbase
     jack_capture
     pulseaudioFull
-    ((python3.withPackages (ps: with ps; [
-          pyqt5
-          dbus-python
-        ])))
+    (
+      (python3.withPackages (ps: with ps; [
+        pyqt5
+        dbus-python
+      ]))
+    )
   ];
 
   makeFlags = [
@@ -68,31 +72,37 @@ mkDerivation rec {
   dontWrapQtApps = true;
 
   # Replace with our own wrappers. They need to be changed manually since it wouldn't work otherwise.
-  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;
+  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;
 
   meta = {
     homepage = "https://github.com/falkTX/Cadence/";
diff --git a/nixpkgs/pkgs/applications/audio/callaudiod/default.nix b/nixpkgs/pkgs/applications/audio/callaudiod/default.nix
index 0cc1ccd2aca5..bba86afcfc26 100644
--- a/nixpkgs/pkgs/applications/audio/callaudiod/default.nix
+++ b/nixpkgs/pkgs/applications/audio/callaudiod/default.nix
@@ -11,20 +11,22 @@
 
 stdenv.mkDerivation rec {
   pname = "callaudiod";
-  version = "0.1.0";
+  version = "0.1.1";
 
   src = fetchFromGitLab {
     domain = "gitlab.com";
     owner = "mobian1";
     repo = pname;
     rev = version;
-    sha256 = "087589z45xvldn2m1g79y0xbwzylwkjmfk83s5xjixyq0wqmfppd";
+    sha256 = "sha256-VASBYx/SZo2GJ8znthFIdjtZKbYVssWO1xhYcZMz9hI=";
   };
 
+  strictDeps = true;
   nativeBuildInputs = [
     meson
     ninja
     pkg-config
+    glib
   ];
 
   buildInputs = [
diff --git a/nixpkgs/pkgs/applications/audio/carla/default.nix b/nixpkgs/pkgs/applications/audio/carla/default.nix
index 2efd4c671841..87ae31aed3bf 100644
--- a/nixpkgs/pkgs/applications/audio/carla/default.nix
+++ b/nixpkgs/pkgs/applications/audio/carla/default.nix
@@ -15,13 +15,13 @@ assert withGtk3 -> gtk3 != null;
 
 stdenv.mkDerivation rec {
   pname = "carla";
-  version = "2.4.0";
+  version = "2.4.1";
 
   src = fetchFromGitHub {
     owner = "falkTX";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-WxhG9X6jVcu10bl5p0f61+SYZmJw4W7DYvezbpAlNjg=";
+    sha256 = "sha256-faVLPHPQ4voR/RHiPpUwnZK+5Jx0u4rJWuH5zlydzwY=";
   };
 
   nativeBuildInputs = [
@@ -78,7 +78,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    homepage = "http://kxstudio.sf.net/carla";
+    homepage = "https://kx.studio/Applications:Carla";
     description = "An audio plugin host";
     longDescription = ''
       It currently supports LADSPA (including LRDF), DSSI, LV2, VST2/3
diff --git a/nixpkgs/pkgs/applications/audio/cdparanoia/default.nix b/nixpkgs/pkgs/applications/audio/cdparanoia/default.nix
index 36686655f369..10ff66de77ed 100644
--- a/nixpkgs/pkgs/applications/audio/cdparanoia/default.nix
+++ b/nixpkgs/pkgs/applications/audio/cdparanoia/default.nix
@@ -35,6 +35,15 @@ stdenv.mkDerivation rec {
     cp ${gnu-config}/config.guess configure.guess
   '';
 
+  # Build system reuses the same object file names for shared and static
+  # library. Occasionally fails in the middle:
+  #    gcc -O2 -fsigned-char -g -O2 -c scan_devices.c
+  #    rm  -f *.o core *~ *.out
+  #    gcc -O2 -fsigned-char -g -O2 -fpic -c scan_devices.c
+  #    gcc -fpic -shared -o libcdda_interface.so.0.10.2 ... scan_devices.o ...
+  #    scan_devices.o: file not recognized: file format not recognized
+  enableParallelBuilding = false;
+
   meta = with lib; {
     homepage = "https://xiph.org/paranoia";
     description = "A tool and library for reading digital audio from CDs";
diff --git a/nixpkgs/pkgs/applications/audio/clerk/default.nix b/nixpkgs/pkgs/applications/audio/clerk/default.nix
index ebcd09ca6adf..ff9dca961aea 100644
--- a/nixpkgs/pkgs/applications/audio/clerk/default.nix
+++ b/nixpkgs/pkgs/applications/audio/clerk/default.nix
@@ -1,8 +1,18 @@
-{ lib, stdenv, fetchFromGitHub, makeWrapper, rofi, mpc_cli, perl,
-util-linux, python3Packages, libnotify }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, makeWrapper
+, rofi
+, mpc_cli
+, perl
+, util-linux
+, python3Packages
+, libnotify
+}:
 
 stdenv.mkDerivation {
-  name = "clerk-2016-10-14";
+  pname = "clerk";
+  version = "unstable-2016-10-14";
 
   src = fetchFromGitHub {
     owner = "carnager";
@@ -26,8 +36,8 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "An MPD client built on top of rofi";
-    homepage    = "https://github.com/carnager/clerk";
-    license     = licenses.mit;
+    homepage = "https://github.com/carnager/clerk";
+    license = licenses.mit;
     maintainers = with maintainers; [ anderspapitto ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/ecasound/default.nix b/nixpkgs/pkgs/applications/audio/ecasound/default.nix
index 47db22016485..108be8726c50 100644
--- a/nixpkgs/pkgs/applications/audio/ecasound/default.nix
+++ b/nixpkgs/pkgs/applications/audio/ecasound/default.nix
@@ -1,5 +1,6 @@
 { lib, stdenv
 , fetchurl
+, fetchpatch
 , pkg-config
 , alsa-lib
 , audiofile
@@ -28,6 +29,16 @@ stdenv.mkDerivation rec {
     sha256 = "1m7njfjdb7sqf0lhgc4swihgdr4snkg8v02wcly08wb5ar2fr2s6";
   };
 
+  patches = [
+    # Pull patch pending upstream inclusion for ncurses-6.3:
+    #  https://sourceforge.net/p/ecasound/bugs/54/
+    (fetchpatch {
+      name = "ncursdes-6.3.patch";
+      url = "https://sourceforge.net/p/ecasound/bugs/54/attachment/0001-ecasignalview.cpp-always-use-s-style-format-for-prin.patch";
+      sha256 = "1x1gsjzd43lh19mhpmwrbq269h56s8bxgyv0yfi5yf0sqjf9vaq0";
+    })
+  ];
+
   nativeBuildInputs = [
     pkg-config
   ];
diff --git a/nixpkgs/pkgs/applications/audio/espeak-ng/default.nix b/nixpkgs/pkgs/applications/audio/espeak-ng/default.nix
index 44d5a0aa15aa..e0f7822bcd71 100644
--- a/nixpkgs/pkgs/applications/audio/espeak-ng/default.nix
+++ b/nixpkgs/pkgs/applications/audio/espeak-ng/default.nix
@@ -35,6 +35,12 @@ stdenv.mkDerivation rec {
     "--with-mbrola=${if mbrolaSupport then "yes" else "no"}"
   ];
 
+  # Current release lacks dependencies on local espeak-ng:
+  #  cd dictsource && ESPEAK_DATA_PATH=/build/espeak-ng LD_LIBRARY_PATH=../src: ../src/espeak-ng --compile=yue && cd ..
+  #  bash: line 1: ../src/espeak-ng: No such file or directory
+  # Should be fixed in next release: https://github.com/espeak-ng/espeak-ng/pull/1029
+  enableParallelBuilding = false;
+
   postInstall = lib.optionalString stdenv.isLinux ''
     patchelf --set-rpath "$(patchelf --print-rpath $out/bin/espeak-ng)" $out/bin/speak-ng
   '';
diff --git a/nixpkgs/pkgs/applications/audio/espeak/default.nix b/nixpkgs/pkgs/applications/audio/espeak/default.nix
index 675f31b478ce..e5579175bbb7 100644
--- a/nixpkgs/pkgs/applications/audio/espeak/default.nix
+++ b/nixpkgs/pkgs/applications/audio/espeak/default.nix
@@ -1,10 +1,11 @@
 { lib, stdenv, fetchurl, unzip, portaudio }:
 
 stdenv.mkDerivation rec {
-  name = "espeak-1.48.04";
+  pname = "espeak";
+  version = "1.48.04";
 
   src = fetchurl {
-    url = "mirror://sourceforge/espeak/${name}-source.zip";
+    url = "mirror://sourceforge/espeak/espeak-${version}-source.zip";
     sha256 = "0n86gwh9pw0jqqpdz7mxggllfr8k0r7pc67ayy7w5z6z79kig6mz";
   };
 
diff --git a/nixpkgs/pkgs/applications/audio/espeak/edit.nix b/nixpkgs/pkgs/applications/audio/espeak/edit.nix
index 0b9fa3dfbe54..2240a8561164 100644
--- a/nixpkgs/pkgs/applications/audio/espeak/edit.nix
+++ b/nixpkgs/pkgs/applications/audio/espeak/edit.nix
@@ -1,10 +1,11 @@
 { lib, stdenv, fetchurl, pkg-config, unzip, portaudio, wxGTK, sox }:
 
 stdenv.mkDerivation rec {
-  name = "espeakedit-1.48.03";
+  pname = "espeakedit";
+  version = "1.48.03";
 
   src = fetchurl {
-    url = "mirror://sourceforge/espeak/${name}.zip";
+    url = "mirror://sourceforge/espeak/espeakedit-${version}.zip";
     sha256 = "0x8s7vpb7rw5x37yjzy1f98m4f2csdg89libb74fm36gn8ly0hli";
   };
 
diff --git a/nixpkgs/pkgs/applications/audio/faust/faust2.nix b/nixpkgs/pkgs/applications/audio/faust/faust2.nix
index c1d351fa53e1..0309031cf785 100644
--- a/nixpkgs/pkgs/applications/audio/faust/faust2.nix
+++ b/nixpkgs/pkgs/applications/audio/faust/faust2.nix
@@ -20,13 +20,13 @@ with lib.strings;
 
 let
 
-  version = "2.30.5";
+  version = "2.37.3";
 
   src = fetchFromGitHub {
     owner = "grame-cncm";
     repo = "faust";
     rev = version;
-    sha256 = "0cs52w4rwaj5d8pjak4cxsg02sxvx4y07592nc3ck81clqjmszmm";
+    sha256 = "sha256-Jzauw8+vBjtbK73Bh4huhX1ql1cWmh80EzEET3x03rc=";
     fetchSubmodules = true;
   };
 
diff --git a/nixpkgs/pkgs/applications/audio/faustPhysicalModeling/default.nix b/nixpkgs/pkgs/applications/audio/faustPhysicalModeling/default.nix
index 8dd43ead5914..f9dbd3f80f0c 100644
--- a/nixpkgs/pkgs/applications/audio/faustPhysicalModeling/default.nix
+++ b/nixpkgs/pkgs/applications/audio/faustPhysicalModeling/default.nix
@@ -1,13 +1,13 @@
 { stdenv, lib, fetchFromGitHub, faust2jaqt, faust2lv2 }:
 stdenv.mkDerivation rec {
   pname = "faustPhysicalModeling";
-  version = "2.33.1";
+  version = "2.37.3";
 
   src = fetchFromGitHub {
     owner = "grame-cncm";
     repo = "faust";
     rev = version;
-    sha256 = "sha256-gzkfLfNhJHg/jEhf/RQDhHnXxn3UI15eDZfutKt3yGk=";
+    sha256 = "sha256-h6L+qRkN2chnI4821WrjD3uRFw3J0sUYVLL8w57vR1U=";
   };
 
   buildInputs = [ faust2jaqt faust2lv2 ];
diff --git a/nixpkgs/pkgs/applications/audio/fluidsynth/default.nix b/nixpkgs/pkgs/applications/audio/fluidsynth/default.nix
index 1a6471397de6..ad57b6a690ff 100644
--- a/nixpkgs/pkgs/applications/audio/fluidsynth/default.nix
+++ b/nixpkgs/pkgs/applications/audio/fluidsynth/default.nix
@@ -1,36 +1,20 @@
-{ stdenv, lib, fetchFromGitHub, pkg-config, cmake
+{ stdenv, lib, fetchFromGitHub, buildPackages, pkg-config, cmake
 , alsa-lib, glib, libjack2, libsndfile, libpulseaudio
 , AudioUnit, CoreAudio, CoreMIDI, CoreServices
-, version ? "2"
 }:
 
-let
-  versionMap = {
-    "1" = {
-      fluidsynthVersion = "1.1.11";
-      sha256 = "0n75jq3xgq46hfmjkaaxz3gic77shs4fzajq40c8gk043i84xbdh";
-    };
-    "2" = {
-      fluidsynthVersion = "2.0.6";
-      sha256 = "0nas9pp9r8rnziznxm65x2yzf1ryg98zr3946g0br3s38sjf8l3a";
-    };
-  };
-in
-
-with versionMap.${version};
-
-stdenv.mkDerivation  {
-  name = "fluidsynth-${fluidsynthVersion}";
-  version = fluidsynthVersion;
+stdenv.mkDerivation rec {
+  pname = "fluidsynth";
+  version = "2.2.3";
 
   src = fetchFromGitHub {
     owner = "FluidSynth";
     repo = "fluidsynth";
-    rev = "v${fluidsynthVersion}";
-    inherit sha256;
+    rev = "v${version}";
+    sha256 = "0x5808d03ym23np17nl8gfbkx3c4y3d7jyyr2222wn2prswbb6x3";
   };
 
-  nativeBuildInputs = [ pkg-config cmake ];
+  nativeBuildInputs = [ buildPackages.stdenv.cc pkg-config cmake ];
 
   buildInputs = [ glib libsndfile libpulseaudio libjack2 ]
     ++ lib.optionals stdenv.isLinux [ alsa-lib ]
diff --git a/nixpkgs/pkgs/applications/audio/fomp/default.nix b/nixpkgs/pkgs/applications/audio/fomp/default.nix
index f9f57b1ed55b..bb421886f5d3 100644
--- a/nixpkgs/pkgs/applications/audio/fomp/default.nix
+++ b/nixpkgs/pkgs/applications/audio/fomp/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, lv2, pkg-config, python2, wafHook }:
+{ lib, stdenv, fetchurl, lv2, pkg-config, python3, wafHook }:
 
 stdenv.mkDerivation rec {
   pname = "fomp";
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [ pkg-config wafHook ];
-  buildInputs = [ lv2 python2 ];
+  buildInputs = [ lv2 python3 ];
 
   meta = with lib; {
     homepage = "http://drobilla.net/software/fomp/";
diff --git a/nixpkgs/pkgs/applications/audio/foo-yc20/default.nix b/nixpkgs/pkgs/applications/audio/foo-yc20/default.nix
index f7abeb2a91e8..abb13b021c04 100644
--- a/nixpkgs/pkgs/applications/audio/foo-yc20/default.nix
+++ b/nixpkgs/pkgs/applications/audio/foo-yc20/default.nix
@@ -1,7 +1,7 @@
-{ lib, stdenv, fetchFromGitHub,  libjack2, gtk2, lv2, faust, pkg-config }:
+{ lib, stdenv, fetchFromGitHub, libjack2, gtk2, lv2, faust, pkg-config }:
 
 stdenv.mkDerivation {
-  version = "git-2015-05-21";
+  version = "unstable-2015-05-21";
   pname = "foo-yc20";
   src = fetchFromGitHub {
     owner = "sampov2";
@@ -22,7 +22,7 @@ stdenv.mkDerivation {
     broken = true; # see: https://github.com/sampov2/foo-yc20/issues/7
     description = "A Faust implementation of a 1969 designed Yamaha combo organ, the YC-20";
     homepage = "https://github.com/sampov2/foo-yc20";
-    license     = with licenses; [ bsd3 lgpl21 mpl11 ] ;
+    license = with licenses; [ bsd3 lgpl21 mpl11 ];
     maintainers = [ maintainers.magnetophon ];
     platforms = platforms.linux;
   };
diff --git a/nixpkgs/pkgs/applications/audio/freqtweak/default.nix b/nixpkgs/pkgs/applications/audio/freqtweak/default.nix
index 113894a9357d..71bb0f6f05c8 100644
--- a/nixpkgs/pkgs/applications/audio/freqtweak/default.nix
+++ b/nixpkgs/pkgs/applications/audio/freqtweak/default.nix
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
   enableParallelBuilding = true;
 
   meta = with lib; {
-    homepage = http://essej.net/freqtweak/;
+    homepage = "http://essej.net/freqtweak/";
     description = "Realtime audio frequency spectral manipulation";
     maintainers = [ maintainers.magnetophon ];
     platforms = platforms.linux;
diff --git a/nixpkgs/pkgs/applications/audio/ft2-clone/default.nix b/nixpkgs/pkgs/applications/audio/ft2-clone/default.nix
index 5155a91e725e..f0dde5e1e354 100644
--- a/nixpkgs/pkgs/applications/audio/ft2-clone/default.nix
+++ b/nixpkgs/pkgs/applications/audio/ft2-clone/default.nix
@@ -13,13 +13,13 @@
 
 stdenv.mkDerivation rec {
   pname = "ft2-clone";
-  version = "1.47";
+  version = "1.49";
 
   src = fetchFromGitHub {
     owner = "8bitbubsy";
     repo = "ft2-clone";
     rev = "v${version}";
-    sha256 = "sha256-KLHJROOtRPtGHBYEMByY7LG6FY4vES6WndCiz7okan8=";
+    sha256 = "sha256-DpEzilMERfbop7YYqNCcxSe1qfcz4n7Uqj/i5t5a6nQ=";
   };
 
   # Adapt the linux-only CMakeLists to darwin (more reliable than make-macos.sh)
diff --git a/nixpkgs/pkgs/applications/audio/giada/default.nix b/nixpkgs/pkgs/applications/audio/giada/default.nix
index b49335298e01..4b7b760db355 100644
--- a/nixpkgs/pkgs/applications/audio/giada/default.nix
+++ b/nixpkgs/pkgs/applications/audio/giada/default.nix
@@ -1,8 +1,9 @@
-{ lib, stdenv
+{ lib
+, stdenv
 , fetchFromGitHub
-, autoreconfHook
+, cmake
+, pkg-config
 , fltk
-, jansson
 , rtmidi
 , libsamplerate
 , libsndfile
@@ -10,51 +11,65 @@
 , alsa-lib
 , libpulseaudio
 , libXpm
-, libXinerama
-, libXcursor
-, catch2
-, nlohmann_json
+, flac
+, libogg
+, libvorbis
+, libopus
 }:
 
 stdenv.mkDerivation rec {
   pname = "giada";
-  version = "0.16.4";
+  version = "unstable-2021-09-24";
 
   src = fetchFromGitHub {
     owner = "monocasual";
     repo = pname;
-    rev = "v${version}";
-    sha256 = "0qyx0bvivlvly0vj5nnnbiks22xh13sqlw4mfgplq2lbbpgisigp";
+    # Using master with https://github.com/monocasual/giada/pull/509 till a new release is done.
+    rev = "f117a8b8eef08d904ef1ab22c45f0e1fad6b8a56";
+    sha256 = "01hb981lrsyk870zs8xph5fm0z7bbffpkxgw04hq487r804mkx9j";
+    fetchSubmodules = true;
   };
 
-  configureFlags = [
-    "--target=linux"
-    "--enable-system-catch"
+  NIX_CFLAGS_COMPILE = [
+    "-w"
+    "-Wno-error"
+  ];
+
+  cmakeFlags = [
+    "-DCMAKE_INSTALL_BINDIR=bin"
+    "-DCMAKE_BUILD_TYPE=Release"
   ];
 
   nativeBuildInputs = [
-    autoreconfHook
+    cmake
+    pkg-config
   ];
 
   buildInputs = [
+    rtmidi
     fltk
     libsndfile
     libsamplerate
-    jansson
-    rtmidi
-    libXpm
-    jack2
     alsa-lib
+    libXpm
     libpulseaudio
-    libXinerama
-    libXcursor
-    catch2
-    nlohmann_json
+    jack2
+    flac
+    libogg
+    libvorbis
+    libopus
   ];
 
   postPatch = ''
-    sed -i 's:"deps/json/single_include/nlohmann/json\.hpp":<nlohmann/json.hpp>:' \
-        src/core/{conf,init,midiMapConf,patch}.cpp
+    local fixup_list=(
+      src/core/kernelMidi.cpp
+      src/gui/elems/config/tabMidi.cpp
+      src/utils/ver.cpp
+    )
+    for f in "''${fixup_list[@]}"; do
+      substituteInPlace "$f" \
+        --replace "<RtMidi.h>" "<${rtmidi.src}/RtMidi.h>"
+    done
   '';
 
   meta = with lib; {
@@ -63,6 +78,5 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3;
     maintainers = with maintainers; [ petabyteboy ];
     platforms = platforms.all;
-    broken = stdenv.hostPlatform.isAarch64; # produces build failure on aarch64-linux
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/gigedit/default.nix b/nixpkgs/pkgs/applications/audio/gigedit/default.nix
index 1187dd1ba26e..8c37e8901a33 100644
--- a/nixpkgs/pkgs/applications/audio/gigedit/default.nix
+++ b/nixpkgs/pkgs/applications/audio/gigedit/default.nix
@@ -1,7 +1,24 @@
-{ lib, stdenv, fetchurl, autoconf, automake, intltool, libtool, pkg-config, which
-, docbook_xml_dtd_45, docbook_xsl, gtkmm2, libgig, libsndfile, libxslt
+{ lib
+, stdenv
+, fetchurl
+, autoconf
+, automake
+, intltool
+, libtool
+, pkg-config
+, which
+, docbook_xml_dtd_45
+, docbook_xsl
+, gtkmm2
+, pangomm_2_42
+, libgig
+, libsndfile
+, libxslt
 }:
 
+let
+  gtkmm2_with_pango242 = gtkmm2.override { pangomm = pangomm_2_42; };
+in
 stdenv.mkDerivation rec {
   pname = "gigedit";
   version = "1.1.1";
@@ -15,7 +32,7 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ autoconf automake intltool libtool pkg-config which ];
 
-  buildInputs = [ docbook_xml_dtd_45 docbook_xsl gtkmm2 libgig libsndfile libxslt ];
+  buildInputs = [ docbook_xml_dtd_45 docbook_xsl gtkmm2_with_pango242 libgig libsndfile libxslt ];
 
   enableParallelBuilding = true;
 
diff --git a/nixpkgs/pkgs/applications/audio/gmu/default.nix b/nixpkgs/pkgs/applications/audio/gmu/default.nix
index b2b9f5e34750..cc2b46cd6ace 100644
--- a/nixpkgs/pkgs/applications/audio/gmu/default.nix
+++ b/nixpkgs/pkgs/applications/audio/gmu/default.nix
@@ -1,4 +1,4 @@
-{lib, stdenv, fetchurl, SDL, SDL_gfx, SDL_image, tremor, flac, mpg123, libmikmod
+{lib, stdenv, fetchurl, fetchpatch, SDL, SDL_gfx, SDL_image, tremor, flac, mpg123, libmikmod
 , speex, ncurses
 , keymap ? "default"
 , conf ? "unknown"
@@ -13,6 +13,24 @@ stdenv.mkDerivation rec {
     sha256 = "03x0mc0xw2if0bpf0a15yprcyx1xccki039zvl2099dagwk6xskv";
   };
 
+  patches = [
+     # pull pending upstream inclusion fix for ncurses-6.3:
+     #  https://github.com/jhe2/gmu/pull/7
+     (fetchpatch {
+       name = "ncurses-6.3.patch";
+       url = "https://github.com/jhe2/gmu/commit/c8b3a10afee136feb333754ef6ec26383b11072f.patch";
+       sha256 = "0xp2j3jp8pkmv6yvnzi378m2dylbfsaqrsrkw7hbxw6kglzj399r";
+     })
+
+     # pull upstream fix for -fno-common toolchains like
+     # upstream gcc-10 of clang-13.
+     (fetchpatch {
+       name = "fno-common.patch";
+       url = "https://github.com/jhe2/gmu/commit/b705209f08ddfda141ad358ccd0c3d2d099be5e6.patch";
+       sha256 = "1ci2b8kz3r58rzmivlfhqjmcgqwlkwlzzhnyxlk36vmk240a3gqq";
+     })
+  ];
+
   buildInputs = [ SDL SDL_gfx SDL_image tremor flac mpg123 libmikmod speex ncurses ];
 
   makeFlags = [ "PREFIX=$(out)" ];
diff --git a/nixpkgs/pkgs/applications/audio/gnome-podcasts/default.nix b/nixpkgs/pkgs/applications/audio/gnome-podcasts/default.nix
index a053dda46a3b..b91e861c5d5a 100644
--- a/nixpkgs/pkgs/applications/audio/gnome-podcasts/default.nix
+++ b/nixpkgs/pkgs/applications/audio/gnome-podcasts/default.nix
@@ -21,20 +21,20 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-podcasts";
-  version = "0.4.9";
+  version = "0.5.0";
 
   src = fetchFromGitLab {
     domain = "gitlab.gnome.org";
     owner = "World";
     repo = "podcasts";
     rev = version;
-    sha256 = "1ah59ac3xm3sqai8zhil8ar30pviw83cm8in1n4id77rv24xkvgm";
+    hash = "sha256-Jk++/QrQt/fjOz2OaEIr1Imq2DmqTjcormCebjO4/Kk=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     name = "${pname}-${version}";
-    sha256 = "1iihpfvkli09ysn46cnif53xizkwzk0m91bljmlzsygp3ip5i5yw";
+    hash = "sha256-jlXpeVabc1h2GU1j9Ff6GZJec+JgFyOdJzsOtdkrEWI=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/audio/gtklick/default.nix b/nixpkgs/pkgs/applications/audio/gtklick/default.nix
deleted file mode 100644
index 6b7f4e4d7b22..000000000000
--- a/nixpkgs/pkgs/applications/audio/gtklick/default.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-{ lib, fetchurl, python2Packages, gettext, klick}:
-
-python2Packages.buildPythonApplication rec {
-  pname = "gtklick";
-  version = "0.6.4";
-
-  src = fetchurl {
-    url = "http://das.nasophon.de/download/${pname}-${version}.tar.gz";
-    sha256 = "7799d884126ccc818678aed79d58057f8cf3528e9f1be771c3fa5b694d9d0137";
-  };
-
-  pythonPath = with python2Packages; [
-    pyliblo
-    pyGtkGlade
-  ];
-
-  nativeBuildInputs = [ gettext ];
-
-  propagatedBuildInputs = [ klick ];
-
-  # wrapPythonPrograms breaks gtklick in the postFixup phase.
-  # To fix it, apply wrapPythonPrograms and then clean up the wrapped file.
-  postFixup = ''
-    wrapPythonPrograms
-
-    sed -i "/import sys; sys.argv\[0\] = 'gtklick'/d" $out/bin/.gtklick-wrapped
-  '';
-
-  meta = {
-    homepage = "http://das.nasophon.de/gtklick/";
-    description = "Simple metronome with an easy-to-use GTK interface";
-    license = lib.licenses.gpl2Plus;
-  };
-}
diff --git a/nixpkgs/pkgs/applications/audio/helio-workstation/default.nix b/nixpkgs/pkgs/applications/audio/helio-workstation/default.nix
index 012838eb436d..b36d977b2bdf 100644
--- a/nixpkgs/pkgs/applications/audio/helio-workstation/default.nix
+++ b/nixpkgs/pkgs/applications/audio/helio-workstation/default.nix
@@ -5,14 +5,14 @@
 
 stdenv.mkDerivation rec {
   pname = "helio-workstation";
-  version = "3.6";
+  version = "3.8";
 
   src = fetchFromGitHub {
     owner = "helio-fm";
     repo = pname;
     rev = version;
     fetchSubmodules = true;
-    sha256 = "sha256-qW39g6rQ5VPQ3Hx9NmwLbpZiITnzFZDZlcLkE+pJKPc=";
+    sha256 = "sha256-uwRSOJ5WvDH4mfL9pCTCGzuSRT8SIBrI+Wsbumzejv0=";
   };
 
   buildInputs = [
@@ -30,13 +30,13 @@ stdenv.mkDerivation rec {
 
   installPhase = ''
     mkdir -p $out/bin
-    install -Dm755 build/Helio $out/bin
-    wrapProgram $out/bin/Helio --prefix PATH ":" ${gnome.zenity}/bin
+    install -Dm755 build/helio $out/bin
+    wrapProgram $out/bin/helio --prefix PATH ":" ${gnome.zenity}/bin
 
     mkdir -p $out/share
     cp -r ../Deployment/Linux/Debian/x64/usr/share/* $out/share
     substituteInPlace $out/share/applications/Helio.desktop \
-      --replace "/usr/bin/helio" "$out/bin/Helio"
+      --replace "/usr/bin/helio" "$out/bin/helio"
   '';
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/applications/audio/helvum/default.nix b/nixpkgs/pkgs/applications/audio/helvum/default.nix
index 39c8a3b3184c..30dc359731f5 100644
--- a/nixpkgs/pkgs/applications/audio/helvum/default.nix
+++ b/nixpkgs/pkgs/applications/audio/helvum/default.nix
@@ -1,47 +1,73 @@
 { lib
-, fetchFromGitLab
-, makeDesktopItem
-, copyDesktopItems
-, rustPlatform
-, pkg-config
 , clang
-, libclang
+, desktop-file-utils
+, fetchFromGitLab
+, fetchpatch
 , glib
 , gtk4
+, libclang
+, meson
+, ninja
 , pipewire
+, pkg-config
+, rustPlatform
+, stdenv
 }:
 
-rustPlatform.buildRustPackage rec {
+stdenv.mkDerivation rec {
   pname = "helvum";
-  version = "0.3.0";
+  version = "0.3.2";
 
   src = fetchFromGitLab {
     domain = "gitlab.freedesktop.org";
     owner = "ryuukyu";
     repo = pname;
     rev = version;
-    sha256 = "sha256-AlHCK4pWaoNjR0eflxHBsuVaaily/RvCbgJv/ByQZK4=";
+    sha256 = "sha256-Kt6gnMRTOVXqjAjEZKlylcGhzl52ZzPNVbJhwzLhzkM=";
+  };
+
+  cargoDeps = rustPlatform.fetchCargoTarball {
+    inherit src;
+    name = "${pname}-${version}";
+    hash = "sha256-kxJRY9GSPwnb431iYCfJdGcl5HjpFr2KkWrFDpGajp8=";
   };
 
-  cargoSha256 = "sha256-mAhh12rGvQjs2xtm+OrtVv0fgG6qni/QM/oRYoFR7U8=";
+  nativeBuildInputs = [
+    clang
+    meson
+    ninja
+    pkg-config
+    rustPlatform.cargoSetupHook
+    rustPlatform.rust.cargo
+    rustPlatform.rust.rustc
+  ];
 
-  nativeBuildInputs = [ clang copyDesktopItems pkg-config ];
-  buildInputs = [ glib gtk4 pipewire ];
+  buildInputs = [
+    desktop-file-utils
+    glib
+    gtk4
+    pipewire
+  ];
 
   LIBCLANG_PATH = "${libclang.lib}/lib";
 
-  desktopItems = makeDesktopItem {
-    name = "Helvum";
-    exec = pname;
-    desktopName = "Helvum";
-    genericName = "Helvum";
-    categories = "AudioVideo;";
-  };
+  patches = [
+    # enables us to use gtk4-update-icon-cache instead of gtk3 one
+    (fetchpatch {
+      url = "https://gitlab.freedesktop.org/ryuukyu/helvum/-/merge_requests/24.patch";
+      sha256 = "sha256-WmI6taBL/6t587j06n0mwByQ8x0eUA5ECvGNjg2/vtk=";
+    })
+  ];
+
+  postPatch = ''
+    patchShebangs build-aux/cargo.sh
+  '';
 
   meta = with lib; {
     description = "A GTK patchbay for pipewire";
     homepage = "https://gitlab.freedesktop.org/ryuukyu/helvum";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ fufexan ];
+    platforms = platforms.linux;
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/hybridreverb2/default.nix b/nixpkgs/pkgs/applications/audio/hybridreverb2/default.nix
index c539a316422a..d281ec11c7d1 100644
--- a/nixpkgs/pkgs/applications/audio/hybridreverb2/default.nix
+++ b/nixpkgs/pkgs/applications/audio/hybridreverb2/default.nix
@@ -1,6 +1,24 @@
-{ lib, stdenv, fetchFromGitHub, fetchzip, cmake, pkg-config, lv2, alsa-lib, libjack2,
-  freetype, libX11, gtk3, pcre, libpthreadstubs, libXdmcp, libxkbcommon,
-  epoxy, at-spi2-core, dbus, curl, fftwFloat }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, cmake
+, pkg-config
+, lv2
+, alsa-lib
+, libjack2
+, freetype
+, libX11
+, gtk3
+, pcre
+, libpthreadstubs
+, libXdmcp
+, libxkbcommon
+, libepoxy
+, at-spi2-core
+, dbus
+, curl
+, fftwFloat
+}:
 
 let
   pname = "HybridReverb2";
@@ -10,11 +28,13 @@ let
 in
 
 stdenv.mkDerivation rec {
-  name = "${pname}-${version}";
+  inherit pname version;
 
-  impulseDB = fetchzip {
-    url = "https://github.com/${owner}/${pname}-impulse-response-database/archive/v${DBversion}.zip";
-    sha256 = "1hlfxbbkahm1k2sk3c3n2mjaz7k80ky3r55xil8nfbvbv0qan89z";
+  impulseDB = fetchFromGitHub {
+    inherit owner;
+    repo = "HybridReverb2-impulse-response-database";
+    rev = "v${DBversion}";
+    sha256 = "sha256-PyGrMNhrL2cRjb2UPPwEaJ6vZBV2sDG1mKFCNdfqjsI=";
   };
 
   src = fetchFromGitHub {
@@ -26,8 +46,23 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [ pkg-config cmake ];
-  buildInputs = [ lv2 alsa-lib libjack2 freetype libX11 gtk3 pcre
-    libpthreadstubs libXdmcp libxkbcommon epoxy at-spi2-core dbus curl fftwFloat ];
+  buildInputs = [
+    lv2
+    alsa-lib
+    libjack2
+    freetype
+    libX11
+    gtk3
+    pcre
+    libpthreadstubs
+    libXdmcp
+    libxkbcommon
+    libepoxy
+    at-spi2-core
+    dbus
+    curl
+    fftwFloat
+  ];
 
   cmakeFlags = [
     "-DHybridReverb2_AdvancedJackStandalone=ON"
diff --git a/nixpkgs/pkgs/applications/audio/hydrogen/0.nix b/nixpkgs/pkgs/applications/audio/hydrogen/0.nix
index ad3566571b0c..aa1821657867 100644
--- a/nixpkgs/pkgs/applications/audio/hydrogen/0.nix
+++ b/nixpkgs/pkgs/applications/audio/hydrogen/0.nix
@@ -1,19 +1,41 @@
-{ lib, stdenv, fetchurl, pkg-config, cmake
-, alsa-lib, boost, glib, lash, libjack2, libarchive, libsndfile, lrdf, qt4
+{ lib
+, stdenv
+, fetchFromGitHub
+, pkg-config
+, cmake
+, alsa-lib
+, boost
+, glib
+, lash
+, libjack2
+, libarchive
+, libsndfile
+, lrdf
+, qt4
 }:
 
 stdenv.mkDerivation rec {
   version = "0.9.7";
   pname = "hydrogen";
 
-  src = fetchurl {
-    url = "https://github.com/hydrogen-music/hydrogen/archive/${version}.tar.gz";
-    sha256 = "1dy2jfkdw0nchars4xi4isrz66fqn53a9qk13bqza7lhmsg3s3qy";
+  src = fetchFromGitHub {
+    owner = "hydrogen-music";
+    repo = "hydrogen";
+    rev = version;
+    sha256 = "sha256-6ycNUcumtAEl/6XbIpW6JglGv4nNOdMrOJ1nvJg3z/c=";
   };
 
   nativeBuildInputs = [ pkg-config cmake ];
   buildInputs = [
-    alsa-lib boost glib lash libjack2 libarchive libsndfile lrdf qt4
+    alsa-lib
+    boost
+    glib
+    lash
+    libjack2
+    libarchive
+    libsndfile
+    lrdf
+    qt4
   ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/applications/audio/hydrogen/default.nix b/nixpkgs/pkgs/applications/audio/hydrogen/default.nix
index 842d2ad93fa4..694734e36f4a 100644
--- a/nixpkgs/pkgs/applications/audio/hydrogen/default.nix
+++ b/nixpkgs/pkgs/applications/audio/hydrogen/default.nix
@@ -5,13 +5,13 @@
 
 stdenv.mkDerivation rec {
   pname = "hydrogen";
-  version = "1.1.0";
+  version = "1.1.1";
 
   src = fetchFromGitHub {
     owner = "hydrogen-music";
     repo = pname;
     rev = version;
-    sha256 = "sha256-G+7vTUxYiPNKJ0Qxf/E/t0d6vC/lDs9vNfSbvUXTQgI=";
+    sha256 = "sha256-to24PB9cs4vun93uXEWNVsmSLFRuLGfC4hCh7+mbvIo=";
   };
 
   nativeBuildInputs = [ cmake pkg-config wrapQtAppsHook ];
diff --git a/nixpkgs/pkgs/applications/audio/jamulus/default.nix b/nixpkgs/pkgs/applications/audio/jamulus/default.nix
index 185df48ff6f7..f30b188c3917 100644
--- a/nixpkgs/pkgs/applications/audio/jamulus/default.nix
+++ b/nixpkgs/pkgs/applications/audio/jamulus/default.nix
@@ -3,12 +3,12 @@
 
 mkDerivation rec {
   pname = "jamulus";
-  version = "3.8.0";
+  version = "3.8.1";
   src = fetchFromGitHub {
     owner = "jamulussoftware";
     repo = "jamulus";
     rev = "r${lib.replaceStrings [ "." ] [ "_" ] version}";
-    sha256 = "sha256-Ni6N7XW34OFNuEkqBEgMcYGmIqb+UZ0uhLt/shRkWRs=";
+    sha256 = "sha256-QtlvcKVqKgRAO/leHy4CgvjNW49HAyZLI2JtKERP7HQ=";
   };
 
   nativeBuildInputs = [ pkg-config qmake ];
diff --git a/nixpkgs/pkgs/applications/audio/jconvolver/default.nix b/nixpkgs/pkgs/applications/audio/jconvolver/default.nix
new file mode 100644
index 000000000000..5294ae5f13a1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/jconvolver/default.nix
@@ -0,0 +1,114 @@
+{ lib, stdenv, fetchurl, flac, unzip, fftwFloat, hybridreverb2, libclthreads, libjack2, libsndfile, zita-convolver }:
+
+stdenv.mkDerivation rec {
+  pname = "jconvolver";
+  version = "1.1.0";
+
+  src = fetchurl {
+    url = "https://kokkinizita.linuxaudio.org/linuxaudio/downloads/${pname}-${version}.tar.bz2";
+    sha256 = "03fq1rk5wyn32w0aaa9vqijnw9x9i0i7sv4nhsf949bk5lvi2nmc";
+  };
+
+  reverbs = fetchurl {
+    url = "http://kokkinizita.linuxaudio.org/linuxaudio/downloads/jconvolver-reverbs.tar.bz2";
+    sha256 = "127aj211xfqp37c94d9cn0mmwzbjkj3f6br5gr67ckqirvsdkndi";
+  };
+  weird = fetchurl {
+    url = "http://kokkinizita.linuxaudio.org/linuxaudio/downloads/weird.wav";
+    sha256 = "14xchdikx5k8zlgwglrqi168vki3n3rwhn73dkbj5qwh2ndrlyrc";
+  };
+
+  porihall-sf = fetchurl {
+    url = "http://legacy.spa.aalto.fi/projects/poririrs/wavs/sndfld.zip";
+    sha256 = "0z1kmdin3vcy6wmnym9jlfh8hwvci9404hff02cb98iw2slxid42";
+  };
+  porihall-bd = fetchurl {
+    url = "http://legacy.spa.aalto.fi/projects/poririrs/wavs/bin_dfeq.zip";
+    sha256 = "03m2brfxs851sag4z7kd71h6anv6hj34zcambwib0v1byg8vyplp";
+  };
+  porihall-c = fetchurl {
+    url = "http://legacy.spa.aalto.fi/projects/poririrs/wavs/cardioid.zip";
+    sha256 = "0ilbfvb2kvg5z6zi0mf2k4n0vgpir3iz5fa53xw92c07fs0cx36w";
+  };
+
+  spacenet-hm2 = fetchurl {
+    url = "https://webfiles.york.ac.uk/OPENAIR/IRs/hamilton-mausoleum/b-format/hm2_000_bformat_48k.wav";
+    sha256 = "1icnzfzq3mccbmnvmvh22mw8g8dci4i9h7lgrpmycj58v3gnb1p5";
+  };
+  spacenet-lyd3 = fetchurl {
+    url = "https://webfiles.york.ac.uk/OPENAIR/IRs/st-andrews-church/b-format/lyd3_000_bformat_48k.wav";
+    sha256 = "144cc0i91q5i72lwbxydx3nvxrd12j7clxjhwa2b8sf69ypz58wd";
+  };
+  spacenet-mh3 = fetchurl {
+    url = "https://webfiles.york.ac.uk/OPENAIR/IRs/maes-howe/b-format/mh3_000_bformat_48k.wav";
+    sha256 = "1c6v9jlm88l1sx2383yivycdrs9jqfsfx8cpbkjg19v2x1dfns0b";
+  };
+  spacenet-minster1 = fetchurl {
+    url = "https://webfiles.york.ac.uk/OPENAIR/IRs/york-minster/b-format/minster1_bformat_48k.wav";
+    sha256 = "1cs26pawjkv6qvwhfirfvzh21xvnmx8yh7f4xcr79cxv5c6hhnrw";
+  };
+
+  nativeBuildInputs = [ flac unzip ];
+
+  buildInputs = [
+    fftwFloat
+    hybridreverb2
+    libclthreads
+    libjack2
+    libsndfile
+    zita-convolver
+  ];
+
+  outputs = [ "bin" "out" "doc" ];
+
+  preConfigure = ''
+    cd source
+  '';
+
+  makeFlags = [
+    "PREFIX=$(bin)"
+  ];
+
+  postInstall = ''
+    mkdir -p $doc/share/doc/jconvolver
+    cp -r ../[A-Z]* $doc/share/doc/jconvolver/
+
+    mkdir -p $out/share/jconvolver
+    cp -r ../config-files $out/share/jconvolver/
+    cd $out/share/jconvolver
+    for conf in */*.conf */*/*.conf; do
+      if grep -q /audio/ $conf; then
+        substituteInPlace $conf --replace /audio/ $out/share/jconvolver/
+      fi
+    done
+    substituteInPlace config-files/xtalk-cancel/EYCv2-44.conf --replace /cd "#/cd"
+    ln -s ${weird} config-files/weird.wav
+
+    tar xf ${reverbs}
+    cd reverbs
+    unzip -d porihall ${porihall-sf} s1_r4_sf.wav
+    unzip -d porihall ${porihall-bd} s1_r3_bd.wav
+    unzip -d porihall ${porihall-c} s1_r3_c.wav
+
+    mkdir spacenet
+    ln -s ${spacenet-hm2} spacenet/HM2_000_WXYZ_48k.amb
+    ln -s ${spacenet-lyd3} spacenet/Lyd3_000_WXYZ_48k.amb
+    ln -s ${spacenet-mh3} spacenet/MH3_000_WXYZ_48k.amb
+    ln -s ${spacenet-minster1} spacenet/Minster1_000_WXYZ_48k.amb
+
+    mkdir -p hybridreverb-database/large_concert_hall/music/8m
+    for flac in ${hybridreverb2}/share/HybridReverb2/RIR_Database/large_concert_hall/music/8m/*.flac; do
+      flac --output-prefix=hybridreverb-database/large_concert_hall/music/8m/ -d $flac
+    done
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    description = "A JACK client and audio file convolver with reverb samples";
+    homepage = "https://kokkinizita.linuxaudio.org/linuxaudio/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ orivej ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/jmusicbot/default.nix b/nixpkgs/pkgs/applications/audio/jmusicbot/default.nix
index 299fe547366a..3bc06abcbffa 100644
--- a/nixpkgs/pkgs/applications/audio/jmusicbot/default.nix
+++ b/nixpkgs/pkgs/applications/audio/jmusicbot/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "JMusicBot";
-  version = "0.3.4";
+  version = "0.3.6";
 
   src = fetchurl {
     url = "https://github.com/jagrosh/MusicBot/releases/download/${version}/JMusicBot-${version}.jar";
-    sha256 = "sha256-++/ot9k74pkN9Wl7IEjiMIv/q5zklIEdU6uFjam0tmU=";
+    sha256 = "sha256-Hc3dsOADC+jVZScY19OYDkHimntMjdw/BoB3EUS/d0k=";
   };
 
   dontUnpack = true;
diff --git a/nixpkgs/pkgs/applications/audio/kapitonov-plugins-pack/default.nix b/nixpkgs/pkgs/applications/audio/kapitonov-plugins-pack/default.nix
index 6e5cc0d51916..655fc6a9608c 100644
--- a/nixpkgs/pkgs/applications/audio/kapitonov-plugins-pack/default.nix
+++ b/nixpkgs/pkgs/applications/audio/kapitonov-plugins-pack/default.nix
@@ -35,7 +35,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Set of LADSPA and LV2 plugins for guitar sound processing";
-    homepage = https://github.com/olegkapitonov/Kapitonov-Plugins-Pack;
+    homepage = "https://github.com/olegkapitonov/Kapitonov-Plugins-Pack";
     license = licenses.gpl3;
     platforms = platforms.linux;
     maintainers = with maintainers; [ magnetophon ];
diff --git a/nixpkgs/pkgs/applications/audio/kid3/default.nix b/nixpkgs/pkgs/applications/audio/kid3/default.nix
index 7dd5594a9a93..ba3d921751b5 100644
--- a/nixpkgs/pkgs/applications/audio/kid3/default.nix
+++ b/nixpkgs/pkgs/applications/audio/kid3/default.nix
@@ -28,11 +28,11 @@
 
 stdenv.mkDerivation rec {
   pname = "kid3";
-  version = "3.8.7";
+  version = "3.9.0";
 
   src = fetchurl {
     url = "https://download.kde.org/stable/${pname}/${version}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-Dr+NLh5ajG42jRKt1Swq6mccPfuAXRvhhoTNuO8lnI0=";
+    sha256 = "sha256-d0Y+swzzGk1FzQ3EK8sN8i1Nf6CRIPMAYgTUYN71FXU=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/audio/ladspa-plugins/default.nix b/nixpkgs/pkgs/applications/audio/ladspa-plugins/default.nix
index fe8e9f323a57..491a18bba3ea 100644
--- a/nixpkgs/pkgs/applications/audio/ladspa-plugins/default.nix
+++ b/nixpkgs/pkgs/applications/audio/ladspa-plugins/default.nix
@@ -1,18 +1,28 @@
-{ lib, stdenv, fetchurl, autoreconfHook, automake, fftw, ladspaH, libxml2, pkg-config
-, perlPackages }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, autoreconfHook
+, automake
+, fftw
+, ladspaH
+, libxml2
+, pkg-config
+, perlPackages
+}:
 
 stdenv.mkDerivation rec {
   pname = "swh-plugins";
   version = "0.4.17";
 
-
-  src = fetchurl {
-    url = "https://github.com/swh/ladspa/archive/v${version}.tar.gz";
-    sha256 = "1rqwh8xrw6hnp69dg4gy336bfbfpmbx4fjrk0nb8ypjcxkz91c6i";
+  src = fetchFromGitHub {
+    owner = "swh";
+    repo = "ladspa";
+    rev = "v${version}";
+    sha256 = "sha256-eOtIhNcuItREUShI8JRlBVKfMfovpdfIYu+m37v4KLE=";
   };
 
   nativeBuildInputs = [ autoreconfHook pkg-config ];
-  buildInputs = [ fftw ladspaH libxml2 perlPackages.perl  perlPackages.XMLParser ];
+  buildInputs = [ fftw ladspaH libxml2 perlPackages.perl perlPackages.XMLParser ];
 
   patchPhase = ''
     patchShebangs .
diff --git a/nixpkgs/pkgs/applications/audio/lastfmsubmitd/default.nix b/nixpkgs/pkgs/applications/audio/lastfmsubmitd/default.nix
deleted file mode 100644
index 8a786c5c69ee..000000000000
--- a/nixpkgs/pkgs/applications/audio/lastfmsubmitd/default.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ lib, fetchurl, python2Packages }:
-
-python2Packages.buildPythonApplication rec {
-  pname = "lastfmsubmitd";
-  version = "1.0.6";
-
-  src = fetchurl {
-    url = "https://www.red-bean.com/decklin/lastfmsubmitd/lastfmsubmitd-${version}.tar.gz";
-    sha256 = "c2636d5095a95167366bacd458624d67b046e060244fa54ba2c2e3efb79f9b0e";
-  };
-
-  doCheck = false;
-
-  installCommand = "python setup.py install --prefix=$out";
-
-  meta = {
-    homepage = "https://www.red-bean.com/decklin/lastfmsubmitd/";
-    license = lib.licenses.mit;
-    description = "An last.fm audio scrobbler and daemon";
-  };
-}
diff --git a/nixpkgs/pkgs/applications/audio/libopenmpt/default.nix b/nixpkgs/pkgs/applications/audio/libopenmpt/default.nix
index ef5c080133b0..b2b5ebecd7e2 100644
--- a/nixpkgs/pkgs/applications/audio/libopenmpt/default.nix
+++ b/nixpkgs/pkgs/applications/audio/libopenmpt/default.nix
@@ -1,4 +1,4 @@
-{ config, lib, stdenv, fetchurl, zlib, pkg-config, mpg123, libogg, libvorbis, portaudio, libsndfile, flac
+{ config, lib, stdenv, fetchurl, fetchpatch, zlib, pkg-config, mpg123, libogg, libvorbis, portaudio, libsndfile, flac
 , usePulseAudio ? config.pulseaudio or stdenv.isLinux, libpulseaudio }:
 
 stdenv.mkDerivation rec {
@@ -12,6 +12,16 @@ stdenv.mkDerivation rec {
     sha256 = "1c54lldr2imjzhlhq5lvwhj7d5794xm97cby9pznr5wdjjay0sa4";
   };
 
+  patches = [
+    # Fix pending upstream inclusion for gcc-12 include headers:
+    #  https://github.com/OpenMPT/openmpt/pull/8
+    (fetchpatch {
+      name = "gcc-12.patch";
+      url = "https://github.com/OpenMPT/openmpt/commit/6e7a43190ef2f9ba0b3efc19b9527261b69ec8f7.patch";
+      sha256 = "081m1rf09bbrlg52aihaajmld5dcnwbp6y7zpyik92mm332r330h";
+    })
+  ];
+
   enableParallelBuilding = true;
 
   nativeBuildInputs = [ pkg-config ];
diff --git a/nixpkgs/pkgs/applications/audio/librespot/default.nix b/nixpkgs/pkgs/applications/audio/librespot/default.nix
index de1952b99128..64d59516f87f 100644
--- a/nixpkgs/pkgs/applications/audio/librespot/default.nix
+++ b/nixpkgs/pkgs/applications/audio/librespot/default.nix
@@ -4,28 +4,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "librespot";
-  version = "0.3.0";
+  version = "0.3.1";
 
   src = fetchFromGitHub {
     owner = "librespot-org";
     repo = "librespot";
     rev = "v${version}";
-    sha256 = "0n7h690gplpp47gdj038g6ncgwr7wvwfkg00cbrbvxhv7kzqqa1f";
+    sha256 = "1fv2sk89rf1vraq823bxddlxj6b4gqhfpc36xr7ibz2405zickfv";
   };
 
-  cargoSha256 = "0qakvpxvn84ppgs3qlsfan4flqkmjcgs698w25jasx9ymiv8wc3s";
-
-  cargoBuildFlags = with lib; [
-    "--no-default-features"
-    "--features"
-    (concatStringsSep "," (filter (x: x != "") [
-      (optionalString withRodio "rodio-backend")
-      (optionalString withALSA "alsa-backend")
-      (optionalString withPulseAudio "pulseaudio-backend")
-      (optionalString withPortAudio "portaudio-backend")
-
-    ]))
-  ];
+  cargoSha256 = "1sal85gsbnrabxi39298w9njdc08csnwl40akd6k9fsc0fmpn1b0";
 
   nativeBuildInputs = [ pkg-config ];
 
@@ -33,6 +21,12 @@ rustPlatform.buildRustPackage rec {
     ++ lib.optional withPulseAudio libpulseaudio
     ++ lib.optional withPortAudio portaudio;
 
+  buildNoDefaultFeatures = true;
+  buildFeatures = lib.optional withRodio "rodio-backend"
+    ++ lib.optional withALSA "alsa-backend"
+    ++ lib.optional withPulseAudio "pulseaudio-backend"
+    ++ lib.optional withPortAudio "portaudio-backend";
+
   doCheck = false;
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/applications/audio/linuxband/default.nix b/nixpkgs/pkgs/applications/audio/linuxband/default.nix
deleted file mode 100644
index ec034ae238de..000000000000
--- a/nixpkgs/pkgs/applications/audio/linuxband/default.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{ lib, stdenv, fetchurl, makeWrapper, pkg-config, MMA, libjack2, libsmf, python2Packages }:
-
-let
-  inherit (python2Packages) pyGtkGlade pygtksourceview python;
-in stdenv.mkDerivation rec {
-  version = "12.02.1";
-  pname = "linuxband";
-
-  src = fetchurl {
-    url = "https://linuxband.org/assets/sources/${pname}-${version}.tar.gz";
-    sha256 = "1r71h4yg775m4gax4irrvygmrsclgn503ykmc2qwjsxa42ri4n2n";
-  };
-
-  nativeBuildInputs = [ pkg-config makeWrapper ];
-  buildInputs = [ MMA libjack2 libsmf python pyGtkGlade pygtksourceview ];
-
-  patchPhase = ''
-    sed -i 's@/usr/@${MMA}/@g' src/main/config/linuxband.rc.in
-    cat src/main/config/linuxband.rc.in
-  '';
-
-  postFixup = ''
-    PYTHONPATH=$pyGtkGlade/share/:pygtksourceview/share/:$PYTHONPATH
-    for f in $out/bin/*; do
-      wrapProgram $f \
-      --prefix PYTHONPATH : $PYTHONPATH
-    done
-  '';
-
-  meta = {
-    description = "A GUI front-end for MMA: Type in the chords, choose the groove and it will play an accompaniment";
-    homepage = "https://linuxband.org/";
-    license = lib.licenses.gpl2;
-    maintainers = [ lib.maintainers.magnetophon ];
-    platforms = lib.platforms.linux;
-  };
-}
diff --git a/nixpkgs/pkgs/applications/audio/lmms/default.nix b/nixpkgs/pkgs/applications/audio/lmms/default.nix
index 4830476af2c8..22d9b3fed976 100644
--- a/nixpkgs/pkgs/applications/audio/lmms/default.nix
+++ b/nixpkgs/pkgs/applications/audio/lmms/default.nix
@@ -43,6 +43,6 @@ mkDerivation rec {
     homepage = "https://lmms.io";
     license = licenses.gpl2Plus;
     platforms = [ "x86_64-linux" "i686-linux" ];
-    maintainers = with maintainers; [ goibhniu yegortimoshenko ];
+    maintainers = with maintainers; [ goibhniu yana ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/lollypop/default.nix b/nixpkgs/pkgs/applications/audio/lollypop/default.nix
index 564277562885..7c93760d2ca3 100644
--- a/nixpkgs/pkgs/applications/audio/lollypop/default.nix
+++ b/nixpkgs/pkgs/applications/audio/lollypop/default.nix
@@ -25,7 +25,7 @@
 
 python3.pkgs.buildPythonApplication rec  {
   pname = "lollypop";
-  version = "1.4.23";
+  version = "1.4.26";
 
   format = "other";
   doCheck = false;
@@ -34,7 +34,7 @@ python3.pkgs.buildPythonApplication rec  {
     url = "https://gitlab.gnome.org/World/lollypop";
     rev = "refs/tags/${version}";
     fetchSubmodules = true;
-    sha256 = "sha256-wwdH3gMpYt40VGqrL1XfB1dOfg45zLKtTEI23AwjCis=";
+    sha256 = "sha256-Q/z9oET06DimMRZl03TgjEeheoVHtIkH+Z69qWZetcI=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/audio/losslessaudiochecker/default.nix b/nixpkgs/pkgs/applications/audio/losslessaudiochecker/default.nix
new file mode 100644
index 000000000000..551f56a3ce14
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/losslessaudiochecker/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenv, fetchurl, autoPatchelfHook }:
+
+stdenv.mkDerivation {
+  pname = "losslessaudiochecker";
+  version = "2.0.5";
+
+  src = fetchurl {
+    url = "https://web.archive.org/web/20211119122205/https://losslessaudiochecker.com/dl/LAC-Linux-64bit.tar.gz";
+    sha256 = "1i1zbl7sqwxwmhw89lgz922l5k85in3y76zb06h8j3zd0lb20wkq";
+  };
+
+  nativeBuildInputs = [ autoPatchelfHook ];
+
+  setSourceRoot = "sourceRoot=$PWD";
+
+  dontBuild = true;
+
+  installPhase = ''
+    install LAC -D -t $out/bin
+  '';
+
+  meta = {
+    description = "Utility to check whether audio is truly lossless or not";
+    homepage = "https://losslessaudiochecker.com";
+    license = lib.licenses.unfree;
+    platforms = lib.platforms.x86_64;
+    maintainers = with lib.maintainers; [ p-h ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/lsp-plugins/default.nix b/nixpkgs/pkgs/applications/audio/lsp-plugins/default.nix
index 2bf47786ef53..f6f3237d6f07 100644
--- a/nixpkgs/pkgs/applications/audio/lsp-plugins/default.nix
+++ b/nixpkgs/pkgs/applications/audio/lsp-plugins/default.nix
@@ -5,13 +5,13 @@
 
 stdenv.mkDerivation rec {
   pname = "lsp-plugins";
-  version = "1.1.30";
+  version = "1.1.31";
 
   src = fetchFromGitHub {
     owner = "sadko4u";
     repo = pname;
     rev = version;
-    sha256 = "0g0nx05dyjwz2149v3pj6sa9divr26jyqvg2kk1qk48s2n4najkz";
+    sha256 = "sha256-P1woSkenSlVUwWr3q0sNv8K2fVtTa6zWwKfSHQgg9Xw=";
   };
 
   nativeBuildInputs = [ pkg-config php makeWrapper ];
diff --git a/nixpkgs/pkgs/applications/audio/mi2ly/default.nix b/nixpkgs/pkgs/applications/audio/mi2ly/default.nix
index b4f7668394f1..9a046a2e11aa 100644
--- a/nixpkgs/pkgs/applications/audio/mi2ly/default.nix
+++ b/nixpkgs/pkgs/applications/audio/mi2ly/default.nix
@@ -1,28 +1,20 @@
-{lib, stdenv, fetchurl}:
-let
-  s = # Generated upstream information
-  rec {
-    baseName="mi2ly";
-    version="0.12";
-    name="${baseName}-${version}";
-    hash="1b14zcwlvnxhjxr3ymyzg0mg4sbijkinzpxm641s859jxcgylmll";
-    url="https://download.savannah.gnu.org/releases/mi2ly/mi2ly.0.12.tar.bz2";
-    sha256="1b14zcwlvnxhjxr3ymyzg0mg4sbijkinzpxm641s859jxcgylmll";
-  };
-  buildInputs = [
-  ];
-in
-stdenv.mkDerivation {
-  inherit (s) name version;
-  inherit buildInputs;
+{ lib, stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  pname = "mi2ly";
+  version = "0.12";
+
   src = fetchurl {
-    inherit (s) url sha256;
+    url = "https://download.savannah.gnu.org/releases/mi2ly/mi2ly.${version}.tar.bz2";
+    sha256 = "sha256-lFbqH+syFaQDMbXfb+OUcWnyKnjfVz9yl7DbTTn7JKw=";
   };
 
-  sourceRoot=".";
+  sourceRoot = ".";
 
   hardeningDisable = [ "format" ];
 
+  NIX_CFLAGS_COMPILE = [ "-fgnu89-inline" ];
+
   buildPhase = "./cc";
   installPhase = ''
     mkdir -p "$out"/{bin,share/doc/mi2ly}
@@ -30,12 +22,11 @@ stdenv.mkDerivation {
     cp README Doc.txt COPYING Manual.txt "$out/share/doc/mi2ly"
   '';
 
-  meta = {
-    inherit (s) version;
+  meta = with lib; {
     description = "MIDI to Lilypond converter";
-    license = lib.licenses.gpl2Plus ;
-    maintainers = [lib.maintainers.raskin];
-    platforms = lib.platforms.linux;
-    broken = true; # 2018-04-11
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ raskin ];
+    platforms = platforms.linux;
+    homepage = "https://www.nongnu.org/mi2ly/";
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/mi2ly/default.upstream b/nixpkgs/pkgs/applications/audio/mi2ly/default.upstream
deleted file mode 100644
index 0b2607989aa2..000000000000
--- a/nixpkgs/pkgs/applications/audio/mi2ly/default.upstream
+++ /dev/null
@@ -1,3 +0,0 @@
-url https://download.savannah.gnu.org/releases/mi2ly/
-ensure_choice
-version '.*/mi2ly[.]([0-9.]+)[.]tar.*' '\1'
diff --git a/nixpkgs/pkgs/applications/audio/midi-visualizer/default.nix b/nixpkgs/pkgs/applications/audio/midi-visualizer/default.nix
index 0213dc4af6da..a50e5dcd6690 100644
--- a/nixpkgs/pkgs/applications/audio/midi-visualizer/default.nix
+++ b/nixpkgs/pkgs/applications/audio/midi-visualizer/default.nix
@@ -3,13 +3,13 @@
 
 stdenv.mkDerivation rec {
   pname = "MIDIVisualizer";
-  version = "6.4";
+  version = "6.5";
 
   src = fetchFromGitHub {
     owner = "kosua20";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-XR5xmQYVbBR6QWt/+PLeGqg0t4xl35MPrQNaPsmgAYA=";
+    sha256 = "sha256-thRcRJ88bz3jwu6rKaQxt2MkBSf5Ri1jygkKDguP2eE=";
   };
 
   nativeBuildInputs = [ cmake pkg-config makeWrapper];
diff --git a/nixpkgs/pkgs/applications/audio/milkytracker/default.nix b/nixpkgs/pkgs/applications/audio/milkytracker/default.nix
index ce29a587d232..47fbd5794ea0 100644
--- a/nixpkgs/pkgs/applications/audio/milkytracker/default.nix
+++ b/nixpkgs/pkgs/applications/audio/milkytracker/default.nix
@@ -27,9 +27,9 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Music tracker application, similar to Fasttracker II";
-    homepage = "http://milkytracker.org";
+    homepage = "https://milkytracker.org/";
     license = licenses.gpl3Plus;
     platforms = [ "x86_64-linux" "i686-linux" ];
-    maintainers = with maintainers; [ zoomulator ];
+    maintainers = with maintainers; [];
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/mimms/default.nix b/nixpkgs/pkgs/applications/audio/mimms/default.nix
deleted file mode 100644
index 28ec09eba9ca..000000000000
--- a/nixpkgs/pkgs/applications/audio/mimms/default.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ fetchurl, lib, python2Packages, libmms }:
-
-python2Packages.buildPythonApplication rec {
-  pname = "mimms";
-  version = "3.2";
-
-  src = fetchurl {
-    url = "https://download.savannah.gnu.org/releases/mimms/mimms-${version}.tar.bz2";
-    sha256 = "0zmcd670mpq85cs3nvdq3i805ba0d1alqahfy1m9cpf7kxrivfml";
-  };
-
-  postInstall = ''
-    wrapProgram $out/bin/mimms \
-      --prefix LD_LIBRARY_PATH : ${libmms}/lib
-  '';
-
-  meta = {
-    homepage = "https://savannah.nongnu.org/projects/mimms/";
-    license = lib.licenses.gpl3;
-    description = "An mms (e.g. mms://) stream downloader";
-
-    longDescription = ''
-      mimms is a program designed to allow you to download streams
-      using the MMS protocol and save them to your computer, as
-      opposed to watching them live. Similar functionality is
-      available in full media player suites such as Xine, MPlayer,
-      and VLC, but mimms is quick and easy to use and, for the time
-      being, remains a useful program.
-    '';
-  };
-}
diff --git a/nixpkgs/pkgs/applications/audio/mixxx/default.nix b/nixpkgs/pkgs/applications/audio/mixxx/default.nix
index 518c54dc48aa..bbd0e07a64a4 100644
--- a/nixpkgs/pkgs/applications/audio/mixxx/default.nix
+++ b/nixpkgs/pkgs/applications/audio/mixxx/default.nix
@@ -53,13 +53,13 @@
 
 mkDerivation rec {
   pname = "mixxx";
-  version = "2.3.0";
+  version = "2.3.1";
 
   src = fetchFromGitHub {
     owner = "mixxxdj";
     repo = "mixxx";
     rev = version;
-    sha256 = "18sx4l3zzbn5142xfv5bp0crdd615a5728fkprqacnx3zpa144x6";
+    sha256 = "sha256-6M1qaRyRYWTIKqclewuD+RUVDdxVbBHcfpw2qYgO6BA=";
   };
 
   nativeBuildInputs = [ cmake pkg-config ];
@@ -117,7 +117,7 @@ mkDerivation rec {
 
   # 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.0/CMakeLists.txt#L1381-L1392
+  # see https://github.com/mixxxdj/mixxx/blob/2.3.1/CMakeLists.txt#L1381-L1392
   cmakeFlags = [
     "-DINSTALL_USER_UDEV_RULES=OFF"
   ];
diff --git a/nixpkgs/pkgs/applications/audio/mmtc/default.nix b/nixpkgs/pkgs/applications/audio/mmtc/default.nix
index fc5a2e9b0350..578cecf09b09 100644
--- a/nixpkgs/pkgs/applications/audio/mmtc/default.nix
+++ b/nixpkgs/pkgs/applications/audio/mmtc/default.nix
@@ -1,27 +1,26 @@
-{ fetchFromGitHub, installShellFiles, lib, rustPlatform }:
+{ lib, rustPlatform, fetchFromGitHub, installShellFiles }:
 
 rustPlatform.buildRustPackage rec {
   pname = "mmtc";
-  version = "0.2.13";
+  version = "0.2.14";
 
   src = fetchFromGitHub {
     owner = "figsoda";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0ag87hgdg6fvk80fgznba0xjlcajks5w5s6y8lvwhz9irn2kq2rz";
+    sha256 = "sha256-g2JHY95vkG/Ep2eqz8guteF8fHUso/JuuVijNGkgykA=";
   };
 
-  cargoSha256 = "0lkx0zj9xc0rlrq91l4wydzp430hxlrqyq7ii8wq2fcan8ln22lv";
+  cargoSha256 = "sha256-tVjy/O5hfnQFC6to8VMGc39mEXhA5lwUIne6pVvDec0=";
 
   nativeBuildInputs = [ installShellFiles ];
 
   preFixup = ''
     completions=($releaseDir/build/mmtc-*/out/completions)
-    installShellCompletion ''${completions[0]}/mmtc.{bash,fish}
-    installShellCompletion --zsh ''${completions[0]}/_mmtc
+    installShellCompletion $completions/mmtc.{bash,fish} --zsh $completions/_mmtc
   '';
 
-  GEN_COMPLETIONS = "1";
+  GEN_COMPLETIONS = 1;
 
   meta = with lib; {
     description = "Minimal mpd terminal client that aims to be simple yet highly configurable";
diff --git a/nixpkgs/pkgs/applications/audio/mod-arpeggiator-lv2/default.nix b/nixpkgs/pkgs/applications/audio/mod-arpeggiator-lv2/default.nix
new file mode 100644
index 000000000000..3896545dc41c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mod-arpeggiator-lv2/default.nix
@@ -0,0 +1,26 @@
+{ lib, stdenv, fetchFromGitHub, lv2, pkg-config }:
+
+stdenv.mkDerivation rec {
+
+  pname = "mod-arpeggiator-lv2";
+  version = "unstable-2021-11-09";
+
+  src = fetchFromGitHub {
+    owner = "moddevices";
+    repo = pname;
+    rev = "82f3d9f159ce216454656a8782362c3d5ed48bed";
+    sha256 = "sha256-1KiWMTVTTf1/iR4AzJ1Oe0mOrWN5edsZN0tQMidgnRA=";
+  };
+
+  buildInputs = [ lv2 pkg-config ];
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  meta = with lib; {
+    description = "a LV2 arpeggiator";
+    homepage = "https://github.com/moddevices/mod-arpeggiator-lv2";
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mod-distortion/default.nix b/nixpkgs/pkgs/applications/audio/mod-distortion/default.nix
index 7c9f2acfd844..7e2b2bf6cfbd 100644
--- a/nixpkgs/pkgs/applications/audio/mod-distortion/default.nix
+++ b/nixpkgs/pkgs/applications/audio/mod-distortion/default.nix
@@ -1,8 +1,8 @@
 { lib, stdenv, fetchFromGitHub, lv2 }:
 
 stdenv.mkDerivation {
-  pname = "mod-distortion-git";
-  version = "2016-08-19";
+  pname = "mod-distortion";
+  version = "unstable-2016-08-19";
 
   src = fetchFromGitHub {
     owner = "portalmod";
diff --git a/nixpkgs/pkgs/applications/audio/molot-lite/default.nix b/nixpkgs/pkgs/applications/audio/molot-lite/default.nix
index c44f597ef30c..da1e3702bacc 100644
--- a/nixpkgs/pkgs/applications/audio/molot-lite/default.nix
+++ b/nixpkgs/pkgs/applications/audio/molot-lite/default.nix
@@ -1,18 +1,19 @@
-{ lib, stdenv, fetchFromGitHub, lv2 }:
+{ lib, stdenv, fetchFromGitHub, lv2, cairo, pkg-config }:
 
 stdenv.mkDerivation rec {
 
   pname = "molot-lite";
-  version = "1.0.0";
+  version = "1.1.0";
 
   src = fetchFromGitHub {
     owner = "magnetophon";
     repo = pname;
     rev = version;
-    sha256 = "0xbvicfk1rgp01nlg6hlym9bnygry0nrbv88mv7w6hnacvl63ba4";
+    sha256 = "sha256-0tmobsdCNon6udbkbQw7+EYQKBg2oaXlHIgNEf9U3XE=";
   };
 
-  buildInputs = [ lv2 ];
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ lv2 cairo ];
 
   makeFlags = [ "INSTALL_DIR=$out/lib/lv2" ];
 
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/default.nix b/nixpkgs/pkgs/applications/audio/mopidy/default.nix
index 971b226bc81d..d1b43bc4489b 100644
--- a/nixpkgs/pkgs/applications/audio/mopidy/default.nix
+++ b/nixpkgs/pkgs/applications/audio/mopidy/default.nix
@@ -9,6 +9,8 @@ lib.makeScope newScope (self: with self; {
 
   mopidy-iris = callPackage ./iris.nix { };
 
+  mopidy-jellyfin = callPackage ./jellyfin.nix { };
+
   mopidy-local = callPackage ./local.nix { };
 
   mopidy-moped = callPackage ./moped.nix { };
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/iris.nix b/nixpkgs/pkgs/applications/audio/mopidy/iris.nix
index d02ca3d747eb..5b2cbe031c67 100644
--- a/nixpkgs/pkgs/applications/audio/mopidy/iris.nix
+++ b/nixpkgs/pkgs/applications/audio/mopidy/iris.nix
@@ -2,11 +2,11 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "Mopidy-Iris";
-  version = "3.59.0";
+  version = "3.60.0";
 
   src = python3Packages.fetchPypi {
     inherit pname version;
-    sha256 = "0llvn0khl07ni34jvb3a1r6rnkf0ljizhpqrs5bdishfhpwyhm0j";
+    sha256 = "18w6qqmxzn8psiacybryxailm826f3j1wgiv0c03fbdsy6kr5f7l";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/jellyfin.nix b/nixpkgs/pkgs/applications/audio/mopidy/jellyfin.nix
new file mode 100644
index 000000000000..7790380f9b76
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mopidy/jellyfin.nix
@@ -0,0 +1,25 @@
+{ lib, python3Packages, mopidy }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "mopidy-jellyfin";
+  version = "1.0.2";
+
+  src = python3Packages.fetchPypi {
+    inherit version;
+    pname = "Mopidy-Jellyfin";
+    sha256 = "0j7v5xx3c401r5dw1sqm1n2263chjga1d3ml85rg79hjhhhacy75";
+  };
+
+  propagatedBuildInputs = [ mopidy python3Packages.unidecode python3Packages.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 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mp3blaster/default.nix b/nixpkgs/pkgs/applications/audio/mp3blaster/default.nix
index d7dd5f102dbd..0d65fe813ec1 100644
--- a/nixpkgs/pkgs/applications/audio/mp3blaster/default.nix
+++ b/nixpkgs/pkgs/applications/audio/mp3blaster/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchFromGitHub, ncurses, libvorbis, SDL }:
+{ lib, stdenv, fetchFromGitHub, fetchpatch, ncurses, libvorbis, SDL }:
 
 stdenv.mkDerivation rec {
   pname = "mp3blaster";
@@ -11,6 +11,16 @@ stdenv.mkDerivation rec {
     sha256 = "0pzwml3yhysn8vyffw9q9p9rs8gixqkmg4n715vm23ib6wxbliqs";
   };
 
+  patches = [
+    # Fix pending upstream inclusion for ncurses-6.3 support:
+    #  https://github.com/stragulus/mp3blaster/pull/8
+    (fetchpatch {
+      name = "ncurses-6.3.patch";
+      url = "https://github.com/stragulus/mp3blaster/commit/62168cba5eaba6ffe56943552837cf033cfa96ed.patch";
+      sha256 = "088l27kl1l58lwxfnw5x2n64sdjy925ycphni3icwag7zvpj0xz1";
+    })
+  ];
+
   buildInputs = [
     ncurses
     libvorbis
diff --git a/nixpkgs/pkgs/applications/audio/mpc/default.nix b/nixpkgs/pkgs/applications/audio/mpc/default.nix
index e4ecc9202476..0511367db3b8 100644
--- a/nixpkgs/pkgs/applications/audio/mpc/default.nix
+++ b/nixpkgs/pkgs/applications/audio/mpc/default.nix
@@ -11,13 +11,13 @@
 
 stdenv.mkDerivation rec {
   pname = "mpc";
-  version = "0.33";
+  version = "0.34";
 
   src = fetchFromGitHub {
     owner  = "MusicPlayerDaemon";
     repo   = "mpc";
     rev    = "v${version}";
-    sha256 = "1qbi0i9cq54rj8z2kapk8x8g1jkw2jz781niwb9i7kw4xfhvy5zx";
+    sha256 = "sha256-2FjYBfak0IjibuU+CNQ0y9Ei8hTZhynS/BK2DNerhVw=";
   };
 
   buildInputs = [ libmpdclient ] ++ lib.optionals stdenv.isDarwin [ libiconv ];
diff --git a/nixpkgs/pkgs/applications/audio/mpdevil/default.nix b/nixpkgs/pkgs/applications/audio/mpdevil/default.nix
index b55cf9be3518..3676697f16e8 100644
--- a/nixpkgs/pkgs/applications/audio/mpdevil/default.nix
+++ b/nixpkgs/pkgs/applications/audio/mpdevil/default.nix
@@ -7,13 +7,13 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "mpdevil";
-  version = "1.3.0";
+  version = "1.4.1";
 
   src = fetchFromGitHub {
     owner = "SoongNoonien";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1wa5wkkv8kvzlxrhqmmhjmrzcm5v2dij516dk4vlpv9sazc6gzkm";
+    sha256 = "1a5nhlbgi3ahnkcq16c2vgiaghgswy5lxg64pcrlbqssg1pj5gma";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/audio/munt/default.nix b/nixpkgs/pkgs/applications/audio/munt/default.nix
index 191612700f41..93a9ce258544 100644
--- a/nixpkgs/pkgs/applications/audio/munt/default.nix
+++ b/nixpkgs/pkgs/applications/audio/munt/default.nix
@@ -36,7 +36,6 @@ mkDerivation rec {
   postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
     mkdir $out/Applications
     mv $out/bin/${mainProgram}.app $out/Applications/
-    wrapQtApp $out/Applications/${mainProgram}.app/Contents/MacOS/${mainProgram}
     ln -s $out/{Applications/${mainProgram}.app/Contents/MacOS,bin}/${mainProgram}
   '';
 
diff --git a/nixpkgs/pkgs/applications/audio/musescore/default.nix b/nixpkgs/pkgs/applications/audio/musescore/default.nix
index 4b784272c35b..7662eadc4983 100644
--- a/nixpkgs/pkgs/applications/audio/musescore/default.nix
+++ b/nixpkgs/pkgs/applications/audio/musescore/default.nix
@@ -29,9 +29,9 @@ mkDerivation rec {
   qtWrapperArgs = [
     # MuseScore JACK backend loads libjack at runtime.
     "--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libjack2 ]}"
-    # Work around crash on update from 3.4.2 to 3.5.0
-    # https://bugreports.qt.io/browse/QTBUG-85967
-    "--set QML_DISABLE_DISK_CACHE 1"
+    # There are some issues with using the wayland backend, see:
+    # https://musescore.org/en/node/321936
+    "--set QT_QPA_PLATFORM xcb"
   ];
 
   nativeBuildInputs = [ cmake pkg-config ];
@@ -49,7 +49,7 @@ mkDerivation rec {
     description = "Music notation and composition software";
     homepage = "https://musescore.org/";
     license = licenses.gpl2;
-    maintainers = with maintainers; [ vandenoever turion ];
+    maintainers = with maintainers; [ vandenoever turion doronbehar ];
     platforms = platforms.linux;
     repositories.git = "https://github.com/musescore/MuseScore";
   };
diff --git a/nixpkgs/pkgs/applications/audio/musikcube/default.nix b/nixpkgs/pkgs/applications/audio/musikcube/default.nix
index 2824832ef604..bf34e8cbe5bf 100644
--- a/nixpkgs/pkgs/applications/audio/musikcube/default.nix
+++ b/nixpkgs/pkgs/applications/audio/musikcube/default.nix
@@ -4,28 +4,41 @@
 , boost
 , curl
 , fetchFromGitHub
+, fetchpatch
 , ffmpeg
 , lame
 , libev
 , libmicrohttpd
 , ncurses
 , pulseaudio
-, lib, stdenv
+, lib
+, stdenv
 , taglib
-, systemdSupport ? stdenv.isLinux, systemd
+, systemdSupport ? stdenv.isLinux
+, systemd
 }:
 
 stdenv.mkDerivation rec {
   pname = "musikcube";
-  version = "0.96.7";
+  version = "0.96.10";
 
   src = fetchFromGitHub {
     owner = "clangen";
     repo = pname;
     rev = version;
-    sha256 = "1y00vwn1h10cfflxrm5bk271ak9gilhjycgi44hlkkhmf5bdgn35";
+    sha256 = "sha256-Aa52pRGq99Pt++aEVZdmVNhhQuBajgfZp39L1AfKvho=";
   };
 
+  patches = [
+    # Fix pending upstream inclusion for ncuurses-6.3 support:
+    #  https://github.com/clangen/musikcube/pull/474
+    (fetchpatch {
+      name = "ncurses-6.3.patch";
+      url = "https://github.com/clangen/musikcube/commit/1240720e27232fdb199a4da93ca6705864442026.patch";
+      sha256 = "0bhjgwnj6d24wb1m9xz1vi1k9xk27arba1absjbcimggn54pinid";
+    })
+  ];
+
   nativeBuildInputs = [
     cmake
     pkg-config
diff --git a/nixpkgs/pkgs/applications/audio/ncmpc/default.nix b/nixpkgs/pkgs/applications/audio/ncmpc/default.nix
index e397534d126c..67c4efc04be3 100644
--- a/nixpkgs/pkgs/applications/audio/ncmpc/default.nix
+++ b/nixpkgs/pkgs/applications/audio/ncmpc/default.nix
@@ -18,13 +18,13 @@ assert pcreSupport -> pcre != null;
 
 stdenv.mkDerivation rec {
   pname = "ncmpc";
-  version = "0.45";
+  version = "0.46";
 
   src = fetchFromGitHub {
     owner  = "MusicPlayerDaemon";
     repo   = "ncmpc";
     rev    = "v${version}";
-    sha256 = "sha256-KDSHbEZ2PJLEIlXqPvBQ2ZPWno+IoajTjkl9faAXIko=";
+    sha256 = "sha256-FyuN0jkHaJLXqcVbW+OggHkNBjmqH7bS7W/QXUoDjJk=";
   };
 
   buildInputs = [ glib ncurses libmpdclient boost ]
diff --git a/nixpkgs/pkgs/applications/audio/ncspot/default.nix b/nixpkgs/pkgs/applications/audio/ncspot/default.nix
index 012315a7d723..6ba52306e8c4 100644
--- a/nixpkgs/pkgs/applications/audio/ncspot/default.nix
+++ b/nixpkgs/pkgs/applications/audio/ncspot/default.nix
@@ -5,27 +5,18 @@
 , withMPRIS ? false, dbus ? null
 }:
 
-let
-  features = [ "cursive/pancurses-backend" ]
-    ++ lib.optional withALSA "alsa_backend"
-    ++ lib.optional withPulseAudio "pulseaudio_backend"
-    ++ lib.optional withPortAudio "portaudio_backend"
-    ++ lib.optional withMPRIS "mpris";
-in
 rustPlatform.buildRustPackage rec {
   pname = "ncspot";
-  version = "0.8.2";
+  version = "0.9.3";
 
   src = fetchFromGitHub {
     owner = "hrkfdn";
     repo = "ncspot";
     rev = "v${version}";
-    sha256 = "1rs1jy7zzfgqzr64ld8whn0wlw8n7rk1svxx0xfxm3ynmgc7sd68";
+    sha256 = "sha256-k4EGyQjjJCvUhp56OjYl63n+giI05GiIS2++I1SVhCg=";
   };
 
-  cargoSha256 = "10g7gdi1iz751wa60vr4fs0cvfsgs3pfcp8pnywicl0vsdp25fmc";
-
-  cargoBuildFlags = [ "--no-default-features" "--features" "${lib.concatStringsSep "," features}" ];
+  cargoSha256 = "sha256-YsjInqmkPnAwqgRBDiwcLH0DDqCF0NElrn+WO2v+ATM=";
 
   nativeBuildInputs = [ pkg-config ];
 
@@ -36,6 +27,13 @@ rustPlatform.buildRustPackage rec {
     ++ lib.optional withPortAudio portaudio
     ++ lib.optional withMPRIS dbus;
 
+  buildNoDefaultFeatures = true;
+  buildFeatures = [ "cursive/pancurses-backend" ]
+    ++ lib.optional withALSA "alsa_backend"
+    ++ lib.optional withPulseAudio "pulseaudio_backend"
+    ++ lib.optional withPortAudio "portaudio_backend"
+    ++ lib.optional withMPRIS "mpris";
+
   doCheck = false;
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/applications/audio/netease-cloud-music-gtk/cargo-lock.patch b/nixpkgs/pkgs/applications/audio/netease-cloud-music-gtk/cargo-lock.patch
new file mode 100644
index 000000000000..7fc21c11ff7c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/netease-cloud-music-gtk/cargo-lock.patch
@@ -0,0 +1,2007 @@
+diff --git a/Cargo.lock b/Cargo.lock
+new file mode 100644
+index 0000000..41d41a5
+--- /dev/null
++++ b/Cargo.lock
+@@ -0,0 +1,2001 @@
++# This file is automatically @generated by Cargo.
++# It is not intended for manual editing.
++version = 3
++
++[[package]]
++name = "aho-corasick"
++version = "0.7.18"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
++dependencies = [
++ "memchr",
++]
++
++[[package]]
++name = "ansi_term"
++version = "0.12.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
++dependencies = [
++ "winapi",
++]
++
++[[package]]
++name = "anyhow"
++version = "1.0.45"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ee10e43ae4a853c0a3591d4e2ada1719e553be18199d9da9d4a83f5927c2f5c7"
++
++[[package]]
++name = "async-channel"
++version = "1.6.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2114d64672151c0c5eaa5e131ec84a74f06e1e559830dabba01ca30605d66319"
++dependencies = [
++ "concurrent-queue",
++ "event-listener",
++ "futures-core",
++]
++
++[[package]]
++name = "async-executor"
++version = "1.4.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "871f9bb5e0a22eeb7e8cf16641feb87c9dc67032ccf8ff49e772eb9941d3a965"
++dependencies = [
++ "async-task",
++ "concurrent-queue",
++ "fastrand",
++ "futures-lite",
++ "once_cell",
++ "slab",
++]
++
++[[package]]
++name = "async-global-executor"
++version = "2.0.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9586ec52317f36de58453159d48351bc244bc24ced3effc1fce22f3d48664af6"
++dependencies = [
++ "async-channel",
++ "async-executor",
++ "async-io",
++ "async-mutex",
++ "blocking",
++ "futures-lite",
++ "num_cpus",
++ "once_cell",
++]
++
++[[package]]
++name = "async-io"
++version = "1.6.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a811e6a479f2439f0c04038796b5cfb3d2ad56c230e0f2d3f7b04d68cfee607b"
++dependencies = [
++ "concurrent-queue",
++ "futures-lite",
++ "libc",
++ "log",
++ "once_cell",
++ "parking",
++ "polling",
++ "slab",
++ "socket2",
++ "waker-fn",
++ "winapi",
++]
++
++[[package]]
++name = "async-lock"
++version = "2.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e6a8ea61bf9947a1007c5cada31e647dbc77b103c679858150003ba697ea798b"
++dependencies = [
++ "event-listener",
++]
++
++[[package]]
++name = "async-mutex"
++version = "1.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "479db852db25d9dbf6204e6cb6253698f175c15726470f78af0d918e99d6156e"
++dependencies = [
++ "event-listener",
++]
++
++[[package]]
++name = "async-std"
++version = "1.10.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f8056f1455169ab86dd47b47391e4ab0cbd25410a70e9fe675544f49bafaf952"
++dependencies = [
++ "async-channel",
++ "async-global-executor",
++ "async-io",
++ "async-lock",
++ "crossbeam-utils",
++ "futures-channel",
++ "futures-core",
++ "futures-io",
++ "futures-lite",
++ "gloo-timers",
++ "kv-log-macro",
++ "log",
++ "memchr",
++ "num_cpus",
++ "once_cell",
++ "pin-project-lite",
++ "pin-utils",
++ "slab",
++ "wasm-bindgen-futures",
++]
++
++[[package]]
++name = "async-task"
++version = "4.0.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e91831deabf0d6d7ec49552e489aed63b7456a7a3c46cff62adad428110b0af0"
++
++[[package]]
++name = "atk"
++version = "0.9.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "812b4911e210bd51b24596244523c856ca749e6223c50a7fbbba3f89ee37c426"
++dependencies = [
++ "atk-sys",
++ "bitflags",
++ "glib",
++ "glib-sys",
++ "gobject-sys",
++ "libc",
++]
++
++[[package]]
++name = "atk-sys"
++version = "0.10.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f530e4af131d94cc4fa15c5c9d0348f0ef28bac64ba660b6b2a1cf2605dedfce"
++dependencies = [
++ "glib-sys",
++ "gobject-sys",
++ "libc",
++ "system-deps",
++]
++
++[[package]]
++name = "atomic-waker"
++version = "1.0.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "065374052e7df7ee4047b1160cca5e1467a12351a40b3da123c870ba0b8eda2a"
++
++[[package]]
++name = "atty"
++version = "0.2.14"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
++dependencies = [
++ "hermit-abi",
++ "libc",
++ "winapi",
++]
++
++[[package]]
++name = "autocfg"
++version = "1.0.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
++
++[[package]]
++name = "base64"
++version = "0.13.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd"
++
++[[package]]
++name = "bincode"
++version = "1.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad"
++dependencies = [
++ "serde",
++]
++
++[[package]]
++name = "bitflags"
++version = "1.3.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
++
++[[package]]
++name = "blocking"
++version = "1.0.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c5e170dbede1f740736619b776d7251cb1b9095c435c34d8ca9f57fcd2f335e9"
++dependencies = [
++ "async-channel",
++ "async-task",
++ "atomic-waker",
++ "fastrand",
++ "futures-lite",
++ "once_cell",
++]
++
++[[package]]
++name = "bumpalo"
++version = "3.8.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8f1e260c3a9040a7c19a12468758f4c16f31a81a1fe087482be9570ec864bb6c"
++
++[[package]]
++name = "bytes"
++version = "1.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8"
++
++[[package]]
++name = "cache-padded"
++version = "1.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "631ae5198c9be5e753e5cc215e1bd73c2b466a3565173db433f52bb9d3e66dba"
++
++[[package]]
++name = "cairo-rs"
++version = "0.9.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c5c0f2e047e8ca53d0ff249c54ae047931d7a6ebe05d00af73e0ffeb6e34bdb8"
++dependencies = [
++ "bitflags",
++ "cairo-sys-rs",
++ "glib",
++ "glib-sys",
++ "gobject-sys",
++ "libc",
++ "thiserror",
++]
++
++[[package]]
++name = "cairo-sys-rs"
++version = "0.10.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2ed2639b9ad5f1d6efa76de95558e11339e7318426d84ac4890b86c03e828ca7"
++dependencies = [
++ "glib-sys",
++ "libc",
++ "system-deps",
++]
++
++[[package]]
++name = "castaway"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ed247d1586918e46f2bbe0f13b06498db8dab5a8c1093f156652e9f2e0a73fc3"
++
++[[package]]
++name = "cc"
++version = "1.0.71"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "79c2681d6594606957bbb8631c4b90a7fcaaa72cdb714743a437b156d6a7eedd"
++
++[[package]]
++name = "cfg-if"
++version = "1.0.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
++
++[[package]]
++name = "chrono"
++version = "0.4.19"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73"
++dependencies = [
++ "libc",
++ "num-integer",
++ "num-traits",
++ "time",
++ "winapi",
++]
++
++[[package]]
++name = "concurrent-queue"
++version = "1.2.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "30ed07550be01594c6026cff2a1d7fe9c8f683caa798e12b68694ac9e88286a3"
++dependencies = [
++ "cache-padded",
++]
++
++[[package]]
++name = "crossbeam-utils"
++version = "0.8.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db"
++dependencies = [
++ "cfg-if",
++ "lazy_static",
++]
++
++[[package]]
++name = "ctor"
++version = "0.1.21"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ccc0a48a9b826acdf4028595adc9db92caea352f7af011a3034acd172a52a0aa"
++dependencies = [
++ "quote",
++ "syn",
++]
++
++[[package]]
++name = "curl"
++version = "0.4.40"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "877cc2f9b8367e32b6dabb9d581557e651cb3aa693a37f8679091bbf42687d5d"
++dependencies = [
++ "curl-sys",
++ "libc",
++ "openssl-probe",
++ "openssl-sys",
++ "schannel",
++ "socket2",
++ "winapi",
++]
++
++[[package]]
++name = "curl-sys"
++version = "0.4.50+curl-7.79.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4856b76919dd599f31236bb18db5f5bd36e2ce131e64f857ca5c259665b76171"
++dependencies = [
++ "cc",
++ "libc",
++ "libnghttp2-sys",
++ "libz-sys",
++ "openssl-sys",
++ "pkg-config",
++ "vcpkg",
++ "winapi",
++]
++
++[[package]]
++name = "custom_error"
++version = "1.9.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4f8a51dd197fa6ba5b4dc98a990a43cc13693c23eb0089ebb0fcc1f04152bca6"
++
++[[package]]
++name = "dbus"
++version = "0.6.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "48b5f0f36f1eebe901b0e6bee369a77ed3396334bf3f09abd46454a576f71819"
++dependencies = [
++ "libc",
++ "libdbus-sys",
++]
++
++[[package]]
++name = "dirs"
++version = "3.0.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "30baa043103c9d0c2a57cf537cc2f35623889dc0d405e6c3cccfadbc81c71309"
++dependencies = [
++ "dirs-sys",
++]
++
++[[package]]
++name = "dirs"
++version = "4.0.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059"
++dependencies = [
++ "dirs-sys",
++]
++
++[[package]]
++name = "dirs-sys"
++version = "0.3.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "03d86534ed367a67548dc68113a0f5db55432fdfbb6e6f9d77704397d95d5780"
++dependencies = [
++ "libc",
++ "redox_users",
++ "winapi",
++]
++
++[[package]]
++name = "either"
++version = "1.6.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
++
++[[package]]
++name = "encoding_rs"
++version = "0.8.29"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a74ea89a0a1b98f6332de42c95baff457ada66d1cb4030f9ff151b2041a1c746"
++dependencies = [
++ "cfg-if",
++]
++
++[[package]]
++name = "event-listener"
++version = "2.5.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f7531096570974c3a9dcf9e4b8e1cede1ec26cf5046219fb3b9d897503b9be59"
++
++[[package]]
++name = "fastrand"
++version = "1.5.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b394ed3d285a429378d3b384b9eb1285267e7df4b166df24b7a6939a04dc392e"
++dependencies = [
++ "instant",
++]
++
++[[package]]
++name = "fnv"
++version = "1.0.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
++
++[[package]]
++name = "foreign-types"
++version = "0.3.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
++dependencies = [
++ "foreign-types-shared",
++]
++
++[[package]]
++name = "foreign-types-shared"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
++
++[[package]]
++name = "form_urlencoded"
++version = "1.0.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191"
++dependencies = [
++ "matches",
++ "percent-encoding",
++]
++
++[[package]]
++name = "fragile"
++version = "1.0.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "69a039c3498dc930fe810151a34ba0c1c70b02b8625035592e74432f678591f2"
++
++[[package]]
++name = "futures"
++version = "0.3.17"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a12aa0eb539080d55c3f2d45a67c3b58b6b0773c1a3ca2dfec66d58c97fd66ca"
++dependencies = [
++ "futures-channel",
++ "futures-core",
++ "futures-executor",
++ "futures-io",
++ "futures-sink",
++ "futures-task",
++ "futures-util",
++]
++
++[[package]]
++name = "futures-channel"
++version = "0.3.17"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5da6ba8c3bb3c165d3c7319fc1cc8304facf1fb8db99c5de877183c08a273888"
++dependencies = [
++ "futures-core",
++ "futures-sink",
++]
++
++[[package]]
++name = "futures-core"
++version = "0.3.17"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "88d1c26957f23603395cd326b0ffe64124b818f4449552f960d815cfba83a53d"
++
++[[package]]
++name = "futures-executor"
++version = "0.3.17"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "45025be030969d763025784f7f355043dc6bc74093e4ecc5000ca4dc50d8745c"
++dependencies = [
++ "futures-core",
++ "futures-task",
++ "futures-util",
++]
++
++[[package]]
++name = "futures-io"
++version = "0.3.17"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "522de2a0fe3e380f1bc577ba0474108faf3f6b18321dbf60b3b9c39a75073377"
++
++[[package]]
++name = "futures-lite"
++version = "1.12.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48"
++dependencies = [
++ "fastrand",
++ "futures-core",
++ "futures-io",
++ "memchr",
++ "parking",
++ "pin-project-lite",
++ "waker-fn",
++]
++
++[[package]]
++name = "futures-macro"
++version = "0.3.17"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "18e4a4b95cea4b4ccbcf1c5675ca7c4ee4e9e75eb79944d07defde18068f79bb"
++dependencies = [
++ "autocfg",
++ "proc-macro-hack",
++ "proc-macro2",
++ "quote",
++ "syn",
++]
++
++[[package]]
++name = "futures-sink"
++version = "0.3.17"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "36ea153c13024fe480590b3e3d4cad89a0cfacecc24577b68f86c6ced9c2bc11"
++
++[[package]]
++name = "futures-task"
++version = "0.3.17"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1d3d00f4eddb73e498a54394f228cd55853bdf059259e8e7bc6e69d408892e99"
++
++[[package]]
++name = "futures-util"
++version = "0.3.17"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "36568465210a3a6ee45e1f165136d68671471a501e632e9a98d96872222b5481"
++dependencies = [
++ "autocfg",
++ "futures-channel",
++ "futures-core",
++ "futures-io",
++ "futures-macro",
++ "futures-sink",
++ "futures-task",
++ "memchr",
++ "pin-project-lite",
++ "pin-utils",
++ "proc-macro-hack",
++ "proc-macro-nested",
++ "slab",
++]
++
++[[package]]
++name = "gdk"
++version = "0.13.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "db00839b2a68a7a10af3fa28dfb3febaba3a20c3a9ac2425a33b7df1f84a6b7d"
++dependencies = [
++ "bitflags",
++ "cairo-rs",
++ "cairo-sys-rs",
++ "gdk-pixbuf",
++ "gdk-sys",
++ "gio",
++ "gio-sys",
++ "glib",
++ "glib-sys",
++ "gobject-sys",
++ "libc",
++ "pango",
++]
++
++[[package]]
++name = "gdk-pixbuf"
++version = "0.9.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8f6dae3cb99dd49b758b88f0132f8d401108e63ae8edd45f432d42cdff99998a"
++dependencies = [
++ "gdk-pixbuf-sys",
++ "gio",
++ "gio-sys",
++ "glib",
++ "glib-sys",
++ "gobject-sys",
++ "libc",
++]
++
++[[package]]
++name = "gdk-pixbuf-sys"
++version = "0.10.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3bfe468a7f43e97b8d193a762b6c5cf67a7d36cacbc0b9291dbcae24bfea1e8f"
++dependencies = [
++ "gio-sys",
++ "glib-sys",
++ "gobject-sys",
++ "libc",
++ "system-deps",
++]
++
++[[package]]
++name = "gdk-sys"
++version = "0.10.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0a9653cfc500fd268015b1ac055ddbc3df7a5c9ea3f4ccef147b3957bd140d69"
++dependencies = [
++ "cairo-sys-rs",
++ "gdk-pixbuf-sys",
++ "gio-sys",
++ "glib-sys",
++ "gobject-sys",
++ "libc",
++ "pango-sys",
++ "pkg-config",
++ "system-deps",
++]
++
++[[package]]
++name = "getrandom"
++version = "0.2.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753"
++dependencies = [
++ "cfg-if",
++ "libc",
++ "wasi",
++]
++
++[[package]]
++name = "gio"
++version = "0.9.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1fb60242bfff700772dae5d9e3a1f7aa2e4ebccf18b89662a16acb2822568561"
++dependencies = [
++ "bitflags",
++ "futures",
++ "futures-channel",
++ "futures-core",
++ "futures-io",
++ "futures-util",
++ "gio-sys",
++ "glib",
++ "glib-sys",
++ "gobject-sys",
++ "libc",
++ "once_cell",
++ "thiserror",
++]
++
++[[package]]
++name = "gio-sys"
++version = "0.10.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5e24fb752f8f5d2cf6bbc2c606fd2bc989c81c5e2fe321ab974d54f8b6344eac"
++dependencies = [
++ "glib-sys",
++ "gobject-sys",
++ "libc",
++ "system-deps",
++ "winapi",
++]
++
++[[package]]
++name = "glib"
++version = "0.10.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0c685013b7515e668f1b57a165b009d4d28cb139a8a989bbd699c10dad29d0c5"
++dependencies = [
++ "bitflags",
++ "futures-channel",
++ "futures-core",
++ "futures-executor",
++ "futures-task",
++ "futures-util",
++ "glib-macros",
++ "glib-sys",
++ "gobject-sys",
++ "libc",
++ "once_cell",
++]
++
++[[package]]
++name = "glib-macros"
++version = "0.10.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "41486a26d1366a8032b160b59065a59fb528530a46a49f627e7048fb8c064039"
++dependencies = [
++ "anyhow",
++ "heck",
++ "itertools",
++ "proc-macro-crate",
++ "proc-macro-error",
++ "proc-macro2",
++ "quote",
++ "syn",
++]
++
++[[package]]
++name = "glib-sys"
++version = "0.10.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c7e9b997a66e9a23d073f2b1abb4dbfc3925e0b8952f67efd8d9b6e168e4cdc1"
++dependencies = [
++ "libc",
++ "system-deps",
++]
++
++[[package]]
++name = "gloo-timers"
++version = "0.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "47204a46aaff920a1ea58b11d03dec6f704287d27561724a4631e450654a891f"
++dependencies = [
++ "futures-channel",
++ "futures-core",
++ "js-sys",
++ "wasm-bindgen",
++ "web-sys",
++]
++
++[[package]]
++name = "gobject-sys"
++version = "0.10.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "952133b60c318a62bf82ee75b93acc7e84028a093e06b9e27981c2b6fe68218c"
++dependencies = [
++ "glib-sys",
++ "libc",
++ "system-deps",
++]
++
++[[package]]
++name = "gstreamer"
++version = "0.16.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9ff5d0f7ff308ae37e6eb47b6ded17785bdea06e438a708cd09e0288c1862f33"
++dependencies = [
++ "bitflags",
++ "cfg-if",
++ "futures-channel",
++ "futures-core",
++ "futures-util",
++ "glib",
++ "glib-sys",
++ "gobject-sys",
++ "gstreamer-sys",
++ "libc",
++ "muldiv",
++ "num-rational 0.3.2",
++ "once_cell",
++ "paste",
++ "pretty-hex",
++ "thiserror",
++]
++
++[[package]]
++name = "gstreamer-base"
++version = "0.16.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "bafd01c56f59cb10f4b5a10f97bb4bdf8c2b2784ae5b04da7e2d400cf6e6afcf"
++dependencies = [
++ "bitflags",
++ "glib",
++ "glib-sys",
++ "gobject-sys",
++ "gstreamer",
++ "gstreamer-base-sys",
++ "gstreamer-sys",
++ "libc",
++]
++
++[[package]]
++name = "gstreamer-base-sys"
++version = "0.9.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a4b7b6dc2d6e160a1ae28612f602bd500b3fa474ce90bf6bb2f08072682beef5"
++dependencies = [
++ "glib-sys",
++ "gobject-sys",
++ "gstreamer-sys",
++ "libc",
++ "system-deps",
++]
++
++[[package]]
++name = "gstreamer-player"
++version = "0.16.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "34edf65e48e0d29c18101d77a2e004488a61f81a852a75e19d9c73e03d35cb77"
++dependencies = [
++ "bitflags",
++ "glib",
++ "glib-sys",
++ "gobject-sys",
++ "gstreamer",
++ "gstreamer-player-sys",
++ "gstreamer-sys",
++ "gstreamer-video",
++ "libc",
++]
++
++[[package]]
++name = "gstreamer-player-sys"
++version = "0.9.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "53aaf79503e691a32266670bc631edb6c52bdb854984da76a0ce2756f49584a2"
++dependencies = [
++ "glib-sys",
++ "gobject-sys",
++ "gstreamer-sys",
++ "gstreamer-video-sys",
++ "libc",
++ "system-deps",
++]
++
++[[package]]
++name = "gstreamer-sys"
++version = "0.9.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fc1f154082d01af5718c5f8a8eb4f565a4ea5586ad8833a8fc2c2aa6844b601d"
++dependencies = [
++ "glib-sys",
++ "gobject-sys",
++ "libc",
++ "system-deps",
++]
++
++[[package]]
++name = "gstreamer-video"
++version = "0.16.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f7bbb1485d87469849ec45c08e03c2f280d3ea20ff3c439d03185be54e3ce98e"
++dependencies = [
++ "bitflags",
++ "futures-channel",
++ "futures-util",
++ "glib",
++ "glib-sys",
++ "gobject-sys",
++ "gstreamer",
++ "gstreamer-base",
++ "gstreamer-base-sys",
++ "gstreamer-sys",
++ "gstreamer-video-sys",
++ "libc",
++ "once_cell",
++]
++
++[[package]]
++name = "gstreamer-video-sys"
++version = "0.9.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "92347e46438007d6a2386302125f62cb9df6769cdacb931af5c0f12c1ee21de4"
++dependencies = [
++ "glib-sys",
++ "gobject-sys",
++ "gstreamer-base-sys",
++ "gstreamer-sys",
++ "libc",
++ "system-deps",
++]
++
++[[package]]
++name = "gtk"
++version = "0.9.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2f022f2054072b3af07666341984562c8e626a79daa8be27b955d12d06a5ad6a"
++dependencies = [
++ "atk",
++ "bitflags",
++ "cairo-rs",
++ "cairo-sys-rs",
++ "cc",
++ "gdk",
++ "gdk-pixbuf",
++ "gdk-pixbuf-sys",
++ "gdk-sys",
++ "gio",
++ "gio-sys",
++ "glib",
++ "glib-sys",
++ "gobject-sys",
++ "gtk-sys",
++ "libc",
++ "once_cell",
++ "pango",
++ "pango-sys",
++ "pkg-config",
++]
++
++[[package]]
++name = "gtk-sys"
++version = "0.10.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "89acda6f084863307d948ba64a4b1ef674e8527dddab147ee4cdcc194c880457"
++dependencies = [
++ "atk-sys",
++ "cairo-sys-rs",
++ "gdk-pixbuf-sys",
++ "gdk-sys",
++ "gio-sys",
++ "glib-sys",
++ "gobject-sys",
++ "libc",
++ "pango-sys",
++ "system-deps",
++]
++
++[[package]]
++name = "heck"
++version = "0.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
++dependencies = [
++ "unicode-segmentation",
++]
++
++[[package]]
++name = "hermit-abi"
++version = "0.1.19"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
++dependencies = [
++ "libc",
++]
++
++[[package]]
++name = "hex"
++version = "0.4.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
++
++[[package]]
++name = "http"
++version = "0.2.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1323096b05d41827dadeaee54c9981958c0f94e670bc94ed80037d1a7b8b186b"
++dependencies = [
++ "bytes",
++ "fnv",
++ "itoa",
++]
++
++[[package]]
++name = "idna"
++version = "0.2.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8"
++dependencies = [
++ "matches",
++ "unicode-bidi",
++ "unicode-normalization",
++]
++
++[[package]]
++name = "instant"
++version = "0.1.12"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
++dependencies = [
++ "cfg-if",
++]
++
++[[package]]
++name = "isahc"
++version = "1.5.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "40ef5402b1791c9fc479ef9871601a2f10e4cc0f14414a5c9c6e043fb51e5a56"
++dependencies = [
++ "async-channel",
++ "castaway",
++ "chrono",
++ "crossbeam-utils",
++ "curl",
++ "curl-sys",
++ "encoding_rs",
++ "event-listener",
++ "futures-lite",
++ "http",
++ "log",
++ "mime",
++ "once_cell",
++ "polling",
++ "slab",
++ "sluice",
++ "tracing",
++ "tracing-futures",
++ "url",
++ "waker-fn",
++]
++
++[[package]]
++name = "itertools"
++version = "0.9.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
++dependencies = [
++ "either",
++]
++
++[[package]]
++name = "itoa"
++version = "0.4.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4"
++
++[[package]]
++name = "js-sys"
++version = "0.3.55"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7cc9ffccd38c451a86bf13657df244e9c3f37493cce8e5e21e940963777acc84"
++dependencies = [
++ "wasm-bindgen",
++]
++
++[[package]]
++name = "kv-log-macro"
++version = "1.0.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f"
++dependencies = [
++ "log",
++]
++
++[[package]]
++name = "lazy_static"
++version = "1.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
++
++[[package]]
++name = "libc"
++version = "0.2.107"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fbe5e23404da5b4f555ef85ebed98fb4083e55a00c317800bc2a50ede9f3d219"
++
++[[package]]
++name = "libdbus-sys"
++version = "0.2.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c185b5b7ad900923ef3a8ff594083d4d9b5aea80bb4f32b8342363138c0d456b"
++dependencies = [
++ "pkg-config",
++]
++
++[[package]]
++name = "libnghttp2-sys"
++version = "0.1.7+1.45.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "57ed28aba195b38d5ff02b9170cbff627e336a20925e43b4945390401c5dc93f"
++dependencies = [
++ "cc",
++ "libc",
++]
++
++[[package]]
++name = "libz-sys"
++version = "1.1.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "de5435b8549c16d423ed0c03dbaafe57cf6c3344744f1242520d59c9d8ecec66"
++dependencies = [
++ "cc",
++ "libc",
++ "pkg-config",
++ "vcpkg",
++]
++
++[[package]]
++name = "log"
++version = "0.4.14"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710"
++dependencies = [
++ "cfg-if",
++ "value-bag",
++]
++
++[[package]]
++name = "loggerv"
++version = "0.7.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "60d8de15ae71e760bce7f05447f85f73624fe0d3b1e4c5a63ba5d4cb0748d374"
++dependencies = [
++ "ansi_term",
++ "atty",
++ "log",
++]
++
++[[package]]
++name = "matches"
++version = "0.1.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f"
++
++[[package]]
++name = "memchr"
++version = "2.4.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a"
++
++[[package]]
++name = "mime"
++version = "0.3.16"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d"
++
++[[package]]
++name = "mp4ameta"
++version = "0.9.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "619f6fe86b8690efad1c53d2cc8b9c1af2a5f8b93247e0ba05ece1b7639b4e66"
++dependencies = [
++ "lazy_static",
++ "mp4ameta_proc",
++]
++
++[[package]]
++name = "mp4ameta_proc"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4975ce203cd69e96a89f803d87b7b53d1950a6e93668a666d177c28aebd15c8a"
++
++[[package]]
++name = "mpris-player"
++version = "0.6.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4f6badd6ebe31be46eb2e2975cf3b34b183bace5f8a8db1d609fefc4d46fbb07"
++dependencies = [
++ "dbus",
++ "glib",
++]
++
++[[package]]
++name = "muldiv"
++version = "0.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0419348c027fa7be448d2ae7ea0e4e04c2334c31dc4e74ab29f00a2a7ca69204"
++
++[[package]]
++name = "netease-cloud-music-gtk"
++version = "1.2.2"
++dependencies = [
++ "async-std",
++ "base64",
++ "bincode",
++ "cairo-rs",
++ "chrono",
++ "custom_error",
++ "dirs 4.0.0",
++ "fragile",
++ "futures",
++ "gdk",
++ "gdk-pixbuf",
++ "gio",
++ "glib",
++ "gstreamer",
++ "gstreamer-player",
++ "gtk",
++ "hex",
++ "isahc",
++ "lazy_static",
++ "log",
++ "loggerv",
++ "mp4ameta",
++ "mpris-player",
++ "num",
++ "openssl",
++ "pango",
++ "rand",
++ "regex",
++ "serde",
++ "serde_json",
++ "urlqstring",
++ "xdg",
++]
++
++[[package]]
++name = "num"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606"
++dependencies = [
++ "num-bigint",
++ "num-complex",
++ "num-integer",
++ "num-iter",
++ "num-rational 0.4.0",
++ "num-traits",
++]
++
++[[package]]
++name = "num-bigint"
++version = "0.4.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f"
++dependencies = [
++ "autocfg",
++ "num-integer",
++ "num-traits",
++]
++
++[[package]]
++name = "num-complex"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "26873667bbbb7c5182d4a37c1add32cdf09f841af72da53318fdb81543c15085"
++dependencies = [
++ "num-traits",
++]
++
++[[package]]
++name = "num-integer"
++version = "0.1.44"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db"
++dependencies = [
++ "autocfg",
++ "num-traits",
++]
++
++[[package]]
++name = "num-iter"
++version = "0.1.42"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b2021c8337a54d21aca0d59a92577a029af9431cb59b909b03252b9c164fad59"
++dependencies = [
++ "autocfg",
++ "num-integer",
++ "num-traits",
++]
++
++[[package]]
++name = "num-rational"
++version = "0.3.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07"
++dependencies = [
++ "autocfg",
++ "num-integer",
++ "num-traits",
++]
++
++[[package]]
++name = "num-rational"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d41702bd167c2df5520b384281bc111a4b5efcf7fbc4c9c222c815b07e0a6a6a"
++dependencies = [
++ "autocfg",
++ "num-bigint",
++ "num-integer",
++ "num-traits",
++]
++
++[[package]]
++name = "num-traits"
++version = "0.2.14"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290"
++dependencies = [
++ "autocfg",
++]
++
++[[package]]
++name = "num_cpus"
++version = "1.13.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3"
++dependencies = [
++ "hermit-abi",
++ "libc",
++]
++
++[[package]]
++name = "once_cell"
++version = "1.8.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56"
++
++[[package]]
++name = "openssl"
++version = "0.10.38"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0c7ae222234c30df141154f159066c5093ff73b63204dcda7121eb082fc56a95"
++dependencies = [
++ "bitflags",
++ "cfg-if",
++ "foreign-types",
++ "libc",
++ "once_cell",
++ "openssl-sys",
++]
++
++[[package]]
++name = "openssl-probe"
++version = "0.1.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a"
++
++[[package]]
++name = "openssl-sys"
++version = "0.9.70"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c6517987b3f8226b5da3661dad65ff7f300cc59fb5ea8333ca191fc65fde3edf"
++dependencies = [
++ "autocfg",
++ "cc",
++ "libc",
++ "pkg-config",
++ "vcpkg",
++]
++
++[[package]]
++name = "pango"
++version = "0.9.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9937068580bebd8ced19975938573803273ccbcbd598c58d4906efd4ac87c438"
++dependencies = [
++ "bitflags",
++ "glib",
++ "glib-sys",
++ "gobject-sys",
++ "libc",
++ "once_cell",
++ "pango-sys",
++]
++
++[[package]]
++name = "pango-sys"
++version = "0.10.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "24d2650c8b62d116c020abd0cea26a4ed96526afda89b1c4ea567131fdefc890"
++dependencies = [
++ "glib-sys",
++ "gobject-sys",
++ "libc",
++ "system-deps",
++]
++
++[[package]]
++name = "parking"
++version = "2.0.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72"
++
++[[package]]
++name = "paste"
++version = "1.0.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0744126afe1a6dd7f394cb50a716dbe086cb06e255e53d8d0185d82828358fb5"
++
++[[package]]
++name = "percent-encoding"
++version = "2.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
++
++[[package]]
++name = "pin-project"
++version = "1.0.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "576bc800220cc65dac09e99e97b08b358cfab6e17078de8dc5fee223bd2d0c08"
++dependencies = [
++ "pin-project-internal",
++]
++
++[[package]]
++name = "pin-project-internal"
++version = "1.0.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6e8fe8163d14ce7f0cdac2e040116f22eac817edabff0be91e8aff7e9accf389"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn",
++]
++
++[[package]]
++name = "pin-project-lite"
++version = "0.2.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443"
++
++[[package]]
++name = "pin-utils"
++version = "0.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
++
++[[package]]
++name = "pkg-config"
++version = "0.3.22"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "12295df4f294471248581bc09bef3c38a5e46f1e36d6a37353621a0c6c357e1f"
++
++[[package]]
++name = "polling"
++version = "2.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "92341d779fa34ea8437ef4d82d440d5e1ce3f3ff7f824aa64424cd481f9a1f25"
++dependencies = [
++ "cfg-if",
++ "libc",
++ "log",
++ "wepoll-ffi",
++ "winapi",
++]
++
++[[package]]
++name = "ppv-lite86"
++version = "0.2.15"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ed0cfbc8191465bed66e1718596ee0b0b35d5ee1f41c5df2189d0fe8bde535ba"
++
++[[package]]
++name = "pretty-hex"
++version = "0.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "bc5c99d529f0d30937f6f4b8a86d988047327bb88d04d2c4afc356de74722131"
++
++[[package]]
++name = "proc-macro-crate"
++version = "0.1.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
++dependencies = [
++ "toml",
++]
++
++[[package]]
++name = "proc-macro-error"
++version = "1.0.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
++dependencies = [
++ "proc-macro-error-attr",
++ "proc-macro2",
++ "quote",
++ "syn",
++ "version_check",
++]
++
++[[package]]
++name = "proc-macro-error-attr"
++version = "1.0.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "version_check",
++]
++
++[[package]]
++name = "proc-macro-hack"
++version = "0.5.19"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5"
++
++[[package]]
++name = "proc-macro-nested"
++version = "0.1.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086"
++
++[[package]]
++name = "proc-macro2"
++version = "1.0.32"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ba508cc11742c0dc5c1659771673afbab7a0efab23aa17e854cbab0837ed0b43"
++dependencies = [
++ "unicode-xid",
++]
++
++[[package]]
++name = "quote"
++version = "1.0.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "38bc8cc6a5f2e3655e0899c1b848643b2562f853f114bfec7be120678e3ace05"
++dependencies = [
++ "proc-macro2",
++]
++
++[[package]]
++name = "rand"
++version = "0.8.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8"
++dependencies = [
++ "libc",
++ "rand_chacha",
++ "rand_core",
++ "rand_hc",
++]
++
++[[package]]
++name = "rand_chacha"
++version = "0.3.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
++dependencies = [
++ "ppv-lite86",
++ "rand_core",
++]
++
++[[package]]
++name = "rand_core"
++version = "0.6.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
++dependencies = [
++ "getrandom",
++]
++
++[[package]]
++name = "rand_hc"
++version = "0.3.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7"
++dependencies = [
++ "rand_core",
++]
++
++[[package]]
++name = "redox_syscall"
++version = "0.2.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff"
++dependencies = [
++ "bitflags",
++]
++
++[[package]]
++name = "redox_users"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64"
++dependencies = [
++ "getrandom",
++ "redox_syscall",
++]
++
++[[package]]
++name = "regex"
++version = "1.5.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461"
++dependencies = [
++ "aho-corasick",
++ "memchr",
++ "regex-syntax",
++]
++
++[[package]]
++name = "regex-syntax"
++version = "0.6.25"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b"
++
++[[package]]
++name = "ryu"
++version = "1.0.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e"
++
++[[package]]
++name = "schannel"
++version = "0.1.19"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75"
++dependencies = [
++ "lazy_static",
++ "winapi",
++]
++
++[[package]]
++name = "serde"
++version = "1.0.130"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f12d06de37cf59146fbdecab66aa99f9fe4f78722e3607577a5375d66bd0c913"
++dependencies = [
++ "serde_derive",
++]
++
++[[package]]
++name = "serde_derive"
++version = "1.0.130"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d7bc1a1ab1961464eae040d96713baa5a724a8152c1222492465b54322ec508b"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn",
++]
++
++[[package]]
++name = "serde_json"
++version = "1.0.69"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e466864e431129c7e0d3476b92f20458e5879919a0596c6472738d9fa2d342f8"
++dependencies = [
++ "itoa",
++ "ryu",
++ "serde",
++]
++
++[[package]]
++name = "slab"
++version = "0.4.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5"
++
++[[package]]
++name = "sluice"
++version = "0.5.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6d7400c0eff44aa2fcb5e31a5f24ba9716ed90138769e4977a2ba6014ae63eb5"
++dependencies = [
++ "async-channel",
++ "futures-core",
++ "futures-io",
++]
++
++[[package]]
++name = "socket2"
++version = "0.4.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5dc90fe6c7be1a323296982db1836d1ea9e47b6839496dde9a541bc496df3516"
++dependencies = [
++ "libc",
++ "winapi",
++]
++
++[[package]]
++name = "strum"
++version = "0.18.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b"
++
++[[package]]
++name = "strum_macros"
++version = "0.18.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c"
++dependencies = [
++ "heck",
++ "proc-macro2",
++ "quote",
++ "syn",
++]
++
++[[package]]
++name = "syn"
++version = "1.0.81"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f2afee18b8beb5a596ecb4a2dce128c719b4ba399d34126b9e4396e3f9860966"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "unicode-xid",
++]
++
++[[package]]
++name = "system-deps"
++version = "1.3.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b"
++dependencies = [
++ "heck",
++ "pkg-config",
++ "strum",
++ "strum_macros",
++ "thiserror",
++ "toml",
++ "version-compare",
++]
++
++[[package]]
++name = "thiserror"
++version = "1.0.30"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417"
++dependencies = [
++ "thiserror-impl",
++]
++
++[[package]]
++name = "thiserror-impl"
++version = "1.0.30"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn",
++]
++
++[[package]]
++name = "time"
++version = "0.1.43"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438"
++dependencies = [
++ "libc",
++ "winapi",
++]
++
++[[package]]
++name = "tinyvec"
++version = "1.5.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2"
++dependencies = [
++ "tinyvec_macros",
++]
++
++[[package]]
++name = "tinyvec_macros"
++version = "0.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
++
++[[package]]
++name = "toml"
++version = "0.5.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa"
++dependencies = [
++ "serde",
++]
++
++[[package]]
++name = "tracing"
++version = "0.1.29"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "375a639232caf30edfc78e8d89b2d4c375515393e7af7e16f01cd96917fb2105"
++dependencies = [
++ "cfg-if",
++ "log",
++ "pin-project-lite",
++ "tracing-attributes",
++ "tracing-core",
++]
++
++[[package]]
++name = "tracing-attributes"
++version = "0.1.18"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f4f480b8f81512e825f337ad51e94c1eb5d3bbdf2b363dcd01e2b19a9ffe3f8e"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn",
++]
++
++[[package]]
++name = "tracing-core"
++version = "0.1.21"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1f4ed65637b8390770814083d20756f87bfa2c21bf2f110babdc5438351746e4"
++dependencies = [
++ "lazy_static",
++]
++
++[[package]]
++name = "tracing-futures"
++version = "0.2.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2"
++dependencies = [
++ "pin-project",
++ "tracing",
++]
++
++[[package]]
++name = "unicode-bidi"
++version = "0.3.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f"
++
++[[package]]
++name = "unicode-normalization"
++version = "0.1.19"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9"
++dependencies = [
++ "tinyvec",
++]
++
++[[package]]
++name = "unicode-segmentation"
++version = "1.8.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b"
++
++[[package]]
++name = "unicode-xid"
++version = "0.2.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
++
++[[package]]
++name = "url"
++version = "2.2.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c"
++dependencies = [
++ "form_urlencoded",
++ "idna",
++ "matches",
++ "percent-encoding",
++]
++
++[[package]]
++name = "urlqstring"
++version = "0.3.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "25ef3473a06a065718d8ec7cd7acc6a35fc20f836dee7661ad3b64ea3cc2e0cc"
++
++[[package]]
++name = "value-bag"
++version = "1.0.0-alpha.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "79923f7731dc61ebfba3633098bf3ac533bbd35ccd8c57e7088d9a5eebe0263f"
++dependencies = [
++ "ctor",
++ "version_check",
++]
++
++[[package]]
++name = "vcpkg"
++version = "0.2.15"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
++
++[[package]]
++name = "version-compare"
++version = "0.0.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1"
++
++[[package]]
++name = "version_check"
++version = "0.9.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe"
++
++[[package]]
++name = "waker-fn"
++version = "1.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca"
++
++[[package]]
++name = "wasi"
++version = "0.10.2+wasi-snapshot-preview1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6"
++
++[[package]]
++name = "wasm-bindgen"
++version = "0.2.78"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "632f73e236b219150ea279196e54e610f5dbafa5d61786303d4da54f84e47fce"
++dependencies = [
++ "cfg-if",
++ "wasm-bindgen-macro",
++]
++
++[[package]]
++name = "wasm-bindgen-backend"
++version = "0.2.78"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a317bf8f9fba2476b4b2c85ef4c4af8ff39c3c7f0cdfeed4f82c34a880aa837b"
++dependencies = [
++ "bumpalo",
++ "lazy_static",
++ "log",
++ "proc-macro2",
++ "quote",
++ "syn",
++ "wasm-bindgen-shared",
++]
++
++[[package]]
++name = "wasm-bindgen-futures"
++version = "0.4.28"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8e8d7523cb1f2a4c96c1317ca690031b714a51cc14e05f712446691f413f5d39"
++dependencies = [
++ "cfg-if",
++ "js-sys",
++ "wasm-bindgen",
++ "web-sys",
++]
++
++[[package]]
++name = "wasm-bindgen-macro"
++version = "0.2.78"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d56146e7c495528bf6587663bea13a8eb588d39b36b679d83972e1a2dbbdacf9"
++dependencies = [
++ "quote",
++ "wasm-bindgen-macro-support",
++]
++
++[[package]]
++name = "wasm-bindgen-macro-support"
++version = "0.2.78"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7803e0eea25835f8abdc585cd3021b3deb11543c6fe226dcd30b228857c5c5ab"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn",
++ "wasm-bindgen-backend",
++ "wasm-bindgen-shared",
++]
++
++[[package]]
++name = "wasm-bindgen-shared"
++version = "0.2.78"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0237232789cf037d5480773fe568aac745bfe2afbc11a863e97901780a6b47cc"
++
++[[package]]
++name = "web-sys"
++version = "0.3.55"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "38eb105f1c59d9eaa6b5cdc92b859d85b926e82cb2e0945cd0c9259faa6fe9fb"
++dependencies = [
++ "js-sys",
++ "wasm-bindgen",
++]
++
++[[package]]
++name = "wepoll-ffi"
++version = "0.1.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d743fdedc5c64377b5fc2bc036b01c7fd642205a0d96356034ae3404d49eb7fb"
++dependencies = [
++ "cc",
++]
++
++[[package]]
++name = "winapi"
++version = "0.3.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
++dependencies = [
++ "winapi-i686-pc-windows-gnu",
++ "winapi-x86_64-pc-windows-gnu",
++]
++
++[[package]]
++name = "winapi-i686-pc-windows-gnu"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
++
++[[package]]
++name = "winapi-x86_64-pc-windows-gnu"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
++
++[[package]]
++name = "xdg"
++version = "2.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3a23fe958c70412687039c86f578938b4a0bb50ec788e96bce4d6ab00ddd5803"
++dependencies = [
++ "dirs 3.0.2",
++]
diff --git a/nixpkgs/pkgs/applications/audio/netease-cloud-music-gtk/default.nix b/nixpkgs/pkgs/applications/audio/netease-cloud-music-gtk/default.nix
new file mode 100644
index 000000000000..76e1bc3923a8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/netease-cloud-music-gtk/default.nix
@@ -0,0 +1,61 @@
+{ lib
+, stdenv
+, glib
+, gtk3
+, curl
+, dbus
+, openssl
+, gst_all_1
+, pkg-config
+, rustPlatform
+, wrapGAppsHook
+, fetchurl
+, fetchFromGitHub
+, makeDesktopItem
+}:
+rustPlatform.buildRustPackage rec {
+  pname = "netease-cloud-music-gtk";
+  version = "1.2.2";
+  src = fetchFromGitHub {
+    owner = "gmg137";
+    repo = "netease-cloud-music-gtk";
+    rev = version;
+    sha256 = "sha256-42MaylfG5LY+TiYHWQMoh9CiVLShKXSBpMrxdWhujow=";
+  };
+  cargoSha256 = "sha256-A9wIcESdaJwLY4g/QlOxMU5PBB9wjvIzaXBSqeiRJBM=";
+  cargoPatches = [ ./cargo-lock.patch ];
+
+  nativeBuildInputs = [
+    glib
+    gtk3
+    dbus
+    pkg-config
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    curl
+    dbus
+    openssl
+  ] ++ (with gst_all_1; [
+    gstreamer
+    gst-plugins-base
+    gst-plugins-good
+    gst-plugins-bad
+    gst-plugins-ugly
+  ]);
+
+  postPatch = ''
+    install -D netease-cloud-music-gtk.desktop $out/share/applications/netease-cloud-music-gtk.desktop
+    install -D icons/netease-cloud-music-gtk.svg $out/share/icons/hicolor/scalable/apps/netease-cloud-music-gtk.svg
+  '';
+
+  meta = with lib; {
+    description = "netease-cloud-music-gtk is a Rust + GTK based netease cloud music player";
+    homepage = "https://github.com/gmg137/netease-cloud-music-gtk";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ diffumist ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/netease-cloud-music-gtk/update-cargo-lock.sh b/nixpkgs/pkgs/applications/audio/netease-cloud-music-gtk/update-cargo-lock.sh
new file mode 100755
index 000000000000..75b04d1e77ca
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/netease-cloud-music-gtk/update-cargo-lock.sh
@@ -0,0 +1,20 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p coreutils ripgrep git cargo
+
+# Ref: https://github.com/NixOS/nixpkgs/blob/nixos-21.05/pkgs/applications/audio/netease-music-tui/update-cargo-lock.sh
+
+set -eu -vx
+
+here=$PWD
+version=$(cat default.nix | rg '^  version = "' | cut -d '"' -f 2)
+checkout=$(mktemp -d)
+
+git clone -b "$version" --depth=1 https://github.com/gmg137/netease-cloud-music-gtk "$checkout"
+cd "$checkout"
+
+cargo generate-lockfile
+git add -f Cargo.lock
+git diff HEAD -- Cargo.lock > "$here"/cargo-lock.patch
+
+cd "$here"
+rm -rf "$checkout"
diff --git a/nixpkgs/pkgs/applications/audio/netease-music-tui/default.nix b/nixpkgs/pkgs/applications/audio/netease-music-tui/default.nix
index bf7d680ff157..f6ccee3e535e 100644
--- a/nixpkgs/pkgs/applications/audio/netease-music-tui/default.nix
+++ b/nixpkgs/pkgs/applications/audio/netease-music-tui/default.nix
@@ -2,13 +2,13 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "netease-music-tui";
-  version = "0.1.3";
+  version = "0.1.4";
 
   src = fetchFromGitHub {
     owner = "betta-cyber";
     repo = "netease-music-tui";
     rev = "v${version}";
-    sha256 = "09355a6d197ckayh9833y39dsarklgpgrq3raapiv25z59di30qq";
+    sha256 = "sha256-ILJkejRKG2DRXgR6O2tAFbrbd8HtnLZJmITq7hF41DQ=";
   };
 
   cargoPatches = [ ./cargo-lock.patch ];
@@ -16,7 +16,7 @@ rustPlatform.buildRustPackage rec {
   nativeBuildInputs = [ pkg-config ];
   buildInputs = [ alsa-lib openssl ];
 
-  cargoSha256 = "1pca0sz4rz8qls6k2vhf70ixhnvgk81c4hbx81q3pv106g5k205f";
+  cargoSha256 = "sha256-/JQDUtSSkuO9nrYVSkQOaZjps1BUuH8Bc1SMyDSSJS4=";
 
   meta = with lib; {
     homepage = "https://github.com/betta-cyber/netease-music-tui";
diff --git a/nixpkgs/pkgs/applications/audio/noisetorch/default.nix b/nixpkgs/pkgs/applications/audio/noisetorch/default.nix
index b24c2eebcf7a..b18f2b52f94c 100644
--- a/nixpkgs/pkgs/applications/audio/noisetorch/default.nix
+++ b/nixpkgs/pkgs/applications/audio/noisetorch/default.nix
@@ -37,6 +37,6 @@ buildGoModule rec {
     homepage = "https://github.com/lawl/NoiseTorch";
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ panaeon legendofmiracles ];
+    maintainers = with maintainers; [ panaeon lom ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/non/default.nix b/nixpkgs/pkgs/applications/audio/non/default.nix
index 9dd377a601b8..39b8ecf7a6af 100644
--- a/nixpkgs/pkgs/applications/audio/non/default.nix
+++ b/nixpkgs/pkgs/applications/audio/non/default.nix
@@ -1,20 +1,20 @@
-{ lib, stdenv, fetchFromGitHub, pkg-config, python2, cairo, libjpeg, ntk, libjack2
+{ lib, stdenv, fetchFromGitHub, pkg-config, python3, cairo, libjpeg, ntk, libjack2
 , libsndfile, ladspaH, liblo, libsigcxx, lrdf, wafHook
 }:
 
 stdenv.mkDerivation {
   pname = "non";
-  version = "2018-02-15";
+  version = "unstable-2021-01-28";
   src = fetchFromGitHub {
-    owner = "original-male";
+    owner = "linuxaudio";
     repo = "non";
-    rev = "5ae43bb27c42387052a73e5ffc5d33efb9d946a9";
-    sha256 = "1cljkkyi9dxqpqhx8y6l2ja4zjmlya26m26kqxml8gx08vyvddhx";
+    rev = "cdad26211b301d2fad55a26812169ab905b85bbb";
+    sha256 = "sha256-iMJNMDytNXpEkUhL0RILSd25ixkm8HL/edtOZta0Pf4=";
   };
 
   nativeBuildInputs = [ pkg-config wafHook ];
-  buildInputs = [ python2 cairo libjpeg ntk libjack2 libsndfile
-    ladspaH liblo libsigcxx lrdf
+  buildInputs = [ python3 cairo libjpeg ntk libjack2 libsndfile
+                  ladspaH liblo libsigcxx lrdf
   ];
 
   meta = {
diff --git a/nixpkgs/pkgs/applications/audio/nootka/unstable.nix b/nixpkgs/pkgs/applications/audio/nootka/unstable.nix
index edfb19483646..b5e820e83459 100644
--- a/nixpkgs/pkgs/applications/audio/nootka/unstable.nix
+++ b/nixpkgs/pkgs/applications/audio/nootka/unstable.nix
@@ -1,20 +1,38 @@
-{ lib, stdenv, fetchurl, cmake
-, alsa-lib, fftwSinglePrec, libjack2, libpulseaudio, libvorbis, soundtouch
-, qtbase, qtdeclarative, qtquickcontrols2
+{ lib
+, stdenv
+, fetchurl
+, cmake
+, alsa-lib
+, fftwSinglePrec
+, libjack2
+, libpulseaudio
+, libvorbis
+, soundtouch
+, qtbase
+, qtdeclarative
+, qtquickcontrols2
 }:
 
 stdenv.mkDerivation rec {
-  name = "nootka-1.7.0-beta1";
+  pname = "nootka";
+  version = "1.7.0-beta1";
 
   src = fetchurl {
-    url = "mirror://sourceforge/nootka/${name}-source.tar.bz2";
+    url = "mirror://sourceforge/nootka/nootka-${version}-source.tar.bz2";
     sha256 = "13b50vnpr1zx2mrgkc8fmhsyfa19rqq1rksvn31145dy6fk1f3gc";
   };
 
   nativeBuildInputs = [ cmake ];
   buildInputs = [
-    alsa-lib fftwSinglePrec libjack2 libpulseaudio libvorbis soundtouch
-    qtbase qtdeclarative qtquickcontrols2
+    alsa-lib
+    fftwSinglePrec
+    libjack2
+    libpulseaudio
+    libvorbis
+    soundtouch
+    qtbase
+    qtdeclarative
+    qtquickcontrols2
   ];
 
   dontWrapQtApps = true;
diff --git a/nixpkgs/pkgs/applications/audio/ocenaudio/default.nix b/nixpkgs/pkgs/applications/audio/ocenaudio/default.nix
index 7ad1e319bffe..30011b2be3ea 100644
--- a/nixpkgs/pkgs/applications/audio/ocenaudio/default.nix
+++ b/nixpkgs/pkgs/applications/audio/ocenaudio/default.nix
@@ -11,11 +11,11 @@
 
 stdenv.mkDerivation rec {
   pname = "ocenaudio";
-  version = "3.10.6";
+  version = "3.11.2";
 
   src = fetchurl {
     url = "https://www.ocenaudio.com/downloads/index.php/ocenaudio_debian9_64.deb?version=${version}";
-    sha256 = "0fgvm1xw2kgrqj3w6slpfxbb3pw9k8i0dz16q9d5d8gyyvr2mh8g";
+    sha256 = "sha256-kvmBOw8fQZSC1jC8FRVq4v+i7mM6ol2IrDTqfJtuZYc=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/audio/orca-c/default.nix b/nixpkgs/pkgs/applications/audio/orca-c/default.nix
index 2c3a8fb1390f..420055884b45 100644
--- a/nixpkgs/pkgs/applications/audio/orca-c/default.nix
+++ b/nixpkgs/pkgs/applications/audio/orca-c/default.nix
@@ -1,8 +1,7 @@
 { lib, stdenv, fetchgit, ncurses, portmidi }:
 stdenv.mkDerivation {
   pname = "orca-c";
-
-  version = "git-2021-02-13";
+  version = "unstable-2021-02-13";
 
   src = fetchgit {
     url = "https://git.sr.ht/~rabbits/orca";
@@ -31,5 +30,6 @@ stdenv.mkDerivation {
     license = licenses.mit;
     platforms = platforms.all;
     maintainers = with maintainers; [ netcrns ];
+    mainProgram = "orca";
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/padthv1/default.nix b/nixpkgs/pkgs/applications/audio/padthv1/default.nix
index 90e80f13ac48..2c4581cc7319 100644
--- a/nixpkgs/pkgs/applications/audio/padthv1/default.nix
+++ b/nixpkgs/pkgs/applications/audio/padthv1/default.nix
@@ -2,11 +2,11 @@
 
 mkDerivation rec {
   pname = "padthv1";
-  version = "0.9.18";
+  version = "0.9.23";
 
   src = fetchurl {
     url = "mirror://sourceforge/padthv1/${pname}-${version}.tar.gz";
-    sha256 = "1karrprb3ijrbiwpr43rl3nxnzc33lnmwrd1832psgr3flnr9fp5";
+    sha256 = "sha256-9yFfvlskOYnGraou2S3Qffl8RoYJqE0wnDlOP8mxQgg=";
   };
 
   buildInputs = [ libjack2 alsa-lib libsndfile liblo lv2 qt5.qtbase qt5.qttools fftwFloat ];
diff --git a/nixpkgs/pkgs/applications/audio/pamix/default.nix b/nixpkgs/pkgs/applications/audio/pamix/default.nix
index fb076797fb5f..4a2ad9ab779e 100644
--- a/nixpkgs/pkgs/applications/audio/pamix/default.nix
+++ b/nixpkgs/pkgs/applications/audio/pamix/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchFromGitHub
+{ lib, stdenv, fetchFromGitHub, fetchpatch
 , pkg-config, cmake
 , libpulseaudio, ncurses }:
 
@@ -13,6 +13,20 @@ stdenv.mkDerivation rec {
     sha256 = "1d44ggnwkf2gff62959pj45v3a2k091q8v154wc5pmzamam458wp";
   };
 
+  patches = [
+    # ncurses-6.3 support, included in next release
+    (fetchpatch {
+      name = "ncurses-6.3-p1.patch";
+      url = "https://github.com/patroclos/PAmix/commit/3400b9c048706c572373e4617b4d5fcdb8dd2505.patch";
+      sha256 = "0rw56a844pz876ad9p8hfvn2fkd5rh29gpp47h55g08spf0vwb2z";
+    })
+    (fetchpatch {
+      name = "ncurses-6.3-p2.patch";
+      url = "https://github.com/patroclos/PAmix/commit/5ef67fc5ef6fc0dc0b48ff07ba48093881561d9c.patch";
+      sha256 = "0f8shpdv2swxdz04bkqgmkvl6c17r5mn4slzr7xd6pvw8hh51p4h";
+    })
+  ];
+
   preConfigure = ''
     substituteInPlace CMakeLists.txt --replace "/etc" "$out/etc/xdg"
   '';
diff --git a/nixpkgs/pkgs/applications/audio/paprefs/default.nix b/nixpkgs/pkgs/applications/audio/paprefs/default.nix
index 64e403001a3d..31ccb212cd51 100644
--- a/nixpkgs/pkgs/applications/audio/paprefs/default.nix
+++ b/nixpkgs/pkgs/applications/audio/paprefs/default.nix
@@ -1,5 +1,6 @@
 { fetchurl
-, lib, stdenv
+, lib
+, stdenv
 , meson
 , ninja
 , gettext
@@ -11,10 +12,11 @@
 }:
 
 stdenv.mkDerivation rec {
-  name = "paprefs-1.1";
+  pname = "paprefs";
+  version = "1.1";
 
   src = fetchurl {
-    url = "https://freedesktop.org/software/pulseaudio/paprefs/${name}.tar.xz";
+    url = "https://freedesktop.org/software/pulseaudio/paprefs/paprefs-${version}.tar.xz";
     sha256 = "189z5p20hk0xv9vwvym293503j4pwl03xqk9hl7cl6dwgv0l7wkf";
   };
 
diff --git a/nixpkgs/pkgs/applications/audio/patchmatrix/default.nix b/nixpkgs/pkgs/applications/audio/patchmatrix/default.nix
new file mode 100644
index 000000000000..a5d135ce9d45
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/patchmatrix/default.nix
@@ -0,0 +1,45 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, libjack2
+, lv2
+, meson
+, ninja
+, pkg-config
+, glew
+, xorg
+}:
+
+stdenv.mkDerivation rec {
+  pname = "patchmatrix";
+  version = "0.26.0";
+
+  src = fetchFromGitHub {
+    owner = "OpenMusicKontrollers";
+    repo = pname;
+    rev = version;
+    hash = "sha256-rR3y5rGzmib//caPmhthvMelAdHRvV0lMRfvcj9kcCg=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+  ];
+
+  buildInputs = [
+    glew
+    libjack2
+    lv2
+    xorg.libX11
+    xorg.libXext
+  ];
+
+  meta = with lib; {
+    description = "A JACK patchbay in flow matrix style";
+    homepage = "https://github.com/OpenMusicKontrollers/patchmatrix";
+    license = licenses.artistic2;
+    maintainers = with maintainers; [ pennae ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/pavucontrol/default.nix b/nixpkgs/pkgs/applications/audio/pavucontrol/default.nix
index c7f12a8df6cc..41e5eeb8229a 100644
--- a/nixpkgs/pkgs/applications/audio/pavucontrol/default.nix
+++ b/nixpkgs/pkgs/applications/audio/pavucontrol/default.nix
@@ -1,26 +1,35 @@
-{ fetchurl, fetchpatch, lib, stdenv, pkg-config, intltool, libpulseaudio,
-gtkmm3 , libcanberra-gtk3, gnome, wrapGAppsHook }:
+{ fetchurl
+, fetchpatch
+, lib
+, stdenv
+, pkg-config
+, intltool
+, libpulseaudio
+, gtkmm3
+, libsigcxx
+, libcanberra-gtk3
+, json-glib
+, gnome
+, wrapGAppsHook
+}:
 
 stdenv.mkDerivation rec {
   pname = "pavucontrol";
-  version = "4.0";
+  version = "5.0";
 
   src = fetchurl {
     url = "https://freedesktop.org/software/pulseaudio/${pname}/${pname}-${version}.tar.xz";
-    sha256 = "1qhlkl3g8d7h72xjskii3g1l7la2cavwp69909pzmbi2jyn5pi4g";
+    sha256 = "sha256-zityw7XxpwrQ3xndgXUPlFW9IIcNHTo20gU2ry6PTno=";
   };
 
-  patches = [
-    # Can be removed with the next version bump
-    # https://gitlab.freedesktop.org/pulseaudio/pavucontrol/-/merge_requests/20
-    (fetchpatch {
-      name = "streamwidget-fix-drop-down-wayland.patch";
-      url = "https://gitlab.freedesktop.org/pulseaudio/pavucontrol/-/commit/ae278b8643cf1089f66df18713c8154208d9a505.patch";
-      sha256 = "066vhxjz6gmi2sp2n4pa1cdsxjnq6yml5js094g5n7ld34p84dpj";
-  })];
-
-  buildInputs = [ libpulseaudio gtkmm3 libcanberra-gtk3
-                  gnome.adwaita-icon-theme ];
+  buildInputs = [
+    libpulseaudio
+    gtkmm3
+    libsigcxx
+    libcanberra-gtk3
+    json-glib
+    gnome.adwaita-icon-theme
+  ];
 
   nativeBuildInputs = [ pkg-config intltool wrapGAppsHook ];
 
diff --git a/nixpkgs/pkgs/applications/audio/plexamp/default.nix b/nixpkgs/pkgs/applications/audio/plexamp/default.nix
index c542517797e7..31929567e411 100644
--- a/nixpkgs/pkgs/applications/audio/plexamp/default.nix
+++ b/nixpkgs/pkgs/applications/audio/plexamp/default.nix
@@ -2,26 +2,25 @@
 
 let
   pname = "plexamp";
-  version = "3.7.1";
-  name = "${pname}-${version}";
+  version = "3.9.0";
 
   src = fetchurl {
     url = "https://plexamp.plex.tv/plexamp.plex.tv/desktop/Plexamp-${version}.AppImage";
     name="${pname}-${version}.AppImage";
-    sha512 = "jKuuM1vQANGYE2W0OGl+35mB1ve5K/xPcBTk2O1azPRBDlRVU0DHRSQy2T71kwhxES1ASRt91qAV/dATk6oUkw==";
+    sha512 = "2OaV8dONv7yBcQsfecgfedP2ypBN6svD9rgZLgUwSydyH2+rODNPne4O7z2Hahm7Y0Ae+NFxbpQ9lbNbX0vhsg==";
   };
 
   appimageContents = appimageTools.extractType2 {
-    inherit name src;
+    inherit pname version src;
   };
 in appimageTools.wrapType2 {
-  inherit name src;
+  inherit pname version src;
 
   multiPkgs = null; # no 32bit needed
   extraPkgs = pkgs: appimageTools.defaultFhsEnvArgs.multiPkgs pkgs ++ [ pkgs.bash ];
 
   extraInstallCommands = ''
-    ln -s $out/bin/${name} $out/bin/${pname}
+    ln -s $out/bin/${pname}-${version} $out/bin/${pname}
     install -m 444 -D ${appimageContents}/plexamp.desktop $out/share/applications/plexamp.desktop
     install -m 444 -D ${appimageContents}/plexamp.png \
       $out/share/icons/hicolor/512x512/apps/plexamp.png
@@ -34,7 +33,7 @@ in appimageTools.wrapType2 {
   meta = with lib; {
     description = "A beautiful Plex music player for audiophiles, curators, and hipsters";
     homepage = "https://plexamp.com/";
-    changelog = "https://forums.plex.tv/t/plexamp-release-notes/221280/32";
+    changelog = "https://forums.plex.tv/t/plexamp-release-notes/221280/36";
     license = licenses.unfree;
     maintainers = with maintainers; [ killercup synthetica ];
     platforms = [ "x86_64-linux" ];
diff --git a/nixpkgs/pkgs/applications/audio/pocket-casts/default.nix b/nixpkgs/pkgs/applications/audio/pocket-casts/default.nix
new file mode 100644
index 000000000000..46625253d0f6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/pocket-casts/default.nix
@@ -0,0 +1,55 @@
+{ lib, stdenv, fetchurl, dpkg, autoPatchelfHook, makeWrapper, electron
+, alsa-lib, gtk3, libXScrnSaver, libXtst, mesa, nss }:
+
+stdenv.mkDerivation rec {
+  pname = "pocket-casts";
+  version = "0.5.0";
+
+  src = fetchurl {
+    url = "https://github.com/felicianotech/pocket-casts-desktop-app/releases/download/v${version}/${pname}_${version}_amd64.deb";
+    sha256 = "sha256-frBtIxwRO/6k6j0itqN10t+9AyNadqXm8vC1YP960ts=";
+  };
+
+  nativeBuildInputs = [
+    dpkg
+    autoPatchelfHook
+    makeWrapper
+  ];
+
+  buildInputs = [ alsa-lib gtk3 libXScrnSaver libXtst mesa nss ];
+
+  dontBuild = true;
+  dontConfigure = true;
+
+  unpackPhase = ''
+    dpkg-deb -x ${src} ./
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    mv usr $out
+    mv opt $out
+    mv "$out/opt/Pocket Casts" $out/opt/pocket-casts
+    mv $out/share/icons/hicolor/0x0 $out/share/icons/hicolor/256x256
+
+    runHook postInstall
+  '';
+
+  postFixup = ''
+    substituteInPlace $out/share/applications/pocket-casts.desktop \
+      --replace '"/opt/Pocket Casts/pocket-casts"' $out/bin/pocket-casts \
+      --replace '/usr/share/icons/hicolor/0x0/apps/pocket-casts.png' "pocket-casts"
+    makeWrapper ${electron}/bin/electron \
+      $out/bin/pocket-casts \
+      --add-flags $out/opt/pocket-casts/resources/app.asar
+  '';
+
+  meta = with lib; {
+    description = "Pocket Casts webapp, packaged for the Linux Desktop";
+    homepage = "https://github.com/felicianotech/pocket-casts-desktop-app";
+    license = licenses.mit;
+    maintainers = with maintainers; [ wolfangaukang ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/praat/default.nix b/nixpkgs/pkgs/applications/audio/praat/default.nix
index 75a706cff1ed..3fd0619ec29c 100644
--- a/nixpkgs/pkgs/applications/audio/praat/default.nix
+++ b/nixpkgs/pkgs/applications/audio/praat/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "praat";
-  version = "6.1.53";
+  version = "6.2.03";
 
   src = fetchFromGitHub {
     owner = "praat";
     repo = "praat";
     rev = "v${version}";
-    sha256 = "sha256-4GOVrKVHl/Cj0PNx+rcLESn5fbyIsnzaheMOFLlEVMU=";
+    sha256 = "sha256-0WTbLEPEqPm7BI02mjlwcsewkrmIsHtNlhccqK1d6SI=";
   };
 
   configurePhase = ''
diff --git a/nixpkgs/pkgs/applications/audio/pt2-clone/default.nix b/nixpkgs/pkgs/applications/audio/pt2-clone/default.nix
index 6abc120379d6..e5a97aee86cd 100644
--- a/nixpkgs/pkgs/applications/audio/pt2-clone/default.nix
+++ b/nixpkgs/pkgs/applications/audio/pt2-clone/default.nix
@@ -8,13 +8,13 @@
 
 stdenv.mkDerivation rec {
   pname = "pt2-clone";
-  version = "1.34";
+  version = "1.37";
 
   src = fetchFromGitHub {
     owner = "8bitbubsy";
     repo = "pt2-clone";
     rev = "v${version}";
-    sha256 = "sha256-JT3I06qm3oljsySIgK5xP2RC3KAb5QBrNVdip0ds4KE=";
+    sha256 = "sha256-r9H+qF542j2qjmOEjJLAtnMU7SkJBJB8nH39zhkZu9M=";
   };
 
   nativeBuildInputs = [ cmake ];
diff --git a/nixpkgs/pkgs/applications/audio/ptcollab/default.nix b/nixpkgs/pkgs/applications/audio/ptcollab/default.nix
index ffc2d72891dc..16ef4ed6e45e 100644
--- a/nixpkgs/pkgs/applications/audio/ptcollab/default.nix
+++ b/nixpkgs/pkgs/applications/audio/ptcollab/default.nix
@@ -13,19 +13,30 @@
 
 mkDerivation rec {
   pname = "ptcollab";
-  version = "0.5.0";
+  version = "0.5.0.3";
 
   src = fetchFromGitHub {
     owner = "yuxshao";
     repo = "ptcollab";
     rev = "v${version}";
-    sha256 = "sha256-sN3O8m+ib6Chb/RXTFbNWW6PnrolCHpmC/avRX93AH4=";
+    sha256 = "sha256-8bgi621psvUlhiLyZ15tKGmGOs6HTf5/6Ru2Z9l8QIo=";
   };
 
   nativeBuildInputs = [ qmake pkg-config ];
 
   buildInputs = [ qtbase qtmultimedia libvorbis rtmidi ];
 
+  postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
+    # Move appbundles to Applications before wrapping happens
+    mkdir $out/Applications
+    mv $out/{bin,Applications}/ptcollab.app
+  '';
+
+  postFixup = lib.optionalString stdenv.hostPlatform.isDarwin ''
+    # Link to now-wrapped binary inside appbundle
+    ln -s $out/{Applications/ptcollab.app/Contents/MacOS,bin}/ptcollab
+  '';
+
   passthru = {
     updateScript = nix-update-script {
       attrPath = pname;
@@ -38,7 +49,5 @@ mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ OPNA2608 ];
     platforms = platforms.all;
-    # Requires Qt5.15
-    broken = stdenv.hostPlatform.isDarwin;
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/pulseaudio-ctl/default.nix b/nixpkgs/pkgs/applications/audio/pulseaudio-ctl/default.nix
index 9d1d6df1da50..1b21aa9d4163 100644
--- a/nixpkgs/pkgs/applications/audio/pulseaudio-ctl/default.nix
+++ b/nixpkgs/pkgs/applications/audio/pulseaudio-ctl/default.nix
@@ -7,13 +7,13 @@ let
 
 in stdenv.mkDerivation rec {
   name = "${pname}-${version}";
-  version = "1.69";
+  version = "1.70";
 
   src = fetchFromGitHub {
     owner = "graysky2";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-5WRhVIQlSwWuyvkzrnNW0rdVet9ZzM47gISJpznM8mU=";
+    sha256 = "sha256-ZB1jrr31PF7+vNB+Xo5CATJmYbuDAPwewpDxCVnAowY=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/applications/audio/pulseaudio-dlna/0001-setup.py-remove-dbus-python-from-list.patch b/nixpkgs/pkgs/applications/audio/pulseaudio-dlna/0001-setup.py-remove-dbus-python-from-list.patch
new file mode 100644
index 000000000000..2f38386f96c0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/pulseaudio-dlna/0001-setup.py-remove-dbus-python-from-list.patch
@@ -0,0 +1,25 @@
+From a4bf7df795146c843696daee8c02826ba0034298 Mon Sep 17 00:00:00 2001
+From: Florian Klink <flokli@flokli.de>
+Date: Sun, 21 Nov 2021 12:04:48 +0100
+Subject: [PATCH] setup.py: remove dbus-python from list
+
+I wasn't able to convince setuptools to find this.
+---
+ setup.py | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/setup.py b/setup.py
+index 61d6831..013fff3 100644
+--- a/setup.py
++++ b/setup.py
+@@ -42,7 +42,6 @@ setuptools.setup(
+     install_requires=[
+     'docopt',
+     'chardet',
+-    'dbus-python',
+     'docopt',
+     'requests',
+     'setproctitle',
+-- 
+2.33.1
+
diff --git a/nixpkgs/pkgs/applications/audio/pulseaudio-dlna/default.nix b/nixpkgs/pkgs/applications/audio/pulseaudio-dlna/default.nix
index 83de192c6b31..384718f1db54 100644
--- a/nixpkgs/pkgs/applications/audio/pulseaudio-dlna/default.nix
+++ b/nixpkgs/pkgs/applications/audio/pulseaudio-dlna/default.nix
@@ -1,43 +1,64 @@
-{ fetchFromGitHub, lib, pythonPackages
-, mp3Support ? true, lame ? null
-, opusSupport ? true, opusTools ? null
-, faacSupport ? false, faac ? null
-, flacSupport ? true, flac ? null
-, soxSupport ? true, sox ? null
-, vorbisSupport ? true, vorbis-tools ? null
+{ fetchFromGitHub
+, lib
+, python3Packages
+, mp3Support ? true
+, lame
+, opusSupport ? true
+, opusTools
+, faacSupport ? false
+, faac
+, flacSupport ? true
+, flac
+, soxSupport ? true
+, sox
+, vorbisSupport ? true
+, vorbis-tools
+, pulseaudio
 }:
 
-assert mp3Support -> lame != null;
-assert opusSupport -> opusTools != null;
-assert faacSupport -> faac != null;
-assert flacSupport -> flac != null;
-assert soxSupport -> sox != null;
-assert vorbisSupport -> vorbis-tools != null;
-
-let
-  zeroconf = pythonPackages.callPackage ./zeroconf.nix { };
-in
-pythonPackages.buildPythonApplication {
+python3Packages.buildPythonApplication {
   pname = "pulseaudio-dlna";
-  version = "unstable-2017-11-01";
+  version = "unstable-2021-11-09";
 
   src = fetchFromGitHub {
-    owner = "masmu";
+    owner = "Cygn";
     repo = "pulseaudio-dlna";
-    rev = "4472928dd23f274193f14289f59daec411023ab0";
-    sha256 = "1dfn7036vrq49kxv4an7rayypnm5dlawsf02pfsldw877hzdamqk";
+    rev = "637a2e7bba2277137c5f12fb58e63100dab7cbe6";
+    sha256 = "sha256-Oda+zQQJE2D3fiNWTzxYvI8cZVHG5JAoV2Wf5Z6IU3M=";
   };
 
-  propagatedBuildInputs = with pythonPackages; [
-    dbus-python docopt requests setproctitle protobuf psutil futures
-    chardet notify2 netifaces pyroute2 pygobject2 lxml setuptools ]
-    ++ [ zeroconf ]
-    ++ lib.optional mp3Support lame
-    ++ lib.optional opusSupport opusTools
-    ++ lib.optional faacSupport faac
-    ++ lib.optional flacSupport flac
-    ++ lib.optional soxSupport sox
-    ++ lib.optional vorbisSupport vorbis-tools;
+  patches = [
+    ./0001-setup.py-remove-dbus-python-from-list.patch
+  ];
+
+  propagatedBuildInputs = with python3Packages; [
+    dbus-python
+    docopt
+    requests
+    setproctitle
+    protobuf
+    psutil
+    chardet
+    netifaces
+    notify2
+    pyroute2
+    pygobject3
+    PyChromecast
+    lxml
+    setuptools
+    zeroconf
+  ]
+  ++ lib.optional mp3Support lame
+  ++ lib.optional opusSupport opusTools
+  ++ lib.optional faacSupport faac
+  ++ lib.optional flacSupport flac
+  ++ lib.optional soxSupport sox
+  ++ lib.optional vorbisSupport vorbis-tools;
+
+  # pulseaudio-dlna shells out to pactl to configure sinks and sources.
+  # As pactl might not be in $PATH, add --suffix it (so pactl configured by the
+  # user get priority)
+  makeWrapperArgs = [ "--suffix PATH : ${lib.makeBinPath [ pulseaudio ]}" ];
 
   # upstream has no tests
   checkPhase = ''
@@ -46,7 +67,7 @@ pythonPackages.buildPythonApplication {
 
   meta = with lib; {
     description = "A lightweight streaming server which brings DLNA / UPNP and Chromecast support to PulseAudio and Linux";
-    homepage = "https://github.com/masmu/pulseaudio-dlna";
+    homepage = "https://github.com/Cygn/pulseaudio-dlna";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ mog ];
     platforms = platforms.linux;
diff --git a/nixpkgs/pkgs/applications/audio/qjackctl/default.nix b/nixpkgs/pkgs/applications/audio/qjackctl/default.nix
index 7d1ec9f99783..1d5edf892cb7 100644
--- a/nixpkgs/pkgs/applications/audio/qjackctl/default.nix
+++ b/nixpkgs/pkgs/applications/audio/qjackctl/default.nix
@@ -5,7 +5,7 @@
 }:
 
 mkDerivation rec {
-  version = "0.9.4";
+  version = "0.9.5";
   pname = "qjackctl";
 
   # some dependencies such as killall have to be installed additionally
@@ -14,7 +14,7 @@ mkDerivation rec {
     owner = "rncbc";
     repo = "qjackctl";
     rev = "${pname}_${lib.replaceChars ["."] ["_"] version}";
-    sha256 = "sha256-eZKrPQ07Z3pF5dArZ4QSclrRCaPHpPb8S5HANLUS9MM=";
+    sha256 = "sha256-20oy3R0gbVXO3Da80cTYXu+BG8OfVNRLtAwHk8nRFJk=";
   };
 
   buildInputs = [
diff --git a/nixpkgs/pkgs/applications/audio/qpwgraph/default.nix b/nixpkgs/pkgs/applications/audio/qpwgraph/default.nix
new file mode 100644
index 000000000000..f805a2d345d9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/qpwgraph/default.nix
@@ -0,0 +1,34 @@
+{ lib, mkDerivation, fetchFromGitLab
+, cmake, pkg-config
+, alsa-lib, pipewire
+}:
+
+mkDerivation rec {
+  pname = "qpwgraph";
+  version = "0.1.1";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.freedesktop.org";
+    owner = "rncbc";
+    repo = "qpwgraph";
+    rev = "v${version}";
+    sha256 = "sha256-r3FoAV0wah9fwnqyMyu8927c4Uj0zZoQNvLoXP5AP/E=";
+  };
+
+  nativeBuildInputs = [ cmake pkg-config ];
+
+  buildInputs = [ alsa-lib pipewire ];
+
+  meta = with lib; {
+    description = "Qt graph manager for PipeWire, similar to QjackCtl.";
+    longDescription = ''
+      qpwgraph is a graph manager dedicated for PipeWire,
+      using the Qt C++ framework, based and pretty much like
+      the same of QjackCtl.
+    '';
+    homepage = "https://gitlab.freedesktop.org/rncbc/qpwgraph";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ kanashimia ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/qtractor/default.nix b/nixpkgs/pkgs/applications/audio/qtractor/default.nix
index cb564d0514b1..13d415ec1e93 100644
--- a/nixpkgs/pkgs/applications/audio/qtractor/default.nix
+++ b/nixpkgs/pkgs/applications/audio/qtractor/default.nix
@@ -30,11 +30,11 @@
 
 mkDerivation rec {
   pname = "qtractor";
-  version = "0.9.23";
+  version = "0.9.24";
 
   src = fetchurl {
     url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.gz";
-    sha256 = "sha256-GgDc7WM4nVGlq+8EcwxJ7MnSPYwAej51IMrN0glCTbQ=";
+    sha256 = "sha256-YTT7ko5HjKrZ8DKU3L06EI7bZeBtvPl21pqUf6EaeS4=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/audio/reaper/default.nix b/nixpkgs/pkgs/applications/audio/reaper/default.nix
index a7063b9f3e25..b7f6bb3ee373 100644
--- a/nixpkgs/pkgs/applications/audio/reaper/default.nix
+++ b/nixpkgs/pkgs/applications/audio/reaper/default.nix
@@ -17,13 +17,13 @@
 
 stdenv.mkDerivation rec {
   pname = "reaper";
-  version = "6.38";
+  version = "6.43";
 
   src = fetchurl {
     url = "https://www.reaper.fm/files/${lib.versions.major version}.x/reaper${builtins.replaceStrings ["."] [""] version}_linux_${stdenv.hostPlatform.qemuArch}.tar.xz";
     hash = {
-      x86_64-linux = "sha256-K5EnrmzP8pyW9dR1fbMzkPzpS6aHm8JF1+m3afnH4rU=";
-      aarch64-linux = "sha256-6wNWDXjQNyfU2l9Xi9JtmAuoKtHuIY5cvNMjYkwh2Sk=";
+      x86_64-linux = "sha256-VQ91px9YZWbrw31fFQxS+H/6fsjkLDrYU6FtI8eSq6E=";
+      aarch64-linux = "sha256-x6z5+H7ASWiuNL0maNGK05VmJptHdFGRiFf6DgwlZDw=";
     }.${stdenv.hostPlatform.system};
   };
 
@@ -78,6 +78,6 @@ stdenv.mkDerivation rec {
     homepage = "https://www.reaper.fm/";
     license = licenses.unfree;
     platforms = [ "x86_64-linux" "aarch64-linux" ];
-    maintainers = with maintainers; [ jfrankenau ilian orivej ];
+    maintainers = with maintainers; [ jfrankenau ilian orivej uniquepointer ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/rofi-pulse-select/default.nix b/nixpkgs/pkgs/applications/audio/rofi-pulse-select/default.nix
new file mode 100644
index 000000000000..f4f70a9d1c33
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/rofi-pulse-select/default.nix
@@ -0,0 +1,40 @@
+{ stdenv
+, fetchFromGitLab
+, lib
+, makeWrapper
+, ponymix
+, rofi-unwrapped
+}:
+
+stdenv.mkDerivation rec {
+  pname = "rofi-pulse-select";
+  version = "0.2.0";
+
+  src = fetchFromGitLab {
+    owner = "DamienCassou";
+    repo = pname;
+    rev = "${version}";
+    sha256 = "1405v0bh2m8ip9c23l95i8iq2gfrpanc6f4dz17nysdcff2ay2p3";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D --target-directory=$out/bin/ ./rofi-pulse-select
+
+    wrapProgram $out/bin/rofi-pulse-select \
+      --prefix PATH ":" ${lib.makeBinPath [ rofi-unwrapped ponymix ]}
+
+    runHook postInstall
+  '';
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  meta = with lib; {
+    description = "Rofi-based interface to select source/sink (aka input/output) with PulseAudio";
+    homepage = "https://gitlab.com/DamienCassou/rofi-pulse-select";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ DamienCassou ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/roomeqwizard/default.nix b/nixpkgs/pkgs/applications/audio/roomeqwizard/default.nix
new file mode 100644
index 000000000000..9d4118a43915
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/roomeqwizard/default.nix
@@ -0,0 +1,118 @@
+{ coreutils
+, fetchurl
+, gawk
+, gnused
+, jdk8
+, lib
+, makeDesktopItem
+, makeWrapper
+, stdenv
+, writeScript
+, writeTextFile
+, recommendedUdevRules ? true
+}:
+
+stdenv.mkDerivation rec {
+  pname = "roomeqwizard";
+  version = "5.20.4";
+
+  src = fetchurl {
+    url = "https://www.roomeqwizard.com/installers/REW_linux_${lib.replaceChars [ "." ] [ "_" ] version}.sh";
+    sha256 = "0m2b5hwazy4vyjk51cmayys250rircs3c0v7bv5mn28h7hyq29s8";
+  };
+
+  dontUnpack = true;
+
+  desktopItem = makeDesktopItem {
+    name = pname;
+    exec = pname;
+    icon = pname;
+    desktopName = "REW";
+    genericName = "Software for audio measurements";
+    categories = "AudioVideo;";
+  };
+
+  responseFile = writeTextFile {
+    name = "response.varfile";
+    text = ''
+      createDesktopLinkAction$Boolean=false
+      executeLauncherAction$Boolean=false
+      mem$Integer=1
+      opengl$Boolean=false
+      sys.adminRights$Boolean=false
+      sys.installationDir=INSTALLDIR
+      sys.languageId=en
+      sys.programGroupDisabled$Boolean=true
+    '';
+  };
+
+  udevRules = ''
+    # MiniDSP UMIK-1 calibrated USB microphone
+    SUBSYSTEM=="usb", ATTR{idVendor}=="2752", ATTR{idProduct}=="0007", TAG+="uaccess"
+  '';
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildPhase = ''
+    runHook preBuild
+
+    # set JDK path in installer
+    sed -E 's|^#\s*(INSTALL4J_JAVA_HOME_OVERRIDE=)|\1${jdk8}|' $src > installer
+    chmod +x installer
+
+    sed -e "s|INSTALLDIR|$out/share/roomeqwizard|" $responseFile > response.varfile
+
+    export HOME=$PWD
+
+    ./installer -q -varfile response.varfile
+
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/bin $out/lib/udev/rules.d $out/share/icons/hicolor/256x256/apps
+    makeWrapper $out/share/roomeqwizard/roomeqwizard $out/bin/roomeqwizard \
+      --set INSTALL4J_JAVA_HOME_OVERRIDE ${jdk8} \
+      --prefix PATH : ${lib.makeBinPath [ coreutils gnused gawk ]}
+
+    cp -r "$desktopItem/share/applications" $out/share/
+    cp $out/share/roomeqwizard/.install4j/s_*.png "$out/share/icons/hicolor/256x256/apps/${pname}.png"
+
+    ${lib.optionalString recommendedUdevRules ''echo "$udevRules" > $out/lib/udev/rules.d/90-roomeqwizard.rules''}
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = writeScript "${pname}-update.sh" ''
+    #!/usr/bin/env nix-shell
+    #!nix-shell -i bash -p curl common-updater-scripts nixpkgs-fmt coreutils perl
+
+    set -euo pipefail
+
+    perlexpr='if (/current version.{1,10}v(\d+)\.(\d+)\.(\d+)/i) { print "$1.$2.$3"; break; }'
+
+    oldVersion="$(nix-instantiate --eval -E "with import ./. {}; lib.getVersion ${pname}" | tr -d '"')"
+    latestVersion="$(curl -sS https://www.roomeqwizard.com/index.html | perl -ne "$perlexpr")"
+
+    if [ ! "$oldVersion" = "$latestVersion" ]; then
+      update-source-version ${pname} "$latestVersion" --version-key=version --print-changes
+      nixpkgs-fmt "pkgs/applications/audio/roomeqwizard/default.nix"
+    else
+      echo "${pname} is already up-to-date"
+    fi
+  '';
+
+  meta = with lib; {
+    homepage = "https://www.roomeqwizard.com/";
+    license = licenses.unfree;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ zaninime ];
+    description = "Room Acoustics Software";
+    longDescription = ''
+      REW is free software for room acoustic measurement, loudspeaker
+      measurement and audio device measurement.
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/schismtracker/default.nix b/nixpkgs/pkgs/applications/audio/schismtracker/default.nix
index ba193f70194d..bf74dd64f926 100644
--- a/nixpkgs/pkgs/applications/audio/schismtracker/default.nix
+++ b/nixpkgs/pkgs/applications/audio/schismtracker/default.nix
@@ -9,13 +9,13 @@
 
 stdenv.mkDerivation rec {
   pname = "schismtracker";
-  version = "20210525";
+  version = "20211116";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = version;
-    sha256 = "06ybkbqry7f7lmzgwb9s7ipafshl5gdj98lcjsjkcbnywj8r9b3h";
+    sha256 = "1kcw4rwphyqh0hwwjsydzwg484xj17rb5lc8pfsixsg77z50ayzz";
   };
 
   configureFlags = [ "--enable-dependency-tracking" ]
@@ -25,6 +25,8 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ SDL ] ++ lib.optional stdenv.isLinux alsa-lib;
 
+  enableParallelBuilding = true;
+
   meta = with lib; {
     description = "Music tracker application, free reimplementation of Impulse Tracker";
     homepage = "http://schismtracker.org/";
diff --git a/nixpkgs/pkgs/applications/audio/setbfree/default.nix b/nixpkgs/pkgs/applications/audio/setbfree/default.nix
index 67851611f76e..0edd45f24096 100644
--- a/nixpkgs/pkgs/applications/audio/setbfree/default.nix
+++ b/nixpkgs/pkgs/applications/audio/setbfree/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchzip, alsa-lib, freetype, ftgl, libjack2, libX11, lv2
+{ lib, stdenv, fetchFromGitHub, alsa-lib, freetype, ftgl, libjack2, libX11, lv2
 , libGLU, libGL, pkg-config, ttf_bitstream_vera
 }:
 
@@ -6,9 +6,11 @@ stdenv.mkDerivation  rec {
   pname = "setbfree";
   version = "0.8.11";
 
-  src = fetchzip {
-    url = "https://github.com/pantherb/setBfree/archive/v${version}.tar.gz";
-    sha256 = "0c2wc8nkrzsy0yic4y7hjz320m3d20r8152j9dk8nsnmgjmyr2ir";
+  src = fetchFromGitHub {
+    owner = "pantherb";
+    repo = "setBfree";
+    rev = "v${version}";
+    sha256 = "sha256-OYrsq3zVaotmS1KUgDIQbVQgxpfweMKiB17/PC1iXDA=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/applications/audio/sfizz/default.nix b/nixpkgs/pkgs/applications/audio/sfizz/default.nix
index 702f5c3982a2..d579e78b35e7 100644
--- a/nixpkgs/pkgs/applications/audio/sfizz/default.nix
+++ b/nixpkgs/pkgs/applications/audio/sfizz/default.nix
@@ -1,18 +1,16 @@
-{ lib, stdenv, fetchFromGitHub
-, libjack2, libsndfile, xorg, freetype, libxkbcommon
-, cairo, glib, gnome, flac, libogg, libvorbis, libopus
-, cmake, pkg-config
-}:
+{ lib, stdenv, fetchFromGitHub, libjack2, libsndfile, xorg, freetype
+, libxkbcommon, cairo, glib, gnome, flac, libogg, libvorbis, libopus, cmake
+, pango, pkg-config }:
 
 stdenv.mkDerivation rec {
   pname = "sfizz";
-  version = "0.5.1";
+  version = "1.1.1";
 
   src = fetchFromGitHub {
     owner = "sfztools";
     repo = pname;
     rev = version;
-    sha256 = "sha256-3RdY5+BPsdk6vctDy24w5aJsVOV9qzSgXs62Pm5UEKs=";
+    sha256 = "1gzpbns89j6ggzfjjvyhgigynsv20synrs7lmc32hwp4g73l0j7n";
     fetchSubmodules = true;
   };
 
@@ -37,18 +35,18 @@ stdenv.mkDerivation rec {
     glib
     gnome.zenity
     freetype
+    pango
   ];
   nativeBuildInputs = [ cmake pkg-config ];
 
   postPatch = ''
-  substituteInPlace editor/external/vstgui4/vstgui/lib/platform/linux/x11fileselector.cpp \
-    --replace '"/usr/bin/zenity' '"${gnome.zenity}/bin/zenity'
+    substituteInPlace plugins/editor/external/vstgui4/vstgui/lib/platform/linux/x11fileselector.cpp \
+      --replace 'zenitypath = "zenity"' 'zenitypath = "${gnome.zenity}/bin/zenity"'
+    substituteInPlace plugins/editor/src/editor/NativeHelpers.cpp \
+      --replace '/usr/bin/zenity' '${gnome.zenity}/bin/zenity'
   '';
 
-  cmakeFlags = [
-    "-DCMAKE_BUILD_TYPE=Release"
-    "-DSFIZZ_TESTS=ON"
-  ];
+  cmakeFlags = [ "-DCMAKE_BUILD_TYPE=Release" "-DSFIZZ_TESTS=ON" ];
 
   meta = with lib; {
     homepage = "https://github.com/sfztools/sfizz";
diff --git a/nixpkgs/pkgs/applications/audio/snapcast/default.nix b/nixpkgs/pkgs/applications/audio/snapcast/default.nix
index 0299f66191ed..d2b6ba07d2eb 100644
--- a/nixpkgs/pkgs/applications/audio/snapcast/default.nix
+++ b/nixpkgs/pkgs/applications/audio/snapcast/default.nix
@@ -1,7 +1,10 @@
 { stdenv, lib, fetchFromGitHub, cmake, pkg-config
 , alsa-lib, asio, avahi, boost17x, flac, libogg, libvorbis, soxr
+, pulseaudioSupport ? false, libpulseaudio
 , nixosTests }:
 
+assert pulseaudioSupport -> libpulseaudio != null;
+
 let
 
   dependency = { name, version, sha256 }:
@@ -50,7 +53,7 @@ stdenv.mkDerivation rec {
     boost17x
     alsa-lib asio avahi flac libogg libvorbis
     aixlog popl soxr
-  ];
+  ] ++ lib.optional pulseaudioSupport libpulseaudio;
 
   # Upstream systemd unit files are pretty awful, so we provide our own in a
   # NixOS module. It might make sense to get that upstreamed...
diff --git a/nixpkgs/pkgs/applications/audio/snd/default.nix b/nixpkgs/pkgs/applications/audio/snd/default.nix
index 56d1dacaf9ad..9561dc00d744 100644
--- a/nixpkgs/pkgs/applications/audio/snd/default.nix
+++ b/nixpkgs/pkgs/applications/audio/snd/default.nix
@@ -1,19 +1,22 @@
 { lib, stdenv, fetchurl, pkg-config
 , alsa-lib, fftw, gsl, motif, xorg
+, CoreServices, CoreMIDI
 }:
 
 stdenv.mkDerivation rec {
   pname = "snd";
-  version = "21.7";
+  version = "21.8";
 
   src = fetchurl {
     url = "mirror://sourceforge/snd/snd-${version}.tar.gz";
-    sha256 = "sha256-GjaPZmJfodvYvhObGcBDRN0mIyc6Vxycd0BZGHdvoJA=";
+    sha256 = "sha256-sI2xa37eSBDr/ucQ7RF3YfsszKfWcmOCoAJENALSlTo=";
   };
 
   nativeBuildInputs = [ pkg-config ];
 
-  buildInputs = [ alsa-lib fftw gsl motif ]
+  buildInputs = [ fftw gsl motif ]
+    ++ lib.optionals stdenv.isLinux [ alsa-lib ]
+    ++ lib.optionals stdenv.isDarwin [ CoreServices CoreMIDI ]
     ++ (with xorg; [ libXext libXft libXpm libXt ]);
 
   configureFlags = [ "--with-motif" ];
diff --git a/nixpkgs/pkgs/applications/audio/songrec/default.nix b/nixpkgs/pkgs/applications/audio/songrec/default.nix
index 166784a164d7..60fbd3a2888a 100644
--- a/nixpkgs/pkgs/applications/audio/songrec/default.nix
+++ b/nixpkgs/pkgs/applications/audio/songrec/default.nix
@@ -10,16 +10,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "songrec";
-  version = "0.2.0";
+  version = "0.2.1";
 
   src = fetchFromGitHub {
     owner = "marin-m";
     repo = pname;
     rev = version;
-    sha256 = "sha256-9fq2P+F7Olm9bUQ1HbH/Lzb5J2mJCma+x/vuH3wf+zY=";
+    sha256 = "sha256-pKHKM4XOuuZCr4neMe1AVqWMuZghwYNe+ifJCQhXG/c=";
   };
 
-  cargoSha256 = "sha256-ATlwBMuT8AufkrZNe1+U74hYRN4V88ZDKYvCWV52iyI=";
+  cargoSha256 = "sha256-J3ezXBOGJwzIPTHXujHpswsgh9PFy110AOQ2pPJNm10=";
 
   nativeBuildInputs = [ pkg-config ];
 
diff --git a/nixpkgs/pkgs/applications/audio/sony-headphones-client/default.nix b/nixpkgs/pkgs/applications/audio/sony-headphones-client/default.nix
new file mode 100644
index 000000000000..976c4ab5702c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/sony-headphones-client/default.nix
@@ -0,0 +1,44 @@
+{ lib, stdenv, fetchFromGitHub, cmake, pkg-config, bluez, dbus, glew, glfw, imgui, makeDesktopItem, copyDesktopItems }:
+
+stdenv.mkDerivation rec {
+  pname = "SonyHeadphonesClient";
+  version = "1.2";
+
+  src = fetchFromGitHub {
+    owner = "Plutoberth";
+    repo = "SonyHeadphonesClient";
+    rev = "v${version}";
+    sha256 = "sha256-oejXrs9X+R6Jydro0XIw2XifzFA7asDhpobtaE3//Hc=";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [ cmake pkg-config copyDesktopItems ];
+  buildInputs = [ bluez dbus glew glfw imgui ];
+
+  sourceRoot = "./source/Client";
+
+  cmakeFlags = [ "-Wno-dev" ];
+
+  installPhase = ''
+    runHook preInstall
+    install -Dm755 -t $out/bin SonyHeadphonesClient
+    runHook postInstall
+  '';
+
+  desktopItems = [ (makeDesktopItem {
+    name = "SonyHeadphonesClient";
+    exec = "SonyHeadphonesClient";
+    icon = "SonyHeadphonesClient";
+    desktopName = "Sony Headphones Client";
+    comment     = "A client recreating the functionality of the Sony Headphones app";
+    categories  = "Audio;Mixer;";
+  }) ];
+
+  meta = with lib; {
+    description = "A client recreating the functionality of the Sony Headphones app";
+    homepage    = "https://github.com/Plutoberth/SonyHeadphonesClient";
+    license     = licenses.mit;
+    maintainers = with maintainers; [ stunkymonkey ];
+    platforms   = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/soundwireserver/default.nix b/nixpkgs/pkgs/applications/audio/soundwireserver/default.nix
new file mode 100755
index 000000000000..17660599b689
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/soundwireserver/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, qt5
+, autoPatchelfHook
+, unzip
+, fetchzip
+, portaudio
+}:
+
+qt5.mkDerivation {
+  pname = "soundwire";
+  version = "3.0";
+
+  src = fetchzip {
+    url = "https://web.archive.org/web/20211120182526/https://georgielabs.net/SoundWire_Server_linux64.tar.gz";
+    hash = "sha256-TECuQ5WXpeikc9tXEE/wVBnRbdYd0OaIFFhsBRmaukA=";
+  };
+
+  nativeBuildInputs = [
+    unzip
+    autoPatchelfHook
+  ];
+
+  buildInputs = [
+    portaudio
+  ];
+
+  installPhase = ''
+    install -D SoundWire-Server.desktop $out/share/applications/SoundWireServer.desktop
+    install -D SoundWireServer $out/bin/SoundWireServer
+    install -D sw-icon.xpm $out/share/icons/hicolor/256x256/apps/sw-icon.xpm
+  '';
+
+  meta = with lib; {
+    description = "Turn your Android device into wireless headphones / wireless speaker";
+    homepage = "https://georgielabs.net/";
+    maintainers = with maintainers; [ mkg20001 ];
+    license = licenses.unfree;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/spot/default.nix b/nixpkgs/pkgs/applications/audio/spot/default.nix
index aa7a041f40c7..e17e85036949 100644
--- a/nixpkgs/pkgs/applications/audio/spot/default.nix
+++ b/nixpkgs/pkgs/applications/audio/spot/default.nix
@@ -21,19 +21,19 @@
 
 stdenv.mkDerivation rec {
   pname = "spot";
-  version = "0.2.0";
+  version = "0.2.2";
 
   src = fetchFromGitHub {
     owner = "xou816";
     repo = "spot";
     rev = version;
-    sha256 = "16pri0in514xzy21bsijyvyyjwa0f6lg4zyizmdcmcdw4glrs11m";
+    hash = "sha256-g0oVhlfez9i+Vv8lt/aNftCVqdgPMDySBBeLyOv7Zl8=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     name = "${pname}-${version}";
-    sha256 = "1fvnidxh4rnkzqg3qjk3zlkp2d41qdamm0bfavk8jrazw8sgih84";
+    hash = "sha256-n10aYzkRqEe1h2WPAfARjH79Npvv+3fdX9jCtxv2a34=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/audio/spotify/default.nix b/nixpkgs/pkgs/applications/audio/spotify/default.nix
index 48e6a85f5d25..f38bd678d9ef 100644
--- a/nixpkgs/pkgs/applications/audio/spotify/default.nix
+++ b/nixpkgs/pkgs/applications/audio/spotify/default.nix
@@ -10,14 +10,14 @@ let
   # If an update breaks things, one of those might have valuable info:
   # https://aur.archlinux.org/packages/spotify/
   # https://community.spotify.com/t5/Desktop-Linux
-  version = "1.1.68.628.geb44bd66";
+  version = "1.1.72.439.gc253025e";
   # To get the latest stable revision:
   # curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/spotify?channel=stable' | jq '.download_url,.version,.last_updated'
   # To get general information:
   # curl -H 'Snap-Device-Series: 16' 'https://api.snapcraft.io/v2/snaps/info/spotify' | jq '.'
   # More examples of api usage:
   # https://github.com/canonical-websites/snapcraft.io/blob/master/webapp/publisher/snaps/views.py
-  rev = "52";
+  rev = "56";
 
   deps = [
     alsa-lib
@@ -80,7 +80,7 @@ stdenv.mkDerivation {
   # https://community.spotify.com/t5/Desktop-Linux/Redistribute-Spotify-on-Linux-Distributions/td-p/1695334
   src = fetchurl {
     url = "https://api.snapcraft.io/api/v1/snaps/download/pOBIoZ2LrCB3rDohMxoYGnbN14EHOgD7_${rev}.snap";
-    sha512 = "be6f1cb650924eb9e244497374d1dfe6136d28056dbecc7000a03341a4bb4c6ab2c83ec6c707bd6f57afde95262230eafbde08e9c7a7dfcacdf660eb10499f3a";
+    sha512 = "b2bd3d49a18dfebaa4660f9c39d11d57fb80a4ef15ec7b7973e3cc07be74f74aebd2d8c66360d79fe778244c533ed02f9dfca4085f99aae0e5faae7c003ba4ef";
   };
 
   nativeBuildInputs = [ makeWrapper wrapGAppsHook squashfsTools ];
diff --git a/nixpkgs/pkgs/applications/audio/spotifyd/default.nix b/nixpkgs/pkgs/applications/audio/spotifyd/default.nix
index e9de6cb3cf78..bfeb8a7dab3a 100644
--- a/nixpkgs/pkgs/applications/audio/spotifyd/default.nix
+++ b/nixpkgs/pkgs/applications/audio/spotifyd/default.nix
@@ -9,22 +9,16 @@
 
 rustPackages.rustPlatform.buildRustPackage rec {
   pname = "spotifyd";
-  version = "0.3.2";
+  version = "0.3.3";
 
   src = fetchFromGitHub {
     owner = "Spotifyd";
     repo = "spotifyd";
     rev = "v${version}";
-    sha256 = "1a578h13iv8gqmskzlncfr42jlg5gp0zfcizv4wbd48y9hl8fh2l";
+    sha256 = "1liql2wp7cx0x4ha1578wx3m4byd295m4ph268s05yw2wrnr3v6c";
   };
 
-  cargoSha256 = "07dxfc0csrnfl01p9vdrqvca9f574svlf37dk3dz8p6q08ki0n1z";
-
-  cargoBuildFlags = [
-    "--no-default-features"
-    "--features"
-    "${lib.optionalString withALSA "alsa_backend,"}${lib.optionalString withPulseAudio "pulseaudio_backend,"}${lib.optionalString withPortAudio "portaudio_backend,"}${lib.optionalString withMpris "dbus_mpris,"}${lib.optionalString withKeyring "dbus_keyring,"}"
-  ];
+  cargoSha256 = "1plvqd55d1gj0ydimv3154pwgj2sh1fqx2182nw8akzdfmzg1150";
 
   nativeBuildInputs = [ pkg-config ];
 
@@ -34,6 +28,13 @@ rustPackages.rustPlatform.buildRustPackage rec {
     ++ lib.optional withPortAudio portaudio
     ++ lib.optional (withMpris || withKeyring) dbus;
 
+  buildNoDefaultFeatures = true;
+  buildFeatures = lib.optional withALSA "alsa_backend"
+    ++ lib.optional withPulseAudio "pulseaudio_backend"
+    ++ lib.optional withPortAudio "portaudio_backend"
+    ++ lib.optional withMpris "dbus_mpris"
+    ++ lib.optional withKeyring "dbus_keyring";
+
   doCheck = false;
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/applications/audio/strawberry/default.nix b/nixpkgs/pkgs/applications/audio/strawberry/default.nix
index 6cc55650220a..fd75a4a8e5d7 100644
--- a/nixpkgs/pkgs/applications/audio/strawberry/default.nix
+++ b/nixpkgs/pkgs/applications/audio/strawberry/default.nix
@@ -36,13 +36,13 @@
 
 mkDerivation rec {
   pname = "strawberry";
-  version = "0.9.3";
+  version = "1.0.0";
 
   src = fetchFromGitHub {
     owner = "jonaski";
     repo = pname;
     rev = version;
-    sha256 = "sha256-OOdHsii6O4okVHDhrqCNJ7WVB0VKPs8q0AhEY+IvflE=";
+    sha256 = "sha256-m1BB5OIeCIQuJpxEO1xmb/Z8tzeHF31jYg67OpVWWRM=";
   };
 
   buildInputs = [
diff --git a/nixpkgs/pkgs/applications/audio/sublime-music/default.nix b/nixpkgs/pkgs/applications/audio/sublime-music/default.nix
index 5c9250b45e03..3f7e1e038f8e 100644
--- a/nixpkgs/pkgs/applications/audio/sublime-music/default.nix
+++ b/nixpkgs/pkgs/applications/audio/sublime-music/default.nix
@@ -15,14 +15,14 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "sublime-music";
-  version = "0.11.13";
+  version = "0.11.16";
   format = "pyproject";
 
   src = fetchFromGitLab {
     owner = "sublime-music";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-NzbQtRcsRVppyuG1UuS3IidSnniUOavf5YoAf/kcZqw=";
+    sha256 = "sha256-n77mTgElwwFaX3WQL8tZzbkPwnsyQ08OW9imSOjpBlg=";
   };
 
   nativeBuildInputs = [
@@ -57,19 +57,26 @@ python3Packages.buildPythonApplication rec {
    ++ lib.optional serverSupport bottle
   ;
 
+  postPatch = ''
+    sed -i "/--cov/d" setup.cfg
+    sed -i "/--no-cov-on-fail/d" setup.cfg
+  '';
+
   # hook for gobject-introspection doesn't like strictDeps
   # https://github.com/NixOS/nixpkgs/issues/56943
   strictDeps = false;
 
-  # Use the test suite provided by the upstream project.
   checkInputs = with python3Packages; [
     pytest
-    pytest-cov
   ];
-  checkPhase = "${xvfb-run}/bin/xvfb-run pytest";
 
-  # Also run the python import check for sanity
-  pythonImportsCheck = [ "sublime_music" ];
+  checkPhase = ''
+    ${xvfb-run}/bin/xvfb-run pytest
+  '';
+
+  pythonImportsCheck = [
+    "sublime_music"
+  ];
 
   postInstall = ''
     install -Dm444 sublime-music.desktop      -t $out/share/applications
diff --git a/nixpkgs/pkgs/applications/audio/surge-XT/default.nix b/nixpkgs/pkgs/applications/audio/surge-XT/default.nix
new file mode 100644
index 000000000000..a08c25f016aa
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/surge-XT/default.nix
@@ -0,0 +1,93 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, pkg-config
+, alsa-lib
+, freetype
+, libjack2
+, lv2
+, libX11
+, libXcursor
+, libXext
+, libXinerama
+, libXrandr
+}:
+
+let
+  juce-lv2 = stdenv.mkDerivation {
+    pname = "juce-lv2";
+    version = "unstable-2021-12-11";
+
+    # lv2 branch
+    src = fetchFromGitHub {
+      owner = "lv2-porting-project";
+      repo = "JUCE";
+      rev = "5106d9d77b892c22afcb9379c13982f270429e2e";
+      sha256 = "sha256-bpZJ5NEDRfMtmx0RkKQFZWqS/SnYAFRhrDg9MSphh4c=";
+    };
+
+    dontConfigure = true;
+    dontBuild = true;
+
+    installPhase = ''
+      cp -r . $out
+    '';
+  };
+in
+stdenv.mkDerivation rec {
+  pname = "surge-XT";
+  version = "unstable-2021-12-11";
+
+  src = fetchFromGitHub {
+    owner = "surge-synthesizer";
+    repo = "surge";
+    rev = "320f68543d0279c11cea8dc7f5170399cccc9602";
+    fetchSubmodules = true;
+    sha256 = "sha256-Jcs5FpX5AZl72aKYNbRcfYqb2PRt0r1pQXk957xk0aM=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+  ];
+
+  buildInputs = [
+    alsa-lib
+    freetype
+    libjack2
+    lv2
+    libX11
+    libXcursor
+    libXext
+    libXinerama
+    libXrandr
+  ];
+
+  cmakeFlags = [
+    "-DJUCE_SUPPORTS_LV2=ON"
+    "-DSURGE_JUCE_PATH=${juce-lv2}"
+  ];
+
+  # JUCE dlopen's these at runtime, crashes without them
+  NIX_LDFLAGS = (toString [
+    "-lX11"
+    "-lXext"
+    "-lXcursor"
+    "-lXinerama"
+    "-lXrandr"
+  ]);
+
+  # see https://github.com/NixOS/nixpkgs/pull/149487#issuecomment-991747333
+  postPatch = ''
+    export XDG_DOCUMENTS_DIR=$(mktemp -d)
+  '';
+
+  meta = with lib; {
+    description = "LV2 & VST3 synthesizer plug-in (previously released as Vember Audio Surge)";
+    homepage = "https://surge-synthesizer.github.io";
+    license = licenses.gpl3;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ magnetophon orivej ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/swh-lv2/default.nix b/nixpkgs/pkgs/applications/audio/swh-lv2/default.nix
index f2b71c1ce291..338877d2be21 100644
--- a/nixpkgs/pkgs/applications/audio/swh-lv2/default.nix
+++ b/nixpkgs/pkgs/applications/audio/swh-lv2/default.nix
@@ -1,12 +1,14 @@
-{ lib, stdenv, fetchurl, fftwSinglePrec, libxslt, lv2, pkg-config }:
+{ lib, stdenv, fetchFromGitHub, fftwSinglePrec, libxslt, lv2, pkg-config }:
 
 stdenv.mkDerivation rec {
   pname = "swh-lv2";
   version = "1.0.16";
 
-  src = fetchurl {
-    url = "https://github.com/swh/lv2/archive/v${version}.tar.gz";
-    sha256 = "0j1mih0lp4fds07knp5i32in515sh0df1qi6694pmyz2wqnm295w";
+  src = fetchFromGitHub {
+    owner = "swh";
+    repo = "lv2";
+    rev = "v${version}";
+    sha256 = "sha256-v6aJUWDbBZEmz0v6+cSCi/KhOYNUeK/MJLUSgzi39ng=";
   };
 
   patchPhase = ''
diff --git a/nixpkgs/pkgs/applications/audio/synthv1/default.nix b/nixpkgs/pkgs/applications/audio/synthv1/default.nix
index eecf8caee379..b0e9e9bde9d0 100644
--- a/nixpkgs/pkgs/applications/audio/synthv1/default.nix
+++ b/nixpkgs/pkgs/applications/audio/synthv1/default.nix
@@ -2,11 +2,11 @@
 
 mkDerivation rec {
   pname = "synthv1";
-  version = "0.9.15";
+  version = "0.9.23";
 
   src = fetchurl {
     url = "mirror://sourceforge/synthv1/${pname}-${version}.tar.gz";
-    sha256 = "047y2l7ipzv00ly54f074v6p043xjml7vz0svc7z81bhx74vs0ix";
+    sha256 = "sha256-0V72T51icT/t9fJf4mwcMYZLjzTPnmiCbU+BdwnCmw4=";
   };
 
   buildInputs = [ qtbase qttools libjack2 alsa-lib liblo lv2 ];
diff --git a/nixpkgs/pkgs/applications/audio/tagutil/default.nix b/nixpkgs/pkgs/applications/audio/tagutil/default.nix
index 802cd00087a8..e5076188301a 100644
--- a/nixpkgs/pkgs/applications/audio/tagutil/default.nix
+++ b/nixpkgs/pkgs/applications/audio/tagutil/default.nix
@@ -30,6 +30,11 @@ stdenv.mkDerivation rec {
     zlib
   ];
 
+  postPatch = ''
+    substituteInPlace CMakeLists.txt \
+      --replace "-o aslr" ""
+  '';
+
   meta = with lib; {
     description = "Scriptable music files tags tool and editor";
     homepage = "https://github.com/kaworu/tagutil";
diff --git a/nixpkgs/pkgs/applications/audio/tenacity/default.nix b/nixpkgs/pkgs/applications/audio/tenacity/default.nix
new file mode 100644
index 000000000000..fbf13c1748ff
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/tenacity/default.nix
@@ -0,0 +1,148 @@
+{ stdenv
+, lib
+, fetchFromSourcehut
+, cmake
+, wxGTK
+, pkg-config
+, python3
+, gettext
+, glib
+, file
+, lame
+, libvorbis
+, libmad
+, libjack2
+, lv2
+, lilv
+, makeWrapper
+, serd
+, sord
+, sqlite
+, sratom
+, suil
+, alsa-lib
+, libsndfile
+, soxr
+, flac
+, twolame
+, expat
+, libid3tag
+, libopus
+, ffmpeg
+, soundtouch
+, pcre
+, portaudio
+, linuxHeaders
+, at-spi2-core
+, dbus
+, libepoxy
+, libXdmcp
+, libXtst
+, libpthreadstubs
+, libselinux
+, libsepol
+, libxkbcommon
+, util-linux
+}:
+
+stdenv.mkDerivation rec {
+  pname = "tenacity";
+  version = "unstable-2021-10-18";
+
+  src = fetchFromSourcehut {
+    owner = "~tenacity";
+    repo = "tenacity";
+    rev = "697c0e764ccb19c1e2f3073ae08ecdac7aa710e4";
+    sha256 = "1fc9xz8lyl8si08wkzncpxq92vizan60c3640qr4kbnxg7vi2iy4";
+  };
+
+  postPatch = ''
+    touch src/RevisionIdent.h
+
+    substituteInPlace src/FileNames.cpp \
+      --replace /usr/include/linux/magic.h ${linuxHeaders}/include/linux/magic.h
+  '';
+
+  postFixup = ''
+    rm $out/tenacity
+    wrapProgram "$out/bin/tenacity" \
+      --suffix AUDACITY_PATH : "$out/share/tenacity" \
+      --suffix AUDACITY_MODULES_PATH : "$out/lib/tenacity/modules" \
+      --prefix LD_LIBRARY_PATH : "$out/lib/tenacity" \
+      --prefix XDG_DATA_DIRS : "$out/share:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  NIX_CFLAGS_COMPILE = "-D GIT_DESCRIBE=\"\"";
+
+  # tenacity only looks for ffmpeg at runtime, so we need to link it in manually
+  NIX_LDFLAGS = toString [
+    "-lavcodec"
+    "-lavdevice"
+    "-lavfilter"
+    "-lavformat"
+    "-lavresample"
+    "-lavutil"
+    "-lpostproc"
+    "-lswresample"
+    "-lswscale"
+  ];
+
+  nativeBuildInputs = [
+    cmake
+    gettext
+    makeWrapper
+    pkg-config
+    python3
+  ] ++ lib.optionals stdenv.isLinux [
+    linuxHeaders
+  ];
+
+  buildInputs = [
+    alsa-lib
+    expat
+    ffmpeg
+    file
+    flac
+    glib
+    lame
+    libid3tag
+    libjack2
+    libmad
+    libopus
+    libsndfile
+    libvorbis
+    lilv
+    lv2
+    pcre
+    portaudio
+    serd
+    sord
+    soundtouch
+    soxr
+    sqlite
+    sratom
+    suil
+    twolame
+    wxGTK
+    wxGTK.gtk
+  ] ++ lib.optionals stdenv.isLinux [
+    at-spi2-core
+    dbus
+    libepoxy
+    libXdmcp
+    libXtst
+    libpthreadstubs
+    libxkbcommon
+    libselinux
+    libsepol
+    util-linux
+  ];
+
+  meta = with lib; {
+    description = "Sound editor with graphical UI";
+    homepage = "https://tenacityaudio.org/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ irenes lheckemann ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/tonelib-gfx/default.nix b/nixpkgs/pkgs/applications/audio/tonelib-gfx/default.nix
index 00be09345520..108f39925b4f 100644
--- a/nixpkgs/pkgs/applications/audio/tonelib-gfx/default.nix
+++ b/nixpkgs/pkgs/applications/audio/tonelib-gfx/default.nix
@@ -1,65 +1,58 @@
-{ stdenv
-, dpkg
-, lib
-, autoPatchelfHook
+{ lib
+, stdenv
 , fetchurl
-, gtk3
-, glib
-, desktop-file-utils
+, autoPatchelfHook
+, dpkg
 , alsa-lib
-, libjack2
-, harfbuzz
-, fribidi
-, pango
 , freetype
+, libglvnd
 , curl
+, libXcursor
+, libXinerama
+, libXrandr
+, libXrender
+, libjack2
 }:
 
 stdenv.mkDerivation rec {
   pname = "tonelib-gfx";
-  version = "4.6.6";
+  version = "4.7.0";
 
   src = fetchurl {
-    url = "https://www.tonelib.net/download/0509/ToneLib-GFX-amd64.deb";
-    sha256 = "sha256-wdX3SQSr0IZHsTUl+1Y0iETme3gTyryexhZ/9XHkGeo=";
+    url = "https://www.tonelib.net/download/0930/ToneLib-GFX-amd64.deb";
+    hash = "sha256-BcbX0dz94B4mj6QeQsnuZmwXAaXH+yJjnrUPgEYVqkU=";
   };
 
+  nativeBuildInputs = [ autoPatchelfHook dpkg ];
+
   buildInputs = [
-    dpkg
-    gtk3
-    glib
-    desktop-file-utils
+    stdenv.cc.cc.lib
     alsa-lib
-    libjack2
-    harfbuzz
-    fribidi
-    pango
     freetype
+    libglvnd
+  ] ++ runtimeDependencies;
+
+  runtimeDependencies = map lib.getLib [
+    curl
+    libXcursor
+    libXinerama
+    libXrandr
+    libXrender
+    libjack2
   ];
 
-  nativeBuildInputs = [
-    autoPatchelfHook
-  ];
-
-  unpackPhase = ''
-    mkdir -p $TMP/ $out/
-    dpkg -x $src $TMP
-  '';
+  unpackCmd = "dpkg -x $curSrc source";
 
   installPhase = ''
-    cp -R $TMP/usr/* $out/
-    mv $out/bin/ToneLib-GFX $out/bin/tonelib-gfx
-  '';
-
-  runtimeDependencies = [
-    (lib.getLib curl)
-  ];
+    mv usr $out
+    substituteInPlace $out/share/applications/ToneLib-GFX.desktop --replace /usr/ $out/
+ '';
 
   meta = with lib; {
     description = "Tonelib GFX is an amp and effects modeling software for electric guitar and bass.";
     homepage = "https://tonelib.net/";
     license = licenses.unfree;
-    maintainers = with maintainers; [ dan4ik605743 ];
-    platforms = platforms.linux;
+    maintainers = with maintainers; [ dan4ik605743 orivej ];
+    platforms = [ "x86_64-linux" ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/tonelib-jam/default.nix b/nixpkgs/pkgs/applications/audio/tonelib-jam/default.nix
index 7a5a5c7280fa..1c0d51ed88be 100644
--- a/nixpkgs/pkgs/applications/audio/tonelib-jam/default.nix
+++ b/nixpkgs/pkgs/applications/audio/tonelib-jam/default.nix
@@ -1,65 +1,61 @@
-{ stdenv
-, dpkg
-, lib
-, autoPatchelfHook
+{ lib
+, stdenv
 , fetchurl
-, gtk3
-, glib
-, desktop-file-utils
+, autoPatchelfHook
+, dpkg
 , alsa-lib
-, libjack2
-, harfbuzz
-, fribidi
-, pango
 , freetype
+, libglvnd
 , curl
+, libXcursor
+, libXinerama
+, libXrandr
+, libXrender
+, libjack2
 }:
 
 stdenv.mkDerivation rec {
   pname = "tonelib-jam";
-  version = "4.6.6";
+  version = "4.7.0";
 
   src = fetchurl {
-    url = "https://www.tonelib.net/download/0509/ToneLib-Jam-amd64.deb";
-    sha256 = "sha256-cizIQgO35CQSLme/LKQqP+WzB/jCTk+fS5Z+EtF7wnQ=";
+    url = "https://www.tonelib.net/download/0930/ToneLib-Jam-amd64.deb";
+    sha256 = "sha256-xyBDp3DQVC+nK2WGnvrfUfD+9GvwtbldXgExTMmCGw0=";
   };
 
-  buildInputs = [
+  nativeBuildInputs = [
+    autoPatchelfHook
     dpkg
-    gtk3
-    glib
-    desktop-file-utils
-    alsa-lib
-    libjack2
-    harfbuzz
-    fribidi
-    pango
-    freetype
   ];
 
-  nativeBuildInputs = [
-    autoPatchelfHook
+  buildInputs = [
+    stdenv.cc.cc.lib
+    alsa-lib
+    freetype
+    libglvnd
+  ] ++ runtimeDependencies;
+
+  runtimeDependencies = map lib.getLib [
+    curl
+    libXcursor
+    libXinerama
+    libXrandr
+    libXrender
+    libjack2
   ];
 
-  unpackPhase = ''
-    mkdir -p $TMP/ $out/
-    dpkg -x $src $TMP
-  '';
+  unpackCmd = "dpkg -x $curSrc source";
 
   installPhase = ''
-    cp -R $TMP/usr/* $out/
-    mv $out/bin/ToneLib-Jam $out/bin/tonelib-jam
+    mv usr $out
+    substituteInPlace $out/share/applications/ToneLib-Jam.desktop --replace /usr/ $out/
   '';
 
-  runtimeDependencies = [
-    (lib.getLib curl)
-  ];
-
   meta = with lib; {
     description = "ToneLib Jam – the learning and practice software for guitar players";
     homepage = "https://tonelib.net/";
     license = licenses.unfree;
     maintainers = with maintainers; [ dan4ik605743 ];
-    platforms = platforms.linux;
+    platforms = [ "x86_64-linux" ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/tonelib-zoom/default.nix b/nixpkgs/pkgs/applications/audio/tonelib-zoom/default.nix
index 2eef1f7bd609..41539503e020 100644
--- a/nixpkgs/pkgs/applications/audio/tonelib-zoom/default.nix
+++ b/nixpkgs/pkgs/applications/audio/tonelib-zoom/default.nix
@@ -1,12 +1,18 @@
-{ stdenv
-, dpkg
-, lib
-, autoPatchelfHook
+{ lib
+, stdenv
 , fetchurl
-, webkitgtk
-, libjack2
+, autoPatchelfHook
+, dpkg
 , alsa-lib
+, freetype
+, libglvnd
 , curl
+, libXcursor
+, libXinerama
+, libXrandr
+, libXrender
+, libjack2
+, webkitgtk
 }:
 
 stdenv.mkDerivation rec {
@@ -18,36 +24,40 @@ stdenv.mkDerivation rec {
     sha256 = "sha256-4q2vM0/q7o/FracnO2xxnr27opqfVQoN7fsqTD9Tr/c=";
   };
 
-  buildInputs = [
+  nativeBuildInputs = [
+    autoPatchelfHook
     dpkg
-    webkitgtk
-    libjack2
-    alsa-lib
   ];
 
-  nativeBuildInputs = [
-    autoPatchelfHook
+  buildInputs = [
+    stdenv.cc.cc.lib
+    alsa-lib
+    freetype
+    libglvnd
+    webkitgtk
+  ] ++ runtimeDependencies;
+
+  runtimeDependencies = map lib.getLib [
+    curl
+    libXcursor
+    libXinerama
+    libXrandr
+    libXrender
+    libjack2
   ];
 
-  unpackPhase = ''
-    mkdir -p $TMP/ $out/
-    dpkg -x $src $TMP
-  '';
+  unpackCmd = "dpkg -x $curSrc source";
 
   installPhase = ''
-    cp -R $TMP/usr/* $out/
-    mv $out/bin/ToneLib-Zoom $out/bin/tonelib-zoom
+    mv usr $out
+    substituteInPlace $out/share/applications/ToneLib-Zoom.desktop --replace /usr/ $out/
   '';
 
-  runtimeDependencies = [
-    (lib.getLib curl)
-  ];
-
   meta = with lib; {
     description = "ToneLib Zoom – change and save all the settings in your Zoom(r) guitar pedal";
     homepage = "https://tonelib.net/";
     license = licenses.unfree;
     maintainers = with maintainers; [ dan4ik605743 ];
-    platforms = platforms.linux;
+    platforms = [ "x86_64-linux" ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/transcribe/default.nix b/nixpkgs/pkgs/applications/audio/transcribe/default.nix
index 9061c38f19c3..d10a0d879418 100644
--- a/nixpkgs/pkgs/applications/audio/transcribe/default.nix
+++ b/nixpkgs/pkgs/applications/audio/transcribe/default.nix
@@ -1,27 +1,64 @@
-{ stdenv, fetchzip, lib, wrapGAppsHook, alsa-lib, atk, cairo, gdk-pixbuf
-, glib, gst_all_1,  gtk3, libSM, libX11, libpng12, pango, zlib }:
+{ stdenv
+, fetchzip
+, lib
+, wrapGAppsHook
+, alsa-lib
+, atk
+, cairo
+, fontconfig
+, gdk-pixbuf
+, glib
+, gst_all_1
+, gtk3
+, libSM
+, libX11
+, libXtst
+, libpng12
+, pango
+, zlib
+}:
 
 stdenv.mkDerivation rec {
   pname = "transcribe";
-  version = "9.00";
+  version = "9.10";
 
-  src = if stdenv.hostPlatform.system == "x86_64-linux" then
-    fetchzip {
-      url = "https://www.seventhstring.com/xscribe/downlo/xscsetup-9.00.0.tar.gz";
-      sha256 = "0mgjx0hnps3jmc2d9hkskxbmwcqf7f9jx595j5sc501br1l84sdf";
-    }
-  else throw "Platform not supported";
+  src =
+    if stdenv.hostPlatform.system == "x86_64-linux" then
+      fetchzip
+        {
+          url = "https://www.seventhstring.com/xscribe/downlo/xscsetup-9.10.0.tar.gz";
+          sha256 = "sha256-6+P2qdjyvCzwrXYgw2yeG+hu8W5t6E0RCZx6Znkvj3g=";
+        }
+    else throw "Platform not supported";
 
   nativeBuildInputs = [ wrapGAppsHook ];
 
-  buildInputs = with gst_all_1; [ gst-plugins-base gst-plugins-good
-    gst-plugins-bad gst-plugins-ugly ];
+  buildInputs = with gst_all_1; [
+    gst-plugins-base
+    gst-plugins-good
+    gst-plugins-bad
+    gst-plugins-ugly
+  ];
 
   dontPatchELF = true;
 
   libPath = with gst_all_1; lib.makeLibraryPath [
-    stdenv.cc.cc glib gtk3 atk pango cairo gdk-pixbuf alsa-lib
-    libX11 libSM libpng12 gstreamer gst-plugins-base zlib
+    stdenv.cc.cc
+    glib
+    gtk3
+    atk
+    fontconfig
+    pango
+    cairo
+    gdk-pixbuf
+    alsa-lib
+    libX11
+    libXtst
+    libSM
+    libpng12
+    gstreamer
+    gst-plugins-base
+    zlib
   ];
 
   installPhase = ''
diff --git a/nixpkgs/pkgs/applications/audio/vimpc/default.nix b/nixpkgs/pkgs/applications/audio/vimpc/default.nix
index a576898128ec..5cc3c1099995 100644
--- a/nixpkgs/pkgs/applications/audio/vimpc/default.nix
+++ b/nixpkgs/pkgs/applications/audio/vimpc/default.nix
@@ -1,6 +1,7 @@
 { lib
 , stdenv
 , fetchFromGitHub
+, fetchpatch
 , autoreconfHook
 , libmpdclient
 , ncurses
@@ -21,6 +22,16 @@ stdenv.mkDerivation rec {
     sha256 = "0lswzkap2nm7v5h7ppb6a64cb35rajysd09nb204rxgrkij4m6nx";
   };
 
+  patches = [
+    # Pull fix pending upstream inclusion for ncurses-6.3:
+    #  https://github.com/boysetsfrog/vimpc/pull/100
+    (fetchpatch {
+      name = "ncurses-6.3.patch";
+      url = "https://github.com/boysetsfrog/vimpc/commit/055ecdce0720fdfc9ec2528c520b6c33da36271b.patch";
+      sha256 = "01p858jjxm0bf8hnk1z8h45j8c1y9i995mafa6ff3vg9vlak61pv";
+    })
+  ];
+
   nativeBuildInputs = [ autoreconfHook pkg-config ];
   buildInputs = [ libmpdclient ncurses pcre taglib curl ];
 
diff --git a/nixpkgs/pkgs/applications/audio/vmpk/default.nix b/nixpkgs/pkgs/applications/audio/vmpk/default.nix
index a9b1ac96f106..a68ed3ceae5d 100644
--- a/nixpkgs/pkgs/applications/audio/vmpk/default.nix
+++ b/nixpkgs/pkgs/applications/audio/vmpk/default.nix
@@ -5,11 +5,11 @@
 
 mkDerivation rec {
   pname = "vmpk";
-  version = "0.8.4";
+  version = "0.8.5";
 
   src = fetchurl {
     url = "mirror://sourceforge/${pname}/${version}/${pname}-${version}.tar.bz2";
-    sha256 = "sha256-SSdD8dyn6abti8qkd7N5n8EYr5yMW+EPYUnRm7S9CE4=";
+    sha256 = "sha256-SPome4UKGOWQLT9RMoGZ0wUdwodG8mSIaGFCg0i5CmY=";
   };
 
   nativeBuildInputs = [ cmake pkg-config qttools docbook-xsl-nons ];
diff --git a/nixpkgs/pkgs/applications/audio/vocal/default.nix b/nixpkgs/pkgs/applications/audio/vocal/default.nix
index a2fea468de9d..3d6f3aef9e1b 100644
--- a/nixpkgs/pkgs/applications/audio/vocal/default.nix
+++ b/nixpkgs/pkgs/applications/audio/vocal/default.nix
@@ -88,5 +88,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ ] ++ teams.pantheon.members;
     platforms = platforms.linux;
+    mainProgram = "com.github.needleandthread.vocal";
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/wavegain/default.nix b/nixpkgs/pkgs/applications/audio/wavegain/default.nix
index f4ef7f6d8a57..d08df27e04c0 100644
--- a/nixpkgs/pkgs/applications/audio/wavegain/default.nix
+++ b/nixpkgs/pkgs/applications/audio/wavegain/default.nix
@@ -1,7 +1,9 @@
-{ lib, stdenv, fetchFromGitHub }:
+{ lib, stdenv, fetchFromGitHub, fetchpatch }:
 
 stdenv.mkDerivation {
-  name = "wavegain-1.3.1";
+  pname = "wavegain";
+  version = "1.3.1";
+
   src = fetchFromGitHub {
     owner = "MestreLion";
     repo = "wavegain";
@@ -9,6 +11,17 @@ stdenv.mkDerivation {
     sha256 = "0wghqnsbypmr4xcrhb568bfjdnxzzp8qgnws3jslzmzf34dpk5ls";
   };
 
+  patches = [
+    # Upstream fix for -fno-common toolchains.
+    (fetchpatch {
+      name = "fno-common.patch";
+      url = "https://github.com/MestreLion/wavegain/commit/ee5e0f9a0ce34c0cf2769ea6566685a54b938304.patch";
+      sha256 = "11yi0czdn5h5bsqp23cww6yn9lm60cij8i1pzfwcfhgyf6f8ym1n";
+    })
+  ];
+
+  makeFlags = [ "CC=${stdenv.cc.targetPrefix}cc" ];
+
   installPhase = ''
     strip -s wavegain
     install -vD wavegain "$out/bin/wavegain"
diff --git a/nixpkgs/pkgs/applications/audio/whipper/default.nix b/nixpkgs/pkgs/applications/audio/whipper/default.nix
index d66c161664f3..a7a8f054172c 100644
--- a/nixpkgs/pkgs/applications/audio/whipper/default.nix
+++ b/nixpkgs/pkgs/applications/audio/whipper/default.nix
@@ -42,7 +42,7 @@ in python3.pkgs.buildPythonApplication rec {
     mutagen
     pycdio
     pygobject3
-    ruamel_yaml
+    ruamel-yaml
     discid
     pillow
   ];
diff --git a/nixpkgs/pkgs/applications/audio/x42-avldrums/default.nix b/nixpkgs/pkgs/applications/audio/x42-avldrums/default.nix
index 31ef68714f6a..d698ef68da5c 100644
--- a/nixpkgs/pkgs/applications/audio/x42-avldrums/default.nix
+++ b/nixpkgs/pkgs/applications/audio/x42-avldrums/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "x42-avldrums";
-  version = "0.4.1";
+  version = "0.4.2";
 
   src = fetchFromGitHub {
     owner = "x42";
     repo = "avldrums.lv2";
     rev = "v${version}";
-    sha256 = "1vwdp3d8qzd493qa99ddya7iql67bbfxmbcl8hk96lxif2lhmyws";
+    sha256 = "sha256-L9rLSHHQIM6PqZ397TIxR6O1N9GKAQtDfWCofV5R85E=";
     fetchSubmodules = true;
   };
 
diff --git a/nixpkgs/pkgs/applications/audio/x42-plugins/default.nix b/nixpkgs/pkgs/applications/audio/x42-plugins/default.nix
index 557802a8a0fb..70353e2497f1 100644
--- a/nixpkgs/pkgs/applications/audio/x42-plugins/default.nix
+++ b/nixpkgs/pkgs/applications/audio/x42-plugins/default.nix
@@ -3,12 +3,12 @@
 , libGLU, lv2, gtk2, cairo, pango, fftwFloat, zita-convolver }:
 
 stdenv.mkDerivation rec {
-  version = "20210714";
+  version = "20211016";
   pname = "x42-plugins";
 
   src = fetchurl {
     url = "https://gareus.org/misc/x42-plugins/${pname}-${version}.tar.xz";
-    sha256 = "sha256-X389bA+cf3N5eJpAlpDn/CJQ6xM4qzrBQ47fYPIyIHk=";
+    sha256 = "sha256-Z2lXaJweOPB9hWOuy2cx1P9/CAJ+IMc7JtPDKAg2boU=";
   };
 
   nativeBuildInputs = [ pkg-config ];
diff --git a/nixpkgs/pkgs/applications/audio/zam-plugins/default.nix b/nixpkgs/pkgs/applications/audio/zam-plugins/default.nix
index 777ac79a22da..a07bfa60b054 100644
--- a/nixpkgs/pkgs/applications/audio/zam-plugins/default.nix
+++ b/nixpkgs/pkgs/applications/audio/zam-plugins/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "zam-plugins";
-  version = "3.13";
+  version = "3.14";
 
   src = fetchFromGitHub {
     owner = "zamaudio";
     repo = pname;
     rev = version;
-    sha256 = "02blg0iqich4vx5z1ahj6avkh83yqszdiq83p9jd5qwm0i4llqjq";
+    sha256 = "sha256-zlANfFuEXQdXlSu4CuXNyChiuV7wkumaOJqgthl6Y9Q=";
     fetchSubmodules = true;
   };
 
diff --git a/nixpkgs/pkgs/applications/audio/zrythm/default.nix b/nixpkgs/pkgs/applications/audio/zrythm/default.nix
new file mode 100644
index 000000000000..8963cff4d12a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/zrythm/default.nix
@@ -0,0 +1,173 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, SDL2
+, alsa-lib
+, libaudec
+, bash
+, bash-completion
+, breeze-icons
+, carla
+, chromaprint
+, cmake
+, curl
+, dconf
+, libepoxy
+, ffmpeg
+, fftw
+, fftwFloat
+, flex
+, glib
+, gtk3
+, gtksourceview3
+, guile
+, graphviz
+, help2man
+, json-glib
+, jq
+, libbacktrace
+, libcyaml
+, libgtop
+, libjack2
+, libpulseaudio
+, libsamplerate
+, libsndfile
+, libsoundio
+, libxml2
+, libyaml
+, lilv
+, lv2
+, meson
+, ninja
+, pandoc
+, pcre
+, pcre2
+, pkg-config
+, python3
+, reproc
+, rtaudio
+, rtmidi
+, rubberband
+, serd
+, sord
+, sratom
+, texi2html
+, wrapGAppsHook
+, xdg-utils
+, xxHash
+, vamp-plugin-sdk
+, zstd
+}:
+
+stdenv.mkDerivation rec {
+  pname = "zrythm";
+  version = "1.0.0-alpha.26.0.13";
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-dkXlkJ+qlfxV9Bv2UvZZa2iRVm8tgpK4JxkWL2Jeq48=";
+  };
+
+  nativeBuildInputs = [
+    help2man
+    jq
+    libaudec
+    libxml2
+    meson
+    ninja
+    pandoc
+    pkg-config
+    python3
+    python3.pkgs.sphinx
+    texi2html
+    wrapGAppsHook
+    cmake
+  ];
+
+  buildInputs = [
+    SDL2
+    alsa-lib
+    bash-completion
+    carla
+    chromaprint
+    curl
+    dconf
+    libepoxy
+    ffmpeg
+    fftw
+    fftwFloat
+    flex
+    breeze-icons
+    glib
+    gtk3
+    gtksourceview3
+    graphviz
+    guile
+    json-glib
+    libbacktrace
+    libcyaml
+    libgtop
+    libjack2
+    libpulseaudio
+    libsamplerate
+    libsndfile
+    libsoundio
+    libyaml
+    lilv
+    lv2
+    pcre
+    pcre2
+    reproc
+    rtaudio
+    rtmidi
+    rubberband
+    serd
+    sord
+    sratom
+    vamp-plugin-sdk
+    xdg-utils
+    xxHash
+    zstd
+  ];
+
+  mesonFlags = [
+    "-Denable_ffmpeg=true"
+    "-Denable_rtmidi=true"
+    "-Denable_rtaudio=true"
+    "-Denable_sdl=true"
+    "-Dcarla=enabled"
+    "-Dmanpage=true"
+    # "-Duser_manual=true" # needs sphinx-intl
+    "-Dlsp_dsp=disabled"
+    "-Db_lto=false"
+    "-Ddebug=true"
+  ];
+
+  NIX_LDFLAGS = ''
+    -lfftw3_threads -lfftw3f_threads
+  '';
+
+  dontStrip = true;
+
+  postPatch = ''
+    chmod +x scripts/meson-post-install.sh
+    patchShebangs ext/sh-manpage-completions/run.sh scripts/generic_guile_wrap.sh \
+      scripts/meson-post-install.sh tools/check_have_unlimited_memlock.sh
+  '';
+
+  preFixup = ''
+    gappsWrapperArgs+=(
+      --prefix GSETTINGS_SCHEMA_DIR : "$out/share/gsettings-schemas/${pname}-${version}/glib-2.0/schemas/"
+    )
+  '';
+
+  meta = with lib; {
+    homepage = "https://www.zrythm.org";
+    description = "Highly automated and intuitive digital audio workstation";
+    maintainers = with maintainers; [ tshaynik magnetophon ];
+    platforms = platforms.linux;
+    license = licenses.agpl3Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/zynaddsubfx/default.nix b/nixpkgs/pkgs/applications/audio/zynaddsubfx/default.nix
index 4b3cbb171bd0..e738a0fbcbe5 100644
--- a/nixpkgs/pkgs/applications/audio/zynaddsubfx/default.nix
+++ b/nixpkgs/pkgs/applications/audio/zynaddsubfx/default.nix
@@ -89,6 +89,19 @@ in stdenv.mkDerivation rec {
   doCheck = true;
   checkInputs = [ cxxtest ];
 
+  # TODO: Update cmake hook to make it simpler to selectively disable cmake tests: #113829
+  checkPhase = let
+    # Tests fail on aarch64
+    disabledTests = lib.optionals stdenv.isAarch64 [
+      "MessageTest"
+      "UnisonTest"
+    ];
+  in ''
+    runHook preCheck
+    ctest --output-on-failure -E '^${lib.concatStringsSep "|" disabledTests}$'
+    runHook postCheck
+  '';
+
   # When building with zest GUI, patch plugins
   # and standalone executable to properly locate zest
   postFixup = lib.optionalString (guiModule == "zest") ''