summary refs log tree commit diff
path: root/pkgs/applications/audio
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/audio')
-rw-r--r--pkgs/applications/audio/AMB-plugins/default.nix10
-rw-r--r--pkgs/applications/audio/CHOWTapeModel/default.nix70
-rw-r--r--pkgs/applications/audio/FIL-plugins/default.nix10
-rw-r--r--pkgs/applications/audio/MMA/default.nix25
-rw-r--r--pkgs/applications/audio/a2jmidid/default.nix42
-rw-r--r--pkgs/applications/audio/aacgain/default.nix15
-rw-r--r--pkgs/applications/audio/abcde/default.nix6
-rw-r--r--pkgs/applications/audio/adlplug/default.nix92
-rw-r--r--pkgs/applications/audio/aeolus/default.nix10
-rw-r--r--pkgs/applications/audio/airwave/default.nix6
-rw-r--r--pkgs/applications/audio/aj-snapshot/default.nix14
-rw-r--r--pkgs/applications/audio/amarok/default.nix25
-rw-r--r--pkgs/applications/audio/ams-lv2/default.nix8
-rw-r--r--pkgs/applications/audio/ams/default.nix8
-rw-r--r--pkgs/applications/audio/apple-music-electron/default.nix32
-rw-r--r--pkgs/applications/audio/ardour/5.nix9
-rw-r--r--pkgs/applications/audio/ardour/default.nix49
-rw-r--r--pkgs/applications/audio/ario/default.nix41
-rw-r--r--pkgs/applications/audio/artyFX/default.nix10
-rw-r--r--pkgs/applications/audio/ashuffle/default.nix18
-rw-r--r--pkgs/applications/audio/asunder/default.nix10
-rw-r--r--pkgs/applications/audio/aucatctl/default.nix8
-rw-r--r--pkgs/applications/audio/audacious/default.nix8
-rw-r--r--pkgs/applications/audio/audacity/default.nix168
-rw-r--r--pkgs/applications/audio/audio-recorder/default.nix10
-rw-r--r--pkgs/applications/audio/aumix/default.nix12
-rw-r--r--pkgs/applications/audio/autotalent/default.nix4
-rw-r--r--pkgs/applications/audio/axoloti/default.nix4
-rw-r--r--pkgs/applications/audio/axoloti/dfu-util.nix6
-rw-r--r--pkgs/applications/audio/axoloti/libusb1.nix16
-rw-r--r--pkgs/applications/audio/bambootracker/default.nix62
-rw-r--r--pkgs/applications/audio/baudline/default.nix8
-rw-r--r--pkgs/applications/audio/bchoppr/default.nix12
-rw-r--r--pkgs/applications/audio/bitmeter/default.nix6
-rw-r--r--pkgs/applications/audio/bitwig-studio/bitwig-studio1.nix12
-rw-r--r--pkgs/applications/audio/bitwig-studio/bitwig-studio3.nix84
-rw-r--r--pkgs/applications/audio/bitwig-studio/bitwig-studio4.nix75
-rw-r--r--pkgs/applications/audio/bjumblr/default.nix14
-rw-r--r--pkgs/applications/audio/boops/default.nix28
-rw-r--r--pkgs/applications/audio/bristol/default.nix8
-rw-r--r--pkgs/applications/audio/bs1770gain/default.nix22
-rw-r--r--pkgs/applications/audio/bschaffl/default.nix8
-rw-r--r--pkgs/applications/audio/bsequencer/default.nix16
-rw-r--r--pkgs/applications/audio/bshapr/default.nix14
-rw-r--r--pkgs/applications/audio/bslizr/default.nix16
-rw-r--r--pkgs/applications/audio/bucklespring/default.nix63
-rw-r--r--pkgs/applications/audio/cadence/default.nix16
-rw-r--r--pkgs/applications/audio/calf/default.nix8
-rw-r--r--pkgs/applications/audio/callaudiod/default.nix43
-rw-r--r--pkgs/applications/audio/cantata/default.nix144
-rw-r--r--pkgs/applications/audio/cantata/dont-check-for-perl-in-PATH.diff17
-rw-r--r--pkgs/applications/audio/caps/default.nix8
-rw-r--r--pkgs/applications/audio/carla/default.nix22
-rw-r--r--pkgs/applications/audio/caudec/default.nix10
-rw-r--r--pkgs/applications/audio/cava/default.nix10
-rw-r--r--pkgs/applications/audio/cd-discid/default.nix7
-rw-r--r--pkgs/applications/audio/cdparanoia/default.nix21
-rw-r--r--pkgs/applications/audio/cheesecutter/0001-Drop-baked-in-build-date-for-r13y.patch (renamed from pkgs/applications/audio/cheesecutter/0001-fix-impure-build-date-display.patch)13
-rw-r--r--pkgs/applications/audio/cheesecutter/0002-Prepend-libSDL.dylib-to-macOS-SDL-loader.patch25
-rw-r--r--pkgs/applications/audio/cheesecutter/default.nix45
-rw-r--r--pkgs/applications/audio/chuck/default.nix8
-rw-r--r--pkgs/applications/audio/clementine/default.nix97
-rw-r--r--pkgs/applications/audio/clerk/default.nix13
-rw-r--r--pkgs/applications/audio/cmt/default.nix4
-rw-r--r--pkgs/applications/audio/cmus/default.nix26
-rw-r--r--pkgs/applications/audio/cmusfm/default.nix14
-rw-r--r--pkgs/applications/audio/cozy-audiobooks/default.nix33
-rw-r--r--pkgs/applications/audio/crip/default.nix13
-rw-r--r--pkgs/applications/audio/csa/default.nix6
-rw-r--r--pkgs/applications/audio/csound/csound-manual/default.nix8
-rw-r--r--pkgs/applications/audio/csound/csound-qt/default.nix8
-rw-r--r--pkgs/applications/audio/csound/default.nix16
-rw-r--r--pkgs/applications/audio/curseradio/default.nix4
-rw-r--r--pkgs/applications/audio/deadbeef/default.nix24
-rw-r--r--pkgs/applications/audio/deadbeef/plugins/headerbar-gtk3.nix6
-rw-r--r--pkgs/applications/audio/deadbeef/plugins/infobar.nix6
-rw-r--r--pkgs/applications/audio/deadbeef/plugins/lyricbar.nix6
-rw-r--r--pkgs/applications/audio/deadbeef/plugins/mpris2.nix6
-rw-r--r--pkgs/applications/audio/deadbeef/plugins/statusnotifier.nix39
-rw-r--r--pkgs/applications/audio/deadbeef/wrapper.nix2
-rw-r--r--pkgs/applications/audio/denemo/default.nix10
-rw-r--r--pkgs/applications/audio/dfasma/default.nix8
-rw-r--r--pkgs/applications/audio/diopser/default.nix76
-rw-r--r--pkgs/applications/audio/dirt/default.nix7
-rw-r--r--pkgs/applications/audio/distrho/default.nix116
-rw-r--r--pkgs/applications/audio/dr14_tmeter/default.nix6
-rw-r--r--pkgs/applications/audio/dragonfly-reverb/default.nix16
-rw-r--r--pkgs/applications/audio/drumgizmo/default.nix28
-rw-r--r--pkgs/applications/audio/drumkv1/default.nix10
-rw-r--r--pkgs/applications/audio/dsf2flac/default.nix34
-rw-r--r--pkgs/applications/audio/easyeffects/default.nix107
-rw-r--r--pkgs/applications/audio/easytag/default.nix14
-rw-r--r--pkgs/applications/audio/ebumeter/default.nix33
-rw-r--r--pkgs/applications/audio/ecasound/default.nix46
-rw-r--r--pkgs/applications/audio/eflite/default.nix14
-rw-r--r--pkgs/applications/audio/ekho/default.nix8
-rw-r--r--pkgs/applications/audio/ensemble-chorus/default.nix8
-rw-r--r--pkgs/applications/audio/eq10q/default.nix12
-rw-r--r--pkgs/applications/audio/espeak-ng/default.nix33
-rw-r--r--pkgs/applications/audio/espeak-ng/mbrola.patch22
-rw-r--r--pkgs/applications/audio/espeak/default.nix7
-rw-r--r--pkgs/applications/audio/espeak/edit.nix10
-rw-r--r--pkgs/applications/audio/eteroj.lv2/default.nix6
-rw-r--r--pkgs/applications/audio/faust/faust1.nix17
-rw-r--r--pkgs/applications/audio/faust/faust2.nix40
-rw-r--r--pkgs/applications/audio/faust/faust2alqt.nix4
-rw-r--r--pkgs/applications/audio/faust/faust2alsa.nix4
-rw-r--r--pkgs/applications/audio/faust/faust2firefox.nix4
-rw-r--r--pkgs/applications/audio/faust/faust2jack.nix14
-rw-r--r--pkgs/applications/audio/faust/faust2jackrust.nix7
-rw-r--r--pkgs/applications/audio/faust/faust2jaqt.nix8
-rw-r--r--pkgs/applications/audio/faust/faustlive.nix21
-rw-r--r--pkgs/applications/audio/faustPhysicalModeling/default.nix39
-rw-r--r--pkgs/applications/audio/faustStk/default.nix39
-rw-r--r--pkgs/applications/audio/fdkaac/default.nix12
-rw-r--r--pkgs/applications/audio/flac/default.nix17
-rw-r--r--pkgs/applications/audio/flac123/default.nix4
-rw-r--r--pkgs/applications/audio/flacon/default.nix10
-rw-r--r--pkgs/applications/audio/fluidsynth/default.nix10
-rw-r--r--pkgs/applications/audio/fmit/default.nix14
-rw-r--r--pkgs/applications/audio/fmsynth/default.nix10
-rw-r--r--pkgs/applications/audio/fomp/default.nix10
-rw-r--r--pkgs/applications/audio/foo-yc20/default.nix6
-rw-r--r--pkgs/applications/audio/freac/default.nix38
-rw-r--r--pkgs/applications/audio/freewheeling/default.nix14
-rw-r--r--pkgs/applications/audio/freqtweak/default.nix4
-rw-r--r--pkgs/applications/audio/friture/default.nix21
-rw-r--r--pkgs/applications/audio/friture/unlock_constraints.patch34
-rw-r--r--pkgs/applications/audio/ft2-clone/default.nix46
-rw-r--r--pkgs/applications/audio/fverb/default.nix4
-rw-r--r--pkgs/applications/audio/game-music-emu/default.nix14
-rw-r--r--pkgs/applications/audio/gbsplay/default.nix32
-rw-r--r--pkgs/applications/audio/geonkick/default.nix22
-rw-r--r--pkgs/applications/audio/giada/default.nix12
-rw-r--r--pkgs/applications/audio/gigedit/default.nix6
-rw-r--r--pkgs/applications/audio/gjay/default.nix35
-rw-r--r--pkgs/applications/audio/gmpc/default.nix42
-rw-r--r--pkgs/applications/audio/gmu/default.nix9
-rw-r--r--pkgs/applications/audio/gnaural/default.nix33
-rw-r--r--pkgs/applications/audio/gnome-podcasts/default.nix40
-rw-r--r--pkgs/applications/audio/goattracker/default.nix25
-rw-r--r--pkgs/applications/audio/google-musicmanager/default.nix77
-rw-r--r--pkgs/applications/audio/google-play-music-desktop-player/default.nix14
-rw-r--r--pkgs/applications/audio/gpodder/default.nix14
-rw-r--r--pkgs/applications/audio/gradio/default.nix7
-rw-r--r--pkgs/applications/audio/grandorgue/default.nix10
-rw-r--r--pkgs/applications/audio/greg/default.nix7
-rw-r--r--pkgs/applications/audio/gspeech/default.nix2
-rw-r--r--pkgs/applications/audio/gtklick/default.nix8
-rw-r--r--pkgs/applications/audio/gtkpod/default.nix10
-rw-r--r--pkgs/applications/audio/guitarix/default.nix30
-rw-r--r--pkgs/applications/audio/gwc/default.nix12
-rw-r--r--pkgs/applications/audio/gxmatcheq-lv2/default.nix6
-rw-r--r--pkgs/applications/audio/gxplugins-lv2/default.nix12
-rw-r--r--pkgs/applications/audio/helio-workstation/default.nix27
-rw-r--r--pkgs/applications/audio/helm/default.nix31
-rw-r--r--pkgs/applications/audio/helvum/default.nix47
-rw-r--r--pkgs/applications/audio/hivelytracker/default.nix89
-rw-r--r--pkgs/applications/audio/hqplayer-desktop/default.nix91
-rw-r--r--pkgs/applications/audio/hybridreverb2/default.nix12
-rw-r--r--pkgs/applications/audio/hydrogen/0.nix26
-rw-r--r--pkgs/applications/audio/hydrogen/default.nix30
-rw-r--r--pkgs/applications/audio/hydrogen/unstable.nix34
-rw-r--r--pkgs/applications/audio/i-score/default.nix85
-rw-r--r--pkgs/applications/audio/iannix/default.nix25
-rw-r--r--pkgs/applications/audio/id3v2/default.nix4
-rw-r--r--pkgs/applications/audio/industrializer/default.nix12
-rw-r--r--pkgs/applications/audio/infamousPlugins/default.nix6
-rw-r--r--pkgs/applications/audio/ingen/default.nix27
-rw-r--r--pkgs/applications/audio/ir.lv2/default.nix6
-rw-r--r--pkgs/applications/audio/jaaa/default.nix6
-rw-r--r--pkgs/applications/audio/jack-capture/default.nix8
-rw-r--r--pkgs/applications/audio/jack-oscrolloscope/default.nix8
-rw-r--r--pkgs/applications/audio/jack-rack/default.nix17
-rw-r--r--pkgs/applications/audio/jackmeter/default.nix17
-rw-r--r--pkgs/applications/audio/jackmix/default.nix31
-rw-r--r--pkgs/applications/audio/jackmix/no_error.patch18
-rw-r--r--pkgs/applications/audio/jalv/default.nix12
-rw-r--r--pkgs/applications/audio/jamin/default.nix17
-rw-r--r--pkgs/applications/audio/jamulus/default.nix16
-rw-r--r--pkgs/applications/audio/japa/default.nix10
-rw-r--r--pkgs/applications/audio/jmusicbot/default.nix31
-rw-r--r--pkgs/applications/audio/kapitonov-plugins-pack/default.nix6
-rw-r--r--pkgs/applications/audio/keyfinder-cli/default.nix12
-rw-r--r--pkgs/applications/audio/keyfinder/default.nix15
-rw-r--r--pkgs/applications/audio/kid3/default.nix109
-rw-r--r--pkgs/applications/audio/klick/default.nix8
-rw-r--r--pkgs/applications/audio/klystrack/default.nix8
-rw-r--r--pkgs/applications/audio/kmetronome/default.nix14
-rw-r--r--pkgs/applications/audio/ladspa-plugins/default.nix6
-rw-r--r--pkgs/applications/audio/ladspa-sdk/default.nix8
-rw-r--r--pkgs/applications/audio/ladspa-sdk/ladspah.nix8
-rw-r--r--pkgs/applications/audio/lash/default.nix10
-rw-r--r--pkgs/applications/audio/lastfmsubmitd/default.nix4
-rw-r--r--pkgs/applications/audio/librespot/cargo-lock.patch3908
-rw-r--r--pkgs/applications/audio/librespot/default.nix23
-rw-r--r--pkgs/applications/audio/lingot/default.nix20
-rw-r--r--pkgs/applications/audio/linuxband/default.nix16
-rw-r--r--pkgs/applications/audio/linuxsampler/default.nix14
-rw-r--r--pkgs/applications/audio/littlegptracker/0001-Remove-coherency-checks.patch52
-rw-r--r--pkgs/applications/audio/littlegptracker/default.nix74
-rw-r--r--pkgs/applications/audio/lmms/default.nix9
-rw-r--r--pkgs/applications/audio/lollypop/default.nix12
-rw-r--r--pkgs/applications/audio/lsp-plugins/default.nix52
-rw-r--r--pkgs/applications/audio/ltc-tools/default.nix6
-rw-r--r--pkgs/applications/audio/luppp/build-install.patch16
-rw-r--r--pkgs/applications/audio/luppp/default.nix25
-rw-r--r--pkgs/applications/audio/lv2-cpp-tools/default.nix6
-rw-r--r--pkgs/applications/audio/lv2bm/default.nix16
-rw-r--r--pkgs/applications/audio/lyrebird/default.nix63
-rw-r--r--pkgs/applications/audio/m4acut/default.nix24
-rw-r--r--pkgs/applications/audio/magnetophonDSP/CharacterCompressor/default.nix6
-rw-r--r--pkgs/applications/audio/magnetophonDSP/CompBus/default.nix6
-rw-r--r--pkgs/applications/audio/magnetophonDSP/ConstantDetuneChorus/default.nix6
-rw-r--r--pkgs/applications/audio/magnetophonDSP/LazyLimiter/default.nix6
-rw-r--r--pkgs/applications/audio/magnetophonDSP/MBdistortion/default.nix13
-rw-r--r--pkgs/applications/audio/magnetophonDSP/RhythmDelay/default.nix6
-rw-r--r--pkgs/applications/audio/magnetophonDSP/VoiceOfFaust/default.nix6
-rw-r--r--pkgs/applications/audio/magnetophonDSP/faustCompressors/default.nix6
-rw-r--r--pkgs/applications/audio/magnetophonDSP/pluginUtils/default.nix6
-rw-r--r--pkgs/applications/audio/magnetophonDSP/shelfMultiBand/default.nix6
-rw-r--r--pkgs/applications/audio/mamba/default.nix19
-rw-r--r--pkgs/applications/audio/mamba/fix-build.patch10
-rw-r--r--pkgs/applications/audio/mbrola/default.nix39
-rw-r--r--pkgs/applications/audio/mda-lv2/default.nix10
-rw-r--r--pkgs/applications/audio/mellowplayer/default.nix10
-rw-r--r--pkgs/applications/audio/melmatcheq.lv2/default.nix28
-rw-r--r--pkgs/applications/audio/meterbridge/default.nix6
-rw-r--r--pkgs/applications/audio/meters_lv2/default.nix6
-rw-r--r--pkgs/applications/audio/mhwaveedit/default.nix10
-rw-r--r--pkgs/applications/audio/mi2ly/default.nix10
-rw-r--r--pkgs/applications/audio/mid2key/default.nix6
-rw-r--r--pkgs/applications/audio/midas/generic.nix8
-rw-r--r--pkgs/applications/audio/midas/m32edit.nix9
-rw-r--r--pkgs/applications/audio/midas/x32edit.nix9
-rw-r--r--pkgs/applications/audio/midi-visualizer/default.nix42
-rw-r--r--pkgs/applications/audio/midisheetmusic/default.nix10
-rw-r--r--pkgs/applications/audio/mikmod/default.nix13
-rw-r--r--pkgs/applications/audio/milkytracker/default.nix20
-rw-r--r--pkgs/applications/audio/mimic/default.nix16
-rw-r--r--pkgs/applications/audio/mimms/default.nix4
-rw-r--r--pkgs/applications/audio/miniaudicle/default.nix59
-rw-r--r--pkgs/applications/audio/mixxx/default.nix152
-rw-r--r--pkgs/applications/audio/mmtc/default.nix33
-rw-r--r--pkgs/applications/audio/moc/default.nix22
-rw-r--r--pkgs/applications/audio/mod-distortion/default.nix4
-rw-r--r--pkgs/applications/audio/molot-lite/default.nix32
-rw-r--r--pkgs/applications/audio/monkeys-audio/default.nix4
-rw-r--r--pkgs/applications/audio/mooSpace/default.nix35
-rw-r--r--pkgs/applications/audio/mopidy/default.nix50
-rw-r--r--pkgs/applications/audio/mopidy/gmusic.nix29
-rw-r--r--pkgs/applications/audio/mopidy/iris.nix10
-rw-r--r--pkgs/applications/audio/mopidy/local-images.nix32
-rw-r--r--pkgs/applications/audio/mopidy/local-sqlite.nix25
-rw-r--r--pkgs/applications/audio/mopidy/local.nix30
-rw-r--r--pkgs/applications/audio/mopidy/moped.nix4
-rw-r--r--pkgs/applications/audio/mopidy/mopidy.nix35
-rw-r--r--pkgs/applications/audio/mopidy/mopify.nix4
-rw-r--r--pkgs/applications/audio/mopidy/mpd.nix4
-rw-r--r--pkgs/applications/audio/mopidy/mpris.nix10
-rw-r--r--pkgs/applications/audio/mopidy/musicbox-webclient.nix9
-rw-r--r--pkgs/applications/audio/mopidy/podcast.nix31
-rw-r--r--pkgs/applications/audio/mopidy/scrobbler.nix24
-rw-r--r--pkgs/applications/audio/mopidy/somafm.nix6
-rw-r--r--pkgs/applications/audio/mopidy/soundcloud.nix8
-rw-r--r--pkgs/applications/audio/mopidy/spotify-tunigo.nix4
-rw-r--r--pkgs/applications/audio/mopidy/spotify.nix4
-rw-r--r--pkgs/applications/audio/mopidy/subidy.nix24
-rw-r--r--pkgs/applications/audio/mopidy/tunein.nix13
-rw-r--r--pkgs/applications/audio/mopidy/youtube.nix8
-rw-r--r--pkgs/applications/audio/mousai/default.nix69
-rw-r--r--pkgs/applications/audio/mp3blaster/default.nix8
-rw-r--r--pkgs/applications/audio/mp3gain/default.nix28
-rw-r--r--pkgs/applications/audio/mp3info/default.nix13
-rw-r--r--pkgs/applications/audio/mp3splt/default.nix6
-rw-r--r--pkgs/applications/audio/mp3val/default.nix8
-rw-r--r--pkgs/applications/audio/mpc/default.nix17
-rw-r--r--pkgs/applications/audio/mpc123/default.nix6
-rw-r--r--pkgs/applications/audio/mpdevil/default.nix52
-rw-r--r--pkgs/applications/audio/mpg123/default.nix48
-rw-r--r--pkgs/applications/audio/mpg321/default.nix9
-rw-r--r--pkgs/applications/audio/munt/default.nix55
-rw-r--r--pkgs/applications/audio/mup/default.nix4
-rw-r--r--pkgs/applications/audio/muse/default.nix12
-rw-r--r--pkgs/applications/audio/musescore/darwin.nix7
-rw-r--r--pkgs/applications/audio/musescore/default.nix25
-rw-r--r--pkgs/applications/audio/musikcube/default.nix18
-rw-r--r--pkgs/applications/audio/musly/default.nix6
-rw-r--r--pkgs/applications/audio/muso/default.nix37
-rw-r--r--pkgs/applications/audio/mympd/default.nix52
-rw-r--r--pkgs/applications/audio/myxer/default.nix38
-rw-r--r--pkgs/applications/audio/ncmpc/default.nix28
-rw-r--r--pkgs/applications/audio/ncmpcpp/default.nix29
-rw-r--r--pkgs/applications/audio/ncpamixer/default.nix20
-rw-r--r--pkgs/applications/audio/ncspot/default.nix13
-rw-r--r--pkgs/applications/audio/netease-cloud-music/default.nix81
-rw-r--r--pkgs/applications/audio/netease-music-tui/cargo-lock.patch2655
-rw-r--r--pkgs/applications/audio/netease-music-tui/default.nix27
-rw-r--r--pkgs/applications/audio/netease-music-tui/update-cargo-lock.sh20
-rw-r--r--pkgs/applications/audio/new-session-manager/default.nix27
-rw-r--r--pkgs/applications/audio/ninjas2/default.nix6
-rw-r--r--pkgs/applications/audio/noise-repellent/default.nix6
-rw-r--r--pkgs/applications/audio/noisetorch/config.patch13
-rw-r--r--pkgs/applications/audio/noisetorch/default.nix26
-rw-r--r--pkgs/applications/audio/noisetorch/embedlibrnnoise.patch13
-rw-r--r--pkgs/applications/audio/noisetorch/version.patch37
-rw-r--r--pkgs/applications/audio/non/default.nix10
-rw-r--r--pkgs/applications/audio/nootka/default.nix15
-rw-r--r--pkgs/applications/audio/nootka/unstable.nix10
-rw-r--r--pkgs/applications/audio/normalize/default.nix4
-rw-r--r--pkgs/applications/audio/nova-filters/default.nix6
-rw-r--r--pkgs/applications/audio/nuclear/default.nix32
-rw-r--r--pkgs/applications/audio/ocenaudio/default.nix54
-rw-r--r--pkgs/applications/audio/openmpt123/default.nix25
-rw-r--r--pkgs/applications/audio/opus-tools/default.nix18
-rw-r--r--pkgs/applications/audio/opusfile/default.nix22
-rw-r--r--pkgs/applications/audio/opusfile/disable-cert-store.patch35
-rw-r--r--pkgs/applications/audio/opustags/default.nix37
-rw-r--r--pkgs/applications/audio/orca-c/default.nix26
-rw-r--r--pkgs/applications/audio/osmid/default.nix8
-rw-r--r--pkgs/applications/audio/oxefmsynth/default.nix43
-rw-r--r--pkgs/applications/audio/padthv1/default.nix12
-rw-r--r--pkgs/applications/audio/pamix/default.nix8
-rw-r--r--pkgs/applications/audio/pamixer/default.nix4
-rw-r--r--pkgs/applications/audio/paprefs/default.nix8
-rw-r--r--pkgs/applications/audio/parlatype/default.nix7
-rw-r--r--pkgs/applications/audio/patchage/default.nix14
-rw-r--r--pkgs/applications/audio/paulstretch/default.nix8
-rw-r--r--pkgs/applications/audio/pavucontrol/default.nix21
-rw-r--r--pkgs/applications/audio/pd-plugins/cyclone/default.nix8
-rw-r--r--pkgs/applications/audio/pd-plugins/gem/default.nix26
-rw-r--r--pkgs/applications/audio/pd-plugins/helmholtz/default.nix11
-rw-r--r--pkgs/applications/audio/pd-plugins/maxlib/default.nix8
-rw-r--r--pkgs/applications/audio/pd-plugins/mrpeach/default.nix8
-rw-r--r--pkgs/applications/audio/pd-plugins/puremapping/default.nix11
-rw-r--r--pkgs/applications/audio/pd-plugins/timbreid/default.nix11
-rw-r--r--pkgs/applications/audio/pd-plugins/zexy/default.nix8
-rw-r--r--pkgs/applications/audio/petrifoo/default.nix14
-rw-r--r--pkgs/applications/audio/pianobar/default.nix15
-rw-r--r--pkgs/applications/audio/pianobooster/default.nix10
-rw-r--r--pkgs/applications/audio/pianoteq/default.nix200
-rw-r--r--pkgs/applications/audio/picard/default.nix52
-rw-r--r--pkgs/applications/audio/picoloop/default.nix50
-rw-r--r--pkgs/applications/audio/pifi/Gemfile2
-rw-r--r--pkgs/applications/audio/pifi/Gemfile.lock39
-rw-r--r--pkgs/applications/audio/pifi/default.nix18
-rw-r--r--pkgs/applications/audio/pifi/gemset.nix137
-rw-r--r--pkgs/applications/audio/pithos/default.nix10
-rw-r--r--pkgs/applications/audio/playbar2/default.nix6
-rw-r--r--pkgs/applications/audio/plexamp/default.nix13
-rwxr-xr-xpkgs/applications/audio/plexamp/update-plexamp.sh54
-rw-r--r--pkgs/applications/audio/plugin-torture/default.nix6
-rw-r--r--pkgs/applications/audio/plujain-ramp/default.nix27
-rw-r--r--pkgs/applications/audio/pmidi/default.nix8
-rw-r--r--pkgs/applications/audio/polyphone/default.nix8
-rw-r--r--pkgs/applications/audio/ponymix/default.nix6
-rw-r--r--pkgs/applications/audio/praat/default.nix32
-rw-r--r--pkgs/applications/audio/pragha/default.nix103
-rw-r--r--pkgs/applications/audio/projectm/default.nix16
-rw-r--r--pkgs/applications/audio/pt2-clone/default.nix16
-rw-r--r--pkgs/applications/audio/ptcollab/default.nix44
-rw-r--r--pkgs/applications/audio/puddletag/default.nix41
-rw-r--r--pkgs/applications/audio/pulseaudio-ctl/default.nix12
-rw-r--r--pkgs/applications/audio/pulseaudio-dlna/default.nix20
-rw-r--r--pkgs/applications/audio/pulseaudio-dlna/zeroconf.nix6
-rw-r--r--pkgs/applications/audio/pulseaudio-modules-bt/default.nix18
-rw-r--r--pkgs/applications/audio/pulseaudio-modules-bt/fix-install-path.patch2
-rw-r--r--pkgs/applications/audio/pulseeffects-legacy/default.nix (renamed from pkgs/applications/audio/pulseeffects/default.nix)24
-rw-r--r--pkgs/applications/audio/puredata/default.nix8
-rw-r--r--pkgs/applications/audio/puredata/wrapper.nix2
-rw-r--r--pkgs/applications/audio/qjackctl/default.nix32
-rw-r--r--pkgs/applications/audio/qmidiarp/default.nix8
-rw-r--r--pkgs/applications/audio/qmidinet/default.nix10
-rw-r--r--pkgs/applications/audio/qmidiroute/default.nix10
-rw-r--r--pkgs/applications/audio/qmmp/default.nix31
-rw-r--r--pkgs/applications/audio/qsampler/default.nix6
-rw-r--r--pkgs/applications/audio/qsynth/default.nix12
-rw-r--r--pkgs/applications/audio/qtractor/default.nix82
-rw-r--r--pkgs/applications/audio/qtscrobbler/default.nix4
-rw-r--r--pkgs/applications/audio/quadrafuzz/default.nix43
-rw-r--r--pkgs/applications/audio/quodlibet/default.nix35
-rw-r--r--pkgs/applications/audio/r128gain/default.nix25
-rw-r--r--pkgs/applications/audio/r128gain/ffmpeg-location.patch4
-rw-r--r--pkgs/applications/audio/radiotray-ng/default.nix12
-rw-r--r--pkgs/applications/audio/rakarrack/default.nix6
-rw-r--r--pkgs/applications/audio/real_time_config_quick_scan/default.nix7
-rw-r--r--pkgs/applications/audio/reaper/default.nix75
-rw-r--r--pkgs/applications/audio/redoflacs/default.nix4
-rw-r--r--pkgs/applications/audio/renoise/default.nix48
-rw-r--r--pkgs/applications/audio/rhvoice/default.nix4
-rw-r--r--pkgs/applications/audio/rhythmbox/default.nix55
-rw-r--r--pkgs/applications/audio/rkrlv2/default.nix28
-rw-r--r--pkgs/applications/audio/rosegarden/default.nix16
-rw-r--r--pkgs/applications/audio/rubyripper/default.nix7
-rw-r--r--pkgs/applications/audio/rymcast/default.nix32
-rw-r--r--pkgs/applications/audio/samplv1/default.nix17
-rw-r--r--pkgs/applications/audio/sayonara/default.nix50
-rw-r--r--pkgs/applications/audio/sc68/default.nix39
-rw-r--r--pkgs/applications/audio/schismtracker/default.nix24
-rw-r--r--pkgs/applications/audio/scream/default.nix46
-rw-r--r--pkgs/applications/audio/seq24/default.nix8
-rw-r--r--pkgs/applications/audio/seq66/default.nix37
-rw-r--r--pkgs/applications/audio/setbfree/default.nix10
-rw-r--r--pkgs/applications/audio/sfizz/default.nix41
-rw-r--r--pkgs/applications/audio/sfxr/default.nix8
-rw-r--r--pkgs/applications/audio/shntool/default.nix8
-rw-r--r--pkgs/applications/audio/shortwave/default.nix39
-rw-r--r--pkgs/applications/audio/sidplayfp/default.nix54
-rw-r--r--pkgs/applications/audio/sisco.lv2/default.nix6
-rw-r--r--pkgs/applications/audio/snapcast/default.nix19
-rw-r--r--pkgs/applications/audio/snd/default.nix36
-rw-r--r--pkgs/applications/audio/sndpeek/default.nix6
-rw-r--r--pkgs/applications/audio/sonata/default.nix48
-rw-r--r--pkgs/applications/audio/songrec/default.nix39
-rw-r--r--pkgs/applications/audio/sonic-lineup/default.nix16
-rw-r--r--pkgs/applications/audio/sonic-pi/default.nix8
-rw-r--r--pkgs/applications/audio/sonic-visualiser/default.nix24
-rw-r--r--pkgs/applications/audio/sooperlooper/default.nix12
-rw-r--r--pkgs/applications/audio/sorcer/default.nix10
-rw-r--r--pkgs/applications/audio/sound-juicer/default.nix68
-rw-r--r--pkgs/applications/audio/soundkonverter/default.nix35
-rw-r--r--pkgs/applications/audio/soundscape-renderer/default.nix10
-rw-r--r--pkgs/applications/audio/soundtracker/default.nix44
-rw-r--r--pkgs/applications/audio/spectmorph/default.nix12
-rw-r--r--pkgs/applications/audio/spectrojack/default.nix10
-rw-r--r--pkgs/applications/audio/speech-denoiser/default.nix6
-rw-r--r--pkgs/applications/audio/spek/default.nix6
-rw-r--r--pkgs/applications/audio/split2flac/default.nix6
-rw-r--r--pkgs/applications/audio/spot/default.nix79
-rw-r--r--pkgs/applications/audio/spotify-cli-linux/default.nix29
-rw-r--r--pkgs/applications/audio/spotify-qt/default.nix36
-rw-r--r--pkgs/applications/audio/spotify-tui/default.nix25
-rw-r--r--pkgs/applications/audio/spotify/default.nix42
-rw-r--r--pkgs/applications/audio/spotify/wrapper.nix31
-rw-r--r--pkgs/applications/audio/spotifyd/default.nix37
-rw-r--r--pkgs/applications/audio/spotifywm/default.nix4
-rw-r--r--pkgs/applications/audio/squeezelite/default.nix16
-rw-r--r--pkgs/applications/audio/squishyball/default.nix8
-rw-r--r--pkgs/applications/audio/ssrc/default.nix4
-rw-r--r--pkgs/applications/audio/stochas/default.nix33
-rw-r--r--pkgs/applications/audio/stone-phaser/default.nix6
-rw-r--r--pkgs/applications/audio/strawberry/default.nix56
-rw-r--r--pkgs/applications/audio/streamripper/default.nix6
-rw-r--r--pkgs/applications/audio/string-machine/default.nix4
-rw-r--r--pkgs/applications/audio/sublime-music/default.nix46
-rw-r--r--pkgs/applications/audio/sunvox/default.nix12
-rw-r--r--pkgs/applications/audio/surge/default.nix54
-rw-r--r--pkgs/applications/audio/svox/default.nix35
-rw-r--r--pkgs/applications/audio/swh-lv2/default.nix6
-rw-r--r--pkgs/applications/audio/synthv1/default.nix12
-rw-r--r--pkgs/applications/audio/tageditor/default.nix58
-rw-r--r--pkgs/applications/audio/talentedhack/default.nix6
-rw-r--r--pkgs/applications/audio/tambura/default.nix4
-rw-r--r--pkgs/applications/audio/tamgamp.lv2/default.nix4
-rw-r--r--pkgs/applications/audio/tap-plugins/default.nix32
-rw-r--r--pkgs/applications/audio/tetraproc/default.nix8
-rw-r--r--pkgs/applications/audio/timemachine/default.nix10
-rw-r--r--pkgs/applications/audio/tonelib-gfx/default.nix65
-rw-r--r--pkgs/applications/audio/tonelib-jam/default.nix65
-rw-r--r--pkgs/applications/audio/tonelib-zoom/default.nix53
-rw-r--r--pkgs/applications/audio/tony/default.nix15
-rw-r--r--pkgs/applications/audio/transcode/default.nix13
-rw-r--r--pkgs/applications/audio/transcribe/default.nix25
-rw-r--r--pkgs/applications/audio/traverso/default.nix11
-rw-r--r--pkgs/applications/audio/tree-from-tags/default.nix4
-rw-r--r--pkgs/applications/audio/tree-from-tags/gemset.nix2
-rw-r--r--pkgs/applications/audio/tuijam/default.nix46
-rw-r--r--pkgs/applications/audio/tunefish/default.nix43
-rw-r--r--pkgs/applications/audio/uade123/default.nix79
-rw-r--r--pkgs/applications/audio/uhhyou.lv2/default.nix14
-rw-r--r--pkgs/applications/audio/vcv-rack/default.nix18
-rw-r--r--pkgs/applications/audio/vgmstream/default.nix33
-rw-r--r--pkgs/applications/audio/vimpc/default.nix19
-rw-r--r--pkgs/applications/audio/virtual-ans/default.nix10
-rw-r--r--pkgs/applications/audio/vkeybd/default.nix7
-rw-r--r--pkgs/applications/audio/vmpk/default.nix22
-rw-r--r--pkgs/applications/audio/vocal/default.nix23
-rw-r--r--pkgs/applications/audio/vocproc/default.nix6
-rw-r--r--pkgs/applications/audio/vorbis-tools/default.nix31
-rw-r--r--pkgs/applications/audio/waon/default.nix8
-rw-r--r--pkgs/applications/audio/wavegain/default.nix8
-rw-r--r--pkgs/applications/audio/whipper/default.nix73
-rw-r--r--pkgs/applications/audio/whipper/paths.patch32
-rw-r--r--pkgs/applications/audio/wolf-shaper/default.nix10
-rw-r--r--pkgs/applications/audio/x42-avldrums/default.nix6
-rw-r--r--pkgs/applications/audio/x42-gmsynth/default.nix6
-rw-r--r--pkgs/applications/audio/x42-plugins/default.nix10
-rw-r--r--pkgs/applications/audio/xmp/default.nix13
-rw-r--r--pkgs/applications/audio/xsynth-dssi/default.nix10
-rw-r--r--pkgs/applications/audio/xtuner/default.nix39
-rw-r--r--pkgs/applications/audio/yams/default.nix29
-rw-r--r--pkgs/applications/audio/yasr/default.nix8
-rw-r--r--pkgs/applications/audio/ympd/default.nix21
-rw-r--r--pkgs/applications/audio/yoshimi/default.nix10
-rw-r--r--pkgs/applications/audio/ytmdesktop/default.nix36
-rw-r--r--pkgs/applications/audio/zam-plugins/default.nix23
-rw-r--r--pkgs/applications/audio/zita-ajbridge/default.nix11
-rw-r--r--pkgs/applications/audio/zita-at1/default.nix9
-rw-r--r--pkgs/applications/audio/zita-njbridge/default.nix4
-rw-r--r--pkgs/applications/audio/zynaddsubfx/default.nix117
-rw-r--r--pkgs/applications/audio/zynaddsubfx/mruby-zest/default.nix109
-rw-r--r--pkgs/applications/audio/zynaddsubfx/mruby-zest/force-gcc-as-linker.patch13
-rw-r--r--pkgs/applications/audio/zynaddsubfx/mruby-zest/system-libuv.patch113
503 files changed, 14752 insertions, 3554 deletions
diff --git a/pkgs/applications/audio/AMB-plugins/default.nix b/pkgs/applications/audio/AMB-plugins/default.nix
index 2e2af8f3a9a..8b03a97d128 100644
--- a/pkgs/applications/audio/AMB-plugins/default.nix
+++ b/pkgs/applications/audio/AMB-plugins/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ladspaH
+{ lib, stdenv, fetchurl, ladspaH
 }:
 
 stdenv.mkDerivation rec {
@@ -20,14 +20,14 @@ stdenv.mkDerivation rec {
   preInstall="mkdir -p $out/lib/ladspa";
 
   meta = {
-    description = ''A set of ambisonics ladspa plugins'';
+    description = "A set of ambisonics ladspa plugins";
     longDescription = ''
       Mono and stereo to B-format panning, horizontal rotator, square, hexagon and cube decoders.
     '';
     version = version;
     homepage = "http://kokkinizita.linuxaudio.org/linuxaudio/ladspa/index.html";
-    license = stdenv.lib.licenses.gpl2Plus;
-    maintainers = [ stdenv.lib.maintainers.magnetophon ];
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.gpl2Plus;
+    maintainers = [ lib.maintainers.magnetophon ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/CHOWTapeModel/default.nix b/pkgs/applications/audio/CHOWTapeModel/default.nix
new file mode 100644
index 00000000000..9b9649cf9f8
--- /dev/null
+++ b/pkgs/applications/audio/CHOWTapeModel/default.nix
@@ -0,0 +1,70 @@
+{ alsa-lib
+, curl
+, fetchFromGitHub
+, freeglut
+, freetype
+, libGL
+, libXcursor
+, libXext
+, libXinerama
+, libXrandr
+, libjack2
+, pkg-config
+, python3
+, stdenv
+, lib
+}:
+
+stdenv.mkDerivation rec {
+  pname = "CHOWTapeModel";
+  version = "unstable-2020-12-12";
+
+  src = fetchFromGitHub {
+    owner = "jatinchowdhury18";
+    repo = "AnalogTapeModel";
+    rev = "a7cf10c3f790d306ce5743bb731e4bc2c1230d70";
+    sha256 = "09nq8x2dwabncbp039dqm1brzcz55zg9kpxd4p5348xlaz5m4661";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+  ];
+
+  buildInputs = [
+    alsa-lib
+    curl
+    freeglut
+    freetype
+    libGL
+    libXcursor
+    libXext
+    libXinerama
+    libXrandr
+    libjack2
+    python3
+  ];
+
+  buildPhase = ''
+    cd Plugin/
+    ./build_linux.sh
+  '';
+
+  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
+    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";
+    license = with licenses; [ gpl3Only ];
+    maintainers = with maintainers; [ magnetophon ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/audio/FIL-plugins/default.nix b/pkgs/applications/audio/FIL-plugins/default.nix
index 253e724cd31..98fc3495d8f 100644
--- a/pkgs/applications/audio/FIL-plugins/default.nix
+++ b/pkgs/applications/audio/FIL-plugins/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ladspaH
+{ lib, stdenv, fetchurl, ladspaH
 }:
 
 stdenv.mkDerivation rec {
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
   preInstall="mkdir -p $out/lib/ladspa";
 
   meta = {
-    description = ''a four-band parametric equaliser, which has the nice property of being stable even while parameters are being changed'';
+    description = "a four-band parametric equaliser, which has the nice property of being stable even while parameters are being changed";
     longDescription = ''
       Each section has an active/bypass switch, frequency, bandwidth and gain controls.
       There is also a global bypass switch and gain control.
@@ -30,8 +30,8 @@ stdenv.mkDerivation rec {
     '';
     version = version;
     homepage = "http://kokkinizita.linuxaudio.org/linuxaudio/ladspa/index.html";
-    license = stdenv.lib.licenses.gpl2Plus;
-    maintainers = [ stdenv.lib.maintainers.magnetophon ];
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.gpl2Plus;
+    maintainers = [ lib.maintainers.magnetophon ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/MMA/default.nix b/pkgs/applications/audio/MMA/default.nix
index 8b7629bc908..3034de750cf 100644
--- a/pkgs/applications/audio/MMA/default.nix
+++ b/pkgs/applications/audio/MMA/default.nix
@@ -1,25 +1,26 @@
-{ stdenv, fetchurl, makeWrapper, python3, alsaUtils, timidity }:
+{ lib, stdenv, fetchurl, makeWrapper, python3, alsa-utils, timidity }:
 
   stdenv.mkDerivation rec {
-  version = "20.02";
+  version = "20.12";
   pname = "mma";
 
   src = fetchurl {
     url = "https://www.mellowood.ca/mma/mma-bin-${version}.tar.gz";
-    sha256 = "0i9c3f14j7wy2c86ky83f2vgmg5bihnnwsmpkq13fgqjsaf0qwnv";
+    sha256 = "18k0hwlqky5x4y461fxmw77gvz7z8jyrvxicrqphsgvwwinzy732";
   };
 
-  buildInputs = [ makeWrapper python3 alsaUtils timidity ];
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ python3 alsa-utils timidity ];
 
   patchPhase = ''
-    sed -i 's@/usr/bin/aplaymidi@/${alsaUtils}/bin/aplaymidi@g' mma-splitrec
-    sed -i 's@/usr/bin/aplaymidi@/${alsaUtils}/bin/aplaymidi@g' util/mma-splitrec.py
-    sed -i 's@/usr/bin/arecord@/${alsaUtils}/bin/arecord@g' mma-splitrec
-    sed -i 's@/usr/bin/arecord@/${alsaUtils}/bin/arecord@g' util/mma-splitrec.py
+    sed -i 's@/usr/bin/aplaymidi@/${alsa-utils}/bin/aplaymidi@g' mma-splitrec
+    sed -i 's@/usr/bin/aplaymidi@/${alsa-utils}/bin/aplaymidi@g' util/mma-splitrec.py
+    sed -i 's@/usr/bin/arecord@/${alsa-utils}/bin/arecord@g' mma-splitrec
+    sed -i 's@/usr/bin/arecord@/${alsa-utils}/bin/arecord@g' util/mma-splitrec.py
     sed -i 's@/usr/bin/timidity@/${timidity}/bin/timidity@g' mma-splitrec
     sed -i 's@/usr/bin/timidity@/${timidity}/bin/timidity@g' util/mma-splitrec.py
     find . -type f | xargs sed -i 's@/usr/bin/env python@${python3.interpreter}@g'
-    find . -type f | xargs sed -i 's@/usr/bin/python@${python3.interpreter}@g'
+    find . -type f | xargs sed -i 's@/usr/bin/python3@${python3.interpreter}@g'
   '';
 
   installPhase = ''
@@ -62,8 +63,8 @@
   meta = {
     description = "Creates MIDI tracks for a soloist to perform over from a user supplied file containing chords";
     homepage =  "https://www.mellowood.ca/mma/index.html";
-    license = stdenv.lib.licenses.gpl2;
-    maintainers = [ stdenv.lib.maintainers.magnetophon ];
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.gpl2;
+    maintainers = [ lib.maintainers.magnetophon ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/a2jmidid/default.nix b/pkgs/applications/audio/a2jmidid/default.nix
index f4a9383c29c..eafbfec9664 100644
--- a/pkgs/applications/audio/a2jmidid/default.nix
+++ b/pkgs/applications/audio/a2jmidid/default.nix
@@ -1,41 +1,27 @@
-{ stdenv, fetchurl, fetchpatch, makeWrapper, pkgconfig, alsaLib, dbus, libjack2
-, wafHook
-, python2Packages}:
+{ lib, stdenv, fetchFromGitHub, fetchpatch, makeWrapper, pkg-config, alsa-lib, dbus, libjack2
+, python3Packages , meson, ninja }:
 
-let
-  inherit (python2Packages) python dbus-python;
-in stdenv.mkDerivation {
+stdenv.mkDerivation rec {
   pname = "a2jmidid";
-  version = "8";
+  version = "9";
 
-  src = fetchurl {
-    url = "https://github.com/linuxaudio/a2jmidid/archive/7383d268c4bfe85df9f10df6351677659211d1ca.tar.gz";
-    sha256 = "06dgf5655znbvrd7fhrv8msv6zw8vk0hjqglcqkh90960mnnmwz7";
+  src = fetchFromGitHub {
+    owner = "linuxaudio";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-WNt74tSWV8bY4TnpLp86PsnrjkqWynJJt3Ra4gZl2fQ=";
   };
 
-  nativeBuildInputs = [ pkgconfig makeWrapper wafHook ];
-  buildInputs = [ alsaLib dbus libjack2 python dbus-python ];
-
-  patches = [
-    (fetchpatch {
-      url = "https://github.com/linuxaudio/a2jmidid/commit/24e3b8e543256ae8fdfb4b75eb9fd775f07c46e2.diff";
-      sha256 = "1nxrvnhxlgqc9wbxnp1gnpw4wjyzxvymwcg1gh2nqzmssgfykfkc";
-    })
-    (fetchpatch {
-      url = "https://github.com/linuxaudio/a2jmidid/commit/7f82da7eb2f540a94db23331be98d42a58ddc269.diff";
-      sha256 = "1nab9zf0agbcj5pvhl90pz0cx1d204d4janqflc5ymjhy8jyrsdv";
-    })
-    (fetchpatch {
-      url = "https://github.com/linuxaudio/a2jmidid/commit/c07775d021a71cb91bf64ce1391cf525415cb060.diff";
-      sha256 = "172v9hri03qdqi8a3zsg227k5qxldd8v5bj4jk7fyk5jf50fcxga";
-    })
-  ];
+  nativeBuildInputs = [ pkg-config makeWrapper meson ninja ];
+  buildInputs = [ alsa-lib dbus libjack2 ] ++
+                (with python3Packages; [ python dbus-python ]);
 
   postInstall = ''
     wrapProgram $out/bin/a2j_control --set PYTHONPATH $PYTHONPATH
+    substituteInPlace $out/bin/a2j --replace "a2j_control" "$out/bin/a2j_control"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Daemon for exposing legacy ALSA sequencer applications in JACK MIDI system";
     license = licenses.gpl2;
     maintainers = [ maintainers.goibhniu ];
diff --git a/pkgs/applications/audio/aacgain/default.nix b/pkgs/applications/audio/aacgain/default.nix
index 194514c65b5..517a53a5fec 100644
--- a/pkgs/applications/audio/aacgain/default.nix
+++ b/pkgs/applications/audio/aacgain/default.nix
@@ -1,9 +1,10 @@
-{ stdenv, fetchFromGitHub, fetchpatch }:
+{ lib, stdenv, fetchFromGitLab, fetchpatch }:
 
-stdenv.mkDerivation {
-  name = "aacgain-1.9.0";
+stdenv.mkDerivation rec {
+  pname = "aacgain";
+  version = "1.9.0";
 
-  src = fetchFromGitHub {
+  src = fetchFromGitLab {
     owner = "mulx";
     repo = "aacgain";
     rev = "7c29dccd878ade1301710959aeebe87a8f0828f5";
@@ -12,6 +13,10 @@ stdenv.mkDerivation {
 
   hardeningDisable = [ "format" ];
 
+  # -Wnarrowing is enabled by default in recent GCC versions,
+  # causing compilation to fail.
+  NIX_CFLAGS_COMPILE = "-Wno-narrowing";
+
   postPatch = ''
     (
       cd mp4v2
@@ -53,7 +58,7 @@ stdenv.mkDerivation {
     install -D aacgain/aacgain "$out/bin/aacgain"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "ReplayGain for AAC files";
     homepage = "https://aacgain.altosdesign.com";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/abcde/default.nix b/pkgs/applications/audio/abcde/default.nix
index 4cb28e512a7..1c5fc571814 100644
--- a/pkgs/applications/audio/abcde/default.nix
+++ b/pkgs/applications/audio/abcde/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, libcdio-paranoia, cddiscid, wget, which, vorbis-tools, id3v2, eyeD3
+{ lib, stdenv, fetchurl, libcdio-paranoia, cddiscid, wget, which, vorbis-tools, id3v2, eyeD3
 , lame, flac, glyr
 , perlPackages
 , makeWrapper }:
@@ -38,14 +38,14 @@ in
       for cmd in abcde cddb-tool abcde-musicbrainz-tool; do
         wrapProgram "$out/bin/$cmd" \
           --prefix PERL5LIB : "$PERL5LIB" \
-          --prefix PATH ":" ${stdenv.lib.makeBinPath [
+          --prefix PATH ":" ${lib.makeBinPath [
             "$out" which libcdio-paranoia cddiscid wget
             vorbis-tools id3v2 eyeD3 lame flac glyr
           ]}
       done
     '';
 
-    meta = with stdenv.lib; {
+    meta = with lib; {
       homepage = "http://abcde.einval.com/wiki/";
       license = licenses.gpl2Plus;
       maintainers = with maintainers; [ gebner ];
diff --git a/pkgs/applications/audio/adlplug/default.nix b/pkgs/applications/audio/adlplug/default.nix
index 7dcc13eb96d..a501cd0a1d8 100644
--- a/pkgs/applications/audio/adlplug/default.nix
+++ b/pkgs/applications/audio/adlplug/default.nix
@@ -1,19 +1,48 @@
-{ stdenv, fetchFromGitHub, cmake, pkgconfig, libjack2, alsaLib
-, freetype, libX11, libXrandr, libXinerama, libXext, libXcursor
-, fetchpatch, fmt
-, adlplugChip ? "-DADLplug_CHIP=OPL3"
-, pname ? "ADLplug" }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, fetchpatch
+, cmake
+, pkg-config
+, fmt
+, liblo
+, alsa-lib
+, freetype
+, libX11
+, libXrandr
+, libXinerama
+, libXext
+, libXcursor
+, libobjc
+, Cocoa
+, CoreServices
+, WebKit
+, DiscRecording
 
+  # Enabling JACK requires a JACK server at runtime, no fallback mechanism
+, withJack ? false, jack
+
+, type ? "ADL"
+}:
+
+assert lib.assertOneOf "type" type [ "ADL" "OPN" ];
+let
+  chip = {
+    ADL = "OPL3";
+    OPN = "OPN2";
+  }.${type};
+  mainProgram = "${type}plug";
+in
 stdenv.mkDerivation rec {
-  inherit pname;
+  pname = "${lib.strings.toLower type}plug";
   version = "1.0.2";
 
   src = fetchFromGitHub {
     owner = "jpcima";
     repo = "ADLplug";
     rev = "v${version}";
-    sha256 = "0mqx4bzri8s880v7jwd24nb93m5i3aklqld0b3h0hjnz0lh2qz0f";
     fetchSubmodules = true;
+    sha256 = "0mqx4bzri8s880v7jwd24nb93m5i3aklqld0b3h0hjnz0lh2qz0f";
   };
 
   patches = [
@@ -25,19 +54,52 @@ stdenv.mkDerivation rec {
     })
   ];
 
-  cmakeFlags = [ adlplugChip "-DADLplug_USE_SYSTEM_FMT=ON" ];
+  cmakeFlags = [
+    "-DADLplug_CHIP=${chip}"
+    "-DADLplug_USE_SYSTEM_FMT=ON"
+    "-DADLplug_Jack=${if withJack then "ON" else "OFF"}"
+  ];
+
+  NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isDarwin (toString [
+    "-isystem ${CoreServices}/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers"
+  ]);
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+  ];
 
   buildInputs = [
-    libjack2 alsaLib freetype libX11 libXrandr libXinerama libXext
+    fmt
+    liblo
+  ] ++ lib.optionals stdenv.hostPlatform.isLinux [
+    alsa-lib
+    freetype
+    libX11
+    libXrandr
+    libXinerama
+    libXext
     libXcursor
-  ];
-  nativeBuildInputs = [ cmake pkgconfig fmt ];
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
+    libobjc
+    Cocoa
+    CoreServices
+    WebKit
+    DiscRecording
+  ] ++ lib.optional withJack jack;
+
+  postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
+    mkdir $out/Applications
+    mv $out/bin/${mainProgram}.app $out/Applications/
+    ln -s $out/{Applications/${mainProgram}.app/Contents/MacOS,bin}/${mainProgram}
+  '';
 
-  meta = with stdenv.lib; {
-    description = "OPL3 and OPN2 FM Chip Synthesizer";
+  meta = with lib; {
+    inherit mainProgram;
+    description = "${chip} FM Chip Synthesizer";
     homepage = src.meta.homepage;
     license = licenses.boost;
-    platforms = platforms.linux;
-    maintainers = with maintainers; [ gnidorah ];
+    platforms = platforms.all;
+    maintainers = with maintainers; [ OPNA2608 ];
   };
 }
diff --git a/pkgs/applications/audio/aeolus/default.nix b/pkgs/applications/audio/aeolus/default.nix
index c4982025999..d8ef7d2b4fa 100644
--- a/pkgs/applications/audio/aeolus/default.nix
+++ b/pkgs/applications/audio/aeolus/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, libclthreads, zita-alsa-pcmi, alsaLib, libjack2
+{ lib, stdenv, fetchurl, libclthreads, zita-alsa-pcmi, alsa-lib, libjack2
 , libclxclient, libX11, libXft, readline
 }:
 
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
   };
 
   buildInputs = [
-    libclthreads zita-alsa-pcmi alsaLib libjack2 libclxclient
+    libclthreads zita-alsa-pcmi alsa-lib libjack2 libclxclient
     libX11 libXft readline
   ];
 
@@ -25,8 +25,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "Synthetized (not sampled) pipe organ emulator";
     homepage = "http://kokkinizita.linuxaudio.org/linuxaudio/aeolus/index.html";
-    license = stdenv.lib.licenses.lgpl3;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.nico202 ];
+    license = lib.licenses.lgpl3;
+    platforms = lib.platforms.linux;
+    maintainers = [ lib.maintainers.nico202 ];
   };
 }
diff --git a/pkgs/applications/audio/airwave/default.nix b/pkgs/applications/audio/airwave/default.nix
index 176d1d4cfb3..438159201de 100644
--- a/pkgs/applications/audio/airwave/default.nix
+++ b/pkgs/applications/audio/airwave/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, multiStdenv, cmake, fetchFromGitHub, file, libX11, makeWrapper
+{ lib, stdenv, multiStdenv, cmake, fetchFromGitHub, file, libX11, makeWrapper
 , qt5, requireFile, unzip, wine
 }:
 
@@ -22,7 +22,7 @@ let
     };
     nativeBuildInputs = [ unzip ];
     installPhase = "cp -r . $out";
-    meta.license = stdenv.lib.licenses.unfree;
+    meta.license = lib.licenses.unfree;
   };
 
   wine-wow64 = wine.override {
@@ -73,7 +73,7 @@ multiStdenv.mkDerivation {
     wrapProgram $out/libexec/airwave-host-64.exe --set WINELOADER ${wine-xembed}/bin/wine64
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "WINE-based VST bridge for Linux VST hosts";
     longDescription = ''
       Airwave is a wine based VST bridge, that allows for the use of
diff --git a/pkgs/applications/audio/aj-snapshot/default.nix b/pkgs/applications/audio/aj-snapshot/default.nix
index f781aad905d..00fde01859c 100644
--- a/pkgs/applications/audio/aj-snapshot/default.nix
+++ b/pkgs/applications/audio/aj-snapshot/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, alsaLib, jack2Full, minixml, pkgconfig }:
+{ lib, stdenv, fetchurl, alsa-lib, jack2, minixml, pkg-config }:
 
 stdenv.mkDerivation rec {
   name =  packageName + "-" + version ;
@@ -12,15 +12,15 @@ stdenv.mkDerivation rec {
 
   doCheck = false;
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ alsaLib minixml jack2Full ];
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ alsa-lib minixml jack2 ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Tool for storing/restoring JACK and/or ALSA connections to/from cml files";
     longDescription = ''
-    Aj-snapshot is a small program that can be used to make snapshots of the connections made between JACK and/or ALSA clients. 
-    Because JACK can provide both audio and MIDI support to programs, aj-snapshot can store both types of connections for JACK. 
-    ALSA, on the other hand, only provides routing facilities for MIDI clients. 
+    Aj-snapshot is a small program that can be used to make snapshots of the connections made between JACK and/or ALSA clients.
+    Because JACK can provide both audio and MIDI support to programs, aj-snapshot can store both types of connections for JACK.
+    ALSA, on the other hand, only provides routing facilities for MIDI clients.
     You can also run aj-snapshot in daemon mode if you want to have your connections continually restored.
     '';
 
diff --git a/pkgs/applications/audio/amarok/default.nix b/pkgs/applications/audio/amarok/default.nix
index 063cfcaa9fa..10d1bb9ca65 100644
--- a/pkgs/applications/audio/amarok/default.nix
+++ b/pkgs/applications/audio/amarok/default.nix
@@ -1,32 +1,29 @@
-{ mkDerivation, fetchgit, lib
+{ mkDerivation, fetchurl, lib
 , extra-cmake-modules, kdoctools
 , qca-qt5, qjson, qtquickcontrols2, qtscript, qtwebengine
 , karchive, kcmutils, kconfig, kdnssd, kguiaddons, kinit, kirigami2, knewstuff, knotifyconfig, ktexteditor, kwindowsystem
 , fftw, phonon, plasma-framework, threadweaver
-, curl, ffmpeg_3, gdk-pixbuf, libaio, liblastfm, libmtp, loudmouth, lzo, lz4, mysql57, pcre, snappy, taglib, taglib_extras
+, curl, ffmpeg, gdk-pixbuf, libaio, liblastfm, libmtp, loudmouth, lzo, lz4, mysql57, pcre, snappy, taglib, taglib_extras
 }:
 
 mkDerivation rec {
-  pname = "amarok-unstable";
-  version = "2020-06-12";
+  pname = "amarok";
+  version = "2.9.71";
 
-  src = fetchgit {
-    # master has the Qt5 version as of April 2018 but a formal release has not
-    # yet been made so change this back to the proper upstream when such a
-    # release is out
-    url    = "https://invent.kde.org/multimedia/amarok.git";
-    # url = "mirror://kde/stable/${pname}/${version}/src/${name}.tar.xz";
-    rev    = "fece39b0e81db310b6a6e08f93d83b0d498cd02b";
-    sha256 = "12casnq6w5yp2jlvnr466pjpkn0vriry8jzfq2qkjl564y0vhy9x";
+  src = fetchurl {
+    url = "mirror://kde/unstable/${pname}/${version}/${pname}-${version}.tar.xz";
+    sha256 = "0kz8wixjmy4yxq2gk11ybswryxb6alfymd3bzcar9xinscllhh3a";
   };
 
+  outputs = [ "out" "doc" ];
+
   nativeBuildInputs = [ extra-cmake-modules kdoctools ];
 
   propagatedBuildInputs = [
     qca-qt5 qjson qtquickcontrols2 qtscript qtwebengine
     karchive kcmutils kconfig kdnssd kguiaddons kinit kirigami2 knewstuff knotifyconfig ktexteditor kwindowsystem
     phonon plasma-framework threadweaver
-    curl fftw ffmpeg_3 gdk-pixbuf libaio liblastfm libmtp loudmouth lz4 lzo mysql57.server mysql57.server.static
+    curl fftw ffmpeg gdk-pixbuf libaio liblastfm libmtp loudmouth lz4 lzo mysql57.server mysql57.server.static
     pcre snappy taglib taglib_extras
   ];
 
@@ -35,7 +32,7 @@ mkDerivation rec {
   meta = with lib; {
     homepage = "https://amarok.kde.org";
     description = "A powerful music player with an intuitive interface";
-    license = licenses.gpl2;
+    license = licenses.gpl2Plus;
     maintainers = with maintainers; [ peterhoeg ];
   };
 }
diff --git a/pkgs/applications/audio/ams-lv2/default.nix b/pkgs/applications/audio/ams-lv2/default.nix
index 34f5667bfca..88956a190c4 100644
--- a/pkgs/applications/audio/ams-lv2/default.nix
+++ b/pkgs/applications/audio/ams-lv2/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchFromGitHub, cairo, fftw, gtkmm2, lv2, lvtk, pkgconfig
-, wafHook }:
+{ lib, stdenv, fetchFromGitHub, cairo, fftw, gtkmm2, lv2, lvtk, pkg-config
+, wafHook, python3 }:
 
 stdenv.mkDerivation  rec {
   pname = "ams-lv2";
@@ -12,10 +12,10 @@ stdenv.mkDerivation  rec {
     sha256 = "1lz2mvk4gqsyf92yxd3aaldx0d0qi28h4rnnvsaz4ls0ccqm80nk";
   };
 
-  nativeBuildInputs = [ pkgconfig wafHook ];
+  nativeBuildInputs = [ pkg-config wafHook python3 ];
   buildInputs = [ cairo fftw gtkmm2 lv2 lvtk ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "An LV2 port of the internal modules found in Alsa Modular Synth";
     homepage = "https://github.com/blablack/ams-lv2";
     license = licenses.gpl3;
diff --git a/pkgs/applications/audio/ams/default.nix b/pkgs/applications/audio/ams/default.nix
index e6c4fbe802e..388d8b44dcf 100644
--- a/pkgs/applications/audio/ams/default.nix
+++ b/pkgs/applications/audio/ams/default.nix
@@ -1,7 +1,7 @@
-{ stdenv
+{ lib, stdenv
 , fetchgit
 , automake
-, alsaLib
+, alsa-lib
 , ladspaH
 , libjack2
 , fftw
@@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
   ];
 
   buildInputs = [
-    alsaLib
+    alsa-lib
     ladspaH
     libjack2
     fftw
@@ -38,7 +38,7 @@ stdenv.mkDerivation rec {
     qttools
   ]);
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Realtime modular synthesizer for ALSA";
     homepage = "http://alsamodular.sourceforge.net";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/apple-music-electron/default.nix b/pkgs/applications/audio/apple-music-electron/default.nix
new file mode 100644
index 00000000000..850f644afc3
--- /dev/null
+++ b/pkgs/applications/audio/apple-music-electron/default.nix
@@ -0,0 +1,32 @@
+{ appimageTools, lib, fetchurl }:
+let
+  pname = "apple-music-electron";
+  version = "1.5.5";
+  name = "Apple.Music-${version}";
+
+  src = fetchurl {
+    url = "https://github.com/cryptofyre/Apple-Music-Electron/releases/download/v${version}/${name}.AppImage";
+    sha256 = "1gb6j3nvam9fcpsgiv56jccg9a4y14vzsyw11h3hckaigy90knpx";
+  };
+
+  appimageContents = appimageTools.extract { inherit name src; };
+in appimageTools.wrapType2 {
+  inherit name src;
+
+  extraInstallCommands = ''
+    mv $out/bin/${name} $out/bin/${pname}
+
+    install -m 444 -D ${appimageContents}/${pname}.desktop -t $out/share/applications
+    substituteInPlace $out/share/applications/${pname}.desktop \
+      --replace 'Exec=AppRun' 'Exec=${pname}'
+    cp -r ${appimageContents}/usr/share/icons $out/share
+  '';
+
+  meta = with lib; {
+    description = "Unofficial Apple Music application without having to bother with a Web Browser or iTunes";
+    homepage = "https://github.com/iiFir3z/Apple-Music-Electron";
+    license = licenses.mit;
+    maintainers = [ maintainers.ivar ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/pkgs/applications/audio/ardour/5.nix b/pkgs/applications/audio/ardour/5.nix
index 86879e4e5bd..b25f9339da1 100644
--- a/pkgs/applications/audio/ardour/5.nix
+++ b/pkgs/applications/audio/ardour/5.nix
@@ -1,6 +1,6 @@
-{ stdenv
+{ lib, stdenv
 , fetchgit
-, alsaLib
+, alsa-lib
 , aubio
 , boost
 , cairomm
@@ -8,7 +8,6 @@
 , doxygen
 , fftwSinglePrec
 , flac
-, glibc
 , glibmm
 , graphviz
 , gtkmm2
@@ -75,7 +74,7 @@ in stdenv.mkDerivation rec {
   ];
 
   buildInputs = [
-    alsaLib
+    alsa-lib
     aubio
     boost
     cairomm
@@ -143,7 +142,7 @@ in stdenv.mkDerivation rec {
     install -vDm 644 "ardour.1"* -t "$out/share/man/man1"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Multi-track hard disk recording software";
     longDescription = ''
       Ardour is a digital audio workstation (DAW), You can use it to
diff --git a/pkgs/applications/audio/ardour/default.nix b/pkgs/applications/audio/ardour/default.nix
index 0c38057d56f..8ebf4bf0fc4 100644
--- a/pkgs/applications/audio/ardour/default.nix
+++ b/pkgs/applications/audio/ardour/default.nix
@@ -1,6 +1,6 @@
-{ stdenv
+{ lib, stdenv
 , fetchgit
-, alsaLib
+, alsa-lib
 , aubio
 , boost
 , cairomm
@@ -8,21 +8,19 @@
 , curl
 , dbus
 , doxygen
-, ffmpeg_3
+, ffmpeg
 , fftw
 , fftwSinglePrec
 , flac
-, fluidsynth
 , glibc
 , glibmm
 , graphviz
 , gtkmm2
-, hidapi
+, harvid
 , itstool
 , libarchive
 , libjack2
 , liblo
-, libltc
 , libogg
 , libpulseaudio
 , librdf_raptor
@@ -38,30 +36,33 @@
 , lilv
 , lrdf
 , lv2
+, makeWrapper
 , pango
 , perl
 , pkg-config
 , python3
-, qm-dsp
 , readline
 , rubberband
 , serd
 , sord
+, soundtouch
 , sratom
 , suil
 , taglib
 , vamp-plugin-sdk
 , wafHook
+, xjadeo
+, videoSupport ? false
 }:
 stdenv.mkDerivation rec {
   pname = "ardour";
-  version = "6.2";
+  version = "6.7";
 
   # don't fetch releases from the GitHub mirror, they are broken
   src = fetchgit {
     url = "git://git.ardour.org/ardour/ardour.git";
     rev = version;
-    sha256 = "17jxbqavricy01x4ymq6d302djsqfnv84m7dm4fd8cpka0dqjp1y";
+    sha256 = "19jc29fjwgvqbg3gnmy50mrz8mh5x4nwddglasvwx83nc87qwllx";
   };
 
   patches = [
@@ -73,6 +74,7 @@ stdenv.mkDerivation rec {
     doxygen
     graphviz # for dot
     itstool
+    makeWrapper
     perl
     pkg-config
     python3
@@ -80,26 +82,23 @@ stdenv.mkDerivation rec {
   ];
 
   buildInputs = [
-    alsaLib
+    alsa-lib
     aubio
     boost
     cairomm
     cppunit
     curl
     dbus
-    ffmpeg_3
+    ffmpeg
     fftw
     fftwSinglePrec
     flac
-    fluidsynth
     glibmm
     gtkmm2
-    hidapi
     itstool
     libarchive
     libjack2
     liblo
-    libltc
     libogg
     libpulseaudio
     librdf_raptor
@@ -118,16 +117,16 @@ stdenv.mkDerivation rec {
     pango
     perl
     python3
-    qm-dsp
     readline
     rubberband
     serd
     sord
+    soundtouch
     sratom
     suil
     taglib
     vamp-plugin-sdk
-  ];
+  ] ++ lib.optionals videoSupport [ harvid xjadeo ];
 
   wafConfigureFlags = [
     "--cxx11"
@@ -136,11 +135,11 @@ stdenv.mkDerivation rec {
     "--no-phone-home"
     "--optimize"
     "--ptformat"
-    "--qm-dsp-include=${qm-dsp}/include/qm-dsp"
     "--run-tests"
     "--test"
-    "--use-external-libs"
   ];
+  # removed because it fixes https://tracker.ardour.org/view.php?id=8161 and https://tracker.ardour.org/view.php?id=8437
+  # "--use-external-libs"
 
   # Ardour's wscript requires git revision and date to be available.
   # Since they are not, let's generate the file manually.
@@ -149,8 +148,8 @@ stdenv.mkDerivation rec {
     sed 's|/usr/include/libintl.h|${glibc.dev}/include/libintl.h|' -i wscript
     patchShebangs ./tools/
     substituteInPlace libs/ardour/video_tools_paths.cc \
-      --replace 'ffmpeg_exe = X_("");' 'ffmpeg_exe = X_("${ffmpeg_3}/bin/ffmpeg");' \
-      --replace 'ffprobe_exe = X_("");' 'ffprobe_exe = X_("${ffmpeg_3}/bin/ffprobe");'
+      --replace 'ffmpeg_exe = X_("");' 'ffmpeg_exe = X_("${ffmpeg}/bin/ffmpeg");' \
+      --replace 'ffprobe_exe = X_("");' 'ffprobe_exe = X_("${ffmpeg}/bin/ffprobe");'
   '';
 
   postInstall = ''
@@ -164,11 +163,15 @@ stdenv.mkDerivation rec {
         "$out/share/icons/hicolor/''${size}x''${size}/apps/ardour6.png"
     done
     install -vDm 644 "ardour.1"* -t "$out/share/man/man1"
+  '' + lib.optionalString videoSupport ''
+    # `harvid` and `xjadeo` must be accessible in `PATH` for video to work.
+    wrapProgram "$out/bin/ardour6" \
+      --prefix PATH : "${lib.makeBinPath [ harvid xjadeo ]}"
   '';
 
   LINKFLAGS = "-lpthread";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Multi-track hard disk recording software";
     longDescription = ''
       Ardour is a digital audio workstation (DAW), You can use it to
@@ -180,8 +183,8 @@ stdenv.mkDerivation rec {
       https://community.ardour.org/donate
     '';
     homepage = "https://ardour.org/";
-    license = licenses.gpl2;
+    license = licenses.gpl2Plus;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ goibhniu magnetophon ];
+    maintainers = with maintainers; [ goibhniu magnetophon mitchmindtree ];
   };
 }
diff --git a/pkgs/applications/audio/ario/default.nix b/pkgs/applications/audio/ario/default.nix
index 99a09e7ee33..68b74821ec3 100644
--- a/pkgs/applications/audio/ario/default.nix
+++ b/pkgs/applications/audio/ario/default.nix
@@ -1,27 +1,46 @@
-{ stdenv, fetchurl, pkgconfig, gettext, gtk3, intltool,
-  wrapGAppsHook, libxml2, curl, mpd_clientlib, dbus-glib,
-  libsoup, avahi, taglib
-  }:
+{ lib
+, stdenv
+, fetchurl
+, pkg-config
+, intltool
+, avahi
+, curl
+, dbus-glib
+, gettext
+, gtk3
+, libmpdclient
+, libsoup
+, libxml2
+, taglib
+, wrapGAppsHook
+}:
 
 stdenv.mkDerivation rec {
-  version = "1.6";
   pname = "ario";
+  version = "1.6";
 
   src = fetchurl {
     url = "mirror://sourceforge/ario-player/${pname}-${version}.tar.gz";
     sha256 = "16nhfb3h5pc7flagfdz7xy0iq6kvgy6h4bfpi523i57rxvlfshhl";
   };
 
-  nativeBuildInputs = [ pkgconfig gettext intltool wrapGAppsHook ];
+  nativeBuildInputs = [ pkg-config gettext intltool wrapGAppsHook ];
   buildInputs = [
-    gtk3 libxml2 curl mpd_clientlib dbus-glib libsoup avahi taglib
+    avahi
+    curl
+    dbus-glib
+    gtk3
+    libmpdclient
+    libsoup
+    libxml2
+    taglib
   ];
 
-  meta = {
+  meta = with lib; {
     description = "GTK client for MPD (Music player daemon)";
     homepage = "http://ario-player.sourceforge.net/";
-    license = stdenv.lib.licenses.gpl2Plus;
-    maintainers = [ stdenv.lib.maintainers.garrison ];
-    platforms = stdenv.lib.platforms.all;
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.garrison ];
+    platforms = platforms.all;
   };
 }
diff --git a/pkgs/applications/audio/artyFX/default.nix b/pkgs/applications/audio/artyFX/default.nix
index 8cf9bec2e3d..2bf6b2a8046 100644
--- a/pkgs/applications/audio/artyFX/default.nix
+++ b/pkgs/applications/audio/artyFX/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub , cairomm, cmake, libjack2, libpthreadstubs, libXdmcp, libxshmfence, libsndfile, lv2, ntk, pkgconfig }:
+{ lib, stdenv, fetchFromGitHub , cairomm, cmake, libjack2, libpthreadstubs, libXdmcp, libxshmfence, libsndfile, lv2, ntk, pkg-config }:
 
 stdenv.mkDerivation rec {
   pname = "artyFX";
@@ -8,14 +8,14 @@ stdenv.mkDerivation rec {
   src = fetchFromGitHub {
     owner = "openAVproductions";
     repo = "openAV-ArtyFX";
-    rev = "492587461b50d140455aa3c98d915eb8673bebf0";
+    rev = "8c542627d936a01b1d97825e7f26a8e95633f7aa";
     sha256 = "0wwg8ivnpyy0235bapjy4g0ij85zq355jwi6c1nkrac79p4z9ail";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ cairomm cmake libjack2 libpthreadstubs libXdmcp libxshmfence libsndfile lv2 ntk   ];
+  nativeBuildInputs = [ cmake pkg-config ];
+  buildInputs = [ cairomm libjack2 libpthreadstubs libXdmcp libxshmfence libsndfile lv2 ntk ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://openavproductions.com/artyfx/";
     description = "A LV2 plugin bundle of artistic realtime effects";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/ashuffle/default.nix b/pkgs/applications/audio/ashuffle/default.nix
index 6bb21b5edaa..e445132ee3c 100644
--- a/pkgs/applications/audio/ashuffle/default.nix
+++ b/pkgs/applications/audio/ashuffle/default.nix
@@ -1,22 +1,30 @@
-{ stdenv, fetchFromGitHub, cmake, pkg-config, mpd_clientlib, meson, ninja }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, cmake
+, pkg-config
+, meson
+, ninja
+, libmpdclient
+}:
 
 stdenv.mkDerivation rec {
   pname = "ashuffle";
-  version = "3.4.0";
+  version = "3.10.1";
 
   src = fetchFromGitHub {
     owner = "joshkunz";
     repo = "ashuffle";
     rev = "v${version}";
-    sha256 = "09q6lwgc1dc8bg1mb9js9qz3xcsxph3548nxzvyb4v8111gixrp7";
+    sha256 = "103jhajqwryiaf52qqgshajcnsxsz4l8gn3sz6bxs7k0yq5x1knr";
     fetchSubmodules = true;
   };
 
   dontUseCmakeConfigure = true;
   nativeBuildInputs = [ cmake pkg-config meson ninja ];
-  buildInputs = [ mpd_clientlib ];
+  buildInputs = [ libmpdclient ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/joshkunz/ashuffle";
     description = "Automatic library-wide shuffle for mpd";
     maintainers = [ maintainers.tcbravo ];
diff --git a/pkgs/applications/audio/asunder/default.nix b/pkgs/applications/audio/asunder/default.nix
index 998535a8eb0..c3cba87e300 100644
--- a/pkgs/applications/audio/asunder/default.nix
+++ b/pkgs/applications/audio/asunder/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, makeWrapper, gtk2, libcddb, intltool, pkgconfig, cdparanoia
+{ lib, stdenv, fetchurl, makeWrapper, gtk2, libcddb, intltool, pkg-config, cdparanoia
 , mp3Support ? false, lame
 , oggSupport ? true, vorbis-tools
 , flacSupport ? true, flac
@@ -9,17 +9,17 @@
 #, aacSupport ? false, TODO: neroAacEnc
 }:
 
-with stdenv.lib;
+with lib;
 
 stdenv.mkDerivation rec {
-  version = "2.9.6";
+  version = "2.9.7";
   pname = "asunder";
   src = fetchurl {
     url = "http://littlesvr.ca/asunder/releases/${pname}-${version}.tar.bz2";
-    sha256 = "1ycnd82lh7qy1pcbngd4b41s16j9hnm2kyfrncg4cwr3bfk7yg7a";
+    sha256 = "1x3l308ss0iqhz90qyjb94gyd8b4piyrm2nzjmg5kf049k9prjf1";
   };
 
-  nativeBuildInputs = [ intltool makeWrapper pkgconfig ];
+  nativeBuildInputs = [ intltool makeWrapper pkg-config ];
   buildInputs = [ gtk2 libcddb ];
 
   runtimeDeps =
diff --git a/pkgs/applications/audio/aucatctl/default.nix b/pkgs/applications/audio/aucatctl/default.nix
index 4aff3e1f7bf..6670e06a21d 100644
--- a/pkgs/applications/audio/aucatctl/default.nix
+++ b/pkgs/applications/audio/aucatctl/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, sndio, libbsd }:
+{ lib, stdenv, fetchurl, sndio, libbsd }:
 
 stdenv.mkDerivation rec {
   pname = "aucatctl";
@@ -10,14 +10,14 @@ stdenv.mkDerivation rec {
   };
 
   buildInputs = [ sndio ]
-    ++ stdenv.lib.optional (!stdenv.isDarwin && !stdenv.targetPlatform.isBSD)
+    ++ lib.optional (!stdenv.isDarwin && !stdenv.targetPlatform.isBSD)
     libbsd;
 
   outputs = [ "out" "man" ];
 
   preBuild = ''
     makeFlagsArray+=("PREFIX=$out")
-  '' + stdenv.lib.optionalString
+  '' + lib.optionalString
     (!stdenv.isDarwin && !stdenv.targetPlatform.isBSD) ''
       makeFlagsArray+=(LDADD="-lsndio -lbsd")
 
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
         --replace '#include <string.h>' '#include <bsd/string.h>'
     '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description =
       "The aucatctl utility sends MIDI messages to control sndiod and/or aucat volumes";
     homepage = "http://www.sndio.org";
diff --git a/pkgs/applications/audio/audacious/default.nix b/pkgs/applications/audio/audacious/default.nix
index c441a2f9f3f..db6e03f4741 100644
--- a/pkgs/applications/audio/audacious/default.nix
+++ b/pkgs/applications/audio/audacious/default.nix
@@ -1,8 +1,8 @@
 {
   mkDerivation, lib, fetchurl, fetchpatch,
-  gettext, pkgconfig,
+  gettext, pkg-config,
   qtbase,
-  alsaLib, curl, faad2, ffmpeg, flac, fluidsynth, gdk-pixbuf, lame, libbs2b,
+  alsa-lib, curl, faad2, ffmpeg, flac, fluidsynth, gdk-pixbuf, lame, libbs2b,
   libcddb, libcdio, libcdio-paranoia, libcue, libjack2, libmad, libmms, libmodplug,
   libmowgli, libnotify, libogg, libpulseaudio, libsamplerate, libsidplayfp,
   libsndfile, libvorbis, libxml2, lirc, mpg123, neon, qtmultimedia, soxr,
@@ -22,14 +22,14 @@ mkDerivation rec {
     sha256 = "0ny5w1agr9jaz5w3wyyxf1ygmzmd1sivaf97lcm4z4w6529520lz";
   };
 
-  nativeBuildInputs = [ gettext pkgconfig ];
+  nativeBuildInputs = [ gettext pkg-config ];
 
   buildInputs = [
     # Core dependencies
     qtbase
 
     # Plugin dependencies
-    alsaLib curl faad2 ffmpeg flac fluidsynth gdk-pixbuf lame libbs2b libcddb
+    alsa-lib curl faad2 ffmpeg flac fluidsynth gdk-pixbuf lame libbs2b libcddb
     libcdio libcdio-paranoia libcue libjack2 libmad libmms libmodplug libmowgli
     libnotify libogg libpulseaudio libsamplerate libsidplayfp libsndfile
     libvorbis libxml2 lirc mpg123 neon qtmultimedia soxr wavpack
diff --git a/pkgs/applications/audio/audacity/default.nix b/pkgs/applications/audio/audacity/default.nix
index 18f2b4f67cd..73a0cebd36b 100644
--- a/pkgs/applications/audio/audacity/default.nix
+++ b/pkgs/applications/audio/audacity/default.nix
@@ -1,37 +1,100 @@
-{ stdenv, fetchzip, wxGTK30, pkgconfig, file, gettext,
-  libvorbis, libmad, libjack2, lv2, lilv, serd, sord, sratom, suil, alsaLib, libsndfile, soxr, flac, lame,
-  expat, libid3tag, ffmpeg_3, soundtouch, /*, portaudio - given up fighting their portaudio.patch */
-  autoconf, automake, libtool
-  }:
+{ stdenv
+, lib
+, fetchFromGitHub
+, fetchpatch
+, cmake
+, wxGTK
+, pkg-config
+, python3
+, gettext
+, file
+, libvorbis
+, libmad
+, libjack2
+, lv2
+, lilv
+, serd
+, sord
+, sqlite
+, sratom
+, suil
+, alsa-lib
+, libsndfile
+, soxr
+, flac
+, twolame
+, expat
+, libid3tag
+, libopus
+, ffmpeg
+, soundtouch
+, pcre /*, portaudio - given up fighting their portaudio.patch */
+, linuxHeaders
+, at-spi2-core
+, dbus
+, epoxy
+, libXdmcp
+, libXtst
+, libpthreadstubs
+, libselinux
+, libsepol
+, libxkbcommon
+, util-linux
+}:
 
-with stdenv.lib;
+# TODO
+# 1. as of 3.0.2, GTK2 is still the recommended version ref https://www.audacityteam.org/download/source/ check if that changes in future versions
+# 2. detach sbsms
 
+let
+  inherit (lib) optionals;
+
+  wxGTK' = wxGTK.overrideAttrs (oldAttrs: rec {
+    src = fetchFromGitHub {
+      owner = "audacity";
+      repo = "wxWidgets";
+      rev = "07e7d832c7a337aedba3537b90b2c98c4d8e2985";
+      sha256 = "1mawnkcrmqj98jp0jxlnh9xkc950ca033ccb51c7035pzmi9if9a";
+      fetchSubmodules = true;
+    };
+  });
+
+in
 stdenv.mkDerivation rec {
-  version = "2.4.1";
   pname = "audacity";
+  # nixpkgs-update: no auto update
+  # Humans too! Let's wait to see how the situation with
+  # https://github.com/audacity/audacity/issues/1213 develops before
+  # pulling any updates that are subject to this privacy policy. We
+  # may wish to switch to a fork, but at the time of writing
+  # (2021-07-05) it's too early to tell how well any of the forks will
+  # be maintained.
+  version = "3.0.2";
 
-  src = fetchzip {
-    url = "https://github.com/audacity/audacity/archive/Audacity-${version}.tar.gz";
-    sha256 = "1xk0piv72d2xd3p7igr916fhcbrm76fhjr418k1rlqdzzg1hfljn";
+  src = fetchFromGitHub {
+    owner = "audacity";
+    repo = "audacity";
+    rev = "Audacity-${version}";
+    sha256 = "035qq2ff16cdl2cb9iply2bfjmhfl1dpscg79x6c9l0i9m8k41zj";
   };
 
-  preConfigure = /* we prefer system-wide libs */ ''
-    autoreconf -vi # use system libraries
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/audacity/audacity/pull/831/commits/007852e51fcbb5f1f359d112f28b8984a604dac6.patch";
+      sha256 = "0zp2iydd46analda9cfnbmzdkjphz5m7dynrdj5qdnmq6j3px9fw";
+      name = "audacity_xdg_paths.patch";
+    })
+  ];
 
-    # we will get a (possibly harmless) warning during configure without this
-    substituteInPlace configure \
-      --replace /usr/bin/file ${file}/bin/file
-  '';
+  postPatch = ''
+    touch src/RevisionIdent.h
 
-  configureFlags = [
-    "--with-libsamplerate"
-  ];
+    substituteInPlace src/FileNames.cpp \
+      --replace /usr/include/linux/magic.h ${linuxHeaders}/include/linux/magic.h
+  '';
 
-  # audacity only looks for lame and ffmpeg at runtime, so we need to link them in manually
+  # audacity only looks for ffmpeg at runtime, so we need to link it in manually
   NIX_LDFLAGS = toString [
-    # LAME
-    "-lmp3lame"
-    # ffmpeg
     "-lavcodec"
     "-lavdevice"
     "-lavfilter"
@@ -43,23 +106,60 @@ stdenv.mkDerivation rec {
     "-lswscale"
   ];
 
-  nativeBuildInputs = [ pkgconfig autoconf automake libtool ];
-  buildInputs = [
-    file gettext wxGTK30 expat alsaLib
-    libsndfile soxr libid3tag libjack2 lv2 lilv serd sord sratom suil wxGTK30.gtk
-    ffmpeg_3 libmad lame libvorbis flac soundtouch
-  ]; #ToDo: detach sbsms
+  nativeBuildInputs = [
+    cmake
+    gettext
+    pkg-config
+    python3
+  ] ++ optionals stdenv.isLinux [
+    linuxHeaders
+  ];
 
-  enableParallelBuilding = true;
+  buildInputs = [
+    alsa-lib
+    expat
+    ffmpeg
+    file
+    flac
+    libid3tag
+    libjack2
+    libmad
+    libopus
+    libsndfile
+    libvorbis
+    lilv
+    lv2
+    pcre
+    serd
+    sord
+    soundtouch
+    soxr
+    sqlite
+    sratom
+    suil
+    twolame
+    wxGTK'
+    wxGTK'.gtk
+  ] ++ optionals stdenv.isLinux [
+    at-spi2-core
+    dbus
+    epoxy
+    libXdmcp
+    libXtst
+    libpthreadstubs
+    libxkbcommon
+    libselinux
+    libsepol
+    util-linux
+  ];
 
-  dontDisableStatic = true;
   doCheck = false; # Test fails
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Sound editor with graphical UI";
-    homepage = "http://audacityteam.org/";
+    homepage = "https://www.audacityteam.org/";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ lheckemann ];
-    platforms = intersectLists platforms.linux platforms.x86; # fails on ARM
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/audio-recorder/default.nix b/pkgs/applications/audio/audio-recorder/default.nix
index eee293b76c2..6a4abbbdf53 100644
--- a/pkgs/applications/audio/audio-recorder/default.nix
+++ b/pkgs/applications/audio/audio-recorder/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchurl
-, pkgconfig, intltool
+{ lib, stdenv, fetchurl
+, pkg-config, intltool
 , glib, dbus, gtk3, libappindicator-gtk3, gst_all_1
 , librsvg, wrapGAppsHook
 , pulseaudioSupport ? true, libpulseaudio ? null }:
@@ -17,15 +17,15 @@ stdenv.mkDerivation rec {
   # https://bugs.launchpad.net/audio-recorder/+bug/1784622
   NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
 
-  nativeBuildInputs = [ pkgconfig intltool wrapGAppsHook ];
+  nativeBuildInputs = [ pkg-config intltool wrapGAppsHook ];
 
   buildInputs = [
     glib dbus gtk3 librsvg libappindicator-gtk3
   ] ++ (with gst_all_1; [
     gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav
-  ]) ++ stdenv.lib.optional pulseaudioSupport libpulseaudio;
+  ]) ++ lib.optional pulseaudioSupport libpulseaudio;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Audio recorder for GNOME and Unity Desktops";
     longDescription = ''
       This program allows you to record your favourite music or audio to a file.
diff --git a/pkgs/applications/audio/aumix/default.nix b/pkgs/applications/audio/aumix/default.nix
index 5bc7f843258..b1808ed90f1 100644
--- a/pkgs/applications/audio/aumix/default.nix
+++ b/pkgs/applications/audio/aumix/default.nix
@@ -1,9 +1,9 @@
-{stdenv, fetchurl, gettext, ncurses
+{lib, stdenv, fetchurl, gettext, ncurses
 , gtkGUI ? false
-, pkgconfig ? null
+, pkg-config ? null
 , gtk2 ? null}:
 
-assert gtkGUI -> pkgconfig != null && gtk2 != null;
+assert gtkGUI -> pkg-config != null && gtk2 != null;
 
 stdenv.mkDerivation rec {
   name = "aumix-2.9.1";
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
   };
 
   buildInputs = [ gettext ncurses ]
-    ++ (if gtkGUI then [pkgconfig gtk2] else []);
+    ++ (if gtkGUI then [pkg-config gtk2] else []);
 
   meta = {
     description = "Audio mixer for X and the console";
@@ -22,9 +22,9 @@ stdenv.mkDerivation rec {
       the command line or a script.
     '';
     homepage = "http://www.jpj.net/~trevor/aumix.html";
-    license = stdenv.lib.licenses.gpl2Plus;
+    license = lib.licenses.gpl2Plus;
 
     maintainers = [ ];
-    platforms = stdenv.lib.platforms.linux;
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/autotalent/default.nix b/pkgs/applications/audio/autotalent/default.nix
index 8efa2677786..ba96aa51d60 100644
--- a/pkgs/applications/audio/autotalent/default.nix
+++ b/pkgs/applications/audio/autotalent/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchzip }:
+{ lib, stdenv, fetchzip }:
 
 stdenv.mkDerivation rec {
   pname = "autotalent";
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
     sed -r 's/^const LADSPA_Descriptor \*/__attribute__ ((visibility ("default"))) \0/' -i autotalent.c
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://tombaran.info/autotalent.html";
     description = "A real-time pitch correction LADSPA plugin (no MIDI control)";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/axoloti/default.nix b/pkgs/applications/audio/axoloti/default.nix
index 3d907e421b3..df885c90371 100644
--- a/pkgs/applications/audio/axoloti/default.nix
+++ b/pkgs/applications/audio/axoloti/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, fetchurl, makeWrapper, unzip
+{ lib, stdenv, fetchFromGitHub, fetchurl, makeWrapper, unzip
 , gnumake, gcc-arm-embedded, binutils-arm-embedded
 , dfu-util-axoloti, jdk, ant, libfaketime }:
 
@@ -87,7 +87,7 @@ stdenv.mkDerivation rec {
     makeWrapper ${jdk}/bin/java $out/bin/axoloti --add-flags "-Daxoloti_release=$out/share/axoloti -Daxoloti_runtime=$out/share/axoloti -jar $out/share/axoloti/Axoloti.jar"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://www.axoloti.com";
     description = ''
       Sketching embedded digital audio algorithms.
diff --git a/pkgs/applications/audio/axoloti/dfu-util.nix b/pkgs/applications/audio/axoloti/dfu-util.nix
index 80ec696c645..a8a2f8813af 100644
--- a/pkgs/applications/audio/axoloti/dfu-util.nix
+++ b/pkgs/applications/audio/axoloti/dfu-util.nix
@@ -1,10 +1,10 @@
-{ stdenv, fetchurl, pkgconfig, libusb1-axoloti }:
+{ lib, stdenv, fetchurl, pkg-config, libusb1-axoloti }:
 
 stdenv.mkDerivation rec {
   pname = "dfu-util";
   version = "0.8";
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ libusb1-axoloti ];
 
   src = fetchurl {
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
     sha256 = "0n7h08avlzin04j93m6hkq9id6hxjiiix7ff9gc2n89aw6dxxjsm";
   };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Device firmware update (DFU) USB programmer";
     longDescription = ''
       dfu-util is a program that implements the host (PC) side of the USB
diff --git a/pkgs/applications/audio/axoloti/libusb1.nix b/pkgs/applications/audio/axoloti/libusb1.nix
index 49b788f6653..b6c2a1b1ae6 100644
--- a/pkgs/applications/audio/axoloti/libusb1.nix
+++ b/pkgs/applications/audio/axoloti/libusb1.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, systemd ? null, libobjc, IOKit, fetchpatch }:
+{ stdenv, lib, fetchurl, pkg-config, systemd ? null, libobjc, IOKit, fetchpatch }:
 
 stdenv.mkDerivation rec {
   name = "libusb-1.0.19";
@@ -10,10 +10,10 @@ stdenv.mkDerivation rec {
 
   outputs = [ "out" "dev" ]; # get rid of propagating systemd closure
 
-  buildInputs = [ pkgconfig ];
+  buildInputs = [ pkg-config ];
   propagatedBuildInputs =
-    stdenv.lib.optional stdenv.isLinux systemd ++
-    stdenv.lib.optionals stdenv.isDarwin [ libobjc IOKit ];
+    lib.optional stdenv.isLinux systemd ++
+    lib.optionals stdenv.isDarwin [ libobjc IOKit ];
 
   patches = [
     (fetchpatch {
@@ -23,13 +23,13 @@ stdenv.mkDerivation rec {
     })
   ];
 
-  NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isLinux "-lgcc_s";
+  NIX_LDFLAGS = lib.optionalString stdenv.isLinux "-lgcc_s";
 
-  preFixup = stdenv.lib.optionalString stdenv.isLinux ''
-    sed 's,-ludev,-L${systemd.lib}/lib -ludev,' -i $out/lib/libusb-1.0.la
+  preFixup = lib.optionalString stdenv.isLinux ''
+    sed 's,-ludev,-L${lib.getLib systemd}/lib -ludev,' -i $out/lib/libusb-1.0.la
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://www.libusb.info";
     description = "User-space USB library";
     platforms = platforms.unix;
diff --git a/pkgs/applications/audio/bambootracker/default.nix b/pkgs/applications/audio/bambootracker/default.nix
index c74c0ca4eff..09be8faa8a0 100644
--- a/pkgs/applications/audio/bambootracker/default.nix
+++ b/pkgs/applications/audio/bambootracker/default.nix
@@ -1,70 +1,56 @@
 { mkDerivation
 , stdenv
+, lib
 , fetchFromGitHub
 , fetchpatch
-, installShellFiles
 , qmake
-, qtbase
-, qtmultimedia
+, pkg-config
 , qttools
-, alsaSupport ? stdenv.hostPlatform.isLinux
-, alsaLib
-, pulseSupport ? stdenv.hostPlatform.isLinux
-, libpulseaudio
-, jackSupport ? stdenv.hostPlatform.isUnix
-, libjack2
+, qtbase
+, rtaudio
+, rtmidi
 }:
-let
-
-  inherit (stdenv.lib) optional optionals;
 
-in
 mkDerivation rec {
   pname = "bambootracker";
-  version = "0.4.3";
+  version = "0.4.6";
 
   src = fetchFromGitHub {
     owner = "rerrahkr";
     repo = "BambooTracker";
     rev = "v${version}";
-    sha256 = "0gq40qmsdavsyl2d6a71rwp4mjlwvp1c8bry32srn4hliwfnvqa6";
+    sha256 = "0iddqfw951dw9xpl4w7310sl4z544507ppb12i8g4fzvlxfw2ifc";
   };
 
-  # Fix macOS build until new release
+  # TODO Remove when updating past 0.4.6
+  # Fixes build failure on darwin
   patches = [
     (fetchpatch {
-      url = "https://github.com/rerrahkr/BambooTracker/commit/45346ed99559d44c2e32a5c6138a0835b212e875.patch";
-      sha256 = "1xkiqira1kpcqkacycy0y7qm1brhf89amliv42byijl4palmykh2";
+      name = "bambootracker-Add_braces_in_initialization_of_std-array.patch";
+      url = "https://github.com/rerrahkr/BambooTracker/commit/0fc96c60c7ae6c2504ee696bb7dec979ac19717d.patch";
+      sha256 = "1z28af46mqrgnyrr4i8883gp3wablkk8rijnj0jvpq01s4m2sfjn";
     })
   ];
 
-  preConfigure = "cd BambooTracker";
-
-  nativeBuildInputs = [ qmake qttools installShellFiles ];
-
-  buildInputs = [ qtbase qtmultimedia ]
-    ++ optional alsaSupport alsaLib
-    ++ optional pulseSupport libpulseaudio
-    ++ optional jackSupport libjack2;
+  nativeBuildInputs = [ qmake qttools pkg-config ];
 
-  qmakeFlags = [ "CONFIG+=release" "CONFIG-=debug" ]
-    ++ optional pulseSupport "CONFIG+=use_pulse"
-    ++ optionals jackSupport [ "CONFIG+=use_jack" "CONFIG+=jack_has_rename" ];
+  buildInputs = [ qtbase rtaudio rtmidi ];
 
-  postInstall = ''
-    install -Dm644 ../BambooTracker.desktop $out/share/applications/BambooTracker.desktop
-    installManPage ../BambooTracker*.1
+  qmakeFlags = [ "CONFIG+=system_rtaudio" "CONFIG+=system_rtmidi" ];
 
-    cp -r ../{demos,licenses,skins,LICENSE} $out/share/BambooTracker/
+  postConfigure = "make qmake_all";
 
-    for size in 16x16 256x256; do
-      install -Dm644 res/icon/icon_$size.png $out/share/icons/hicolor/$size/apps/BambooTracker.png
-    done
+  # installs app bundle on darwin, re-extract the binary
+  # wrapQtAppsHook fails to wrap mach-o binaries, manually call wrapper (https://github.com/NixOS/nixpkgs/issues/102044)
+  postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
+    mv $out/bin/BambooTracker{.app/Contents/MacOS/BambooTracker,}
+    rm -r $out/bin/BambooTracker.app
+    wrapQtApp $out/bin/BambooTracker
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A tracker for YM2608 (OPNA) which was used in NEC PC-8801/9801 series computers";
-    homepage = "https://github.com/rerrahkr/BambooTracker";
+    homepage = "https://rerrahkr.github.io/BambooTracker";
     license = licenses.gpl2Only;
     platforms = platforms.all;
     maintainers = with maintainers; [ OPNA2608 ];
diff --git a/pkgs/applications/audio/baudline/default.nix b/pkgs/applications/audio/baudline/default.nix
index 0d95675d1e6..7d6d51011cc 100644
--- a/pkgs/applications/audio/baudline/default.nix
+++ b/pkgs/applications/audio/baudline/default.nix
@@ -1,9 +1,9 @@
-{ stdenv, fetchurl, libXmu, libXt, libX11, libXext, libXxf86vm, libjack2
+{ lib, stdenv, fetchurl, libXmu, libXt, libX11, libXext, libXxf86vm, libjack2
 , makeWrapper
 }:
 
 let
-  rpath = stdenv.lib.makeLibraryPath
+  rpath = lib.makeLibraryPath
     [ libXmu libXt libX11 libXext libXxf86vm libjack2 ];
 in
 stdenv.mkDerivation rec {
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
     else
       throw "baudline isn't supported (yet?) on ${stdenv.hostPlatform.system}";
 
-  buildInputs = [ makeWrapper ];
+  nativeBuildInputs = [ makeWrapper ];
 
   # Prebuilt binary distribution.
   # "patchelf --set-rpath" seems to break the application (cannot start), using
@@ -46,7 +46,7 @@ stdenv.mkDerivation rec {
     done
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Scientific signal analysis application";
     longDescription = ''
       Baudline is a time-frequency browser designed for scientific
diff --git a/pkgs/applications/audio/bchoppr/default.nix b/pkgs/applications/audio/bchoppr/default.nix
index 1b642e1ed69..ec09e62b094 100644
--- a/pkgs/applications/audio/bchoppr/default.nix
+++ b/pkgs/applications/audio/bchoppr/default.nix
@@ -1,14 +1,14 @@
-{ stdenv, fetchFromGitHub, pkg-config, cairo, libX11, lv2 }:
+{ lib, stdenv, fetchFromGitHub, pkg-config, cairo, libX11, lv2 }:
 
 stdenv.mkDerivation rec {
   pname = "bchoppr";
-  version = "1.6.4";
+  version = "1.10.8";
 
   src = fetchFromGitHub {
     owner = "sjaehn";
     repo = pname;
-    rev = "${version}";
-    sha256 = "16b0sg7q2b8l4y4bp5s3yzsj9j6jayjy2mlvqkby6l7hcgjcj493";
+    rev = version;
+    sha256 = "sha256-F2J9TBONluhBuoEnpff3tLZEHFDbmllILqbZvu+PGGI=";
   };
 
   nativeBuildInputs = [ pkg-config ];
@@ -18,8 +18,8 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
-    homepage = https://github.com/sjaehn/BChoppr;
+  meta = with lib; {
+    homepage = "https://github.com/sjaehn/BChoppr";
     description = "An audio stream chopping LV2 plugin";
     maintainers = [ maintainers.magnetophon ];
     platforms = platforms.linux;
diff --git a/pkgs/applications/audio/bitmeter/default.nix b/pkgs/applications/audio/bitmeter/default.nix
index ac05a9367cc..6108d84c3d9 100644
--- a/pkgs/applications/audio/bitmeter/default.nix
+++ b/pkgs/applications/audio/bitmeter/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, autoreconfHook, fetchurl, libjack2, gtk2, pkgconfig }:
+{ lib, stdenv, autoreconfHook, fetchurl, libjack2, gtk2, pkg-config }:
 
 stdenv.mkDerivation rec {
   pname = "bitmeter";
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
     sha256 = "09ck2gxqky701dc1p0ip61rrn16v0pdc7ih2hc2sd63zcw53g2a7";
   };
 
-  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
   buildInputs = [ libjack2 gtk2 ];
 
   patches = [
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
     })
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://devel.tlrmx.org/audio/bitmeter/";
     description = "Also known as jack bitscope. Useful to detect denormals";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/bitwig-studio/bitwig-studio1.nix b/pkgs/applications/audio/bitwig-studio/bitwig-studio1.nix
index 61d522f677f..a66a5e6c9dc 100644
--- a/pkgs/applications/audio/bitwig-studio/bitwig-studio1.nix
+++ b/pkgs/applications/audio/bitwig-studio/bitwig-studio1.nix
@@ -1,9 +1,9 @@
-{ stdenv, fetchurl, alsaLib, bzip2, cairo, dpkg, freetype, gdk-pixbuf
+{ stdenv, fetchurl, alsa-lib, bzip2, cairo, dpkg, freetype, gdk-pixbuf
 , wrapGAppsHook, gtk2, gtk3, harfbuzz, jdk, lib, xorg
-, libbsd, libjack2, libpng, ffmpeg_3
+, libbsd, libjack2, libpng, ffmpeg
 , libxkbcommon
 , makeWrapper, pixman, autoPatchelfHook
-, xdg_utils, zenity, zlib }:
+, xdg-utils, zenity, zlib }:
 
 stdenv.mkDerivation rec {
   pname = "bitwig-studio";
@@ -22,13 +22,13 @@ stdenv.mkDerivation rec {
   dontWrapGApps = true; # we only want $gappsWrapperArgs here
 
   buildInputs = with xorg; [
-    alsaLib bzip2.out cairo freetype gdk-pixbuf gtk2 gtk3 harfbuzz libX11 libXau
+    alsa-lib bzip2.out cairo freetype gdk-pixbuf gtk2 gtk3 harfbuzz libX11 libXau
     libXcursor libXdmcp libXext libXfixes libXrender libbsd libjack2 libpng libxcb
     libxkbfile pixman xcbutil xcbutilwm zlib
   ];
 
   binPath = lib.makeBinPath [
-    xdg_utils zenity ffmpeg_3
+    xdg-utils zenity ffmpeg
   ];
 
   installPhase = ''
@@ -83,7 +83,7 @@ stdenv.mkDerivation rec {
     done
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A digital audio workstation";
     longDescription = ''
       Bitwig Studio is a multi-platform music-creation system for
diff --git a/pkgs/applications/audio/bitwig-studio/bitwig-studio3.nix b/pkgs/applications/audio/bitwig-studio/bitwig-studio3.nix
index ee060602c82..6b272a408ab 100644
--- a/pkgs/applications/audio/bitwig-studio/bitwig-studio3.nix
+++ b/pkgs/applications/audio/bitwig-studio/bitwig-studio3.nix
@@ -1,23 +1,81 @@
-{ fetchurl, bitwig-studio1, pulseaudio, xorg }:
+{ stdenv, fetchurl, alsa-lib, cairo, dpkg, freetype
+, gdk-pixbuf, glib, gtk3, lib, xorg
+, libglvnd, libjack2, ffmpeg
+, libxkbcommon, xdg-utils, zlib, pulseaudio
+, wrapGAppsHook, makeWrapper }:
 
-bitwig-studio1.overrideAttrs (oldAttrs: rec {
-  name = "bitwig-studio-${version}";
-  version = "3.2.6";
+stdenv.mkDerivation rec {
+  pname = "bitwig-studio";
+  version = "3.3.7";
 
   src = fetchurl {
-    url = "https://downloads.bitwig.com/stable/${version}/bitwig-studio-${version}.deb";
-    sha256 = "00hrbgnjns3s8lbjbabwwqvbwz4dlrg33cs3d1qlpzgi3y72h3nn";
+    url = "https://downloads.bitwig.com/stable/${version}/${pname}-${version}.deb";
+    sha256 = "13jr45kzv0xjhhqk30qpq793349qyx8jpas4kl6i6bk3xfrd3fbz";
   };
 
-  buildInputs = oldAttrs.buildInputs ++ [ xorg.libXtst ];
+  nativeBuildInputs = [ dpkg makeWrapper wrapGAppsHook ];
 
-  runtimeDependencies = [ pulseaudio ];
+  unpackCmd = ''
+    mkdir -p root
+    dpkg-deb -x $curSrc root
+  '';
+
+  dontBuild = true;
+  dontWrapGApps = true; # we only want $gappsWrapperArgs here
+
+  buildInputs = with xorg; [
+    alsa-lib cairo freetype gdk-pixbuf glib gtk3 libxcb xcbutil xcbutilwm zlib libXtst libxkbcommon pulseaudio libjack2 libX11 libglvnd libXcursor stdenv.cc.cc.lib
+  ];
+
+  binPath = lib.makeBinPath [
+    xdg-utils ffmpeg
+  ];
+
+  ldLibraryPath = lib.strings.makeLibraryPath buildInputs;
 
   installPhase = ''
-    ${oldAttrs.installPhase}
+    runHook preInstall
+
+    mkdir -p $out/bin
+    cp -r opt/bitwig-studio $out/libexec
+    ln -s $out/libexec/bitwig-studio $out/bin/bitwig-studio
+    cp -r usr/share $out/share
+    substitute usr/share/applications/bitwig-studio.desktop \
+      $out/share/applications/bitwig-studio.desktop \
+      --replace /usr/bin/bitwig-studio $out/bin/bitwig-studio
 
-    # recover commercial jre
-    rm -f $out/libexec/lib/jre
-    cp -r opt/bitwig-studio/lib/jre $out/libexec/lib
+      runHook postInstall
   '';
-})
+
+  postFixup = ''
+    # patchelf fails to set rpath on BitwigStudioEngine, so we use
+    # the LD_LIBRARY_PATH way
+
+    find $out -type f -executable \
+      -not -name '*.so.*' \
+      -not -name '*.so' \
+      -not -name '*.jar' \
+      -not -path '*/resources/*' | \
+    while IFS= read -r f ; do
+      patchelf --set-interpreter "${stdenv.cc.bintools.dynamicLinker}" $f
+      wrapProgram $f \
+        "''${gappsWrapperArgs[@]}" \
+        --prefix PATH : "${binPath}" \
+        --suffix LD_LIBRARY_PATH : "${ldLibraryPath}"
+    done
+
+  '';
+
+  meta = with lib; {
+    description = "A digital audio workstation";
+    longDescription = ''
+      Bitwig Studio is a multi-platform music-creation system for
+      production, performance and DJing, with a focus on flexible
+      editing tools and a super-fast workflow.
+    '';
+    homepage = "https://www.bitwig.com/";
+    license = licenses.unfree;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ bfortz michalrus mrVanDalo ];
+  };
+}
diff --git a/pkgs/applications/audio/bitwig-studio/bitwig-studio4.nix b/pkgs/applications/audio/bitwig-studio/bitwig-studio4.nix
new file mode 100644
index 00000000000..49205439670
--- /dev/null
+++ b/pkgs/applications/audio/bitwig-studio/bitwig-studio4.nix
@@ -0,0 +1,75 @@
+{ stdenv, fetchurl, alsa-lib, cairo, dpkg, freetype
+, gdk-pixbuf, glib, gtk3, lib, xorg
+, libglvnd, libjack2, ffmpeg
+, libxkbcommon, xdg-utils, zlib, pulseaudio
+, wrapGAppsHook, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  pname = "bitwig-studio";
+  version = "4.0.1";
+
+  src = fetchurl {
+    url = "https://downloads.bitwig.com/stable/${version}/${pname}-${version}.deb";
+    sha256 = "sha256-yhCAKlbLjyBywkSYY1aqbUGFlAHBLR8g8xPDIqoUIZk=";
+  };
+
+  nativeBuildInputs = [ dpkg makeWrapper wrapGAppsHook ];
+
+  unpackCmd = ''
+    mkdir -p root
+    dpkg-deb -x $curSrc root
+  '';
+
+  dontBuild = true;
+  dontWrapGApps = true; # we only want $gappsWrapperArgs here
+
+  buildInputs = with xorg; [
+    alsa-lib cairo freetype gdk-pixbuf glib gtk3 libxcb xcbutil xcbutilwm zlib libXtst libxkbcommon pulseaudio libjack2 libX11 libglvnd libXcursor stdenv.cc.cc.lib
+  ];
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/bin
+    cp -r opt/bitwig-studio $out/libexec
+    ln -s $out/libexec/bitwig-studio $out/bin/bitwig-studio
+    cp -r usr/share $out/share
+    substitute usr/share/applications/com.bitwig.BitwigStudio.desktop \
+      $out/share/applications/com.bitwig.BitwigStudio.desktop \
+      --replace /usr/bin/bitwig-studio $out/bin/bitwig-studio
+
+      runHook postInstall
+  '';
+
+  postFixup = ''
+    # patchelf fails to set rpath on BitwigStudioEngine, so we use
+    # the LD_LIBRARY_PATH way
+
+    find $out -type f -executable \
+      -not -name '*.so.*' \
+      -not -name '*.so' \
+      -not -name '*.jar' \
+      -not -path '*/resources/*' | \
+    while IFS= read -r f ; do
+      patchelf --set-interpreter "${stdenv.cc.bintools.dynamicLinker}" $f
+      wrapProgram $f \
+        "''${gappsWrapperArgs[@]}" \
+        --prefix PATH : "${lib.makeBinPath [ xdg-utils ffmpeg ]}" \
+        --suffix LD_LIBRARY_PATH : "${lib.strings.makeLibraryPath buildInputs}"
+    done
+
+  '';
+
+  meta = with lib; {
+    description = "A digital audio workstation";
+    longDescription = ''
+      Bitwig Studio is a multi-platform music-creation system for
+      production, performance and DJing, with a focus on flexible
+      editing tools and a super-fast workflow.
+    '';
+    homepage = "https://www.bitwig.com/";
+    license = licenses.unfree;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ bfortz michalrus mrVanDalo ];
+  };
+}
diff --git a/pkgs/applications/audio/bjumblr/default.nix b/pkgs/applications/audio/bjumblr/default.nix
index 458fe20937a..ce81415cd5d 100644
--- a/pkgs/applications/audio/bjumblr/default.nix
+++ b/pkgs/applications/audio/bjumblr/default.nix
@@ -1,24 +1,24 @@
-{ stdenv, fetchFromGitHub, libX11, cairo, lv2, pkgconfig, libsndfile }:
+{ lib, stdenv, fetchFromGitHub, libX11, cairo, lv2, pkg-config, libsndfile }:
 
 stdenv.mkDerivation rec {
-  pname = "BJumblr";
-  version = "1.4.0";
+  pname = "bjumblr";
+  version = "1.6.6";
 
   src = fetchFromGitHub {
     owner = "sjaehn";
-    repo = pname;
+    repo = "BJumblr";
     rev = version;
-    sha256 = "03x1gvri9yk000fvvc8zvvywf38cc41vkyhhp9xby71b23n5wbn0";
+    sha256 = "1nbxi54023vck3qgmr385cjzinmdnvz62ywb6bcksmc3shl080mg";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [
     libX11 cairo lv2 libsndfile
   ];
 
   installFlags = [ "PREFIX=$(out)" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/sjaehn/BJumblr";
     description = "Pattern-controlled audio stream / sample re-sequencer LV2 plugin";
     maintainers = [ maintainers.magnetophon ];
diff --git a/pkgs/applications/audio/boops/default.nix b/pkgs/applications/audio/boops/default.nix
new file mode 100644
index 00000000000..b1b91aaf9de
--- /dev/null
+++ b/pkgs/applications/audio/boops/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, lib, fetchFromGitHub, xorg, cairo, lv2, libsndfile, pkg-config }:
+
+stdenv.mkDerivation rec {
+  pname = "boops";
+  version = "1.6.0";
+
+  src = fetchFromGitHub {
+    owner = "sjaehn";
+    repo = "BOops";
+    rev = version;
+    sha256 = "sha256-7eNvt8PxIZCp83Y5XX5fBolBon4j+HPtu8wrgG8Miok=";
+  };
+
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [
+    xorg.libX11 cairo lv2 libsndfile
+  ];
+
+  installFlags = [ "PREFIX=$(out)" ];
+
+  meta = with lib; {
+    homepage = "https://github.com/sjaehn/BOops";
+    description = "Sound glitch effect sequencer LV2 plugin";
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.linux;
+    license = licenses.gpl3Plus;
+  };
+}
diff --git a/pkgs/applications/audio/bristol/default.nix b/pkgs/applications/audio/bristol/default.nix
index 704b888e229..0c9248b5f0b 100644
--- a/pkgs/applications/audio/bristol/default.nix
+++ b/pkgs/applications/audio/bristol/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, alsaLib, libjack2, pkgconfig, libpulseaudio, xorg }:
+{ lib, stdenv, fetchurl, alsa-lib, libjack2, pkg-config, libpulseaudio, xorg }:
 
 stdenv.mkDerivation  rec {
   pname = "bristol";
@@ -9,9 +9,9 @@ stdenv.mkDerivation  rec {
     sha256 = "1fi2m4gmvxdi260821y09lxsimq82yv4k5bbgk3kyc3x1nyhn7vx";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [
-    alsaLib libjack2 libpulseaudio xorg.libX11 xorg.libXext
+    alsa-lib libjack2 libpulseaudio xorg.libX11 xorg.libXext
     xorg.xorgproto
   ];
 
@@ -24,7 +24,7 @@ stdenv.mkDerivation  rec {
     sed -e "s@\`which brighton\`@$out/bin/brighton@g" -i bin/startBristol
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A range of synthesiser, electric piano and organ emulations";
     homepage = "http://bristol.sourceforge.net";
     license = licenses.gpl3;
diff --git a/pkgs/applications/audio/bs1770gain/default.nix b/pkgs/applications/audio/bs1770gain/default.nix
deleted file mode 100644
index 76a78935619..00000000000
--- a/pkgs/applications/audio/bs1770gain/default.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{ stdenv, fetchurl, ffmpeg, sox }:
-
-stdenv.mkDerivation rec {
-  pname = "bs1770gain";
-  version = "0.5.2";
-
-  src = fetchurl {
-    url = "mirror://sourceforge/bs1770gain/${pname}-${version}.tar.gz";
-    sha256 = "1p6yz5q7czyf9ard65sp4kawdlkg40cfscr3b24znymmhs3p7rbk";
-  };
-
-  buildInputs = [ ffmpeg sox ];
-
-  NIX_CFLAGS_COMPILE = "-Wno-error";
-
-  meta = with stdenv.lib; {
-    description = "A audio/video loudness scanner implementing ITU-R BS.1770";
-    license = licenses.gpl2Plus;
-    homepage = "http://bs1770gain.sourceforge.net/";
-    platforms = platforms.all;
-  };
-}
diff --git a/pkgs/applications/audio/bschaffl/default.nix b/pkgs/applications/audio/bschaffl/default.nix
index de8e55a9545..ed988cbcb67 100644
--- a/pkgs/applications/audio/bschaffl/default.nix
+++ b/pkgs/applications/audio/bschaffl/default.nix
@@ -1,14 +1,14 @@
-{ stdenv, fetchFromGitHub, pkg-config, cairo, libX11, lv2 }:
+{ lib, stdenv, fetchFromGitHub, pkg-config, cairo, libX11, lv2 }:
 
 stdenv.mkDerivation rec {
   pname = "bschaffl";
-  version = "0.3";
+  version = "1.4.6";
 
   src = fetchFromGitHub {
     owner = "sjaehn";
     repo = pname;
     rev = version;
-    sha256 = "1pcch7j1wgsb77mjy58hl3z43p83dv0vcmyh129m9k216b09gy29";
+    sha256 = "sha256-tD4LsIXb2II+TNEfzXBviMR2fq/FtCSsaL2YGun1vu0=";
   };
 
   nativeBuildInputs = [ pkg-config ];
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/sjaehn/BSchaffl";
     description = "Pattern-controlled MIDI amp & time stretch LV2 plugin";
     maintainers = [ maintainers.magnetophon ];
diff --git a/pkgs/applications/audio/bsequencer/default.nix b/pkgs/applications/audio/bsequencer/default.nix
index 37dcada961d..8fb64685595 100644
--- a/pkgs/applications/audio/bsequencer/default.nix
+++ b/pkgs/applications/audio/bsequencer/default.nix
@@ -1,24 +1,24 @@
-{ stdenv, fetchFromGitHub, xorg, cairo, lv2, pkgconfig }:
+{ lib, stdenv, fetchFromGitHub, xorg, cairo, lv2, pkg-config }:
 
 stdenv.mkDerivation rec {
-  pname = "BSEQuencer";
-  version = "1.6.0";
+  pname = "bsequencer";
+  version = "1.8.8";
 
   src = fetchFromGitHub {
     owner = "sjaehn";
-    repo = pname;
-    rev = "${version}";
-    sha256 = "0w21kzq695xy4i1r6xvvh7sad5m0rlmdgc7ykmrlzfsm1252dz80";
+    repo = "BSEQuencer";
+    rev = version;
+    sha256 = "sha256-OArIMf0XP9CKDdb3H4s8jMzVRjoLFQDPmTS9rS2KW3w=";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [
     xorg.libX11 cairo lv2
   ];
 
   installFlags = [ "PREFIX=$(out)" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/sjaehn/BSEQuencer";
     description = "Multi channel MIDI step sequencer LV2 plugin";
     maintainers = [ maintainers.magnetophon ];
diff --git a/pkgs/applications/audio/bshapr/default.nix b/pkgs/applications/audio/bshapr/default.nix
index aa4374c79bc..728c60b2e86 100644
--- a/pkgs/applications/audio/bshapr/default.nix
+++ b/pkgs/applications/audio/bshapr/default.nix
@@ -1,24 +1,24 @@
-{ stdenv, fetchFromGitHub, xorg, cairo, lv2, pkgconfig }:
+{ lib, stdenv, fetchFromGitHub, xorg, cairo, lv2, pkg-config }:
 
 stdenv.mkDerivation rec {
-  pname = "BShapr";
-  version = "0.9";
+  pname = "bshapr";
+  version = "0.13";
 
   src = fetchFromGitHub {
     owner = "sjaehn";
-    repo = pname;
+    repo = "BShapr";
     rev = "v${version}";
-    sha256 = "04zd3a178i2nivg5rjailzqvc5mlnilmhj1ziygmbhshbrywplri";
+    sha256 = "sha256-9I4DPRl6i/VL8Etw3qLGZkP45BGsbxFxNOvRy3B3I+M=";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [
     xorg.libX11 cairo lv2
   ];
 
   installFlags = [ "PREFIX=$(out)" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/sjaehn/BShapr";
     description = "Beat / envelope shaper LV2 plugin";
     maintainers = [ maintainers.magnetophon ];
diff --git a/pkgs/applications/audio/bslizr/default.nix b/pkgs/applications/audio/bslizr/default.nix
index 5a2675187c0..df81e0960b3 100644
--- a/pkgs/applications/audio/bslizr/default.nix
+++ b/pkgs/applications/audio/bslizr/default.nix
@@ -1,24 +1,24 @@
-{ stdenv, fetchFromGitHub, xorg, cairo, lv2, pkgconfig }:
+{ lib, stdenv, fetchFromGitHub, xorg, cairo, lv2, pkg-config }:
 
 stdenv.mkDerivation rec {
-  pname = "BSlizr";
-  version = "1.2.8";
+  pname = "bslizr";
+  version = "1.2.16";
 
   src = fetchFromGitHub {
     owner = "sjaehn";
-    repo = pname;
-    rev = "${version}";
-    sha256 = "1f7xrljvsy7a1p8c7wln2zhwarl3ara7gbjxkpyh47wfdpigpdb0";
+    repo = "BSlizr";
+    rev = version;
+    sha256 = "sha256-5DvVkTz79CLvZMZ3XnI0COIfxnhERDSvzbVoJAcqNRI=";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [
     xorg.libX11 cairo lv2
   ];
 
   installFlags = [ "PREFIX=$(out)" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/sjaehn/BSlizr";
     description = "Sequenced audio slicing effect LV2 plugin (step sequencer effect)";
     maintainers = [ maintainers.magnetophon ];
diff --git a/pkgs/applications/audio/bucklespring/default.nix b/pkgs/applications/audio/bucklespring/default.nix
new file mode 100644
index 00000000000..ee363c5c32e
--- /dev/null
+++ b/pkgs/applications/audio/bucklespring/default.nix
@@ -0,0 +1,63 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+
+, legacy ? false
+, libinput
+
+, pkg-config
+, makeWrapper
+
+, openal
+, alure
+, libXtst
+, libX11
+}:
+
+let
+  inherit (lib) optionals;
+in
+stdenv.mkDerivation rec {
+  pname = "bucklespring";
+  version = "1.5.0";
+
+  src = fetchFromGitHub {
+    owner = "zevv";
+    repo = pname;
+    rev = version;
+    sha256 = "114dib4npb7r1z2zd1fwsx71xbf9r6psxqd7n7590cwz1w3r51mz";
+  };
+
+  nativeBuildInputs = [ pkg-config makeWrapper ];
+
+  buildInputs = [ openal alure ]
+    ++ optionals (legacy) [ libXtst libX11 ]
+    ++ optionals (!legacy) [ libinput ];
+
+  makeFlags = optionals (!legacy) [ "libinput=1" ];
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/wav
+    cp -r $src/wav $out/share/.
+    install -D ./buckle.desktop $out/share/applications/buckle.desktop
+    install -D ./buckle $out/bin/buckle
+    wrapProgram $out/bin/buckle --add-flags "-p $out/share/wav"
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Nostalgia bucklespring keyboard sound";
+    longDescription = ''
+      When built with libinput (wayland or bare console),
+      users need to be in the input group to use this:
+      <code>users.users.alice.extraGroups = [ "input" ];</code>
+    '';
+    homepage = "https://github.com/zevv/bucklespring";
+    license = licenses.gpl2Only;
+    platforms  = platforms.unix;
+    maintainers = [ maintainers.evils ];
+  };
+}
diff --git a/pkgs/applications/audio/cadence/default.nix b/pkgs/applications/audio/cadence/default.nix
index 4f4ad4b8c5b..62bf32eb71d 100644
--- a/pkgs/applications/audio/cadence/default.nix
+++ b/pkgs/applications/audio/cadence/default.nix
@@ -1,12 +1,11 @@
-{ stdenv
+{ lib
 , a2jmidid
 , coreutils
-, lib
 , libjack2
 , fetchpatch
 , fetchzip
 , jack_capture
-, pkgconfig
+, pkg-config
 , pulseaudioFull
 , qtbase
 , makeWrapper
@@ -32,6 +31,11 @@ mkDerivation rec {
       url = "https://github.com/falkTX/Cadence/commit/1fd3275e7daf4b75f59ef1f85a9e2e93bd5c0731.patch";
       sha256 = "0q791jsh8vmjg678dzhbp1ykq8xrrlxl1mbgs3g8if1ccj210vd8";
     })
+    # Fix build with Qt 5.15
+    (fetchpatch {
+      url = "https://github.com/falkTX/Cadence/commit/c167f35fbb76c4246c730b29262a59da73010412.patch";
+      sha256 = "1gm9q6gx03sla5vcnisznc95pjdi2703f8b3mj2kby9rfx2pylyh";
+    })
   ];
 
   postPatch = ''
@@ -43,7 +47,7 @@ mkDerivation rec {
   '';
 
   nativeBuildInputs = [
-    pkgconfig
+    pkg-config
   ];
 
   buildInputs = [
@@ -93,8 +97,8 @@ mkDerivation rec {
   meta = {
     homepage = "https://github.com/falkTX/Cadence/";
     description = "Collection of tools useful for audio production";
-    license = stdenv.lib.licenses.gpl2Plus;
-    maintainers = with stdenv.lib.maintainers; [ genesis worldofpeace ];
+    license = lib.licenses.gpl2Plus;
+    maintainers = with lib.maintainers; [ ];
     platforms = [ "x86_64-linux" ];
   };
 }
diff --git a/pkgs/applications/audio/calf/default.nix b/pkgs/applications/audio/calf/default.nix
index bbeef4c395a..bdcbf024e60 100644
--- a/pkgs/applications/audio/calf/default.nix
+++ b/pkgs/applications/audio/calf/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchurl, cairo, expat, fftwSinglePrec, fluidsynth, glib
-, gtk2, libjack2, ladspaH , libglade, lv2, pkgconfig }:
+{ lib, stdenv, fetchurl, cairo, expat, fftwSinglePrec, fluidsynth, glib
+, gtk2, libjack2, ladspaH , libglade, lv2, pkg-config }:
 
 stdenv.mkDerivation rec {
   pname = "calf";
@@ -14,10 +14,10 @@ stdenv.mkDerivation rec {
 
   buildInputs = [
     cairo expat fftwSinglePrec fluidsynth glib gtk2 libjack2 ladspaH
-    libglade lv2 pkgconfig
+    libglade lv2 pkg-config
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://calf-studio-gear.org";
     description = "A set of high quality open source audio plugins for musicians";
     license = licenses.lgpl2;
diff --git a/pkgs/applications/audio/callaudiod/default.nix b/pkgs/applications/audio/callaudiod/default.nix
new file mode 100644
index 00000000000..0cc1ccd2aca
--- /dev/null
+++ b/pkgs/applications/audio/callaudiod/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, stdenv
+, fetchFromGitLab
+, meson
+, ninja
+, pkg-config
+, glib
+, alsa-lib
+, libpulseaudio
+}:
+
+stdenv.mkDerivation rec {
+  pname = "callaudiod";
+  version = "0.1.0";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.com";
+    owner = "mobian1";
+    repo = pname;
+    rev = version;
+    sha256 = "087589z45xvldn2m1g79y0xbwzylwkjmfk83s5xjixyq0wqmfppd";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+  ];
+
+  buildInputs = [
+    alsa-lib
+    libpulseaudio
+    glib
+  ];
+
+  meta = with lib; {
+    description = "Daemon for dealing with audio routing during phone calls";
+    homepage = "https://gitlab.com/mobian1/callaudiod";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ pacman99 ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/audio/cantata/default.nix b/pkgs/applications/audio/cantata/default.nix
index e5d62b15f45..45482c4de00 100644
--- a/pkgs/applications/audio/cantata/default.nix
+++ b/pkgs/applications/audio/cantata/default.nix
@@ -1,22 +1,42 @@
-{ mkDerivation, lib, fetchFromGitHub, cmake, pkgconfig
-, qtbase, qtsvg, qttools
+{ mkDerivation
+, lib
+, fetchFromGitHub
+, cmake
+, pkg-config
+, qtbase
+, qtsvg
+, qttools
+, perl
 
-# Cantata doesn't build with cdparanoia enabled so we disable that
-# default for now until I (or someone else) figure it out.
-, withCdda ? false, cdparanoia
-, withCddb ? false, libcddb
-, withLame ? false, lame
-, withMusicbrainz ? false, libmusicbrainz5
+  # Cantata doesn't build with cdparanoia enabled so we disable that
+  # default for now until I (or someone else) figure it out.
+, withCdda ? false
+, cdparanoia
+, withCddb ? false
+, libcddb
+, withLame ? false
+, lame
+, withMusicbrainz ? false
+, libmusicbrainz5
 
-, withTaglib ? true, taglib, taglib_extras
-, withHttpStream ? true, qtmultimedia
-, withReplaygain ? true, ffmpeg_3, speex, mpg123
-, withMtp ? true, libmtp
+, withTaglib ? true
+, taglib
+, taglib_extras
+, withHttpStream ? true
+, qtmultimedia
+, withReplaygain ? true
+, ffmpeg
+, speex
+, mpg123
+, withMtp ? true
+, libmtp
 , withOnlineServices ? true
-, withDevices ? true, udisks2
+, withDevices ? true
+, udisks2
 , withDynamic ? true
 , withHttpServer ? true
-, withLibVlc ? false, vlc
+, withLibVlc ? false
+, libvlc
 , withStreams ? true
 }:
 
@@ -31,65 +51,71 @@ assert withReplaygain -> withTaglib;
 assert withLibVlc -> withHttpStream;
 
 let
-  version = "2.4.1";
-  pname = "cantata";
-  fstat = x: fn: "-DENABLE_" + fn + "=" + (if x then "ON" else "OFF");
-  fstats = x: map (fstat x);
+  fstat = x: fn:
+    "-DENABLE_${fn}=${if x then "ON" else "OFF"}";
 
   withUdisks = (withTaglib && withDevices);
 
-in mkDerivation {
-  name = "${pname}-${version}";
+  options = [
+    { names = [ "CDDB" ]; enable = withCddb; pkgs = [ libcddb ]; }
+    { names = [ "CDPARANOIA" ]; enable = withCdda; pkgs = [ cdparanoia ]; }
+    { names = [ "DEVICES_SUPPORT" ]; enable = withDevices; pkgs = [ ]; }
+    { names = [ "DYNAMIC" ]; enable = withDynamic; pkgs = [ ]; }
+    { names = [ "FFMPEG" "MPG123" "SPEEXDSP" ]; enable = withReplaygain; pkgs = [ ffmpeg speex mpg123 ]; }
+    { names = [ "HTTPS_SUPPORT" ]; enable = true; pkgs = [ ]; }
+    { names = [ "HTTP_SERVER" ]; enable = withHttpServer; pkgs = [ ]; }
+    { names = [ "HTTP_STREAM_PLAYBACK" ]; enable = withHttpStream; pkgs = [ qtmultimedia ]; }
+    { names = [ "LAME" ]; enable = withLame; pkgs = [ lame ]; }
+    { names = [ "LIBVLC" ]; enable = withLibVlc; pkgs = [ libvlc ]; }
+    { names = [ "MTP" ]; enable = withMtp; pkgs = [ libmtp ]; }
+    { names = [ "MUSICBRAINZ" ]; enable = withMusicbrainz; pkgs = [ libmusicbrainz5 ]; }
+    { names = [ "ONLINE_SERVICES" ]; enable = withOnlineServices; pkgs = [ ]; }
+    { names = [ "STREAMS" ]; enable = withStreams; pkgs = [ ]; }
+    { names = [ "TAGLIB" "TAGLIB_EXTRAS" ]; enable = withTaglib; pkgs = [ taglib taglib_extras ]; }
+    { names = [ "UDISKS2" ]; enable = withUdisks; pkgs = [ udisks2 ]; }
+  ];
+
+in
+mkDerivation rec {
+  pname = "cantata";
+  version = "2.4.2";
 
   src = fetchFromGitHub {
-    owner  = "CDrummond";
-    repo   = "cantata";
-    rev    = "v${version}";
-    sha256 = "0ix7xp352bziwz31mw79y7wxxmdn6060p8ry2px243ni1lz1qx1c";
+    owner = "CDrummond";
+    repo = "cantata";
+    rev = "v${version}";
+    sha256 = "15qfx9bpfdplxxs08inwf2j8kvf7g5cln5sv1wj1l2l41vbf1mjr";
   };
 
-  buildInputs = [ qtbase qtsvg ]
-    ++ lib.optionals withTaglib [ taglib taglib_extras ]
-    ++ lib.optionals withReplaygain [ ffmpeg_3 speex mpg123 ]
-    ++ lib.optional  withHttpStream qtmultimedia
-    ++ lib.optional  withCdda cdparanoia
-    ++ lib.optional  withCddb libcddb
-    ++ lib.optional  withLame lame
-    ++ lib.optional  withMtp libmtp
-    ++ lib.optional  withMusicbrainz libmusicbrainz5
-    ++ lib.optional  withUdisks udisks2
-    ++ lib.optional  withLibVlc vlc;
+  patches = [
+    # Cantata wants to check if perl is in the PATH at runtime, but we
+    # patchShebangs the playlists scripts, making that unnecessary (perl will
+    # always be available because it's a dependency)
+    ./dont-check-for-perl-in-PATH.diff
+  ];
 
-  nativeBuildInputs = [ cmake pkgconfig qttools ];
+  postPatch = ''
+    patchShebangs playlists
+  '';
 
-  enableParallelBuilding = true;
+  buildInputs = [
+    qtbase
+    qtsvg
+    (perl.withPackages (ppkgs: with ppkgs; [ URI ]))
+  ]
+  ++ lib.flatten (builtins.catAttrs "pkgs" (builtins.filter (e: e.enable) options));
 
-  cmakeFlags = lib.flatten [
-    (fstats withTaglib        [ "TAGLIB" "TAGLIB_EXTRAS" ])
-    (fstats withReplaygain    [ "FFMPEG" "MPG123" "SPEEXDSP" ])
-    (fstat withHttpStream     "HTTP_STREAM_PLAYBACK")
-    (fstat withCdda           "CDPARANOIA")
-    (fstat withCddb           "CDDB")
-    (fstat withLame           "LAME")
-    (fstat withMtp            "MTP")
-    (fstat withMusicbrainz    "MUSICBRAINZ")
-    (fstat withOnlineServices "ONLINE_SERVICES")
-    (fstat withDynamic        "DYNAMIC")
-    (fstat withDevices        "DEVICES_SUPPORT")
-    (fstat withHttpServer     "HTTP_SERVER")
-    (fstat withLibVlc         "LIBVLC")
-    (fstat withStreams        "STREAMS")
-    (fstat withUdisks         "UDISKS2")
-    "-DENABLE_HTTPS_SUPPORT=ON"
-  ];
+  nativeBuildInputs = [ cmake pkg-config qttools ];
+
+  cmakeFlags = lib.flatten (map (e: map (f: fstat e.enable f) e.names) options);
 
   meta = with lib; {
-    homepage    = "https://github.com/cdrummond/cantata";
     description = "A graphical client for MPD";
-    license     = licenses.gpl3;
+    homepage = "https://github.com/cdrummond/cantata";
+    license = licenses.gpl3Only;
     maintainers = with maintainers; [ peterhoeg ];
-    # Technically Cantata can run on Windows so if someone wants to
+    # Technically, Cantata should run on Darwin/Windows so if someone wants to
     # bother figuring that one out, be my guest.
-    platforms   = platforms.linux;
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/cantata/dont-check-for-perl-in-PATH.diff b/pkgs/applications/audio/cantata/dont-check-for-perl-in-PATH.diff
new file mode 100644
index 00000000000..effb0f3b502
--- /dev/null
+++ b/pkgs/applications/audio/cantata/dont-check-for-perl-in-PATH.diff
@@ -0,0 +1,17 @@
+diff --git a/playlists/dynamicplaylists.cpp b/playlists/dynamicplaylists.cpp
+index 07b6dce3..6a3f97c9 100644
+--- a/playlists/dynamicplaylists.cpp
++++ b/playlists/dynamicplaylists.cpp
+@@ -211,11 +211,6 @@ void DynamicPlaylists::start(const QString &name)
+         return;
+     }
+ 
+-    if (Utils::findExe("perl").isEmpty()) {
+-        emit error(tr("You need to install \"perl\" on your system in order for Cantata's dynamic mode to function."));
+-        return;
+-    }
+-
+     QString fName(Utils::dataDir(rulesDir, false)+name+constExtension);
+ 
+     if (!QFile::exists(fName)) {
+
diff --git a/pkgs/applications/audio/caps/default.nix b/pkgs/applications/audio/caps/default.nix
index dc8511bf500..e0f71fa2646 100644
--- a/pkgs/applications/audio/caps/default.nix
+++ b/pkgs/applications/audio/caps/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 stdenv.mkDerivation rec {
   pname = "caps";
   version = "0.9.26";
@@ -23,8 +23,8 @@ stdenv.mkDerivation rec {
       resource demands and meaningful control interfaces.
     '';
     homepage = "http://www.quitte.de/dsp/caps.html";
-    license = stdenv.lib.licenses.gpl3;
-    maintainers = [ stdenv.lib.maintainers.astsmtl ];
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.gpl3;
+    maintainers = [ lib.maintainers.astsmtl ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/carla/default.nix b/pkgs/applications/audio/carla/default.nix
index 11050761661..bdafb93955c 100644
--- a/pkgs/applications/audio/carla/default.nix
+++ b/pkgs/applications/audio/carla/default.nix
@@ -1,11 +1,11 @@
-{ stdenv, fetchFromGitHub, alsaLib, file, fluidsynth, ffmpeg_3, jack2,
-  liblo, libpulseaudio, libsndfile, pkgconfig, python3Packages,
+{ lib, stdenv, fetchFromGitHub, alsa-lib, file, fluidsynth, jack2,
+  liblo, libpulseaudio, libsndfile, pkg-config, python3Packages,
   which, withFrontend ? true,
   withQt ? true, qtbase ? null, wrapQtAppsHook ? null,
   withGtk2 ? true, gtk2 ? null,
   withGtk3 ? true, gtk3 ? null }:
 
-with stdenv.lib;
+with lib;
 
 assert withFrontend -> python3Packages ? pyqt5;
 assert withQt -> qtbase != null;
@@ -15,17 +15,17 @@ assert withGtk3 -> gtk3 != null;
 
 stdenv.mkDerivation rec {
   pname = "carla";
-  version = "2.1.1";
+  version = "2.3.1";
 
   src = fetchFromGitHub {
     owner = "falkTX";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0c3y4a6cgi4bv1mg57i3qn5ia6pqjqlaylvkapj6bmpsw71ig22g";
+    sha256 = "sha256-LM7wRvUg2Q3f4qBZN1MPvsLkdl1ziArCfhdalyD1G3w=";
   };
 
   nativeBuildInputs = [
-    python3Packages.wrapPython pkgconfig which wrapQtAppsHook
+    python3Packages.wrapPython pkg-config which wrapQtAppsHook
   ];
 
   pythonPath = with python3Packages; [
@@ -33,12 +33,13 @@ stdenv.mkDerivation rec {
   ] ++ optional withFrontend pyqt5;
 
   buildInputs = [
-    file liblo alsaLib fluidsynth ffmpeg_3 jack2 libpulseaudio libsndfile
-  ] ++ pythonPath
-    ++ optional withQt qtbase
+    file liblo alsa-lib fluidsynth jack2 libpulseaudio libsndfile
+  ] ++ optional withQt qtbase
     ++ optional withGtk2 gtk2
     ++ optional withGtk3 gtk3;
 
+  propagatedBuildInputs = pythonPath;
+
   enableParallelBuilding = true;
 
   installFlags = [ "PREFIX=$(out)" ];
@@ -53,6 +54,7 @@ stdenv.mkDerivation rec {
       patchPythonScript "$f"
     done
     patchPythonScript "$out/share/carla/carla_settings.py"
+    patchPythonScript "$out/share/carla/carla_database.py"
 
     for program in $out/bin/*; do
       wrapQtApp "$program" \
@@ -67,7 +69,7 @@ stdenv.mkDerivation rec {
     done
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://kxstudio.sf.net/carla";
     description = "An audio plugin host";
     longDescription = ''
diff --git a/pkgs/applications/audio/caudec/default.nix b/pkgs/applications/audio/caudec/default.nix
index c9539095863..15ebb85136b 100644
--- a/pkgs/applications/audio/caudec/default.nix
+++ b/pkgs/applications/audio/caudec/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, makeWrapper, bash, bc, findutils, flac, lame, opusTools, procps, sox }:
+{ lib, stdenv, fetchurl, makeWrapper, bash, bc, findutils, flac, lame, opusTools, procps, sox }:
 
 let
   version = "1.7.5";
@@ -17,7 +17,7 @@ stdenv.mkDerivation {
     patchShebangs ./install.sh
   '';
 
-  buildInputs = [ bash makeWrapper ];
+  nativeBuildInputs = [ bash makeWrapper ];
 
   installPhase = ''
     ./install.sh --prefix=$out/bin
@@ -25,12 +25,12 @@ stdenv.mkDerivation {
 
   postFixup = ''
     for executable in $(cd $out/bin && ls); do
-	wrapProgram $out/bin/$executable \
-	  --prefix PATH : "${stdenv.lib.makeBinPath [ bc findutils sox procps opusTools lame flac ]}"
+  wrapProgram $out/bin/$executable \
+    --prefix PATH : "${lib.makeBinPath [ bc findutils sox procps opusTools lame flac ]}"
     done
   '';
 
-   meta = with stdenv.lib; {
+   meta = with lib; {
     homepage = "http://caudec.net/";
     description = "A multiprocess audio converter that supports many formats (FLAC, MP3, Ogg Vorbis, Windows codecs and many more)";
     license     = licenses.gpl3;
diff --git a/pkgs/applications/audio/cava/default.nix b/pkgs/applications/audio/cava/default.nix
index 26cc8cd78da..cc431ff46b9 100644
--- a/pkgs/applications/audio/cava/default.nix
+++ b/pkgs/applications/audio/cava/default.nix
@@ -1,12 +1,12 @@
-{ stdenv, fetchFromGitHub, autoreconfHook, alsaLib, fftw,
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, alsa-lib, fftw,
   libpulseaudio, ncurses }:
 
 stdenv.mkDerivation rec {
   pname = "cava";
-  version = "0.7.2";
+  version = "0.7.4";
 
   buildInputs = [
-    alsaLib
+    alsa-lib
     fftw
     libpulseaudio
     ncurses
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
     owner = "karlstav";
     repo = "cava";
     rev = version;
-    sha256 = "1chc08spjf5i17n8y48aqzdxsj8vvf0r2l62ldw2pqgw60dacvs1";
+    sha256 = "sha256-BlHGst34aUgQcXcuQG43VnKUTclCxfQmWRa6iCud8dc=";
   };
 
   nativeBuildInputs = [ autoreconfHook ];
@@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
       --replace "/usr/share/consolefonts" "$out/share/consolefonts"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Console-based Audio Visualizer for Alsa";
     homepage = "https://github.com/karlstav/cava";
     license = licenses.mit;
diff --git a/pkgs/applications/audio/cd-discid/default.nix b/pkgs/applications/audio/cd-discid/default.nix
index 2ceb5f6d09a..16c574e8d03 100644
--- a/pkgs/applications/audio/cd-discid/default.nix
+++ b/pkgs/applications/audio/cd-discid/default.nix
@@ -1,4 +1,4 @@
-{ fetchurl, stdenv
+{ fetchurl, lib, stdenv
 , IOKit ? null }:
 
 stdenv.mkDerivation rec {
@@ -13,12 +13,11 @@ stdenv.mkDerivation rec {
   installFlags = [ "PREFIX=$(out)" "INSTALL=install" ];
 
   buildInputs = []
-    ++ stdenv.lib.optional stdenv.isDarwin IOKit;
+    ++ lib.optional stdenv.isDarwin IOKit;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://linukz.org/cd-discid.shtml";
     license = licenses.gpl2Plus;
-    maintainers = [ maintainers.rycee ];
     platforms = platforms.unix;
     description = "Command-line utility to get CDDB discid information from a CD-ROM disc";
 
diff --git a/pkgs/applications/audio/cdparanoia/default.nix b/pkgs/applications/audio/cdparanoia/default.nix
index 0658305723c..36686655f36 100644
--- a/pkgs/applications/audio/cdparanoia/default.nix
+++ b/pkgs/applications/audio/cdparanoia/default.nix
@@ -1,14 +1,15 @@
-{ stdenv, fetchurl, autoreconfHook, gnu-config, IOKit, Carbon }:
+{ lib, stdenv, fetchurl, gnu-config, IOKit, Carbon }:
 
 stdenv.mkDerivation rec {
-  name = "cdparanoia-III-10.2";
+  pname = "cdparanoia-III";
+  version = "10.2";
 
   src = fetchurl {
-    url = "http://downloads.xiph.org/releases/cdparanoia/${name}.src.tgz";
+    url = "https://downloads.xiph.org/releases/cdparanoia/cdparanoia-III-${version}.src.tgz";
     sha256 = "1pv4zrajm46za0f6lv162iqffih57a8ly4pc69f7y0gfyigb8p80";
   };
 
-  patches = stdenv.lib.optionals stdenv.isDarwin [
+  patches = lib.optionals stdenv.isDarwin [
     (fetchurl {
       url = "https://trac.macports.org/export/70964/trunk/dports/audio/cdparanoia/files/osx_interface.patch";
       sha256 = "1n86kzm2ssl8fdf5wlhp6ncb2bf6b9xlb5vg0mhc85r69prqzjiy";
@@ -17,24 +18,24 @@ stdenv.mkDerivation rec {
       url = "https://trac.macports.org/export/70964/trunk/dports/audio/cdparanoia/files/patch-paranoia_paranoia.c.10.4.diff";
       sha256 = "17l2qhn8sh4jy6ryy5si6ll6dndcm0r537rlmk4a6a8vkn852vad";
     })
-    ] ++ stdenv.lib.optional stdenv.hostPlatform.isMusl ./utils.patch
+    ] ++ lib.optional stdenv.hostPlatform.isMusl ./utils.patch
     ++ [./fix_private_keyword.patch];
 
-  nativeBuildInputs = stdenv.lib.optional stdenv.isAarch64 autoreconfHook;
-
-  propagatedBuildInputs = stdenv.lib.optionals stdenv.isDarwin [
+  propagatedBuildInputs = lib.optionals stdenv.isDarwin [
     Carbon
     IOKit
   ];
 
   hardeningDisable = [ "format" ];
 
-  preConfigure = "unset CC" + stdenv.lib.optionalString stdenv.isAarch64 '';
+  preConfigure = ''
+    unset CC
+  '' + lib.optionalString (!stdenv.hostPlatform.isx86) ''
     cp ${gnu-config}/config.sub configure.sub
     cp ${gnu-config}/config.guess configure.guess
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://xiph.org/paranoia";
     description = "A tool and library for reading digital audio from CDs";
     license = with licenses; [ gpl2Plus lgpl21Plus ];
diff --git a/pkgs/applications/audio/cheesecutter/0001-fix-impure-build-date-display.patch b/pkgs/applications/audio/cheesecutter/0001-Drop-baked-in-build-date-for-r13y.patch
index 2e2746f4341..9bc0e7b933e 100644
--- a/pkgs/applications/audio/cheesecutter/0001-fix-impure-build-date-display.patch
+++ b/pkgs/applications/audio/cheesecutter/0001-Drop-baked-in-build-date-for-r13y.patch
@@ -1,3 +1,13 @@
+From eb21fd64a19a0e10c4c3826fc71610fd5850fa2f Mon Sep 17 00:00:00 2001
+From: Christoph Neidahl <christoph.neidahl@gmail.com>
+Date: Sun, 13 Sep 2020 23:18:51 +0200
+Subject: [PATCH 1/2] Drop baked-in build date for r13y
+
+---
+ src/ct2util.d | 2 +-
+ src/ui/ui.d   | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
 diff --git a/src/ct2util.d b/src/ct2util.d
 index 523cadc..e462b09 100644
 --- a/src/ct2util.d
@@ -24,3 +34,6 @@ index e418dda..21af408 100644
  		screen.cprint(4, 0, 1, headerColor, hdr);
  		screen.cprint(screen.width - 14, 0, 1, headerColor, "F12 = Help");
  		int c1 = audio.player.isPlaying ? 13 : 12;
+-- 
+2.25.4
+
diff --git a/pkgs/applications/audio/cheesecutter/0002-Prepend-libSDL.dylib-to-macOS-SDL-loader.patch b/pkgs/applications/audio/cheesecutter/0002-Prepend-libSDL.dylib-to-macOS-SDL-loader.patch
new file mode 100644
index 00000000000..6e33307f9f5
--- /dev/null
+++ b/pkgs/applications/audio/cheesecutter/0002-Prepend-libSDL.dylib-to-macOS-SDL-loader.patch
@@ -0,0 +1,25 @@
+From abc5e8786d41803300b56ef40c08db0d867eb01a Mon Sep 17 00:00:00 2001
+From: Christoph Neidahl <christoph.neidahl@gmail.com>
+Date: Sun, 13 Sep 2020 23:22:33 +0200
+Subject: [PATCH 2/2] Prepend libSDL.dylib to macOS SDL loader
+
+---
+ src/derelict/sdl/sdl.d | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/derelict/sdl/sdl.d b/src/derelict/sdl/sdl.d
+index e31a52f..f7915b1 100644
+--- a/src/derelict/sdl/sdl.d
++++ b/src/derelict/sdl/sdl.d
+@@ -54,7 +54,7 @@ public:
+         super(
+             "sdl.dll",
+             "libSDL.so, libSDL.so.0, libSDL-1.2.so, libSDL-1.2.so.0",
+-            "@executable_path/../Frameworks/SDL.framework/SDL, /Library/Frameworks/SDL.framework/SDL, /System/Library/Frameworks/SDL.framework/SDL"
++            "@rpath/libSDL.dylib, @executable_path/../Frameworks/SDL.framework/SDL, /Library/Frameworks/SDL.framework/SDL, /System/Library/Frameworks/SDL.framework/SDL"
+         );
+     }
+ 
+-- 
+2.25.4
+
diff --git a/pkgs/applications/audio/cheesecutter/default.nix b/pkgs/applications/audio/cheesecutter/default.nix
index 732c2968fde..6c14cc67f81 100644
--- a/pkgs/applications/audio/cheesecutter/default.nix
+++ b/pkgs/applications/audio/cheesecutter/default.nix
@@ -1,26 +1,31 @@
-{ stdenv, lib, fetchFromGitHub, fetchpatch
-, acme, ldc, patchelf
+{ stdenv
+, lib
+, fetchFromGitHub
+, acme
+, ldc
+, patchelf
 , SDL
 }:
-
 stdenv.mkDerivation rec {
   pname = "cheesecutter";
-  version = "unstable-2019-12-06";
+  version = "unstable-2021-02-27";
 
   src = fetchFromGitHub {
     owner = "theyamo";
     repo = "CheeseCutter";
-    rev = "6b433c5512d693262742a93c8bfdfb353d4be853";
-    sha256 = "1szlcg456b208w1237581sg21x69mqlh8cr6v8yvbhxdz9swxnwy";
+    rev = "84450d3614b8fb2cabda87033baab7bedd5a5c98";
+    sha256 = "sha256:0q4a791nayya6n01l0f4kk497rdq6kiq0n72fqdpwqy138pfwydn";
   };
 
-  nativeBuildInputs = [ acme ldc patchelf ];
+  patches = [
+    ./0001-Drop-baked-in-build-date-for-r13y.patch
+  ]
+  ++ lib.optional stdenv.hostPlatform.isDarwin ./0002-Prepend-libSDL.dylib-to-macOS-SDL-loader.patch;
 
-  buildInputs = [ SDL ];
+  nativeBuildInputs = [ acme ldc ]
+    ++ lib.optional (!stdenv.hostPlatform.isDarwin) patchelf;
 
-  patches = [
-    ./0001-fix-impure-build-date-display.patch
-  ];
+  buildInputs = [ SDL ];
 
   makefile = "Makefile.ldc";
 
@@ -33,15 +38,21 @@ stdenv.mkDerivation rec {
     cp -r tunes/* $out/share/cheesecutter/example_tunes
   '';
 
-  postFixup = ''
-    rpath=$(patchelf --print-rpath $out/bin/ccutter)
-    patchelf --set-rpath "$rpath:${lib.makeLibraryPath buildInputs}" $out/bin/ccutter
-  '';
+  postFixup =
+    let
+      rpathSDL = lib.makeLibraryPath [ SDL ];
+    in
+    if stdenv.hostPlatform.isDarwin then ''
+      install_name_tool -add_rpath ${rpathSDL} $out/bin/ccutter
+    '' else ''
+      rpath=$(patchelf --print-rpath $out/bin/ccutter)
+      patchelf --set-rpath "$rpath:${rpathSDL}" $out/bin/ccutter
+    '';
 
   meta = with lib; {
-    description = "A tracker program for composing music for the SID chip.";
+    description = "A tracker program for composing music for the SID chip";
     homepage = "https://github.com/theyamo/CheeseCutter/";
-    license = licenses.gpl2;
+    license = licenses.gpl2Plus;
     platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ];
     maintainers = with maintainers; [ OPNA2608 ];
   };
diff --git a/pkgs/applications/audio/chuck/default.nix b/pkgs/applications/audio/chuck/default.nix
index f30b5dba5b6..a6509256881 100644
--- a/pkgs/applications/audio/chuck/default.nix
+++ b/pkgs/applications/audio/chuck/default.nix
@@ -1,20 +1,20 @@
-{ stdenv, lib, fetchurl, alsaLib, bison, flex, libsndfile, which
+{ stdenv, lib, fetchurl, alsa-lib, bison, flex, libsndfile, which
 , AppKit, Carbon, CoreAudio, CoreMIDI, CoreServices, Kernel
 }:
 
 stdenv.mkDerivation rec {
-  version = "1.4.0.1";
+  version = "1.4.1.0";
   pname = "chuck";
 
   src = fetchurl {
     url = "http://chuck.cs.princeton.edu/release/files/chuck-${version}.tgz";
-    sha256 = "1m0fhndbqaf0lii1asyc50c66bv55ib6mbnm8fzk5qc5ncs0r8hi";
+    sha256 = "sha256-dL+ZrVFeMRPFW4MxUpNvrQKjzwBqVBBf8Rd3xHMZSSg=";
   };
 
   nativeBuildInputs = [ flex bison which ];
 
   buildInputs = [ libsndfile ]
-    ++ lib.optional (!stdenv.isDarwin) alsaLib
+    ++ lib.optional (!stdenv.isDarwin) alsa-lib
     ++ lib.optional stdenv.isDarwin [ AppKit Carbon CoreAudio CoreMIDI CoreServices Kernel ];
 
   patches = [ ./darwin-limits.patch ];
diff --git a/pkgs/applications/audio/clementine/default.nix b/pkgs/applications/audio/clementine/default.nix
index 0c1690f1462..550100574db 100644
--- a/pkgs/applications/audio/clementine/default.nix
+++ b/pkgs/applications/audio/clementine/default.nix
@@ -1,8 +1,49 @@
-{ stdenv, mkDerivation, fetchFromGitHub, fetchpatch, boost, cmake, chromaprint, gettext, gst_all_1, liblastfm
-, qtbase, qtx11extras
-, taglib, fftw, glew, qjson, sqlite, libgpod, libplist, usbmuxd, libmtp
-, libpulseaudio, gvfs, libcdio, libechonest, libspotify, pcre, projectm, protobuf
-, qca2, pkgconfig, sparsehash, config, makeWrapper, gst_plugins }:
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, fetchpatch
+, boost
+, cmake
+, chromaprint
+, gettext
+, gst_all_1
+, liblastfm
+, qtbase
+, qtx11extras
+, qttools
+, taglib
+, fftw
+, glew
+, qjson
+, sqlite
+, libgpod
+, libplist
+, usbmuxd
+, libmtp
+, libpulseaudio
+, gvfs
+, libcdio
+, libechonest
+, libspotify
+, pcre
+, projectm
+, protobuf
+, qca2
+, pkg-config
+, sparsehash
+, config
+, makeWrapper
+, gst_plugins
+
+, util-linux
+, libunwind
+, libselinux
+, elfutils
+, libsepol
+, orc
+
+, alsa-lib
+}:
 
 let
   withIpod = config.clementine.ipod or false;
@@ -10,6 +51,7 @@ let
   withCD = config.clementine.cd or true;
   withCloud = config.clementine.cloud or true;
 
+  # On the update after all 1.4rc, qt5.15 and protobuf 3.15 will be supported.
   version = "1.4.0rc1";
 
   src = fetchFromGitHub {
@@ -21,9 +63,26 @@ let
 
   patches = [
     ./clementine-spotify-blob.patch
+    (fetchpatch {
+      # "short-term" fix for execution on wayland (1.4.0rc1-131-g2179027a6)
+      # for https://github.com/clementine-player/Clementine/issues/6587
+      url = "https://github.com/clementine-player/Clementine/commit/2179027a6d97530c857e43be873baacd696ff332.patch";
+      sha256 = "0344bfcyvjim5ph8w4km6zkg96rj5g9ybp9x14qgyw2gkdksimn6";
+    })
   ];
 
-  nativeBuildInputs = [ cmake pkgconfig ];
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    makeWrapper
+
+    util-linux
+    libunwind
+    libselinux
+    elfutils
+    libsepol
+    orc
+  ];
 
   buildInputs = [
     boost
@@ -44,13 +103,16 @@ let
     qjson
     qtbase
     qtx11extras
+    qttools
     sqlite
     taglib
+
+    alsa-lib
   ]
-  ++ stdenv.lib.optionals (withIpod) [libgpod libplist usbmuxd]
-  ++ stdenv.lib.optionals (withMTP) [libmtp]
-  ++ stdenv.lib.optionals (withCD) [libcdio]
-  ++ stdenv.lib.optionals (withCloud) [sparsehash];
+  ++ lib.optionals (withIpod) [ libgpod libplist usbmuxd ]
+  ++ lib.optionals (withMTP) [ libmtp ]
+  ++ lib.optionals (withCD) [ libcdio ]
+  ++ lib.optionals (withCloud) [ sparsehash ];
 
   postPatch = ''
     sed -i src/CMakeLists.txt \
@@ -67,7 +129,7 @@ let
     inherit src patches nativeBuildInputs postPatch;
 
     # gst_plugins needed for setup-hooks
-    buildInputs = buildInputs ++ [ makeWrapper ] ++ gst_plugins;
+    buildInputs = buildInputs ++ gst_plugins;
 
     preConfigure = ''
       rm -rf ext/{,lib}clementine-spotifyblob
@@ -78,8 +140,6 @@ let
       "-DSPOTIFY_BLOB=OFF"
     ];
 
-    enableParallelBuilding = true;
-
     passthru.unfree = unfree;
 
     postInstall = ''
@@ -87,7 +147,7 @@ let
         --prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0"
     '';
 
-    meta = with stdenv.lib; {
+    meta = with lib; {
       homepage = "https://www.clementine-player.org";
       description = "A multiplatform music player";
       license = licenses.gpl3Plus;
@@ -103,7 +163,7 @@ let
     # Use the same patches and sources as Clementine
     inherit src nativeBuildInputs patches postPatch;
 
-    buildInputs = buildInputs ++ [ libspotify makeWrapper ];
+    buildInputs = buildInputs ++ [ libspotify ];
     # Only build and install the Spotify blob
     preBuild = ''
       cd ext/clementine-spotifyblob
@@ -121,8 +181,8 @@ let
         ln -s "${free}/share/$dir" "$out/share/$dir"
       done
     '';
-    enableParallelBuilding = true;
-    meta = with stdenv.lib; {
+
+    meta = with lib; {
       homepage = "https://www.clementine-player.org";
       description = "Spotify integration for Clementine";
       # The blob itself is Apache-licensed, although libspotify is unfree.
@@ -132,4 +192,5 @@ let
     };
   };
 
-in free
+in
+free
diff --git a/pkgs/applications/audio/clerk/default.nix b/pkgs/applications/audio/clerk/default.nix
index 3c78295db67..ebcd09ca6ad 100644
--- a/pkgs/applications/audio/clerk/default.nix
+++ b/pkgs/applications/audio/clerk/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchFromGitHub, makeWrapper, rofi, mpc_cli, perl,
-utillinux, pythonPackages, libnotify }:
+{ lib, stdenv, fetchFromGitHub, makeWrapper, rofi, mpc_cli, perl,
+util-linux, python3Packages, libnotify }:
 
 stdenv.mkDerivation {
   name = "clerk-2016-10-14";
@@ -11,17 +11,20 @@ stdenv.mkDerivation {
     sha256 = "0y045my65hr3hjyx13jrnyg6g3wb41phqb1m7azc4l6vx6r4124b";
   };
 
-  buildInputs = [ makeWrapper pythonPackages.mpd2 ];
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ python3Packages.mpd2 ];
 
   dontBuild = true;
 
+  strictDeps = true;
+
   installPhase = ''
     DESTDIR=$out PREFIX=/ make install
     wrapProgram $out/bin/clerk \
-      --prefix PATH : "${stdenv.lib.makeBinPath [ rofi mpc_cli perl utillinux libnotify ]}"
+      --prefix PATH : "${lib.makeBinPath [ rofi mpc_cli perl util-linux libnotify ]}"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "An MPD client built on top of rofi";
     homepage    = "https://github.com/carnager/clerk";
     license     = licenses.mit;
diff --git a/pkgs/applications/audio/cmt/default.nix b/pkgs/applications/audio/cmt/default.nix
index 96cc3c57319..bb23f9b62bb 100644
--- a/pkgs/applications/audio/cmt/default.nix
+++ b/pkgs/applications/audio/cmt/default.nix
@@ -1,4 +1,4 @@
-{ stdenv
+{ lib, stdenv
 , fetchurl
 , ladspaH
 }:
@@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
     mkdir -p $out/lib/ladspa
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Computer Music Toolkit";
     homepage = "https://www.ladspa.org/cmt";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/cmus/default.nix b/pkgs/applications/audio/cmus/default.nix
index 3e5916ba098..ea7ad1015be 100644
--- a/pkgs/applications/audio/cmus/default.nix
+++ b/pkgs/applications/audio/cmus/default.nix
@@ -1,12 +1,12 @@
-{ config, stdenv, fetchFromGitHub, runCommand, ncurses, pkgconfig
-, libiconv, CoreAudio
+{ config, lib, stdenv, fetchFromGitHub, runCommand, ncurses, pkg-config
+, libiconv, CoreAudio, AudioUnit
 
-, alsaSupport ? stdenv.isLinux, alsaLib ? null
+, alsaSupport ? stdenv.isLinux, alsa-lib ? null
 # simple fallback for everyone else
 , aoSupport ? !stdenv.isLinux, libao ? null
 , jackSupport ? false, libjack ? null
 , samplerateSupport ? jackSupport, libsamplerate ? null
-, ossSupport ? false, alsaOss ? null
+, ossSupport ? false, alsa-oss ? null
 , pulseaudioSupport ? config.pulseaudio or false, libpulseaudio ? null
 , mprisSupport ? stdenv.isLinux, systemd ? null
 
@@ -39,7 +39,7 @@
 #, vtxSupport ? true, libayemu ? null
 }:
 
-with stdenv.lib;
+with lib;
 
 assert samplerateSupport -> jackSupport;
 
@@ -55,11 +55,11 @@ let
 
   opts = [
     # Audio output
-    (mkFlag alsaSupport       "CONFIG_ALSA=y"       alsaLib)
+    (mkFlag alsaSupport       "CONFIG_ALSA=y"       alsa-lib)
     (mkFlag aoSupport         "CONFIG_AO=y"         libao)
     (mkFlag jackSupport       "CONFIG_JACK=y"       libjack)
     (mkFlag samplerateSupport "CONFIG_SAMPLERATE=y" libsamplerate)
-    (mkFlag ossSupport        "CONFIG_OSS=y"        alsaOss)
+    (mkFlag ossSupport        "CONFIG_OSS=y"        alsa-oss)
     (mkFlag pulseaudioSupport "CONFIG_PULSE=y"      libpulseaudio)
     (mkFlag mprisSupport      "CONFIG_MPRIS=y"      systemd)
 
@@ -102,13 +102,13 @@ in
 
 stdenv.mkDerivation rec {
   pname = "cmus";
-  version = "2.8.0";
+  version = "2.9.1";
 
   src = fetchFromGitHub {
     owner  = "cmus";
     repo   = "cmus";
     rev    = "v${version}";
-    sha256 = "1ydnvq13ay8b8mfmmgwi5qsgyf220yi1d01acbnxqn775dghmwar";
+    sha256 = "sha256-HEiEnEWf/MzhPO19VKTLYzhylpEvyzy1Jxs6EW2NU34=";
   };
 
   patches = [ ./option-debugging.patch ];
@@ -118,15 +118,15 @@ stdenv.mkDerivation rec {
     "CONFIG_WAV=y"
   ] ++ concatMap (a: a.flags) opts);
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ ncurses ]
-    ++ stdenv.lib.optional stdenv.cc.isClang clangGCC
-    ++ stdenv.lib.optionals stdenv.isDarwin [ libiconv CoreAudio ]
+    ++ lib.optional stdenv.cc.isClang clangGCC
+    ++ lib.optionals stdenv.isDarwin [ libiconv CoreAudio AudioUnit ]
     ++ flatten (concatMap (a: a.deps) opts);
 
   makeFlags = [ "LD=$(CC)" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Small, fast and powerful console music player for Linux and *BSD";
     homepage = "https://cmus.github.io/";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/cmusfm/default.nix b/pkgs/applications/audio/cmusfm/default.nix
index 6695b9a7237..4cf91c698be 100644
--- a/pkgs/applications/audio/cmusfm/default.nix
+++ b/pkgs/applications/audio/cmusfm/default.nix
@@ -1,20 +1,20 @@
-{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, curl, libnotify, gdk-pixbuf }:
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, pkg-config, curl, libnotify, gdk-pixbuf }:
 
 stdenv.mkDerivation {
-  version = "2018-10-11";
+  version = "2021-05-19";
   pname = "cmusfm-unstable";
   src = fetchFromGitHub {
     owner = "Arkq";
     repo = "cmusfm";
-    rev = "ad2fd0aad3f4f1a25add1b8c2f179e8859885873";
-    sha256 = "0wpwdwgyrp64nvwc6shy0n387p31j6aw6cnmfi9x2y1jhl5hbv6b";
+    rev = "a1f9f37c5819ca8a5b48e6185c2ec7ad478b9f1a";
+    sha256 = "19akgvh9gl99xvpmzgqv88w2mnnln7k6290dr5rn3h6a1ihvllaw";
   };
   # building
   configureFlags = [ "--enable-libnotify" ];
-  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
   buildInputs = [ curl libnotify gdk-pixbuf ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Last.fm and Libre.fm standalone scrobbler for the cmus music player";
     longDescription = ''
       Features:
@@ -29,7 +29,7 @@ stdenv.mkDerivation {
       + Inside cmus run `:set status_display_program=cmusfm` to set up cmusfm
     '';
     homepage = "https://github.com/Arkq/cmusfm/";
-    maintainers = with stdenv.lib.maintainers; [ CharlesHD ];
+    maintainers = with lib.maintainers; [ CharlesHD mudri ];
     license = licenses.gpl3Plus;
     platforms = platforms.linux ++ platforms.darwin;
   };
diff --git a/pkgs/applications/audio/cozy-audiobooks/default.nix b/pkgs/applications/audio/cozy-audiobooks/default.nix
index a5947bd37f1..5eb71cbe04f 100644
--- a/pkgs/applications/audio/cozy-audiobooks/default.nix
+++ b/pkgs/applications/audio/cozy-audiobooks/default.nix
@@ -1,7 +1,7 @@
-{ stdenv, fetchFromGitHub
+{ lib, fetchFromGitHub
 , ninja
 , meson
-, pkgconfig
+, pkg-config
 , wrapGAppsHook
 , appstream-glib
 , desktop-file-utils
@@ -12,7 +12,7 @@
 , file
 , cairo
 , gettext
-, gnome3
+, gnome
 }:
 
 python3Packages.buildPythonApplication rec {
@@ -20,7 +20,7 @@ python3Packages.buildPythonApplication rec {
   format = "other"; # no setup.py
 
   pname = "cozy";
-  version = "0.6.7";
+  version = "0.7.2";
 
   # Temporary fix
   # See https://github.com/NixOS/nixpkgs/issues/57029
@@ -31,11 +31,11 @@ python3Packages.buildPythonApplication rec {
     owner = "geigi";
     repo = pname;
     rev = version;
-    sha256 = "0f8dyqj6111czn8spgsnic1fqs3kimjwl1b19mw55fa924b9bhsa";
+    sha256 = "0fmbddi4ga0bppwg3rm3yjmf7jgqc6zfslmavnr1pglbzkjhy9fs";
   };
 
   nativeBuildInputs = [
-    meson ninja pkgconfig
+    meson ninja pkg-config
     wrapGAppsHook
     appstream-glib
     desktop-file-utils
@@ -46,7 +46,7 @@ python3Packages.buildPythonApplication rec {
     gtk3
     cairo
     gettext
-    gnome3.adwaita-icon-theme
+    gnome.adwaita-icon-theme
   ] ++ (with gst_all_1; [
     gstreamer
     gst-plugins-good
@@ -55,25 +55,30 @@ python3Packages.buildPythonApplication rec {
   ]);
 
   propagatedBuildInputs = with python3Packages; [
-    gst-python
-    pygobject3
+    apsw
+    cairo
     dbus-python
+    distro
+    gst-python
+    magic
     mutagen
+    packaging
     peewee
-    magic
+    pygobject3
+    pytz
+    requests
   ];
 
   postPatch = ''
-    chmod +x data/meson_post_install.py
-    patchShebangs data/meson_post_install.py
-    substituteInPlace cozy/magic/magic.py --replace "ctypes.util.find_library('magic')" "'${file}/lib/libmagic${stdenv.hostPlatform.extensions.sharedLibrary}'"
+    chmod +x meson/post_install.py
+    patchShebangs meson/post_install.py
   '';
 
   postInstall = ''
     ln -s $out/bin/com.github.geigi.cozy $out/bin/cozy
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A modern audio book player for Linux using GTK 3";
     homepage = "https://cozy.geigi.de/";
     maintainers = [ maintainers.makefu ];
diff --git a/pkgs/applications/audio/crip/default.nix b/pkgs/applications/audio/crip/default.nix
index 0181ede26dd..d635dce83f4 100644
--- a/pkgs/applications/audio/crip/default.nix
+++ b/pkgs/applications/audio/crip/default.nix
@@ -1,4 +1,4 @@
-{ stdenv
+{ lib, stdenv
 , fetchurl
 , makeWrapper
 
@@ -16,12 +16,13 @@
 , which
 }:
 
-with stdenv.lib;
+with lib;
 
 stdenv.mkDerivation rec {
-  name = "crip-3.9";
+  pname = "crip";
+  version = "3.9";
   src = fetchurl {
-    url = "http://bach.dynet.com/crip/src/${name}.tar.gz";
+    url = "http://bach.dynet.com/${pname}/src/${pname}-${version}.tar.gz";
     sha256 = "0pk9152wll6fmkj1pki3fz3ijlf06jyk32v31yarwvdkwrk7s9xz";
   };
 
@@ -60,8 +61,8 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "http://bach.dynet.com/crip/";
     description = "Terminal-based ripper/encoder/tagger tool for creating Ogg Vorbis/FLAC files";
-    license = stdenv.lib.licenses.gpl1;
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.gpl1;
+    platforms = lib.platforms.linux;
     maintainers = [ maintainers.endgame ];
   };
 }
diff --git a/pkgs/applications/audio/csa/default.nix b/pkgs/applications/audio/csa/default.nix
index 756c21892fb..0f7ad460a8c 100644
--- a/pkgs/applications/audio/csa/default.nix
+++ b/pkgs/applications/audio/csa/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
   pname = "csa";
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
   # so we remove one of them:
   postInstall = "rm $out/lib/ladspa/celllm_3890.*";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://sourceforge.net/projects/csa/";
     description = "A group of LADSPA Audio plugins for FM broadcast and more";
     longDescription = ''
@@ -23,6 +23,6 @@ stdenv.mkDerivation rec {
     '';
     license = licenses.gpl3;
     maintainers = [ maintainers.magnetophon ];
-    platforms = platforms.linux;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/applications/audio/csound/csound-manual/default.nix b/pkgs/applications/audio/csound/csound-manual/default.nix
index 5cc8d71383b..ecd6685e217 100644
--- a/pkgs/applications/audio/csound/csound-manual/default.nix
+++ b/pkgs/applications/audio/csound/csound-manual/default.nix
@@ -1,5 +1,5 @@
 {
-  stdenv, fetchFromGitHub, docbook_xsl,
+  lib, stdenv, fetchFromGitHub, docbook_xsl,
   docbook_xml_dtd_45, python, pygments,
   libxslt
 }:
@@ -37,8 +37,8 @@ stdenv.mkDerivation {
   meta = {
     description = "The Csound Canonical Reference Manual";
     homepage = "https://github.com/csound/manual";
-    license = stdenv.lib.licenses.fdl12Plus;
-    maintainers = [ stdenv.lib.maintainers.hlolli ];
-    platforms = stdenv.lib.platforms.all;
+    license = lib.licenses.fdl12Plus;
+    maintainers = [ lib.maintainers.hlolli ];
+    platforms = lib.platforms.all;
   };
 }
diff --git a/pkgs/applications/audio/csound/csound-qt/default.nix b/pkgs/applications/audio/csound/csound-qt/default.nix
index 895609d3c02..953a919d0c7 100644
--- a/pkgs/applications/audio/csound/csound-qt/default.nix
+++ b/pkgs/applications/audio/csound/csound-qt/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, csound, desktop-file-utils,
+{ lib, stdenv, csound, desktop-file-utils,
   fetchFromGitHub, python, python-qt, qmake,
   qtwebengine, qtxmlpatterns, rtmidi, fetchpatch }:
 
@@ -40,8 +40,10 @@ stdenv.mkDerivation rec {
                  "SHARE_DIR=${placeholder "out"}/share"
                  ];
 
-  meta = with stdenv.lib; {
-    description = "CsoundQt is a frontend for Csound with editor, integrated help, widgets and other features.";
+  dontWrapQtApps = true;
+
+  meta = with lib; {
+    description = "CsoundQt is a frontend for Csound with editor, integrated help, widgets and other features";
     homepage = "https://csoundqt.github.io/";
     license = licenses.gpl2;
     platforms = platforms.linux;
diff --git a/pkgs/applications/audio/csound/default.nix b/pkgs/applications/audio/csound/default.nix
index 944a2d189d7..029710206f0 100644
--- a/pkgs/applications/audio/csound/default.nix
+++ b/pkgs/applications/audio/csound/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchFromGitHub, cmake, libsndfile, libsamplerate, flex, bison, boost, gettext
-, alsaLib ? null
+{ lib, stdenv, fetchFromGitHub, cmake, libsndfile, libsamplerate, flex, bison, boost, gettext
+, alsa-lib ? null
 , libpulseaudio ? null
 , libjack2 ? null
 , liblo ? null
@@ -17,9 +17,7 @@ stdenv.mkDerivation rec {
   # When updating, please check if https://github.com/csound/csound/issues/1078
   # has been fixed in the new version so we can use the normal fluidsynth
   # version and remove fluidsynth 1.x from nixpkgs again.
-  version = "6.14.0";
-
-  enableParallelBuilding = true;
+  version = "6.16.2";
 
   hardeningDisable = [ "format" ];
 
@@ -27,20 +25,20 @@ stdenv.mkDerivation rec {
     owner = "csound";
     repo = "csound";
     rev = version;
-    sha256 = "1sr9knfhbm2m0wpkjq2l5n471vnl51wy4p6j4m95zqybimzb4s2j";
+    sha256 = "sha256-1rcS3kOspU9ACx45yB8betph4G0hso1OSJQRiabX6tE=";
   };
 
   cmakeFlags = [ "-DBUILD_CSOUND_AC=0" ] # fails to find Score.hpp
-    ++ stdenv.lib.optional (libjack2 != null) "-DJACK_HEADER=${libjack2}/include/jack/jack.h";
+    ++ lib.optional (libjack2 != null) "-DJACK_HEADER=${libjack2}/include/jack/jack.h";
 
   nativeBuildInputs = [ cmake flex bison gettext ];
   buildInputs = [ libsndfile libsamplerate boost ]
     ++ builtins.filter (optional: optional != null) [
-      alsaLib libpulseaudio libjack2
+      alsa-lib libpulseaudio libjack2
       liblo ladspa-sdk fluidsynth eigen
       curl tcltk fltk ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Sound design, audio synthesis, and signal processing system, providing facilities for music composition and performance on all major operating systems and platforms";
     homepage = "http://www.csounds.com/";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/curseradio/default.nix b/pkgs/applications/audio/curseradio/default.nix
index 1dd5f9ee5eb..94059e06e54 100644
--- a/pkgs/applications/audio/curseradio/default.nix
+++ b/pkgs/applications/audio/curseradio/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, substituteAll, python3Packages, mpv }:
+{ lib, fetchFromGitHub, substituteAll, python3Packages, mpv }:
 
 python3Packages.buildPythonApplication rec {
   version = "0.2";
@@ -27,7 +27,7 @@ python3Packages.buildPythonApplication rec {
   # No tests
   doCheck = false;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Command line radio player";
     homepage = "https://github.com/chronitis/curseradio";
     license = licenses.mit;
diff --git a/pkgs/applications/audio/deadbeef/default.nix b/pkgs/applications/audio/deadbeef/default.nix
index 6b92d1263e3..c1cecc13ec5 100644
--- a/pkgs/applications/audio/deadbeef/default.nix
+++ b/pkgs/applications/audio/deadbeef/default.nix
@@ -1,9 +1,9 @@
-{ config, stdenv, fetchFromGitHub
+{ config, lib, stdenv, fetchFromGitHub
 , autoconf
 , automake
 , libtool
 , intltool
-, pkgconfig
+, pkg-config
 , jansson
 # deadbeef can use either gtk2 or gtk3
 , gtk2Support ? false, gtk2 ? null
@@ -17,7 +17,7 @@
 , aacSupport ? true, faad2 ? null
 , opusSupport ? true, opusfile ? null
 , wavpackSupport ? false, wavpack ? null
-, ffmpegSupport ? false, ffmpeg_3 ? null
+, ffmpegSupport ? false, ffmpeg ? null
 , apeSupport ? true, yasm ? null
 # misc plugins
 , zipSupport ? true, libzip ? null
@@ -25,7 +25,7 @@
 , hotkeysSupport ? true, libX11 ? null
 , osdSupport ? true, dbus ? null
 # output plugins
-, alsaSupport ? true, alsaLib ? null
+, alsaSupport ? true, alsa-lib ? null
 , pulseSupport ? config.pulseaudio or stdenv.isLinux, libpulseaudio ? null
 # effect plugins
 , resamplerSupport ? true, libsamplerate ? null
@@ -45,12 +45,12 @@ assert cdaSupport -> (libcdio != null && libcddb != null);
 assert aacSupport -> faad2 != null;
 assert opusSupport -> opusfile != null;
 assert zipSupport -> libzip != null;
-assert ffmpegSupport -> ffmpeg_3 != null;
+assert ffmpegSupport -> ffmpeg != null;
 assert apeSupport -> yasm != null;
 assert artworkSupport -> imlib2 != null;
 assert hotkeysSupport -> libX11 != null;
 assert osdSupport -> dbus != null;
-assert alsaSupport -> alsaLib != null;
+assert alsaSupport -> alsa-lib != null;
 assert pulseSupport -> libpulseaudio != null;
 assert resamplerSupport -> libsamplerate != null;
 assert overloadSupport -> zlib != null;
@@ -68,7 +68,7 @@ stdenv.mkDerivation rec {
     sha256 = "161b0ll8v4cjgwwmk137hzvh0jidlkx56vjkpnr70f0x4jzv2nll";
   };
 
-  buildInputs = with stdenv.lib; [ jansson ]
+  buildInputs = with lib; [ jansson ]
     ++ optional gtk2Support gtk2
     ++ optionals gtk3Support [ gtk3 gsettings-desktop-schemas ]
     ++ optional vorbisSupport libvorbis
@@ -79,12 +79,12 @@ stdenv.mkDerivation rec {
     ++ optional aacSupport faad2
     ++ optional opusSupport opusfile
     ++ optional zipSupport libzip
-    ++ optional ffmpegSupport ffmpeg_3
+    ++ optional ffmpegSupport ffmpeg
     ++ optional apeSupport yasm
     ++ optional artworkSupport imlib2
     ++ optional hotkeysSupport libX11
     ++ optional osdSupport dbus
-    ++ optional alsaSupport alsaLib
+    ++ optional alsaSupport alsa-lib
     ++ optional pulseSupport libpulseaudio
     ++ optional resamplerSupport libsamplerate
     ++ optional overloadSupport zlib
@@ -97,8 +97,8 @@ stdenv.mkDerivation rec {
     automake
     intltool
     libtool
-    pkgconfig
-  ] ++ stdenv.lib.optional gtk3Support wrapGAppsHook;
+    pkg-config
+  ] ++ lib.optional gtk3Support wrapGAppsHook;
 
   enableParallelBuilding = true;
 
@@ -106,7 +106,7 @@ stdenv.mkDerivation rec {
     ./autogen.sh
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Ultimate Music Player for GNU/Linux";
     homepage = "http://deadbeef.sourceforge.net/";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/deadbeef/plugins/headerbar-gtk3.nix b/pkgs/applications/audio/deadbeef/plugins/headerbar-gtk3.nix
index 337d570a935..16cefc5ff85 100644
--- a/pkgs/applications/audio/deadbeef/plugins/headerbar-gtk3.nix
+++ b/pkgs/applications/audio/deadbeef/plugins/headerbar-gtk3.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, autoconf, automake, libtool, pkgconfig, libxml2, deadbeef, glib, gtk3 }:
+{ lib, stdenv, fetchFromGitHub, autoconf, automake, libtool, pkg-config, libxml2, deadbeef, glib, gtk3 }:
 
 stdenv.mkDerivation rec {
   pname = "deadbeef-headerbar-gtk3-plugin";
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
     sha256 = "1v1schvnps7ypjqgcbqi74a45w8r2gbhrawz7filym22h1qr9wn0";
   };
 
-  nativeBuildInputs = [ autoconf automake libtool pkgconfig libxml2 ];
+  nativeBuildInputs = [ autoconf automake libtool pkg-config libxml2 ];
   buildInputs = [ deadbeef glib gtk3 ];
 
   # Choose correct installation path
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
 
   preConfigure = "./autogen.sh";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Plug-in that adds GTK 3 header bar to the DeaDBeeF music player";
     homepage = "https://github.com/saivert/ddb_misc_headerbar_GTK3";
     license = licenses.gpl2Plus;
diff --git a/pkgs/applications/audio/deadbeef/plugins/infobar.nix b/pkgs/applications/audio/deadbeef/plugins/infobar.nix
index 294d3a0ad8b..3f62e73e7e4 100644
--- a/pkgs/applications/audio/deadbeef/plugins/infobar.nix
+++ b/pkgs/applications/audio/deadbeef/plugins/infobar.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, deadbeef, gtk3, libxml2 }:
+{ lib, stdenv, fetchurl, pkg-config, deadbeef, gtk3, libxml2 }:
 
 stdenv.mkDerivation rec {
   pname = "deadbeef-infobar-plugin";
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
     sha256 = "0c9wh3wh1hdww7v96i8cy797la06mylhfi0880k8vwh88079aapf";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ deadbeef gtk3 libxml2 ];
 
   buildFlags = [ "gtk3" ];
@@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
     runHook postInstall
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     broken = true; # crashes DeaDBeeF and is abandoned (https://bitbucket.org/dsimbiriatin/deadbeef-infobar/issues/38/infobar-causes-deadbeef-180-to-crash)
     description = "DeaDBeeF Infobar Plugin";
     homepage = "https://bitbucket.org/dsimbiriatin/deadbeef-infobar";
diff --git a/pkgs/applications/audio/deadbeef/plugins/lyricbar.nix b/pkgs/applications/audio/deadbeef/plugins/lyricbar.nix
index 699f9d86f68..bc6d206956f 100644
--- a/pkgs/applications/audio/deadbeef/plugins/lyricbar.nix
+++ b/pkgs/applications/audio/deadbeef/plugins/lyricbar.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, pkgconfig, deadbeef, gtkmm3, libxmlxx3 }:
+{ lib, stdenv, fetchFromGitHub, pkg-config, deadbeef, gtkmm3, libxmlxx3 }:
 
 stdenv.mkDerivation {
   pname = "deadbeef-lyricbar-plugin";
@@ -11,12 +11,12 @@ stdenv.mkDerivation {
     sha256 = "108hx5530f4xm8p9m2bk79nq7jkhcj39ad3vmxb2y6h6l2zv5kwl";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ deadbeef gtkmm3 libxmlxx3 ];
 
   buildFlags = [ "gtk3" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Plugin for DeaDBeeF audio player that fetches and shows the song’s lyrics";
     homepage = "https://github.com/C0rn3j/deadbeef-lyricbar";
     license = licenses.mit;
diff --git a/pkgs/applications/audio/deadbeef/plugins/mpris2.nix b/pkgs/applications/audio/deadbeef/plugins/mpris2.nix
index 95606a869b7..d0c1b4f9e50 100644
--- a/pkgs/applications/audio/deadbeef/plugins/mpris2.nix
+++ b/pkgs/applications/audio/deadbeef/plugins/mpris2.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, deadbeef, glib }:
+{ lib, stdenv, fetchurl, pkg-config, deadbeef, glib }:
 
 stdenv.mkDerivation rec {
   pname = "deadbeef-mpris2-plugin";
@@ -9,11 +9,11 @@ stdenv.mkDerivation rec {
     sha256 = "0s3y4ka4qf38cypc0xspy79q0g5y1kqx6ldad7yr6a45nw6j95jh";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
 
   buildInputs = [ deadbeef glib ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "MPRISv2 plugin for the DeaDBeeF music player";
     homepage = "https://github.com/Serranya/deadbeef-mpris2-plugin/";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/deadbeef/plugins/statusnotifier.nix b/pkgs/applications/audio/deadbeef/plugins/statusnotifier.nix
new file mode 100644
index 00000000000..a1ca052f9c6
--- /dev/null
+++ b/pkgs/applications/audio/deadbeef/plugins/statusnotifier.nix
@@ -0,0 +1,39 @@
+{ lib, stdenv, fetchFromGitHub, pkg-config, deadbeef, gtk3, perl
+, libdbusmenu-glib }:
+
+stdenv.mkDerivation rec {
+  pname = "deadbeef-statusnotifier-plugin";
+  version = "1.6";
+
+  src = fetchFromGitHub {
+    owner = "vovochka404";
+    repo = "deadbeef-statusnotifier-plugin";
+    rev = "v${version}";
+    sha256 = "sha256-6WEbY59vPNrL3W5GUwFQJimmSS+td8Ob+G46fPAxfV4=";
+  };
+
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ deadbeef gtk3 libdbusmenu-glib ];
+
+  buildFlags = [ "gtk3" ];
+
+  postPatch = ''
+    substituteInPlace tools/glib-mkenums \
+      --replace /usr/bin/perl "${perl}/bin/perl"
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/lib/deadbeef
+    cp build/sni_gtk3.so $out/lib/deadbeef
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "DeaDBeeF StatusNotifier Plugin";
+    homepage = "https://github.com/vovochka404/deadbeef-statusnotifier-plugin";
+    license = licenses.gpl3Plus;
+    maintainers = [ maintainers.kurnevsky ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/audio/deadbeef/wrapper.nix b/pkgs/applications/audio/deadbeef/wrapper.nix
index cd45ef5926b..66108deab1e 100644
--- a/pkgs/applications/audio/deadbeef/wrapper.nix
+++ b/pkgs/applications/audio/deadbeef/wrapper.nix
@@ -5,7 +5,7 @@ symlinkJoin {
 
   paths = [ deadbeef ] ++ plugins;
 
-  buildInputs = [ makeWrapper ];
+  nativeBuildInputs = [ makeWrapper ];
 
   postBuild = ''
     wrapProgram $out/bin/deadbeef \
diff --git a/pkgs/applications/audio/denemo/default.nix b/pkgs/applications/audio/denemo/default.nix
index 313c7cbfd42..3a2dbd139d7 100644
--- a/pkgs/applications/audio/denemo/default.nix
+++ b/pkgs/applications/audio/denemo/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig
+{ lib, stdenv, fetchurl, pkg-config
 , libjack2, gettext, intltool, guile_2_0, lilypond
 , glib, libxml2, librsvg, libsndfile, aubio
 , gtk3, gtksourceview, evince, fluidsynth, rubberband
@@ -6,11 +6,11 @@
 
 stdenv.mkDerivation rec {
   pname = "denemo";
-  version = "2.4.0";
+  version = "2.5.0";
 
   src = fetchurl {
     url = "https://ftp.gnu.org/gnu/denemo/denemo-${version}.tar.gz";
-    sha256 = "145kq0zfgdadykl3i6na221i4s5wzdrcqq48amzyfarnrqk2rmpd";
+    sha256 = "sha256-B6GbBL/o/z0emT+Iw6XvWmAsJCmIwSGCyV1DkhDyfBY=";
   };
 
   buildInputs = [
@@ -28,10 +28,10 @@ stdenv.mkDerivation rec {
     wrapGAppsHook
     intltool
     gettext
-    pkgconfig
+    pkg-config
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Music notation and composition software used with lilypond";
     homepage = "http://denemo.org";
     license = licenses.gpl3;
diff --git a/pkgs/applications/audio/dfasma/default.nix b/pkgs/applications/audio/dfasma/default.nix
index 6df4679d1d5..3d4e5e5e5b9 100644
--- a/pkgs/applications/audio/dfasma/default.nix
+++ b/pkgs/applications/audio/dfasma/default.nix
@@ -1,4 +1,4 @@
-{ mkDerivation, stdenv, fetchFromGitHub, fftw, libsndfile, qtbase, qtmultimedia, qmake }:
+{ mkDerivation, lib, fetchFromGitHub, fftw, libsndfile, qtbase, qtmultimedia, qmake }:
 
 let
 
@@ -9,7 +9,7 @@ let
       repo = "REAPER";
       owner = "gillesdegottex";
     };
-    meta = with stdenv.lib; {
+    meta = with lib; {
      license = licenses.asl20;
     };
   };
@@ -21,7 +21,7 @@ let
       repo = "libqaudioextra";
       owner = "gillesdegottex";
     };
-    meta = with stdenv.lib; {
+    meta = with lib; {
      license = licenses.gpl3Plus;
     };
   };
@@ -49,7 +49,7 @@ in mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Analyse and compare audio files in time and frequency";
     longDescription = ''
       DFasma is free open-source software to compare audio files by time and
diff --git a/pkgs/applications/audio/diopser/default.nix b/pkgs/applications/audio/diopser/default.nix
new file mode 100644
index 00000000000..339eae1a7ca
--- /dev/null
+++ b/pkgs/applications/audio/diopser/default.nix
@@ -0,0 +1,76 @@
+{ lib, stdenv, fetchFromGitHub, cmake, pkg-config
+, libjack2, alsa-lib, freetype, libX11, libXrandr, libXinerama, libXext, libXcursor
+}:
+
+let
+
+  # Derived from subprojects/function2.wrap
+  function2 = rec {
+    version = "4.1.0";
+    src = fetchFromGitHub {
+      owner = "Naios";
+      repo = "function2";
+      rev = version;
+      hash = "sha256-JceZU8ZvtYhFheh8BjMvjjZty4hcYxHEK+IIo5X4eSk=";
+    };
+  };
+
+  juce = rec {
+    version = "unstable-2021-04-07";
+    src = fetchFromGitHub {
+      owner = "juce-framework";
+      repo = "JUCE";
+      rev = "1a5fb5992a1a4e28e998708ed8dce2cc864a30d7";
+      sha256= "1ri7w4sz3sy5xilibg53ls9526fx7jwbv8rc54ccrqfhxqyin308";
+    };
+  };
+
+
+in  stdenv.mkDerivation rec {
+  pname = "diopser";
+  version = "unstable-2021-5-13";
+
+  src = fetchFromGitHub {
+    owner = "robbert-vdh";
+    repo = pname;
+    fetchSubmodules = true;
+    rev = "d5fdc92f1caf5a828e071dac99e106e58f06d84d";
+    sha256 = "06y1h895yxh44gp4vxzrna59lf7nlfw7aacd3kk4l1g56jhy9pdx";
+  };
+
+  postUnpack = ''
+    (
+      cd "$sourceRoot"
+      cp -R --no-preserve=mode,ownership ${function2.src} function2
+      cp -R --no-preserve=mode,ownership ${juce.src} JUCE
+      sed -i 's@CPMAddPackage("gh:juce-framework/JUCE.*@add_subdirectory(JUCE)@g' CMakeLists.txt
+      sed -i 's@CPMAddPackage("gh:Naios/function2.*@add_subdirectory(function2)@g' CMakeLists.txt
+      patchShebangs .
+    )
+  '';
+
+  installPhase = ''
+    mkdir -p $out/lib/vst3
+    cp -r Diopser_artefacts/Release/VST3/Diopser.vst3 $out/lib/vst3
+  '';
+
+  nativeBuildInputs = [ cmake pkg-config ];
+
+  buildInputs = [
+    libjack2 alsa-lib freetype libX11 libXrandr libXinerama libXext
+    libXcursor
+  ];
+
+  cmakeFlags = [
+    "-DCMAKE_AR=${stdenv.cc.cc}/bin/gcc-ar"
+    "-DCMAKE_RANLIB=${stdenv.cc.cc}/bin/gcc-ranlib"
+  ];
+
+  meta = with lib; {
+    description = "A totally original phase rotation plugin";
+    homepage = "https://github.com/robbert-vdh/diopser";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ magnetophon ];
+    platforms = platforms.all;
+  };
+}
diff --git a/pkgs/applications/audio/dirt/default.nix b/pkgs/applications/audio/dirt/default.nix
index 5e0cf3616fe..a456d62e6f6 100644
--- a/pkgs/applications/audio/dirt/default.nix
+++ b/pkgs/applications/audio/dirt/default.nix
@@ -1,7 +1,8 @@
-{ stdenv, fetchFromGitHub, libsndfile, libsamplerate, liblo, libjack2 }:
+{ lib, stdenv, fetchFromGitHub, libsndfile, libsamplerate, liblo, libjack2 }:
 
 stdenv.mkDerivation {
-  name = "dirt-2018-01-01";
+  pname = "dirt";
+  version = "unstable-2018-01-01";
   src = fetchFromGitHub {
     repo = "Dirt";
     owner = "tidalcycles";
@@ -19,7 +20,7 @@ stdenv.mkDerivation {
     cp -r samples $out/share/dirt/
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "An unimpressive thingie for playing bits of samples with some level of accuracy";
     homepage = "https://github.com/tidalcycles/Dirt";
     license = licenses.gpl3;
diff --git a/pkgs/applications/audio/distrho/default.nix b/pkgs/applications/audio/distrho/default.nix
index 0f651f47a48..258eec83724 100644
--- a/pkgs/applications/audio/distrho/default.nix
+++ b/pkgs/applications/audio/distrho/default.nix
@@ -1,57 +1,97 @@
-{ stdenv, fetchFromGitHub, alsaLib, fftwSinglePrec, freetype, libjack2
-, pkgconfig, ladspa-sdk, premake3
-, libX11, libXcomposite, libXcursor, libXext, libXinerama, libXrender
+{ lib
+, stdenv
+, alsa-lib
+, fetchFromGitHub
+, fftwFloat
+, freetype
+, libGL
+, libX11
+, libXcursor
+, libXext
+, libXrender
+, meson
+, ninja
+, pkg-config
 }:
 
-let
-  premakeos = if stdenv.hostPlatform.isDarwin then "osx"
-              else if stdenv.hostPlatform.isWindows then "mingw"
-              else "linux";
-in stdenv.mkDerivation rec {
+let rpathLibs = [
+  fftwFloat
+];
+in
+stdenv.mkDerivation rec {
   pname = "distrho-ports";
-  version = "unstable-2019-10-09";
+  version = "2021-03-15";
 
   src = fetchFromGitHub {
     owner = "DISTRHO";
     repo = "DISTRHO-Ports";
-    rev = "7e62235e809e59770d0d91d2c48c3f50ce7c027a";
-    sha256 = "10hpsjcmk0cgcsic9r1wxyja9x6q9wb8w8254dlrnzyswl54r1f8";
+    rev = version;
+    sha256 = "00fgqwayd20akww3n2imyqscmyrjyc9jj0ar13k9dhpaxqk2jxbf";
   };
 
-  configurePhase = ''
-    runHook preConfigure
+  nativeBuildInputs = [ pkg-config meson ninja ];
 
-    sh ./scripts/premake-update.sh ${premakeos}
-
-    runHook postConfigure
-  '';
-
-  postPatch = ''
-    sed -e "s#@./scripts#sh scripts#" -i Makefile
-  '';
-
-  nativeBuildInputs = [ pkgconfig premake3 ];
-  buildInputs = [
-    alsaLib fftwSinglePrec freetype libjack2
-    libX11 libXcomposite libXcursor libXext
-    libXinerama libXrender ladspa-sdk
+  buildInputs = rpathLibs ++ [
+    alsa-lib
+    freetype
+    libGL
+    libX11
+    libXcursor
+    libXext
+    libXrender
   ];
 
-  makeFlags = [ "PREFIX=$(out)" ];
+  postFixup = ''
+    for file in \
+      $out/lib/lv2/vitalium.lv2/vitalium.so \
+      $out/lib/vst/vitalium.so \
+      $out/lib/vst3/vitalium.vst3/Contents/x86_64-linux/vitalium.so
+    do
+      patchelf --set-rpath "${lib.makeLibraryPath rpathLibs}:$(patchelf --print-rpath $file)" $file
+    done
+  '';
 
-  meta = with stdenv.lib; {
-    homepage = "http://distrho.sourceforge.net";
-    description = "A collection of cross-platform audio effects and plugins";
+  meta = with lib; {
+    homepage = "http://distrho.sourceforge.net/ports";
+    description = "Linux audio plugins and LV2 ports";
     longDescription = ''
       Includes:
-      Dexed drowaudio-distortion drowaudio-distortionshaper drowaudio-flanger
-      drowaudio-reverb drowaudio-tremolo drumsynth EasySSP eqinox HiReSam
-      JuceDemoPlugin KlangFalter LUFSMeter LUFSMeterMulti Luftikus Obxd
-      PitchedDelay ReFine StereoSourceSeparation TAL-Dub-3 TAL-Filter
-      TAL-Filter-2 TAL-NoiseMaker TAL-Reverb TAL-Reverb-2 TAL-Reverb-3
-      TAL-Vocoder-2 TheFunction ThePilgrim Vex Wolpertinger
+        arctican-function
+        arctican-pilgrim
+        dexed
+        drowaudio-distortion
+        drowaudio-distortionshaper
+        drowaudio-flanger
+        drowaudio-reverb
+        drowaudio-tremolo
+        drumsynth
+        easySSP
+        eqinox
+        HiReSam
+        juce-opl
+        klangfalter
+        LUFSMeter
+        LUFSMeter-Multi
+        luftikus
+        obxd
+        pitchedDelay
+        refine
+        stereosourceseparation
+        swankyamp
+        tal-dub-3
+        tal-filter
+        tal-filter-2
+        tal-noisemaker
+        tal-reverb
+        tal-reverb-2
+        tal-reverb-3
+        tal-vocoder-2
+        temper
+        vex
+        vitalium
+        wolpertinger
     '';
-    license = with licenses; [ gpl2 gpl3 gpl2Plus lgpl3 mit ];
+    license = with licenses; [ gpl2Only gpl3Only gpl2Plus lgpl2Plus lgpl3Only mit ];
     maintainers = [ maintainers.goibhniu ];
     platforms = [ "x86_64-linux" ];
   };
diff --git a/pkgs/applications/audio/dr14_tmeter/default.nix b/pkgs/applications/audio/dr14_tmeter/default.nix
index 272701b3680..649c0f39097 100644
--- a/pkgs/applications/audio/dr14_tmeter/default.nix
+++ b/pkgs/applications/audio/dr14_tmeter/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, python3Packages, pkgs }:
+{ lib, fetchFromGitHub, python3Packages, pkgs }:
 
 python3Packages.buildPythonApplication rec {
   pname = "dr14_tmeter";
@@ -14,13 +14,13 @@ python3Packages.buildPythonApplication rec {
   };
 
   propagatedBuildInputs = with pkgs; [
-    python3Packages.numpy flac vorbis-tools ffmpeg_3 faad2 lame
+    python3Packages.numpy flac vorbis-tools ffmpeg faad2 lame
   ];
 
   # There are no tests
   doCheck = false;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Compute the DR14 of a given audio file according to the procedure described by the Pleasurize Music Foundation";
     license = licenses.gpl3Plus;
     homepage = "http://dr14tmeter.sourceforge.net/";
diff --git a/pkgs/applications/audio/dragonfly-reverb/default.nix b/pkgs/applications/audio/dragonfly-reverb/default.nix
index b42929ff204..a07dca699d7 100644
--- a/pkgs/applications/audio/dragonfly-reverb/default.nix
+++ b/pkgs/applications/audio/dragonfly-reverb/default.nix
@@ -1,27 +1,28 @@
-{ stdenv, fetchFromGitHub, libjack2, libGL, pkgconfig, xorg }:
+{ lib, stdenv, fetchFromGitHub, libjack2, libGL, pkg-config, xorg }:
 
 stdenv.mkDerivation rec {
   pname = "dragonfly-reverb";
-  version = "3.1.1";
+  version = "3.2.5";
 
   src = fetchFromGitHub {
     owner = "michaelwillis";
     repo = "dragonfly-reverb";
     rev = version;
-    sha256 = "188cm45hr0i33m4h2irql1wrsmsfis65s706wjiid0z59q47rf9p";
+    sha256 = "14kia9wjs0nqfx4psnr3vf4x6hihkf80gb0mjzmdnnnk4cnrdydm";
     fetchSubmodules = true;
   };
 
-  patchPhase = ''
+  postPatch = ''
     patchShebangs dpf/utils/generate-ttl.sh
   '';
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [
     libjack2 xorg.libX11 libGL
   ];
 
   installPhase = ''
+    runHook preInstall
     mkdir -p $out/bin
     mkdir -p $out/lib/lv2/
     mkdir -p $out/lib/vst/
@@ -31,13 +32,14 @@ stdenv.mkDerivation rec {
       cp -a $bin-vst.so $out/lib/vst/
       cp -a $bin.lv2/   $out/lib/lv2/ ;
     done
+    runHook postInstall
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/michaelwillis/dragonfly-reverb";
     description = "A hall-style reverb based on freeverb3 algorithms";
     maintainers = [ maintainers.magnetophon ];
-    license = licenses.gpl3;
+    license = licenses.gpl3Plus;
     platforms = ["x86_64-linux"];
   };
 }
diff --git a/pkgs/applications/audio/drumgizmo/default.nix b/pkgs/applications/audio/drumgizmo/default.nix
index 9e24c4a1c29..7dd78e51318 100644
--- a/pkgs/applications/audio/drumgizmo/default.nix
+++ b/pkgs/applications/audio/drumgizmo/default.nix
@@ -1,37 +1,29 @@
-{ stdenv, fetchurl, fetchpatch, alsaLib, expat, glib, libjack2, libXext, libX11, libpng
-, libpthreadstubs, libsmf, libsndfile, lv2, pkgconfig, zita-resampler
+{ lib, stdenv, fetchurl, alsa-lib, expat, glib, libjack2, libXext, libX11, libpng
+, libpthreadstubs, libsmf, libsndfile, lv2, pkg-config, zita-resampler
 }:
 
 stdenv.mkDerivation rec {
-  version = "0.9.18.1";
+  version = "0.9.19";
   pname = "drumgizmo";
 
   src = fetchurl {
     url = "https://www.drumgizmo.org/releases/${pname}-${version}/${pname}-${version}.tar.gz";
-    sha256 = "0bpbkzcr3znbwfdk79c14n5k5hh80iqlk2nc03q95vhimbadk8k7";
+    sha256 = "18x28vhif0c97xz02k22xwqxxig6fi6j0356mlz2vf7vb25z69kl";
   };
 
-  patches = [
-    # Fix build for lv2 1.18.0
-    (fetchpatch {
-      url = "http://cgit.drumgizmo.org/plugingizmo.git/patch/?id=be64ddf9da525cd5c6757464efc966052731ba71";
-      sha256 = "17w8g78i5avssc7m8rpw64ka3rai8dff81wfzir9cpxp8s2h44qf";
-      extraPrefix = "plugin/plugingizmo/";
-      stripLen = 1;
-    })
-  ];
-
   configureFlags = [ "--enable-lv2" ];
 
+  nativeBuildInputs = [ pkg-config ];
+
   buildInputs = [
-    alsaLib expat glib libjack2 libXext libX11 libpng libpthreadstubs
-    libsmf libsndfile lv2 pkgconfig zita-resampler
+    alsa-lib expat glib libjack2 libXext libX11 libpng libpthreadstubs
+    libsmf libsndfile lv2 zita-resampler
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "An LV2 sample based drum plugin";
     homepage = "https://www.drumgizmo.org";
-    license = licenses.lgpl3;
+    license = licenses.lgpl3Plus;
     platforms = platforms.linux;
     maintainers = [ maintainers.goibhniu maintainers.nico202 ];
   };
diff --git a/pkgs/applications/audio/drumkv1/default.nix b/pkgs/applications/audio/drumkv1/default.nix
index 8c956c53fb3..e15e4550e0e 100644
--- a/pkgs/applications/audio/drumkv1/default.nix
+++ b/pkgs/applications/audio/drumkv1/default.nix
@@ -1,17 +1,17 @@
-{ mkDerivation, lib, fetchurl, pkgconfig, libjack2, alsaLib, libsndfile, liblo, lv2, qt5 }:
+{ mkDerivation, lib, fetchurl, pkg-config, libjack2, alsa-lib, libsndfile, liblo, lv2, qt5 }:
 
 mkDerivation rec {
   pname = "drumkv1";
-  version = "0.9.15";
+  version = "0.9.18";
 
   src = fetchurl {
     url = "mirror://sourceforge/drumkv1/${pname}-${version}.tar.gz";
-    sha256 = "108jk8p1sbm99plipf98ssij6dxaip1lmznibg8y2c4x0v2la6ab";
+    sha256 = "1bzkaz7sqx1pvirja8zm7i2ckzl5ad6xspr4840389ik3l8qpnr5";
   };
 
-  buildInputs = [ libjack2 alsaLib libsndfile liblo lv2 qt5.qtbase qt5.qttools ];
+  buildInputs = [ libjack2 alsa-lib libsndfile liblo lv2 qt5.qtbase qt5.qttools ];
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
 
   meta = with lib; {
     description = "An old-school drum-kit sampler synthesizer with stereo fx";
diff --git a/pkgs/applications/audio/dsf2flac/default.nix b/pkgs/applications/audio/dsf2flac/default.nix
new file mode 100644
index 00000000000..db07acf7c36
--- /dev/null
+++ b/pkgs/applications/audio/dsf2flac/default.nix
@@ -0,0 +1,34 @@
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, boost, flac, id3lib, pkg-config
+, taglib, zlib }:
+
+stdenv.mkDerivation rec {
+  pname = "dsf2flac";
+  version = "unstable-2018-01-02";
+
+  src = fetchFromGitHub {
+    owner = "hank";
+    repo = pname;
+    rev = "b0cf5aa6ddc60df9bbfeed25548e443c99f5cb16";
+    sha256 = "15j5f82v7lgs0fkgyyynl82cb1rsxyr9vw3bpzra63nacbi9g8lc";
+  };
+
+  buildInputs = [ boost flac id3lib taglib zlib ];
+
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
+
+  enableParallelBuilding = true;
+
+  preConfigure = ''
+    export LIBS="$LIBS -lz"
+  '';
+
+  configureFlags = [ "--with-boost-libdir=${boost.out}/lib" ];
+
+  meta = with lib; {
+    description = "A DSD to FLAC transcoding tool";
+    homepage = "https://github.com/hank/dsf2flac";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ dmrauh ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/pkgs/applications/audio/easyeffects/default.nix b/pkgs/applications/audio/easyeffects/default.nix
new file mode 100644
index 00000000000..ee4d16d6b36
--- /dev/null
+++ b/pkgs/applications/audio/easyeffects/default.nix
@@ -0,0 +1,107 @@
+{ lib
+, stdenv
+, desktop-file-utils
+, fetchFromGitHub
+, calf
+, fftwFloat
+, glib
+, glibmm
+, gtk4
+, gtkmm4
+, itstool
+, libbs2b
+, libebur128
+, libsamplerate
+, libsndfile
+, lilv
+, lsp-plugins
+, lv2
+, meson
+, ninja
+, nlohmann_json
+, pipewire
+, pkg-config
+, python3
+, rnnoise
+, rubberband
+, speexdsp
+, wrapGAppsHook
+, zam-plugins
+, zita-convolver
+}:
+
+stdenv.mkDerivation rec {
+  pname = "easyeffects";
+  version = "6.0.0";
+
+  src = fetchFromGitHub {
+    owner = "wwmm";
+    repo = "easyeffects";
+    rev = "v${version}";
+    hash = "sha256:1m3jamnhgpx3z51nfc8xg7adhf5x7dirvw0wf129hzxx4fjl7rch";
+  };
+
+  nativeBuildInputs = [
+    desktop-file-utils
+    itstool
+    meson
+    ninja
+    pkg-config
+    python3
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    fftwFloat
+    glib
+    glibmm
+    gtk4
+    gtkmm4
+    libbs2b
+    libebur128
+    libsamplerate
+    libsndfile
+    lilv
+    lv2
+    nlohmann_json
+    pipewire
+    rnnoise
+    rubberband
+    speexdsp
+    zita-convolver
+  ];
+
+  postPatch = ''
+    chmod +x meson_post_install.py
+    patchShebangs meson_post_install.py
+  '';
+
+  preFixup =
+    let
+      lv2Plugins = [
+        calf # limiter, compressor exciter, bass enhancer and others
+        lsp-plugins # delay
+      ];
+      ladspaPlugins = [
+        rubberband # pitch shifting
+        zam-plugins # maximizer
+      ];
+    in
+    ''
+      gappsWrapperArgs+=(
+        --set LV2_PATH "${lib.makeSearchPath "lib/lv2" lv2Plugins}"
+        --set LADSPA_PATH "${lib.makeSearchPath "lib/ladspa" ladspaPlugins}"
+      )
+    '';
+
+  separateDebugInfo = true;
+
+  meta = with lib; {
+    description = "Audio effects for PipeWire applications.";
+    homepage = "https://github.com/wwmm/easyeffects";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ jtojnar ];
+    platforms = platforms.linux;
+    badPlatforms = [ "aarch64-linux" ];
+  };
+}
diff --git a/pkgs/applications/audio/easytag/default.nix b/pkgs/applications/audio/easytag/default.nix
index 3f294342da7..d55fd7ff0cb 100644
--- a/pkgs/applications/audio/easytag/default.nix
+++ b/pkgs/applications/audio/easytag/default.nix
@@ -1,6 +1,6 @@
-{ stdenv, fetchurl, pkgconfig, intltool, gtk3, glib, libid3tag, id3lib, taglib
+{ lib, stdenv, fetchurl, pkg-config, intltool, gtk3, glib, libid3tag, id3lib, taglib
 , libvorbis, libogg, opusfile, flac, itstool, libxml2, gsettings-desktop-schemas
-, gnome3, wrapGAppsHook
+, gnome, wrapGAppsHook
 }:
 
 let
@@ -10,28 +10,28 @@ in stdenv.mkDerivation rec {
   name = "${pname}-${version}";
 
   src = fetchurl {
-    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz";
+    url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${name}.tar.xz";
     sha256 = "1mbxnqrw1fwcgraa1bgik25vdzvf97vma5pzknbwbqq5ly9fwlgw";
   };
 
   NIX_LDFLAGS = "-lid3tag -lz";
 
-  nativeBuildInputs = [ pkgconfig intltool itstool libxml2 wrapGAppsHook ];
+  nativeBuildInputs = [ pkg-config intltool itstool libxml2 wrapGAppsHook ];
   buildInputs = [
     gtk3 glib libid3tag id3lib taglib libvorbis libogg opusfile flac
-    gsettings-desktop-schemas gnome3.adwaita-icon-theme
+    gsettings-desktop-schemas gnome.adwaita-icon-theme
   ];
 
   doCheck = false; # fails 1 out of 9 tests
 
   passthru = {
-    updateScript = gnome3.updateScript {
+    updateScript = gnome.updateScript {
       packageName = pname;
       versionPolicy = "none";
     };
   };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "View and edit tags for various audio files";
     homepage = "https://wiki.gnome.org/Apps/EasyTAG";
     license = licenses.gpl2Plus;
diff --git a/pkgs/applications/audio/ebumeter/default.nix b/pkgs/applications/audio/ebumeter/default.nix
new file mode 100644
index 00000000000..9ebcbec001d
--- /dev/null
+++ b/pkgs/applications/audio/ebumeter/default.nix
@@ -0,0 +1,33 @@
+{ lib, stdenv, fetchurl
+, libX11, libXft, libclthreads, libclxclient, libjack2, libpng, libsndfile, zita-resampler
+}:
+
+stdenv.mkDerivation rec {
+  pname = "ebumeter";
+  version = "0.4.2";
+
+  src = fetchurl {
+    url = "https://kokkinizita.linuxaudio.org/linuxaudio/downloads/${pname}-${version}.tar.bz2";
+    sha256 = "1wm9j1phmpicrp7jdsvdbc3mghdd92l61yl9qbps0brq2ljjyd5s";
+  };
+
+  buildInputs = [
+    libX11 libXft libclthreads libclxclient libjack2 libpng libsndfile zita-resampler
+  ];
+
+  preConfigure = ''
+    cd source
+  '';
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    description = "Level metering according to the EBU R-128 recommendation";
+    homepage = "http://kokkinizita.linuxaudio.org/linuxaudio/index.html";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ orivej ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/audio/ecasound/default.nix b/pkgs/applications/audio/ecasound/default.nix
index 13c48fc12af..47db2201648 100644
--- a/pkgs/applications/audio/ecasound/default.nix
+++ b/pkgs/applications/audio/ecasound/default.nix
@@ -1,6 +1,7 @@
-{ stdenv
+{ lib, stdenv
 , fetchurl
-, alsaLib
+, pkg-config
+, alsa-lib
 , audiofile
 , libjack2
 , liblo
@@ -9,9 +10,14 @@
 , libsndfile
 , lilv
 , lv2
+, ncurses
+, readline
 }:
 
-# TODO: fix readline, ncurses, lilv, liblo, liboil and python. See configure log.
+# TODO: fix python. See configure log.
+# fix -Dnullptr=0 cludge below.
+# The error is
+# /nix/store/*-lilv-0.24.10/include/lilv-0/lilv/lilvmm.hpp:272:53: error: 'nullptr' was not declared in this scope
 
 stdenv.mkDerivation rec {
   pname = "ecasound";
@@ -22,11 +28,39 @@ stdenv.mkDerivation rec {
     sha256 = "1m7njfjdb7sqf0lhgc4swihgdr4snkg8v02wcly08wb5ar2fr2s6";
   };
 
-  buildInputs = [ alsaLib audiofile libjack2 liblo liboil libsamplerate libsndfile lilv lv2 ];
+  nativeBuildInputs = [
+    pkg-config
+  ];
+
+  buildInputs = [
+    alsa-lib
+    audiofile
+    libjack2
+    liblo
+    liboil
+    libsamplerate
+    libsndfile
+    lilv
+    lv2
+    ncurses
+    readline
+  ];
+
+  strictDeps = true;
+
+  CXXFLAGS = "-std=c++11";
+  configureFlags = "--enable-liblilv --with-extra-cppflags=-Dnullptr=0";
+
+  postPatch = ''
+    sed -i -e '
+      s@^#include <readline.h>@#include <readline/readline.h>@
+      s@^#include <history.h>@#include <readline/history.h>@
+      ' ecasound/eca-curses.cpp
+  '';
 
   meta = {
-    description = "Ecasound is a software package designed for multitrack audio processing";
-    license = with stdenv.lib.licenses;  [ gpl2 lgpl21 ];
+    description = "Software package designed for multitrack audio processing";
+    license = with lib.licenses;  [ gpl2 lgpl21 ];
     homepage = "http://nosignal.fi/ecasound/";
   };
 }
diff --git a/pkgs/applications/audio/eflite/default.nix b/pkgs/applications/audio/eflite/default.nix
index f9a579512ca..0c48c582c4f 100644
--- a/pkgs/applications/audio/eflite/default.nix
+++ b/pkgs/applications/audio/eflite/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, fetchpatch, flite, alsaLib, debug ? false }:
+{ lib, stdenv, fetchurl, fetchpatch, flite, alsa-lib, debug ? false }:
 
 stdenv.mkDerivation rec {
   pname = "eflite";
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
     sha256 = "088p9w816s02s64grfs28gai3lnibzdjb9d1jwxzr8smbs2qbbci";
   };
 
-  buildInputs = [ flite alsaLib ];
+  buildInputs = [ flite alsa-lib ];
 
   configureFlags = [
     "flite_dir=${flite}"
@@ -33,19 +33,19 @@ stdenv.mkDerivation rec {
     ./format.patch
   ];
 
-  CFLAGS = stdenv.lib.optionalString debug " -DDEBUG=2";
+  CFLAGS = lib.optionalString debug " -DDEBUG=2";
 
   meta = {
     homepage = "http://eflite.sourceforge.net";
-    description = "EFlite is a speech server for screen readers";
+    description = "Speech server for screen readers";
     longDescription = ''
       EFlite is a speech server for Emacspeak and other screen
       readers that allows them to interface with Festival Lite,
       a free text-to-speech engine developed at the CMU Speech
       Center as an off-shoot of Festival.
     '';
-    license = stdenv.lib.licenses.gpl2;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = with stdenv.lib.maintainers; [ jhhuh ];
+    license = lib.licenses.gpl2;
+    platforms = lib.platforms.linux;
+    maintainers = with lib.maintainers; [ jhhuh ];
   };
 }
diff --git a/pkgs/applications/audio/ekho/default.nix b/pkgs/applications/audio/ekho/default.nix
index 0e2c950051a..25ed8a71aa1 100644
--- a/pkgs/applications/audio/ekho/default.nix
+++ b/pkgs/applications/audio/ekho/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig
+{ lib, stdenv, fetchurl, pkg-config
 , libsndfile, libpulseaudio
 }:
 
@@ -8,7 +8,7 @@ in stdenv.mkDerivation rec {
   pname = "ekho";
   inherit version;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Chinese text-to-speech software";
     homepage    = "http://www.eguidedog.net/ekho.php";
     longDescription = ''
@@ -28,12 +28,12 @@ in stdenv.mkDerivation rec {
     sha256 = "0ym6lpcpsvwvsiwlzkl1509a2hljwcw7synngrmqjq1n49ww00nj";
   };
 
-  preConfigure = with stdenv.lib; ''
+  preConfigure = with lib; ''
     NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE ${optionalString stdenv.is64bit "-D_x86_64"}"
     NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -DEKHO_DATA_PATH=\"$out/share/ekho-data\""
   '';
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
 
   buildInputs = [ libsndfile libpulseaudio ];
 }
diff --git a/pkgs/applications/audio/ensemble-chorus/default.nix b/pkgs/applications/audio/ensemble-chorus/default.nix
index e2413a4fe87..b3255126205 100644
--- a/pkgs/applications/audio/ensemble-chorus/default.nix
+++ b/pkgs/applications/audio/ensemble-chorus/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, fltk, alsaLib, freetype, libXrandr, libXinerama, libXcursor, lv2, libjack2, cmake, pkgconfig }:
+{ lib, stdenv, fetchFromGitHub, fltk, alsa-lib, freetype, libXrandr, libXinerama, libXcursor, lv2, libjack2, cmake, pkg-config }:
 
 stdenv.mkDerivation rec {
   pname = "ensemble-chorus";
@@ -12,13 +12,13 @@ stdenv.mkDerivation rec {
     fetchSubmodules = true;
   };
 
-  nativeBuildInputs = [ cmake pkgconfig ];
+  nativeBuildInputs = [ cmake pkg-config ];
 
   buildInputs = [
-    fltk alsaLib freetype libXrandr libXinerama libXcursor lv2 libjack2
+    fltk alsa-lib freetype libXrandr libXinerama libXcursor lv2 libjack2
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/jpcima/ensemble-chorus";
     description = "Digital model of electronic string ensemble chorus";
     maintainers = [ maintainers.magnetophon ];
diff --git a/pkgs/applications/audio/eq10q/default.nix b/pkgs/applications/audio/eq10q/default.nix
index c614b96f638..3531132f2fd 100644
--- a/pkgs/applications/audio/eq10q/default.nix
+++ b/pkgs/applications/audio/eq10q/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, fetchpatch, cmake, fftw, gtkmm2, libxcb, lv2, pkgconfig
+{ lib, stdenv, fetchurl, fetchpatch, cmake, fftw, gtkmm2, libxcb, lv2, pkg-config
 , xorg }:
 stdenv.mkDerivation rec {
   pname = "eq10q";
@@ -8,8 +8,8 @@ stdenv.mkDerivation rec {
     sha256 = "16mhcav8gwkp29k9ki4dlkajlcgh1i2wvldabxb046d37dq4qzrk";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ cmake fftw gtkmm2 libxcb lv2 xorg.libpthreadstubs xorg.libXdmcp xorg.libxshmfence ];
+  nativeBuildInputs = [ cmake pkg-config ];
+  buildInputs = [ fftw gtkmm2 libxcb lv2 xorg.libpthreadstubs xorg.libXdmcp xorg.libxshmfence ];
 
   patches = [
     (fetchpatch {
@@ -44,8 +44,8 @@ stdenv.mkDerivation rec {
       Nice GUI with powerful metering for every plugin.
     '';
     homepage = "http://eq10q.sourceforge.net/";
-    license = stdenv.lib.licenses.gpl3;
-    maintainers = [ stdenv.lib.maintainers.magnetophon ];
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.gpl3;
+    maintainers = [ lib.maintainers.magnetophon ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/espeak-ng/default.nix b/pkgs/applications/audio/espeak-ng/default.nix
index 32cec811d00..44d5a0aa15a 100644
--- a/pkgs/applications/audio/espeak-ng/default.nix
+++ b/pkgs/applications/audio/espeak-ng/default.nix
@@ -1,5 +1,6 @@
-{ stdenv, lib, fetchFromGitHub, autoconf, automake, which, libtool, pkgconfig
-, ronn
+{ stdenv, lib, fetchFromGitHub, autoconf, automake, which, libtool, pkg-config
+, ronn, substituteAll
+, mbrolaSupport ? true, mbrola
 , pcaudiolibSupport ? true, pcaudiolib
 , sonicSupport ? true, sonic }:
 
@@ -14,22 +15,36 @@ stdenv.mkDerivation rec {
     sha256 = "0jkqhf2h94vbqq7mg7mmm23bq372fa7mdk941my18c3vkldcir1b";
   };
 
-  nativeBuildInputs = [ autoconf automake which libtool pkgconfig ronn ];
+  patches = lib.optionals mbrolaSupport [
+    # Hardcode correct mbrola paths.
+    (substituteAll {
+      src = ./mbrola.patch;
+      inherit mbrola;
+    })
+  ];
 
-  buildInputs = lib.optional pcaudiolibSupport pcaudiolib
+  nativeBuildInputs = [ autoconf automake which libtool pkg-config ronn ];
+
+  buildInputs = lib.optional mbrolaSupport mbrola
+             ++ lib.optional pcaudiolibSupport pcaudiolib
              ++ lib.optional sonicSupport sonic;
 
   preConfigure = "./autogen.sh";
 
-  postInstall = ''
+  configureFlags = [
+    "--with-mbrola=${if mbrolaSupport then "yes" else "no"}"
+  ];
+
+  postInstall = lib.optionalString stdenv.isLinux ''
     patchelf --set-rpath "$(patchelf --print-rpath $out/bin/espeak-ng)" $out/bin/speak-ng
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Open source speech synthesizer that supports over 70 languages, based on eSpeak";
-    homepage = src.meta.homepage;
-    license = licenses.gpl3;
+    homepage = "https://github.com/espeak-ng/espeak-ng";
+    changelog = "https://github.com/espeak-ng/espeak-ng/blob/${version}/CHANGELOG.md";
+    license = licenses.gpl3Plus;
     maintainers = with maintainers; [ aske ];
-    platforms = platforms.linux;
+    platforms = platforms.all;
   };
 }
diff --git a/pkgs/applications/audio/espeak-ng/mbrola.patch b/pkgs/applications/audio/espeak-ng/mbrola.patch
new file mode 100644
index 00000000000..2f6c61cca4e
--- /dev/null
+++ b/pkgs/applications/audio/espeak-ng/mbrola.patch
@@ -0,0 +1,22 @@
+--- a/src/libespeak-ng/mbrowrap.c
++++ b/src/libespeak-ng/mbrowrap.c
+@@ -205,7 +205,7 @@
+ 		signal(SIGTERM, SIG_IGN);
+ 
+ 		snprintf(charbuf, sizeof(charbuf), "%g", mbr_volume);
+-		execlp("mbrola", "mbrola", "-e", "-v", charbuf,
++		execlp("@mbrola@/bin/mbrola", "mbrola", "-e", "-v", charbuf,
+ 		       voice_path, "-", "-.wav", (char *)NULL);
+ 		/* if execution reaches this point then the exec() failed */
+ 		snprintf(mbr_errorbuf, sizeof(mbr_errorbuf),
+--- a/src/libespeak-ng/synth_mbrola.c
++++ b/src/libespeak-ng/synth_mbrola.c
+@@ -85,7 +85,7 @@
+ 	if (!load_MBR())
+ 		return ENS_MBROLA_NOT_FOUND;
+ 
+-	sprintf(path, "%s/mbrola/%s", path_home, mbrola_voice);
++	sprintf(path, "@mbrola@/share/mbrola/voices/%s/%s", mbrola_voice, mbrola_voice);
+ #ifdef PLATFORM_POSIX
+ 	// if not found, then also look in
+ 	//   usr/share/mbrola/xx, /usr/share/mbrola/xx/xx, /usr/share/mbrola/voices/xx
diff --git a/pkgs/applications/audio/espeak/default.nix b/pkgs/applications/audio/espeak/default.nix
index aa68fd5363d..675f31b478c 100644
--- a/pkgs/applications/audio/espeak/default.nix
+++ b/pkgs/applications/audio/espeak/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, unzip, portaudio }:
+{ lib, stdenv, fetchurl, unzip, portaudio }:
 
 stdenv.mkDerivation rec {
   name = "espeak-1.48.04";
@@ -8,7 +8,8 @@ stdenv.mkDerivation rec {
     sha256 = "0n86gwh9pw0jqqpdz7mxggllfr8k0r7pc67ayy7w5z6z79kig6mz";
   };
 
-  buildInputs = [ unzip portaudio ];
+  nativeBuildInputs = [ unzip ];
+  buildInputs = [ portaudio ];
 
   patches = [
     ./gcc6.patch
@@ -26,7 +27,7 @@ stdenv.mkDerivation rec {
     makeFlags="PREFIX=$out DATADIR=$out/share/espeak-data"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Compact open source software speech synthesizer";
     homepage = "http://espeak.sourceforge.net/";
     license = licenses.gpl3Plus;
diff --git a/pkgs/applications/audio/espeak/edit.nix b/pkgs/applications/audio/espeak/edit.nix
index 6bcffcbc5c3..0b9fa3dfbe5 100644
--- a/pkgs/applications/audio/espeak/edit.nix
+++ b/pkgs/applications/audio/espeak/edit.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, unzip, portaudio, wxGTK, sox }:
+{ lib, stdenv, fetchurl, pkg-config, unzip, portaudio, wxGTK, sox }:
 
 stdenv.mkDerivation rec {
   name = "espeakedit-1.48.03";
@@ -8,8 +8,8 @@ stdenv.mkDerivation rec {
     sha256 = "0x8s7vpb7rw5x37yjzy1f98m4f2csdg89libb74fm36gn8ly0hli";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ unzip portaudio wxGTK ];
+  nativeBuildInputs = [ pkg-config unzip ];
+  buildInputs = [ portaudio wxGTK ];
 
   # TODO:
   # Uhm, seems like espeakedit still wants espeak-data/ in $HOME, even thought
@@ -38,7 +38,7 @@ stdenv.mkDerivation rec {
             -e "s|@prefix@|$out|" \
             -i "$file"
     done
-  '' + stdenv.lib.optionalString (portaudio.api_version == 19) ''
+  '' + lib.optionalString (portaudio.api_version == 19) ''
     cp src/portaudio19.h src/portaudio.h
   '';
 
@@ -51,7 +51,7 @@ stdenv.mkDerivation rec {
     cp src/espeakedit "$out/bin"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Phoneme editor for espeak";
     homepage = "http://espeak.sourceforge.net/";
     license = licenses.gpl3Plus;
diff --git a/pkgs/applications/audio/eteroj.lv2/default.nix b/pkgs/applications/audio/eteroj.lv2/default.nix
index c86e7b5e9ba..ee95ce43ff5 100644
--- a/pkgs/applications/audio/eteroj.lv2/default.nix
+++ b/pkgs/applications/audio/eteroj.lv2/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, cmake, pkgconfig, libuv, lv2 }:
+{ lib, stdenv, fetchFromGitHub, cmake, pkg-config, libuv, lv2 }:
 
 stdenv.mkDerivation rec {
   pname = "eteroj.lv2";
@@ -12,9 +12,9 @@ stdenv.mkDerivation rec {
   };
 
   buildInputs = [ libuv lv2 ];
-  nativeBuildInputs = [ cmake pkgconfig ];
+  nativeBuildInputs = [ cmake pkg-config ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "OSC injection/ejection from/to UDP/TCP/Serial for LV2";
     homepage = "https://open-music-kontrollers.ch/lv2/eteroj";
     license = licenses.artistic2;
diff --git a/pkgs/applications/audio/faust/faust1.nix b/pkgs/applications/audio/faust/faust1.nix
index 64b8e724431..81ce11b9ea1 100644
--- a/pkgs/applications/audio/faust/faust1.nix
+++ b/pkgs/applications/audio/faust/faust1.nix
@@ -1,11 +1,11 @@
-{ stdenv
+{ lib, stdenv
 , coreutils
 , fetchurl
 , makeWrapper
-, pkgconfig
+, pkg-config
 }:
 
-with stdenv.lib.strings;
+with lib.strings;
 
 let
 
@@ -16,8 +16,8 @@ let
     sha256 = "0d1fqwymyfb73zkmpwv4zk4gsg4ji7qs20mfsr20skmnqx30xvna";
   };
 
-  meta = with stdenv.lib; {
-    homepage = "http://faust.grame.fr/";
+  meta = with lib; {
+    homepage = "https://faust.grame.fr/";
     downloadPage = "https://sourceforge.net/projects/faudiostream/files/";
     license = licenses.gpl2;
     platforms = platforms.linux;
@@ -30,7 +30,7 @@ let
 
     inherit src;
 
-    buildInputs = [ makeWrapper ];
+    nativeBuildInputs = [ makeWrapper ];
 
     passthru = {
       inherit wrap wrapWithBuildEnv;
@@ -159,8 +159,7 @@ let
 
     stdenv.mkDerivation ((faust2ApplBase args) // {
 
-      nativeBuildInputs = [ pkgconfig ];
-      buildInputs = [ makeWrapper ];
+      nativeBuildInputs = [ pkg-config makeWrapper ];
 
       propagatedBuildInputs = [ faust ] ++ propagatedBuildInputs;
 
@@ -195,7 +194,7 @@ let
 
     in stdenv.mkDerivation ((faust2ApplBase args) // {
 
-      buildInputs = [ makeWrapper ];
+      nativeBuildInputs = [ makeWrapper ];
 
       postFixup = ''
         for script in "$out"/bin/*; do
diff --git a/pkgs/applications/audio/faust/faust2.nix b/pkgs/applications/audio/faust/faust2.nix
index de90bd038be..c1d351fa53e 100644
--- a/pkgs/applications/audio/faust/faust2.nix
+++ b/pkgs/applications/audio/faust/faust2.nix
@@ -1,12 +1,11 @@
-{ stdenv
+{ lib, stdenv
 , coreutils
 , fetchFromGitHub
 , makeWrapper
-, pkgconfig
+, pkg-config
 , cmake
 , llvm
-# TODO: put back when it builds again
-# , emscripten
+, emscripten
 , openssl
 , libsndfile
 , libmicrohttpd
@@ -17,22 +16,22 @@
 , which
 }:
 
-with stdenv.lib.strings;
+with lib.strings;
 
 let
 
-  version = "unstable-2020-08-03";
+  version = "2.30.5";
 
   src = fetchFromGitHub {
     owner = "grame-cncm";
     repo = "faust";
-    rev = "b6045f4592384076d3b383d116e602a95a000eb3";
-    sha256 = "1wcpilwnkc7rrbv9gbkj5hb7kamkh8nrc3r4hbcvbz5ar2pfc6d5";
+    rev = version;
+    sha256 = "0cs52w4rwaj5d8pjak4cxsg02sxvx4y07592nc3ck81clqjmszmm";
     fetchSubmodules = true;
   };
 
-  meta = with stdenv.lib; {
-    homepage = "http://faust.grame.fr/";
+  meta = with lib; {
+    homepage = "https://faust.grame.fr/";
     downloadPage = "https://github.com/grame-cncm/faust/";
     license = licenses.gpl2;
     platforms = platforms.linux;
@@ -46,8 +45,8 @@ let
 
     inherit src;
 
-    nativeBuildInputs = [ makeWrapper pkgconfig cmake vim which ];
-    buildInputs = [ llvm /*emscripten*/ openssl libsndfile libmicrohttpd gnutls libtasn1 p11-kit ];
+    nativeBuildInputs = [ makeWrapper pkg-config cmake vim which ];
+    buildInputs = [ llvm emscripten openssl libsndfile libmicrohttpd gnutls libtasn1 p11-kit ];
 
 
     passthru = {
@@ -169,17 +168,22 @@ let
 
     stdenv.mkDerivation ((faust2ApplBase args) // {
 
-      nativeBuildInputs = [ pkgconfig ];
-      buildInputs = [ makeWrapper ];
+      nativeBuildInputs = [ pkg-config makeWrapper ];
 
       propagatedBuildInputs = [ faust ] ++ propagatedBuildInputs;
 
-      libPath = stdenv.lib.makeLibraryPath propagatedBuildInputs;
+      libPath = lib.makeLibraryPath propagatedBuildInputs;
 
       postFixup = ''
 
         # export parts of the build environment
         for script in "$out"/bin/*; do
+          # e.g. NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu
+          nix_cc_wrapper_target_host="$(printenv | grep ^NIX_CC_WRAPPER_TARGET_HOST | sed 's/=.*//')"
+
+          # e.g. NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu
+          nix_bintools_wrapper_target_host="$(printenv | grep ^NIX_BINTOOLS_WRAPPER_TARGET_HOST | sed 's/=.*//')"
+
           wrapProgram "$script" \
             --set FAUSTLDDIR "${faust}/lib" \
             --set FAUSTLIB "${faust}/share/faust" \
@@ -189,7 +193,9 @@ let
             --prefix PKG_CONFIG_PATH : "$PKG_CONFIG_PATH" \
             --set NIX_CFLAGS_COMPILE "$NIX_CFLAGS_COMPILE" \
             --set NIX_LDFLAGS "$NIX_LDFLAGS -lpthread" \
-            --prefix LIBRARY_PATH $libPath
+            --set "$nix_cc_wrapper_target_host" "''${!nix_cc_wrapper_target_host}" \
+            --set "$nix_bintools_wrapper_target_host" "''${!nix_bintools_wrapper_target_host}" \
+            --prefix LIBRARY_PATH "$libPath"
         done
       '';
     });
@@ -210,7 +216,7 @@ let
 
     in stdenv.mkDerivation ((faust2ApplBase args) // {
 
-      buildInputs = [ makeWrapper ];
+      nativeBuildInputs = [ makeWrapper ];
 
       postFixup = ''
         for script in "$out"/bin/*; do
diff --git a/pkgs/applications/audio/faust/faust2alqt.nix b/pkgs/applications/audio/faust/faust2alqt.nix
index 8ac26e488b3..111d1c9e557 100644
--- a/pkgs/applications/audio/faust/faust2alqt.nix
+++ b/pkgs/applications/audio/faust/faust2alqt.nix
@@ -1,5 +1,5 @@
 { faust
-, alsaLib
+, alsa-lib
 , qt4
 }:
 
@@ -8,7 +8,7 @@ faust.wrapWithBuildEnv {
   baseName = "faust2alqt";
 
   propagatedBuildInputs = [
-    alsaLib
+    alsa-lib
     qt4
   ];
 
diff --git a/pkgs/applications/audio/faust/faust2alsa.nix b/pkgs/applications/audio/faust/faust2alsa.nix
index 6af5af9bbaf..bb6121a5d70 100644
--- a/pkgs/applications/audio/faust/faust2alsa.nix
+++ b/pkgs/applications/audio/faust/faust2alsa.nix
@@ -1,5 +1,5 @@
 { faust
-, alsaLib
+, alsa-lib
 , atk
 , cairo
 , fontconfig
@@ -15,7 +15,7 @@ faust.wrapWithBuildEnv {
   baseName = "faust2alsa";
 
   propagatedBuildInputs = [
-    alsaLib
+    alsa-lib
     atk
     cairo
     fontconfig
diff --git a/pkgs/applications/audio/faust/faust2firefox.nix b/pkgs/applications/audio/faust/faust2firefox.nix
index b2cc6f46457..c718aa06806 100644
--- a/pkgs/applications/audio/faust/faust2firefox.nix
+++ b/pkgs/applications/audio/faust/faust2firefox.nix
@@ -1,5 +1,5 @@
 { faust
-, xdg_utils
+, xdg-utils
 }:
 
 # This just runs faust2svg, then attempts to open a browser using
@@ -9,6 +9,6 @@ faust.wrap {
 
   baseName = "faust2firefox";
 
-  runtimeInputs = [ xdg_utils ];
+  runtimeInputs = [ xdg-utils ];
 
 }
diff --git a/pkgs/applications/audio/faust/faust2jack.nix b/pkgs/applications/audio/faust/faust2jack.nix
index 370c25ecd74..bd213bfcadb 100644
--- a/pkgs/applications/audio/faust/faust2jack.nix
+++ b/pkgs/applications/audio/faust/faust2jack.nix
@@ -1,9 +1,10 @@
 { faust
 , gtk2
-, jack2Full
-, alsaLib
-, opencv2
+, jack2
+, alsa-lib
+, opencv
 , libsndfile
+, which
 }:
 
 faust.wrapWithBuildEnv {
@@ -17,10 +18,11 @@ faust.wrapWithBuildEnv {
 
   propagatedBuildInputs = [
     gtk2
-    jack2Full
-    alsaLib
-    opencv2
+    jack2
+    alsa-lib
+    opencv
     libsndfile
+    which
   ];
 
 }
diff --git a/pkgs/applications/audio/faust/faust2jackrust.nix b/pkgs/applications/audio/faust/faust2jackrust.nix
index 2562237424e..a93251c8d2d 100644
--- a/pkgs/applications/audio/faust/faust2jackrust.nix
+++ b/pkgs/applications/audio/faust/faust2jackrust.nix
@@ -1,12 +1,11 @@
-{ stdenv
-, faust
+{ faust
 , libjack2
 , cargo
 , binutils
 , gcc
 , gnumake
 , openssl
-, pkgconfig
+, pkg-config
 
 }:
 
@@ -14,5 +13,5 @@ faust.wrapWithBuildEnv {
 
   baseName = "faust2jackrust";
 
-  propagatedBuildInputs = [ libjack2 cargo binutils gcc gnumake openssl pkgconfig ];
+  propagatedBuildInputs = [ libjack2 cargo binutils gcc gnumake openssl pkg-config ];
 }
diff --git a/pkgs/applications/audio/faust/faust2jaqt.nix b/pkgs/applications/audio/faust/faust2jaqt.nix
index a2f1c2139a1..6bebd97ddd2 100644
--- a/pkgs/applications/audio/faust/faust2jaqt.nix
+++ b/pkgs/applications/audio/faust/faust2jaqt.nix
@@ -1,8 +1,8 @@
 { faust
-, jack2Full
-, opencv2
+, jack2
 , qt4
 , libsndfile
+, alsa-lib
 , which
 }:
 
@@ -16,10 +16,10 @@ faust.wrapWithBuildEnv {
   ];
 
   propagatedBuildInputs = [
-    jack2Full
-    opencv2
+    jack2
     qt4
     libsndfile
+    alsa-lib
     which
   ];
 
diff --git a/pkgs/applications/audio/faust/faustlive.nix b/pkgs/applications/audio/faust/faustlive.nix
index 03ca4ce8eb0..46d63c84314 100644
--- a/pkgs/applications/audio/faust/faustlive.nix
+++ b/pkgs/applications/audio/faust/faustlive.nix
@@ -1,22 +1,24 @@
-{ stdenv, fetchFromGitHub
-, llvm, qt48Full, qrencode, libmicrohttpd, libjack2, alsaLib, faust, curl
-, bc, coreutils, which, libsndfile, pkg-config
+{ lib, stdenv, fetchFromGitHub
+, llvm_10, qt5, qrencode, libmicrohttpd, libjack2, alsa-lib, faust, curl
+, bc, coreutils, which, libsndfile, pkg-config, libxcb
 }:
 
 stdenv.mkDerivation rec {
   pname = "faustlive";
-  version = "2.5.4";
+  version = "2.5.5";
   src = fetchFromGitHub {
     owner = "grame-cncm";
     repo = "faustlive";
     rev = version;
-    sha256 = "0npn8fvq8iafyamq4wrj1k1bmk4xd0my2sp3gi5jdjfx6hc1sm3n";
+    sha256 = "0qbn05nq170ckycwalkk5fppklc4g457mapr7p7ryrhc1hwzffm9";
     fetchSubmodules = true;
   };
 
+  nativeBuildInputs = [ pkg-config qt5.wrapQtAppsHook ];
+
   buildInputs = [
-    llvm qt48Full qrencode libmicrohttpd libjack2 alsaLib faust curl
-    bc coreutils which libsndfile pkg-config
+    llvm_10 qt5.qtbase qrencode libmicrohttpd libjack2 alsa-lib faust curl
+    bc coreutils which libsndfile libxcb
   ];
 
   makeFlags = [ "PREFIX=$(out)" ];
@@ -30,14 +32,15 @@ stdenv.mkDerivation rec {
     install rsrc/FaustLive.desktop "$out/share/applications"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A standalone just-in-time Faust compiler";
     longDescription = ''
       FaustLive is a standalone just-in-time Faust compiler. It tries to bring
       together the convenience of a standalone interpreted language with the
       efficiency of a compiled language. It's ideal for fast prototyping.
     '';
-    homepage = "http://faust.grame.fr/";
+    homepage = "https://faust.grame.fr/";
     license = licenses.gpl3;
+    maintainers = with maintainers; [ magnetophon ];
   };
 }
diff --git a/pkgs/applications/audio/faustPhysicalModeling/default.nix b/pkgs/applications/audio/faustPhysicalModeling/default.nix
new file mode 100644
index 00000000000..f55cee957c7
--- /dev/null
+++ b/pkgs/applications/audio/faustPhysicalModeling/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, lib, fetchFromGitHub, faust2jaqt, faust2lv2 }:
+stdenv.mkDerivation rec {
+  pname = "faustPhysicalModeling";
+  version = "2.20.2";
+
+  src = fetchFromGitHub {
+    owner = "grame-cncm";
+    repo = "faust";
+    rev = version;
+    sha256 = "1mm93ba26b7q69hvabzalg30dh8pl858nj4m2bb57pznnp09lq9a";
+  };
+
+  buildInputs = [ faust2jaqt faust2lv2 ];
+
+  buildPhase = ''
+    cd examples/physicalModeling
+
+    for f in *MIDI.dsp; do
+      faust2jaqt -time -vec -double -midi -nvoices 16 -t 99999 $f
+      faust2lv2  -time -vec -double -gui -nvoices 16 -t 99999 $f
+    done
+  '';
+
+  installPhase = ''
+    mkdir -p $out/lib/lv2 $out/bin
+    mv *.lv2/ $out/lib/lv2
+    for f in $(find . -executable -type f); do
+      cp $f $out/bin/
+    done
+  '';
+
+  meta = with lib; {
+    description = "The physical models included with faust compiled as jack standalone and lv2 instruments";
+    homepage = "https://github.com/grame-cncm/faust/tree/master-dev/examples/physicalModeling";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ magnetophon ];
+  };
+}
diff --git a/pkgs/applications/audio/faustStk/default.nix b/pkgs/applications/audio/faustStk/default.nix
new file mode 100644
index 00000000000..85ebb1d9a02
--- /dev/null
+++ b/pkgs/applications/audio/faustStk/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, lib, fetchFromGitHub, faust2jaqt, faust2lv2 }:
+
+stdenv.mkDerivation rec {
+  pname = "faustPhhysicalModeling";
+  version = "2.20.2";
+
+  src = fetchFromGitHub {
+    owner = "grame-cncm";
+    repo = "faust";
+    rev = version;
+    sha256 = "1mm93ba26b7q69hvabzalg30dh8pl858nj4m2bb57pznnp09lq9a";
+  };
+
+  buildInputs = [ faust2jaqt faust2lv2 ];
+
+  buildPhase = ''
+    cd examples/physicalModeling/faust-stk
+
+    for f in *.dsp; do
+      faust2jaqt -time -vec  -midi -nvoices 8 -t 99999 $f
+      faust2lv2  -time -vec -double -gui -nvoices 32 -t 99999 $f
+    done
+  '';
+
+  installPhase = ''
+    mkdir -p $out/lib/lv2 $out/bin
+    mv *.lv2/ $out/lib/lv2
+    for f in $(find . -executable -type f); do
+      cp $f $out/bin/
+    done
+  '';
+  meta = with lib; {
+    description = "The physical modeling instruments included with faust, compiled as jack standalone and lv2 instruments";
+    homepage = "https://ccrma.stanford.edu/~rmichon/faustSTK/";
+    license = licenses.stk;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ magnetophon ];
+  };
+}
diff --git a/pkgs/applications/audio/fdkaac/default.nix b/pkgs/applications/audio/fdkaac/default.nix
index 55c0d7c597c..fd6726e9ac2 100644
--- a/pkgs/applications/audio/fdkaac/default.nix
+++ b/pkgs/applications/audio/fdkaac/default.nix
@@ -1,14 +1,14 @@
-{ stdenv, autoreconfHook, fetchFromGitHub, fdk_aac }:
+{ lib, stdenv, autoreconfHook, fetchFromGitHub, fdk_aac }:
 
 stdenv.mkDerivation rec {
   pname = "fdkaac";
-  version = "1.0.0";
+  version = "1.0.2";
 
   src = fetchFromGitHub {
     owner = "nu774";
     repo = pname;
-    rev = version;
-    sha256 = "16iwqmwagnb929byz8kj79pmmr0anbyv26drbavhppmxhk7rrpgh";
+    rev = "v${version}";
+    sha256 = "tHhICq/FzbkvWkDdNzGqGoo7nIDb+DJXmkFwtPIA89c=";
   };
 
   nativeBuildInputs = [ autoreconfHook ];
@@ -17,8 +17,8 @@ stdenv.mkDerivation rec {
 
   doCheck = true;
 
-  meta = with stdenv.lib; {
-    description = "Command line encoder frontend for libfdk-aac encder";
+  meta = with lib; {
+    description = "Command line encoder frontend for libfdk-aac encoder";
     longDescription = ''
       fdkaac reads linear PCM audio in either WAV, raw PCM, or CAF format,
       and encodes it into either M4A / AAC file.
diff --git a/pkgs/applications/audio/flac/default.nix b/pkgs/applications/audio/flac/default.nix
index bd8b9bea82b..0b1a2edc3ba 100644
--- a/pkgs/applications/audio/flac/default.nix
+++ b/pkgs/applications/audio/flac/default.nix
@@ -1,20 +1,29 @@
-{ stdenv, fetchurl, libogg }:
+{ lib, stdenv, fetchurl, fetchpatch, libogg }:
 
 stdenv.mkDerivation rec {
-  name = "flac-1.3.3";
+  pname = "flac";
+  version = "1.3.3";
 
   src = fetchurl {
-    url = "http://downloads.xiph.org/releases/flac/${name}.tar.xz";
+    url = "http://downloads.xiph.org/releases/flac/${pname}-${version}.tar.xz";
     sha256 = "0j0p9sf56a2fm2hkjnf7x3py5ir49jyavg4q5zdyd7bcf6yq4gi1";
   };
 
+  patches = [
+    (fetchpatch {
+      name = "CVE-2020-0499.patch";
+      url = "https://github.com/xiph/flac/commit/2e7931c27eb15e387da440a37f12437e35b22dd4.patch";
+      sha256 = "160qzq9ms5addz7sx06pnyjjkqrffr54r4wd8735vy4x008z71ah";
+    })
+  ];
+
   buildInputs = [ libogg ];
 
   #doCheck = true; # takes lots of time
 
   outputs = [ "bin" "dev" "out" "man" "doc" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://xiph.org/flac/";
     description = "Library and tools for encoding and decoding the FLAC lossless audio file format";
     platforms = platforms.all;
diff --git a/pkgs/applications/audio/flac123/default.nix b/pkgs/applications/audio/flac123/default.nix
index 6f13b710eff..09c7b44d92d 100644
--- a/pkgs/applications/audio/flac123/default.nix
+++ b/pkgs/applications/audio/flac123/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, autoreconfHook, flac, libao, libogg, popt }:
+{ lib, stdenv, fetchurl, autoreconfHook, flac, libao, libogg, popt }:
 
 stdenv.mkDerivation rec {
   pname = "flac123";
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ autoreconfHook ];
   buildInputs = [ flac libao libogg popt ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://flac-tools.sourceforge.net/";
     description = "A command-line program for playing FLAC audio files";
     license = licenses.gpl2Plus;
diff --git a/pkgs/applications/audio/flacon/default.nix b/pkgs/applications/audio/flacon/default.nix
index aaa0712c42f..83d9c5da838 100644
--- a/pkgs/applications/audio/flacon/default.nix
+++ b/pkgs/applications/audio/flacon/default.nix
@@ -1,19 +1,19 @@
-{ stdenv, lib, fetchFromGitHub, cmake, libuchardet, pkgconfig, shntool, flac
+{ stdenv, lib, fetchFromGitHub, cmake, libuchardet, pkg-config, shntool, flac
 , opusTools, vorbis-tools, mp3gain, lame, wavpack, vorbisgain, gtk3, qtbase
 , qttools, wrapQtAppsHook }:
 
 stdenv.mkDerivation rec {
   pname = "flacon";
-  version = "6.1.0";
+  version = "7.0.1";
 
   src = fetchFromGitHub {
     owner = "flacon";
     repo = "flacon";
     rev = "v${version}";
-    sha256 = "04yp3aym7h70xjni9ancqv5lc4zds5a8dgw3fzgqs8k5nmh074gv";
+    sha256 = "sha256-35tARJkyhC8EisIyDCwuT/UUruzLjJRUuZysuqeNssM=";
   };
 
-  nativeBuildInputs = [ cmake pkgconfig wrapQtAppsHook ];
+  nativeBuildInputs = [ cmake pkg-config wrapQtAppsHook ];
   buildInputs = [ qtbase qttools libuchardet ];
 
   bin_path = lib.makeBinPath [
@@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
       --prefix PATH : "$bin_path";
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description =
       "Extracts audio tracks from an audio CD image to separate tracks";
     homepage = "https://flacon.github.io/";
diff --git a/pkgs/applications/audio/fluidsynth/default.nix b/pkgs/applications/audio/fluidsynth/default.nix
index 9d9772cde29..1a6471397de 100644
--- a/pkgs/applications/audio/fluidsynth/default.nix
+++ b/pkgs/applications/audio/fluidsynth/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, lib, fetchFromGitHub, pkgconfig, cmake
-, alsaLib, glib, libjack2, libsndfile, libpulseaudio
+{ stdenv, lib, fetchFromGitHub, pkg-config, cmake
+, alsa-lib, glib, libjack2, libsndfile, libpulseaudio
 , AudioUnit, CoreAudio, CoreMIDI, CoreServices
 , version ? "2"
 }:
@@ -30,17 +30,17 @@ stdenv.mkDerivation  {
     inherit sha256;
   };
 
-  nativeBuildInputs = [ pkgconfig cmake ];
+  nativeBuildInputs = [ pkg-config cmake ];
 
   buildInputs = [ glib libsndfile libpulseaudio libjack2 ]
-    ++ lib.optionals stdenv.isLinux [ alsaLib ]
+    ++ lib.optionals stdenv.isLinux [ alsa-lib ]
     ++ lib.optionals stdenv.isDarwin [ AudioUnit CoreAudio CoreMIDI CoreServices ];
 
   cmakeFlags = [ "-Denable-framework=off" ];
 
   meta = with lib; {
     description = "Real-time software synthesizer based on the SoundFont 2 specifications";
-    homepage    = "http://www.fluidsynth.org";
+    homepage    = "https://www.fluidsynth.org";
     license     = licenses.lgpl21Plus;
     maintainers = with maintainers; [ goibhniu lovek323 ];
     platforms   = platforms.unix;
diff --git a/pkgs/applications/audio/fmit/default.nix b/pkgs/applications/audio/fmit/default.nix
index 114cf5e192f..967c984bc50 100644
--- a/pkgs/applications/audio/fmit/default.nix
+++ b/pkgs/applications/audio/fmit/default.nix
@@ -1,28 +1,28 @@
-{ stdenv, mkDerivation, fetchFromGitHub, fftw, qtbase, qtmultimedia, qmake, itstool, wrapQtAppsHook
-, alsaSupport ? true, alsaLib ? null
+{ lib, mkDerivation, fetchFromGitHub, fftw, qtbase, qtmultimedia, qmake, itstool, wrapQtAppsHook
+, alsaSupport ? true, alsa-lib ? null
 , jackSupport ? false, libjack2 ? null
 , portaudioSupport ? false, portaudio ? null }:
 
-assert alsaSupport -> alsaLib != null;
+assert alsaSupport -> alsa-lib != null;
 assert jackSupport -> libjack2 != null;
 assert portaudioSupport -> portaudio != null;
 
-with stdenv.lib;
+with lib;
 
 mkDerivation rec {
   pname = "fmit";
-  version = "1.2.13";
+  version = "1.2.14";
 
   src = fetchFromGitHub {
     owner = "gillesdegottex";
     repo = "fmit";
     rev = "v${version}";
-    sha256 = "1qyskam053pvlap1av80rgp12pzhr92rs88vqs6s0ia3ypnixcc6";
+    sha256 = "1q062pfwz2vr9hbfn29fv54ip3jqfd9r99nhpr8w7mn1csy38azx";
   };
 
   nativeBuildInputs = [ qmake itstool wrapQtAppsHook ];
   buildInputs = [ fftw qtbase qtmultimedia ]
-    ++ optionals alsaSupport [ alsaLib ]
+    ++ optionals alsaSupport [ alsa-lib ]
     ++ optionals jackSupport [ libjack2 ]
     ++ optionals portaudioSupport [ portaudio ];
 
diff --git a/pkgs/applications/audio/fmsynth/default.nix b/pkgs/applications/audio/fmsynth/default.nix
index d957c7ec33d..57b4bec50ad 100644
--- a/pkgs/applications/audio/fmsynth/default.nix
+++ b/pkgs/applications/audio/fmsynth/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, gtkmm2, lv2, lvtk, pkgconfig }:
+{ lib, stdenv, fetchFromGitHub, gtkmm2, lv2, lvtk, pkg-config }:
 stdenv.mkDerivation {
   pname = "fmsynth-unstable";
   version = "2015-02-07";
@@ -9,7 +9,7 @@ stdenv.mkDerivation {
     sha256 = "1bk0bpr069hzx2508rgfbwpxiqgr7dmdkhqdywmd2i4rmibgrm1q";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ gtkmm2 lv2 lvtk ];
 
   buildPhase = ''
@@ -42,8 +42,8 @@ stdenv.mkDerivation {
       - Hard real-time constraints
     '';
     homepage = "https://github.com/Themaister/libfmsynth";
-    license = stdenv.lib.licenses.mit;
-    maintainers = [ stdenv.lib.maintainers.magnetophon ];
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.mit;
+    maintainers = [ lib.maintainers.magnetophon ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/fomp/default.nix b/pkgs/applications/audio/fomp/default.nix
index a712eef0650..f9f57b1ed55 100644
--- a/pkgs/applications/audio/fomp/default.nix
+++ b/pkgs/applications/audio/fomp/default.nix
@@ -1,18 +1,18 @@
-{ stdenv, fetchurl, lv2, pkgconfig, python2, wafHook }:
+{ lib, stdenv, fetchurl, lv2, pkg-config, python2, wafHook }:
 
 stdenv.mkDerivation rec {
   pname = "fomp";
-  version = "1.2.0";
+  version = "1.2.2";
 
   src = fetchurl {
     url = "https://download.drobilla.net/${pname}-${version}.tar.bz2";
-    sha256 = "01ld6yjrqrki6zwac8lmwmqkr5rv0sdham4pfbfkjwck4hi1gqqw";
+    sha256 = "sha256-xnGijydiO3B7BjSlryFuH1j/OPio9hCYbniq2IXp2W8=";
   };
 
-  nativeBuildInputs = [ pkgconfig wafHook ];
+  nativeBuildInputs = [ pkg-config wafHook ];
   buildInputs = [ lv2 python2 ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://drobilla.net/software/fomp/";
     description = "An LV2 port of the MCP, VCO, FIL, and WAH plugins by Fons Adriaensen";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/foo-yc20/default.nix b/pkgs/applications/audio/foo-yc20/default.nix
index 4ec69c62b1a..f7abeb2a91e 100644
--- a/pkgs/applications/audio/foo-yc20/default.nix
+++ b/pkgs/applications/audio/foo-yc20/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub,  libjack2, gtk2, lv2, faust, pkgconfig }:
+{ lib, stdenv, fetchFromGitHub,  libjack2, gtk2, lv2, faust, pkg-config }:
 
 stdenv.mkDerivation {
   version = "git-2015-05-21";
@@ -10,7 +10,7 @@ stdenv.mkDerivation {
     sha256 = "0i8261n95n4xic766h70xkrpbvw3sag96n1883ahmg6h7yb94avq";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ libjack2 gtk2 lv2 faust ];
 
   makeFlags = [ "PREFIX=$(out)" ];
@@ -18,7 +18,7 @@ stdenv.mkDerivation {
   # remove lv2 until https://github.com/sampov2/foo-yc20/issues/6 is resolved
   postInstallFixup = "rm -rf $out/lib/lv2";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     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";
diff --git a/pkgs/applications/audio/freac/default.nix b/pkgs/applications/audio/freac/default.nix
new file mode 100644
index 00000000000..89c4847eded
--- /dev/null
+++ b/pkgs/applications/audio/freac/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+
+, boca
+, smooth
+, systemd
+}:
+
+stdenv.mkDerivation rec {
+  pname = "freac";
+  version = "1.1.5";
+
+  src = fetchFromGitHub {
+    owner = "enzo1982";
+    repo = "freac";
+    rev = "v${version}";
+    sha256 = "sha256-cRmN9D/+FLiXqZW/PYhw61EoZuL3y61YtQ/ZNjnhfmY=";
+  };
+
+  buildInputs = [
+    boca
+    smooth
+    systemd
+  ];
+
+  makeFlags = [
+    "prefix=$(out)"
+  ];
+
+  meta = with lib; {
+    description = "The fre:ac audio converter project";
+    license = licenses.gpl2Plus;
+    homepage = "https://www.freac.org/";
+    maintainers = with maintainers; [ shamilton ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/audio/freewheeling/default.nix b/pkgs/applications/audio/freewheeling/default.nix
index 071a4a9caab..75e44d8c4fa 100644
--- a/pkgs/applications/audio/freewheeling/default.nix
+++ b/pkgs/applications/audio/freewheeling/default.nix
@@ -1,5 +1,5 @@
-{ lib, stdenv, fetchFromGitHub, pkgconfig, autoreconfHook, gnutls, freetype
-, SDL, SDL_gfx, SDL_ttf, liblo, libxml2, alsaLib, libjack2, libvorbis
+{ lib, stdenv, fetchFromGitHub, pkg-config, autoreconfHook, gnutls, freetype
+, SDL, SDL_gfx, SDL_ttf, liblo, libxml2, alsa-lib, libjack2, libvorbis
 , libSM, libsndfile, libogg, libtool
 }:
 let
@@ -17,10 +17,10 @@ stdenv.mkDerivation rec {
     sha256 = "1xff5whr02cixihgd257dc70hnyf22j3zamvhsvg4lp7zq9l2in4";
   };
 
-  nativeBuildInputs = [ pkgconfig autoreconfHook libtool ];
+  nativeBuildInputs = [ pkg-config autoreconfHook libtool ];
   buildInputs = [
     freetype SDL SDL_gfx SDL_ttf
-    liblo libxml2 libjack2 alsaLib libvorbis libsndfile libogg libSM
+    liblo libxml2 libjack2 alsa-lib libvorbis libsndfile libogg libSM
     (gnutls.overrideAttrs (oldAttrs: {
       configureFlags = oldAttrs.configureFlags ++ [ "--enable-openssl-compatibility" ];
     }))
@@ -45,8 +45,8 @@ stdenv.mkDerivation rec {
     '' ;
 
     homepage = "http://freewheeling.sourceforge.net";
-    license = stdenv.lib.licenses.gpl2;
-    maintainers = [ stdenv.lib.maintainers.sepi ];
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.gpl2;
+    maintainers = [ lib.maintainers.sepi ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/freqtweak/default.nix b/pkgs/applications/audio/freqtweak/default.nix
index 046c8c8aac8..113894a9357 100644
--- a/pkgs/applications/audio/freqtweak/default.nix
+++ b/pkgs/applications/audio/freqtweak/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, autoconf, automake, pkg-config, fftwFloat, libjack2, libsigcxx, libxml2, wxGTK }:
+{ lib, stdenv, fetchFromGitHub, autoconf, automake, pkg-config, fftwFloat, libjack2, libsigcxx, libxml2, wxGTK }:
 
 stdenv.mkDerivation rec {
   pname = "freqtweak";
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = http://essej.net/freqtweak/;
     description = "Realtime audio frequency spectral manipulation";
     maintainers = [ maintainers.magnetophon ];
diff --git a/pkgs/applications/audio/friture/default.nix b/pkgs/applications/audio/friture/default.nix
index eae4b651685..e4bd79a08e3 100644
--- a/pkgs/applications/audio/friture/default.nix
+++ b/pkgs/applications/audio/friture/default.nix
@@ -4,35 +4,36 @@ let
   py = python3Packages;
 in py.buildPythonApplication rec {
   pname = "friture";
-  version = "0.37";
+  version = "unstable-2020-02-16";
 
   src = fetchFromGitHub {
     owner = "tlecomte";
     repo = pname;
-    rev = "v${version}";
-    sha256 = "1ivy5qfd90w1s1icsphvvdnnqz563v3fhg5pws2zn4483cgnzc2y";
+    rev = "4460b4e72a9c55310d6438f294424b5be74fc0aa";
+    sha256 = "1pmxzq78ibifby3gbir1ah30mgsqv0y7zladf5qf3sl5r1as0yym";
   };
 
-  # module imports scipy.misc.factorial, but it has been removed since scipy
-  # 1.3.0; use scipy.special.factorial instead
-  patches = [ ./factorial.patch ];
-
   nativeBuildInputs = (with py; [ numpy cython scipy ]) ++
     [ wrapQtAppsHook ];
 
   propagatedBuildInputs = with py; [
     sounddevice
     pyopengl
+    pyopengl-accelerate
     docutils
     numpy
     pyqt5
     appdirs
     pyrr
+    rtmixer
+  ];
+
+  patches = [
+    ./unlock_constraints.patch
   ];
 
-  postFixup = ''
-    wrapQtApp $out/bin/friture
-    wrapQtApp $out/bin/.friture-wrapped
+  preFixup = ''
+    makeWrapperArgs+=("''${qtWrapperArgs[@]}")
   '';
 
   meta = with lib; {
diff --git a/pkgs/applications/audio/friture/unlock_constraints.patch b/pkgs/applications/audio/friture/unlock_constraints.patch
new file mode 100644
index 00000000000..ab53f948a48
--- /dev/null
+++ b/pkgs/applications/audio/friture/unlock_constraints.patch
@@ -0,0 +1,34 @@
+diff --git a/setup.py b/setup.py
+index f31eeec..ac0927b 100644
+--- a/setup.py
++++ b/setup.py
+@@ -50,19 +50,19 @@ ext_modules = [LateIncludeExtension("friture_extensions.exp_smoothing_conv",
+ # these will be installed when calling 'pip install friture'
+ # they are also retrieved by 'requirements.txt'
+ install_requires = [
+-    "sounddevice==0.3.14",
+-    "rtmixer==0.1.0",
+-    "PyOpenGL==3.1.4",
+-    "PyOpenGL-accelerate==3.1.4",
+-    "docutils==0.15.2",
+-    "numpy==1.17.4",
+-    "PyQt5==5.13.2",
+-    "appdirs==1.4.3",
+-    "pyrr==0.10.3",
++    "sounddevice>=0.3.14",
++    "rtmixer>=0.1.0",
++    "PyOpenGL>=3.1.4",
++    "PyOpenGL-accelerate>=3.1.4",
++    "docutils>=0.15.2",
++    "numpy>=1.17.4",
++    "PyQt5>=5.13.2",
++    "appdirs>=1.4.3",
++    "pyrr>=0.10.3",
+ ]
+ 
+ # Cython and numpy are needed when running setup.py, to build extensions
+-setup_requires=["numpy==1.17.4", "Cython==0.29.14"]
++setup_requires=["numpy>=1.17.4", "Cython>=0.29.14"]
+ 
+ with open(join(dirname(__file__), 'README.rst')) as f:
+     long_description = f.read()
diff --git a/pkgs/applications/audio/ft2-clone/default.nix b/pkgs/applications/audio/ft2-clone/default.nix
index 1db5644fc32..5155a91e725 100644
--- a/pkgs/applications/audio/ft2-clone/default.nix
+++ b/pkgs/applications/audio/ft2-clone/default.nix
@@ -1,30 +1,62 @@
-{ stdenv
+{ lib, stdenv
 , fetchFromGitHub
 , cmake
-, alsaLib
+, nixosTests
+, alsa-lib
 , SDL2
+, libiconv
+, CoreAudio
+, CoreMIDI
+, CoreServices
+, Cocoa
 }:
 
 stdenv.mkDerivation rec {
   pname = "ft2-clone";
-  version = "1.28";
+  version = "1.47";
 
   src = fetchFromGitHub {
     owner = "8bitbubsy";
     repo = "ft2-clone";
     rev = "v${version}";
-    sha256 = "1hbcl89cpx9bsafxrjyfx6vrbs4h3lnzmqm12smcvdg8ksfgzj0d";
+    sha256 = "sha256-KLHJROOtRPtGHBYEMByY7LG6FY4vES6WndCiz7okan8=";
   };
 
+  # Adapt the linux-only CMakeLists to darwin (more reliable than make-macos.sh)
+  postPatch = lib.optionalString stdenv.isDarwin ''
+    sed -i -e 's@__LINUX_ALSA__@__MACOSX_CORE__@' -e 's@asound@@' CMakeLists.txt
+  '';
+
   nativeBuildInputs = [ cmake ];
-  buildInputs = [ SDL2 ] ++ stdenv.lib.optional stdenv.isLinux alsaLib;
+  buildInputs = [ SDL2 ]
+    ++ lib.optional stdenv.isLinux alsa-lib
+    ++ lib.optionals stdenv.isDarwin [
+         libiconv
+         CoreAudio
+         CoreMIDI
+         CoreServices
+         Cocoa
+       ];
+
+  NIX_LDFLAGS = lib.optionalString stdenv.isDarwin [
+    "-framework CoreAudio"
+    "-framework CoreMIDI"
+    "-framework CoreServices"
+    "-framework Cocoa"
+  ];
+
+  passthru.tests = {
+    ft2-clone-starts = nixosTests.ft2-clone;
+  };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A highly accurate clone of the classic Fasttracker II software for MS-DOS";
     homepage = "https://16-bits.org/ft2.php";
     license = licenses.bsd3;
     maintainers = with maintainers; [ fgaz ];
-    platforms = platforms.all;
+    # From HOW-TO-COMPILE.txt:
+    # > This code is NOT big-endian compatible
+    platforms = platforms.littleEndian;
   };
 }
 
diff --git a/pkgs/applications/audio/fverb/default.nix b/pkgs/applications/audio/fverb/default.nix
index 28955379574..2cd723b73bc 100644
--- a/pkgs/applications/audio/fverb/default.nix
+++ b/pkgs/applications/audio/fverb/default.nix
@@ -1,4 +1,4 @@
-{ stdenv
+{ lib, stdenv
 , fetchFromGitHub
 , pkg-config
 }:
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
     patchShebangs ./dpf/utils/generate-ttl.sh
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A stereo variant of the reverberator by Jon Dattorro, for lv2";
     homepage = "https://github.com/jpcima/fverb";
     license = licenses.bsd2;
diff --git a/pkgs/applications/audio/game-music-emu/default.nix b/pkgs/applications/audio/game-music-emu/default.nix
index 51f895ea2d5..a2aebc58a82 100644
--- a/pkgs/applications/audio/game-music-emu/default.nix
+++ b/pkgs/applications/audio/game-music-emu/default.nix
@@ -1,21 +1,21 @@
-{ stdenv, fetchurl, cmake }:
+{ lib, stdenv, fetchurl, cmake }:
 
 stdenv.mkDerivation rec {
-  version = "0.6.1";
+  version = "0.6.3";
   pname = "game-music-emu";
 
   src = fetchurl {
-    url = "https://bitbucket.org/mpyne/game-music-emu/downloads/${pname}-${version}.tar.bz2";
-    sha256 = "08fk7zddpn7v93d0fa7fcypx7hvgwx9b5psj9l6m8b87k2hbw4fw";
+    url = "https://bitbucket.org/mpyne/game-music-emu/downloads/${pname}-${version}.tar.xz";
+    sha256 = "07857vdkak306d9s5g6fhmjyxk7vijzjhkmqb15s7ihfxx9lx8xb";
   };
 
-  buildInputs = [ cmake ];
+  nativeBuildInputs = [ cmake ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://bitbucket.org/mpyne/game-music-emu/wiki/Home";
     description = "A collection of video game music file emulators";
     license = licenses.lgpl21Plus;
     platforms = platforms.all;
-    maintainers = [ ];
+    maintainers = with maintainers; [ luc65r ];
   };
 }
diff --git a/pkgs/applications/audio/gbsplay/default.nix b/pkgs/applications/audio/gbsplay/default.nix
index f89b8ed399b..3d280ca72ab 100644
--- a/pkgs/applications/audio/gbsplay/default.nix
+++ b/pkgs/applications/audio/gbsplay/default.nix
@@ -1,28 +1,32 @@
-{ stdenv, fetchFromGitHub, libpulseaudio }:
+{ lib, stdenv, fetchFromGitHub, installShellFiles, libpulseaudio, nas }:
 
-stdenv.mkDerivation {
-  name = "gbsplay-2016-12-17";
+stdenv.mkDerivation rec {
+  pname = "gbsplay";
+  version = "0.0.94";
 
   src = fetchFromGitHub {
     owner = "mmitch";
     repo = "gbsplay";
-    rev = "2c4486e17fd4f4cdea8c3fd79ae898c892616b70";
-    sha256 = "1214j67sr87zfhvym41cw2g823fmqh4hr451r7y1s9ql3jpjqhpz";
+    rev = version;
+    sha256 = "VpaXbjotmc/Ref1geiKkBX9UhbPxfAGkFAdKVxP8Uxo=";
   };
 
-  buildInputs = [ libpulseaudio ];
+  configureFlags = [
+    "--without-test" # See mmitch/gbsplay#62
+    "--without-contrib"
+  ];
 
-  configureFlags =
-   [ "--without-test" "--without-contrib" "--disable-devdsp"
-     "--enable-pulse" "--disable-alsa" "--disable-midi"
-     "--disable-nas" "--disable-dsound" "--disable-i18n" ];
+  nativeBuildInputs = [ installShellFiles ];
+  buildInputs = [ libpulseaudio nas ];
 
-  makeFlags = [ "tests=" ];
+  postInstall = ''
+    installShellCompletion --bash --name gbsplay contrib/gbsplay.bashcompletion
+  '';
 
-  meta = with stdenv.lib; {
-    description = "gameboy sound player";
+  meta = with lib; {
+    description = "Gameboy sound player";
     license = licenses.gpl1;
-    platforms = ["i686-linux" "x86_64-linux"];
+    platforms = [ "i686-linux" "x86_64-linux" ];
     maintainers = with maintainers; [ dasuxullebt ];
   };
 }
diff --git a/pkgs/applications/audio/geonkick/default.nix b/pkgs/applications/audio/geonkick/default.nix
index c2dc39fe610..5eece77373f 100644
--- a/pkgs/applications/audio/geonkick/default.nix
+++ b/pkgs/applications/audio/geonkick/default.nix
@@ -1,27 +1,31 @@
-{ stdenv, fetchFromGitLab, cmake, pkg-config, redkite, libsndfile, rapidjson, libjack2, lv2, libX11, cairo }:
+{ lib, stdenv, fetchFromGitLab, cmake, pkg-config, libsndfile, rapidjson
+, libjack2, lv2, libX11, cairo }:
 
 stdenv.mkDerivation rec {
   pname = "geonkick";
-  version = "2.3.3";
+  version = "2.8.0";
 
   src = fetchFromGitLab {
     owner = "iurie-sw";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0h1abb6q2bmi01a3v37adkc4zc03j47jpvffz8p2lpp33xhljghs";
+    sha256 = "0dpwdjyy6phhr1jm1cabj2gc3rfsdan513mijbgnpzkq9w9jfb60";
   };
 
   nativeBuildInputs = [ cmake pkg-config ];
 
-  buildInputs = [ redkite libsndfile rapidjson libjack2 lv2 libX11 cairo ];
+  buildInputs = [ libsndfile rapidjson libjack2 lv2 libX11 cairo ];
 
-  cmakeFlags = [ "-DGKICK_REDKITE_SDK_PATH=${redkite}" ];
+  # https://github.com/iurie-sw/geonkick/issues/120
+  cmakeFlags = [
+    "-DCMAKE_INSTALL_LIBDIR=lib"
+  ];
 
-  meta = {
+  meta = with lib; {
     homepage = "https://gitlab.com/iurie-sw/geonkick";
     description = "A free software percussion synthesizer";
-    license = stdenv.lib.licenses.gpl3Plus;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.magnetophon ];
   };
 }
diff --git a/pkgs/applications/audio/giada/default.nix b/pkgs/applications/audio/giada/default.nix
index ce3f3df84a4..b49335298e0 100644
--- a/pkgs/applications/audio/giada/default.nix
+++ b/pkgs/applications/audio/giada/default.nix
@@ -1,4 +1,4 @@
-{ stdenv
+{ lib, stdenv
 , fetchFromGitHub
 , autoreconfHook
 , fltk
@@ -7,7 +7,7 @@
 , libsamplerate
 , libsndfile
 , jack2
-, alsaLib
+, alsa-lib
 , libpulseaudio
 , libXpm
 , libXinerama
@@ -18,13 +18,13 @@
 
 stdenv.mkDerivation rec {
   pname = "giada";
-  version = "0.16.3.1";
+  version = "0.16.4";
 
   src = fetchFromGitHub {
     owner = "monocasual";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0z1jrkggdn630i3j59j30apaa9s242y1wiawqp4g1n9dkg3r9a1j";
+    sha256 = "0qyx0bvivlvly0vj5nnnbiks22xh13sqlw4mfgplq2lbbpgisigp";
   };
 
   configureFlags = [
@@ -44,7 +44,7 @@ stdenv.mkDerivation rec {
     rtmidi
     libXpm
     jack2
-    alsaLib
+    alsa-lib
     libpulseaudio
     libXinerama
     libXcursor
@@ -57,7 +57,7 @@ stdenv.mkDerivation rec {
         src/core/{conf,init,midiMapConf,patch}.cpp
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A free, minimal, hardcore audio tool for DJs, live performers and electronic musicians";
     homepage = "https://giadamusic.com/";
     license = licenses.gpl3;
diff --git a/pkgs/applications/audio/gigedit/default.nix b/pkgs/applications/audio/gigedit/default.nix
index 08eec313508..1187dd1ba26 100644
--- a/pkgs/applications/audio/gigedit/default.nix
+++ b/pkgs/applications/audio/gigedit/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, autoconf, automake, intltool, libtool, pkgconfig, which
+{ lib, stdenv, fetchurl, autoconf, automake, intltool, libtool, pkg-config, which
 , docbook_xml_dtd_45, docbook_xsl, gtkmm2, libgig, libsndfile, libxslt
 }:
 
@@ -13,13 +13,13 @@ stdenv.mkDerivation rec {
 
   preConfigure = "make -f Makefile.svn";
 
-  nativeBuildInputs = [ autoconf automake intltool libtool pkgconfig which ];
+  nativeBuildInputs = [ autoconf automake intltool libtool pkg-config which ];
 
   buildInputs = [ docbook_xml_dtd_45 docbook_xsl gtkmm2 libgig libsndfile libxslt ];
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://www.linuxsampler.org";
     description = "Gigasampler file access library";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/gjay/default.nix b/pkgs/applications/audio/gjay/default.nix
index 9e016c68608..4bd9c6dcd8f 100644
--- a/pkgs/applications/audio/gjay/default.nix
+++ b/pkgs/applications/audio/gjay/default.nix
@@ -1,24 +1,41 @@
-{ stdenv, fetchurl, pkgconfig, mpd_clientlib, dbus-glib, audacious, gtk2, gsl
-, libaudclient }:
+{ lib
+, stdenv
+, fetchurl
+, pkg-config
+, dbus-glib
+, audacious
+, gtk2
+, gsl
+, libaudclient
+, libmpdclient
+}:
 
-stdenv.mkDerivation {
-  name = "gjay-0.3.2";
+stdenv.mkDerivation rec {
+  pname = "gjay";
+  version = "0.3.2";
 
   src = fetchurl {
-    url = "mirror://sourceforge/project/gjay/gjay-0.3.2.tar.gz";
+    url = "mirror://sourceforge/project/gjay/${pname}-${version}.tar.gz";
     sha256 = "1a1vv4r0vnxjdyl0jyv7gga3zfd5azxlwjm1l6hjrf71lb228zn8";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
 
-  buildInputs = [ mpd_clientlib dbus-glib audacious gtk2 gsl libaudclient ];
+  buildInputs = [
+    libmpdclient
+    dbus-glib
+    audacious
+    gtk2
+    gsl
+    libaudclient
+  ];
 
   hardeningDisable = [ "format" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Generates playlists such that each song sounds good following the previous song";
     homepage = "http://gjay.sourceforge.net/";
-    license = licenses.gpl2;
+    license = licenses.gpl2Plus;
     maintainers = with maintainers; [ pSub ];
     platforms = with platforms; linux;
   };
diff --git a/pkgs/applications/audio/gmpc/default.nix b/pkgs/applications/audio/gmpc/default.nix
index 7ae02ae38d8..4c93fad511a 100644
--- a/pkgs/applications/audio/gmpc/default.nix
+++ b/pkgs/applications/audio/gmpc/default.nix
@@ -1,6 +1,22 @@
-{ stdenv, fetchurl, libtool, intltool, pkgconfig, glib
-, gtk2, curl, mpd_clientlib, libsoup, gob2, vala, libunique
-, libSM, libICE, sqlite, hicolor-icon-theme, wrapGAppsHook
+{ lib
+, stdenv
+, fetchurl
+, libtool
+, intltool
+, pkg-config
+, glib
+, gtk2
+, curl
+, libmpdclient
+, libsoup
+, gob2
+, vala
+, libunique
+, libSM
+, libICE
+, sqlite
+, hicolor-icon-theme
+, wrapGAppsHook
 }:
 
 stdenv.mkDerivation rec {
@@ -15,7 +31,7 @@ stdenv.mkDerivation rec {
     };
     patches = [ ./libmpd-11.8.17-remove-strndup.patch ];
 
-    nativeBuildInputs = [ pkgconfig ];
+    nativeBuildInputs = [ pkg-config ];
     buildInputs = [ glib ];
   };
 
@@ -24,13 +40,22 @@ stdenv.mkDerivation rec {
     sha256 = "0b3bnxf98i5lhjyljvgxgx9xmb6p46cn3a9cccrng14nagri9556";
   };
 
-  nativeBuildInputs = [ pkgconfig libtool intltool gob2 vala wrapGAppsHook ];
+  nativeBuildInputs = [ pkg-config libtool intltool gob2 vala wrapGAppsHook ];
   buildInputs = [
-    glib gtk2 curl mpd_clientlib libsoup
-    libunique libmpd libSM libICE sqlite hicolor-icon-theme
+    glib
+    gtk2
+    curl
+    libmpdclient
+    libsoup
+    libunique
+    libmpd
+    libSM
+    libICE
+    sqlite
+    hicolor-icon-theme
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://gmpclient.org";
     description = "A GTK2 frontend for Music Player Daemon";
     license = licenses.gpl2;
@@ -38,3 +63,4 @@ stdenv.mkDerivation rec {
     platforms = platforms.linux;
   };
 }
+# TODO: what is this libmpd derivation embedded above?
diff --git a/pkgs/applications/audio/gmu/default.nix b/pkgs/applications/audio/gmu/default.nix
index bfe9f72d664..b2b9f5e3475 100644
--- a/pkgs/applications/audio/gmu/default.nix
+++ b/pkgs/applications/audio/gmu/default.nix
@@ -1,14 +1,15 @@
-{stdenv, fetchurl, SDL, SDL_gfx, SDL_image, tremor, flac, mpg123, libmikmod
+{lib, stdenv, fetchurl, SDL, SDL_gfx, SDL_image, tremor, flac, mpg123, libmikmod
 , speex, ncurses
 , keymap ? "default"
 , conf ? "unknown"
 }:
 
 stdenv.mkDerivation rec {
-  name = "gmu-0.10.1";
+  pname = "gmu";
+  version = "0.10.1";
 
   src = fetchurl {
-    url = "http://wejp.k.vu/files/${name}.tar.gz";
+    url = "https://wej.k.vu/files/${pname}-${version}.tar.gz";
     sha256 = "03x0mc0xw2if0bpf0a15yprcyx1xccki039zvl2099dagwk6xskv";
   };
 
@@ -26,6 +27,6 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "http://wejp.k.vu/projects/gmu";
     description = "Open source music player for portable gaming consoles and handhelds";
-    license = stdenv.lib.licenses.gpl2;
+    license = lib.licenses.gpl2;
   };
 }
diff --git a/pkgs/applications/audio/gnaural/default.nix b/pkgs/applications/audio/gnaural/default.nix
new file mode 100644
index 00000000000..10c199d94b6
--- /dev/null
+++ b/pkgs/applications/audio/gnaural/default.nix
@@ -0,0 +1,33 @@
+{ lib, stdenv, fetchurl, pkg-config, libsndfile, portaudio, gtk2 }:
+
+stdenv.mkDerivation rec {
+  pname = "gnaural";
+  version = "20110606";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/${pname}/${pname}_${version}.tar.xz";
+    hash = "sha256-0a09DUMfHEIGYuIYSBGJalBiIHIgejr/KVDXCFgKBb8=";
+  };
+
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ gtk2 libsndfile portaudio ];
+
+  postInstall = ''
+    mkdir -p $out/share/applications
+    substitute \
+      $out/share/gnome/apps/Multimedia/gnaural.desktop \
+      $out/share/applications/gnaural.desktop \
+      --replace \
+        "/usr/share/gnaural/pixmaps/gnaural-icon.png" \
+        "$out/share/gnaural/pixmaps/gnaural-icon.png" \
+
+    rm -rf $out/share/gnome
+  '';
+
+  meta = with lib; {
+    description = "Programmable auditory binaural-beat synthesizer";
+    homepage = "http://gnaural.sourceforge.net/";
+    maintainers = with maintainers; [ ehmry ];
+    license = with licenses; [ gpl2Only ];
+  };
+}
diff --git a/pkgs/applications/audio/gnome-podcasts/default.nix b/pkgs/applications/audio/gnome-podcasts/default.nix
index c7df55118c7..a053dda46a3 100644
--- a/pkgs/applications/audio/gnome-podcasts/default.nix
+++ b/pkgs/applications/audio/gnome-podcasts/default.nix
@@ -1,17 +1,17 @@
 { stdenv
+, lib
 , rustPlatform
 , fetchFromGitLab
-, fetchpatch
 , meson
 , ninja
 , gettext
-, cargo
-, rustc
 , python3
-, pkgconfig
+, pkg-config
 , glib
 , libhandy
 , gtk3
+, appstream-glib
+, desktop-file-utils
 , dbus
 , openssl
 , sqlite
@@ -19,33 +19,40 @@
 , wrapGAppsHook
 }:
 
-rustPlatform.buildRustPackage rec {
-  version = "0.4.8";
+stdenv.mkDerivation rec {
   pname = "gnome-podcasts";
+  version = "0.4.9";
 
   src = fetchFromGitLab {
     domain = "gitlab.gnome.org";
     owner = "World";
     repo = "podcasts";
     rev = version;
-    sha256 = "0y2332zjq7vf1v38wzwz98fs19vpzy9kl7y0xbdzqr303l59hjb1";
+    sha256 = "1ah59ac3xm3sqai8zhil8ar30pviw83cm8in1n4id77rv24xkvgm";
   };
 
-  cargoSha256 = "1jbii9k4bkrivdk1ffr6556q1sgk9j4jbzwnn8vbxmksyl1x328q";
+  cargoDeps = rustPlatform.fetchCargoTarball {
+    inherit src;
+    name = "${pname}-${version}";
+    sha256 = "1iihpfvkli09ysn46cnif53xizkwzk0m91bljmlzsygp3ip5i5yw";
+  };
 
   nativeBuildInputs = [
     meson
     ninja
-    pkgconfig
+    pkg-config
     gettext
-    cargo
-    rustc
     python3
+    rustPlatform.rust.cargo
+    rustPlatform.cargoSetupHook
+    rustPlatform.rust.rustc
     wrapGAppsHook
     glib
   ];
 
   buildInputs = [
+    appstream-glib
+    desktop-file-utils
     glib
     gtk3
     libhandy
@@ -55,14 +62,9 @@ rustPlatform.buildRustPackage rec {
     gst_all_1.gstreamer
     gst_all_1.gst-plugins-base
     gst_all_1.gst-plugins-bad
+    gst_all_1.gst-plugins-good
   ];
 
-  # use Meson/Ninja phases
-  configurePhase = null;
-  buildPhase = null;
-  checkPhase = null;
-  installPhase = null;
-
   # tests require network
   doCheck = false;
 
@@ -71,10 +73,10 @@ rustPlatform.buildRustPackage rec {
     patchShebangs scripts/compile-gschema.py scripts/cargo.sh scripts/test.sh
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Listen to your favorite podcasts";
     homepage = "https://wiki.gnome.org/Apps/Podcasts";
-    license = licenses.gpl3;
+    license = licenses.gpl3Plus;
     maintainers = teams.gnome.members;
     platforms = platforms.unix;
   };
diff --git a/pkgs/applications/audio/goattracker/default.nix b/pkgs/applications/audio/goattracker/default.nix
index 77a04221b84..743417570c1 100644
--- a/pkgs/applications/audio/goattracker/default.nix
+++ b/pkgs/applications/audio/goattracker/default.nix
@@ -1,13 +1,14 @@
-{ stdenv
+{ lib, stdenv
 , fetchurl
 , unzip
+, copyDesktopItems
 , makeDesktopItem
 , imagemagick
 , SDL
 , isStereo ? false
 }:
 
-with stdenv.lib;
+with lib;
 let
   pname = "goattracker" + optionalString isStereo "-stereo";
   desktopItem = makeDesktopItem {
@@ -26,18 +27,18 @@ let
 in stdenv.mkDerivation rec {
   inherit pname;
   version = if isStereo
-    then "2.76"  # stereo
-    else "2.75"; # normal
+    then "2.77"  # stereo
+    else "2.76"; # normal
 
   src = fetchurl {
     url = "mirror://sourceforge/goattracker2/GoatTracker_${version}${optionalString isStereo "_Stereo"}.zip";
     sha256 = if isStereo
-      then "12cz3780x5k047jqdv69n6rjgbfiwv67z850kfl4i37lxja432l7"  # stereo
-      else "1km97nl7qvk6qc5l5j69wncbm76hf86j47sgzgr968423g0bxxlk"; # normal
+      then "1hiig2d152sv9kazwz33i56x1c54h5sh21ipkqnp6qlnwj8x1ksy"  # stereo
+      else "0d7a3han4jw4bwiba3j87racswaajgl3pj4sb5lawdqdxicv3dn1"; # normal
   };
-  sourceRoot = (if isStereo then "gt2stereo/trunk" else "goattrk2") + "/src";
+  sourceRoot = "src";
 
-  nativeBuildInputs = [ unzip imagemagick ];
+  nativeBuildInputs = [ copyDesktopItems unzip imagemagick ];
   buildInputs = [ SDL ];
 
   # PREFIX gets treated as BINDIR.
@@ -51,11 +52,16 @@ in stdenv.mkDerivation rec {
 
   # Other files get installed during the build phase.
   installPhase = ''
+    runHook preInstall
+
     convert goattrk2.bmp goattracker.png
     install -Dm644 goattracker.png $out/share/icons/hicolor/32x32/apps/goattracker.png
-    ${desktopItem.buildCommand}
+
+    runHook postInstall
   '';
 
+  desktopItems = [ desktopItem ];
+
   meta = {
     description = "A crossplatform music editor for creating Commodore 64 music. Uses reSID library by Dag Lem and supports alternatively HardSID & CatWeasel devices"
       + optionalString isStereo " - Stereo version";
@@ -66,4 +72,3 @@ in stdenv.mkDerivation rec {
     platforms = platforms.all;
   };
 }
-
diff --git a/pkgs/applications/audio/google-musicmanager/default.nix b/pkgs/applications/audio/google-musicmanager/default.nix
deleted file mode 100644
index b4fe78dcbfc..00000000000
--- a/pkgs/applications/audio/google-musicmanager/default.nix
+++ /dev/null
@@ -1,77 +0,0 @@
-{ stdenv, fetchurl
-, flac, expat, libidn, qtbase, qtwebkit, libvorbis }:
-assert stdenv.hostPlatform.system == "x86_64-linux";
-
-stdenv.mkDerivation rec {
-  version = "beta_1.0.467.4929-r0"; # friendly to nix-env version sorting algo
-  product = "google-musicmanager";
-  name    = "${product}-${version}";
-
-  # When looking for newer versions, since google doesn't let you list their repo dirs,
-  # curl http://dl.google.com/linux/musicmanager/deb/dists/stable/Release
-  # fetch an appropriate packages file such as main/binary-amd64/Packages:
-  # curl http://dl.google.com/linux/musicmanager/deb/dists/stable/main/binary-amd64/Packages
-  # which will contain the links to all available *.debs for the arch.
-
-  src = fetchurl {
-    url    = "http://dl.google.com/linux/musicmanager/deb/pool/main/g/google-musicmanager-beta/${name}_amd64.deb";
-    sha256 = "0yaprpbp44var88kdj1h11fqkhgcklixr69jyia49v9m22529gg2";
-  };
-
-  unpackPhase = ''
-    ar vx ${src}
-    tar xvf data.tar.xz
-    tar xvf control.tar.gz
-  '';
-
-  prePatch = ''
-    sed -i "s@\(Exec=\).*@\1$out/bin/google-musicmanager@" opt/google/musicmanager/google-musicmanager.desktop
-  '';
-
-  installPhase = ''
-    mkdir -p $out/bin
-    mkdir -p $out/lib
-    mkdir -p $out/share/applications
-
-    cp -r opt $out
-    find -name "*.so*" -exec cp "{}" $out/lib \;
-    ln -s $out/opt/google/musicmanager/google-musicmanager $out/bin
-    ln -s $out/opt/google/musicmanager/google-musicmanager.desktop $out/share/applications
-
-    for i in 16 32 48 128
-    do
-      iconDirectory=$out/usr/share/icons/hicolor/"$i"x"$i"/apps
-
-      mkdir -p $iconDirectory
-      ln -s $out/opt/google/musicmanager/product_logo_"$i".png $iconDirectory/google-musicmanager.png
-    done
-  '';
-
-  postFixup = ''
-    patchelf \
-      --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
-      --set-rpath "$(patchelf --print-rpath $out/opt/google/musicmanager/minidump_upload):${stdenv.lib.makeLibraryPath [ stdenv.cc.cc.lib ]}" \
-      $out/opt/google/musicmanager/minidump_upload
-
-    patchelf \
-      --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
-      --set-rpath "$(patchelf --print-rpath $out/opt/google/musicmanager/MusicManager):$out/lib:${stdenv.lib.makeLibraryPath [
-        flac
-        expat
-        libidn
-        qtbase
-        qtwebkit
-        libvorbis
-        stdenv.cc.cc.lib
-      ]}" \
-      $out/opt/google/musicmanager/MusicManager
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Uploads music from your computer to Google Play";
-    homepage    = "https://support.google.com/googleplay/answer/1229970";
-    license     = licenses.unfree;
-    maintainers = with maintainers; [ lovek323 ];
-    platforms   = platforms.linux;
-  };
-}
diff --git a/pkgs/applications/audio/google-play-music-desktop-player/default.nix b/pkgs/applications/audio/google-play-music-desktop-player/default.nix
index 509d3ddcf75..74286073b90 100644
--- a/pkgs/applications/audio/google-play-music-desktop-player/default.nix
+++ b/pkgs/applications/audio/google-play-music-desktop-player/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, alsaLib, atk, at-spi2-atk, cairo, cups, dbus, dpkg, expat, fontconfig, freetype
+{ lib, stdenv, alsa-lib, atk, at-spi2-atk, cairo, cups, dbus, dpkg, expat, fontconfig, freetype
 , fetchurl, GConf, gdk-pixbuf, glib, gtk2, gtk3, libpulseaudio, makeWrapper, nspr
 , nss, pango, udev, xorg
 }:
@@ -7,7 +7,7 @@ let
   version = "4.7.1";
 
   deps = [
-    alsaLib
+    alsa-lib
     atk
     at-spi2-atk
     cairo
@@ -53,7 +53,7 @@ stdenv.mkDerivation {
   };
 
   dontBuild = true;
-  buildInputs = [ dpkg makeWrapper ];
+  nativeBuildInputs = [ dpkg makeWrapper ];
 
   unpackPhase = ''
     dpkg -x $src .
@@ -69,14 +69,14 @@ stdenv.mkDerivation {
 
     wrapProgram $out/bin/google-play-music-desktop-player \
       --prefix LD_LIBRARY_PATH : "$out/share/google-play-music-desktop-player" \
-      --prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath deps}"
+      --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath deps}"
   '';
 
   meta = {
     homepage = "https://www.googleplaymusicdesktopplayer.com/";
-    description = "A beautiful cross platform Desktop Player for Google Play Music";
-    license = stdenv.lib.licenses.mit;
+    description = "A beautiful cross platform Desktop Player for Google Play Music and YouTube Music";
+    license = lib.licenses.mit;
     platforms = [ "x86_64-linux" ];
-    maintainers = [ stdenv.lib.maintainers.SuprDewd ];
+    maintainers = with lib.maintainers; [ anna328p SuprDewd ];
   };
 }
diff --git a/pkgs/applications/audio/gpodder/default.nix b/pkgs/applications/audio/gpodder/default.nix
index 4a21868f097..681c6ffe281 100644
--- a/pkgs/applications/audio/gpodder/default.nix
+++ b/pkgs/applications/audio/gpodder/default.nix
@@ -1,25 +1,25 @@
-{ stdenv, fetchFromGitHub, python3, python3Packages, intltool
-, glibcLocales, gnome3, gtk3, wrapGAppsHook
+{ lib, fetchFromGitHub, python3, python3Packages, intltool
+, glibcLocales, gnome, gtk3, wrapGAppsHook
 , gobject-introspection
 }:
 
 python3Packages.buildPythonApplication rec {
   pname = "gpodder";
-  version = "3.10.16";
+  version = "3.10.17";
   format = "other";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = version;
-    sha256 = "0pbpaasd7kj6y25nm45y1qyb9sxd4570f7g6zkfcpf6pa3nx7qkq";
+    sha256 = "0wrk8d4q6ricbcjzlhk10vrk1qg9hi323kgyyd0c8nmh7a82h8pd";
   };
 
   patches = [
     ./disable-autoupdate.patch
   ];
 
-  postPatch = with stdenv.lib; ''
+  postPatch = with lib; ''
     sed -i -re 's,^( *gpodder_dir *= *).*,\1"'"$out"'",' bin/gpodder
   '';
 
@@ -32,7 +32,7 @@ python3Packages.buildPythonApplication rec {
   buildInputs = [
     python3
     gobject-introspection
-    gnome3.adwaita-icon-theme
+    gnome.adwaita-icon-theme
   ];
 
   checkInputs = with python3Packages; [
@@ -67,7 +67,7 @@ python3Packages.buildPythonApplication rec {
     LC_ALL=C PYTHONPATH=./src:$PYTHONPATH python3 -m gpodder.unittests
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A podcatcher written in python";
     longDescription = ''
       gPodder downloads and manages free audio and video content (podcasts)
diff --git a/pkgs/applications/audio/gradio/default.nix b/pkgs/applications/audio/gradio/default.nix
index 384235fc065..9e2187f4a8f 100644
--- a/pkgs/applications/audio/gradio/default.nix
+++ b/pkgs/applications/audio/gradio/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, pkgconfig
+{ lib, stdenv, fetchFromGitHub, pkg-config
 , python3
 , gsettings-desktop-schemas
 , desktop-file-utils
@@ -30,7 +30,7 @@ in stdenv.mkDerivation {
   };
 
   nativeBuildInputs = [
-    pkgconfig
+    pkg-config
 
     meson
     ninja
@@ -55,14 +55,13 @@ in stdenv.mkDerivation {
     gsettings-desktop-schemas
   ] ++ gst_plugins;
 
-  enableParallelBuilding = true;
   postInstall = ''
     glib-compile-schemas "$out"/share/glib-2.0/schemas
   '';
 
   patches = [ ./0001-Remove-post-install-script-that-hardcodes-paths.patch ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/haecker-felix/gradio";
     description = "A GTK3 app for finding and listening to internet radio stations";
     license = licenses.gpl3;
diff --git a/pkgs/applications/audio/grandorgue/default.nix b/pkgs/applications/audio/grandorgue/default.nix
index e2ba4ee2244..30c6e57188a 100644
--- a/pkgs/applications/audio/grandorgue/default.nix
+++ b/pkgs/applications/audio/grandorgue/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchsvn, cmake, pkg-config, gcc, pkgconfig, fftwFloat, alsaLib
+{ lib, stdenv, fetchsvn, cmake, gcc, pkg-config, fftwFloat, alsa-lib
 , zlib, wavpack, wxGTK31, udev, jackaudioSupport ? false, libjack2
 , includeDemo ? true }:
 
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ cmake pkg-config ];
 
-  buildInputs = [ pkgconfig fftwFloat alsaLib zlib wavpack wxGTK31 udev ]
+  buildInputs = [ pkg-config fftwFloat alsa-lib zlib wavpack wxGTK31 udev ]
     ++ lib.optional jackaudioSupport libjack2;
 
   cmakeFlags = lib.optional (!jackaudioSupport) [
@@ -25,8 +25,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "Virtual Pipe Organ Software";
     homepage = "https://sourceforge.net/projects/ourorgan";
-    license = stdenv.lib.licenses.gpl2;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.puzzlewolf ];
+    license = lib.licenses.gpl2;
+    platforms = lib.platforms.linux;
+    maintainers = [ lib.maintainers.puzzlewolf ];
   };
 }
diff --git a/pkgs/applications/audio/greg/default.nix b/pkgs/applications/audio/greg/default.nix
index e027680f5fe..95f3bf9988c 100644
--- a/pkgs/applications/audio/greg/default.nix
+++ b/pkgs/applications/audio/greg/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, pythonPackages }:
+{ lib, fetchFromGitHub, pythonPackages }:
 
 with pythonPackages; buildPythonApplication rec {
   pname = "greg";
@@ -13,10 +13,9 @@ with pythonPackages; buildPythonApplication rec {
     sha256 = "0bdzgh2k1ppgcvqiasxwp3w89q44s4jgwjidlips3ixx1bzm822v";
   };
 
-  buildInputs = with pythonPackages; [ feedparser ];
-  propagatedBuildInputs = buildInputs;
+  propagatedBuildInputs = [ setuptools feedparser ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/manolomartinez/greg";
     description = "A command-line podcast aggregator";
     license = licenses.gpl3;
diff --git a/pkgs/applications/audio/gspeech/default.nix b/pkgs/applications/audio/gspeech/default.nix
index 920c06038fe..21a4d6748be 100644
--- a/pkgs/applications/audio/gspeech/default.nix
+++ b/pkgs/applications/audio/gspeech/default.nix
@@ -63,7 +63,7 @@ python3.pkgs.buildPythonApplication rec {
   strictDeps = false;
 
   meta = with lib; {
-    description = "A minimal GUI for the Text To Speech 'Svox Pico'. Read clipboard or selected text in different languages and manage it : pause, stop, replay.";
+    description = "A minimal GUI for the Text To Speech 'Svox Pico'. Read clipboard or selected text in different languages and manage it : pause, stop, replay";
     homepage = "https://github.com/mothsART/gSpeech";
     maintainers = with maintainers; [ mothsart ];
     license = licenses.gpl3;
diff --git a/pkgs/applications/audio/gtklick/default.nix b/pkgs/applications/audio/gtklick/default.nix
index a81834c1fff..6b7f4e4d7b2 100644
--- a/pkgs/applications/audio/gtklick/default.nix
+++ b/pkgs/applications/audio/gtklick/default.nix
@@ -1,6 +1,6 @@
-{ stdenv, fetchurl, pythonPackages, gettext, klick}:
+{ lib, fetchurl, python2Packages, gettext, klick}:
 
-pythonPackages.buildPythonApplication rec {
+python2Packages.buildPythonApplication rec {
   pname = "gtklick";
   version = "0.6.4";
 
@@ -9,7 +9,7 @@ pythonPackages.buildPythonApplication rec {
     sha256 = "7799d884126ccc818678aed79d58057f8cf3528e9f1be771c3fa5b694d9d0137";
   };
 
-  pythonPath = with pythonPackages; [
+  pythonPath = with python2Packages; [
     pyliblo
     pyGtkGlade
   ];
@@ -29,6 +29,6 @@ pythonPackages.buildPythonApplication rec {
   meta = {
     homepage = "http://das.nasophon.de/gtklick/";
     description = "Simple metronome with an easy-to-use GTK interface";
-    license = stdenv.lib.licenses.gpl2Plus;
+    license = lib.licenses.gpl2Plus;
   };
 }
diff --git a/pkgs/applications/audio/gtkpod/default.nix b/pkgs/applications/audio/gtkpod/default.nix
index 1f293fe2d79..61484bc2fbb 100644
--- a/pkgs/applications/audio/gtkpod/default.nix
+++ b/pkgs/applications/audio/gtkpod/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchurl, pkgconfig, wrapGAppsHook, intltool, libgpod, curl, flac,
-  gnome3, gtk3, gettext, perlPackages, flex, libid3tag, gdl,
+{ lib, stdenv, fetchurl, pkg-config, wrapGAppsHook, intltool, libgpod, curl, flac,
+  gnome, gtk3, gettext, perlPackages, flex, libid3tag, gdl,
   libvorbis, gdk-pixbuf }:
 
 stdenv.mkDerivation rec {
@@ -11,11 +11,11 @@ stdenv.mkDerivation rec {
     sha256 = "0xisrpx069f7bjkyc8vqxb4k0480jmx1wscqxr6cpq1qj6pchzd5";
   };
 
-  nativeBuildInputs = [ pkgconfig wrapGAppsHook intltool ];
+  nativeBuildInputs = [ pkg-config wrapGAppsHook intltool ];
   buildInputs = [
     curl gettext
     flex libgpod libid3tag flac libvorbis gtk3 gdk-pixbuf
-    gdl gnome3.adwaita-icon-theme gnome3.anjuta
+    gdl gnome.adwaita-icon-theme gnome.anjuta
   ] ++ (with perlPackages; [ perl XMLParser ]);
 
   patchPhase = ''
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "GTK Manager for an Apple ipod";
     homepage = "http://gtkpod.sourceforge.net";
     license = licenses.gpl2Plus;
diff --git a/pkgs/applications/audio/guitarix/default.nix b/pkgs/applications/audio/guitarix/default.nix
index d74f1c8728f..f90cae115b4 100644
--- a/pkgs/applications/audio/guitarix/default.nix
+++ b/pkgs/applications/audio/guitarix/default.nix
@@ -1,5 +1,6 @@
-{ stdenv
+{ lib, stdenv
 , fetchurl
+, fetchpatch
 , avahi
 , bluez
 , boost
@@ -10,20 +11,19 @@
 , glib
 , glib-networking
 , glibmm
-, gnome3
+, gnome
 , gsettings-desktop-schemas
 , gtk3
 , gtkmm3
 , hicolor-icon-theme
 , intltool
 , ladspaH
-, libav
 , libjack2
 , libsndfile
 , lilv
 , lrdf
 , lv2
-, pkgconfig
+, pkg-config
 , python2
 , sassc
 , serd
@@ -37,23 +37,32 @@
 }:
 
 let
-  inherit (stdenv.lib) optional;
+  inherit (lib) optional;
 in
 
 stdenv.mkDerivation rec {
   pname = "guitarix";
-  version = "0.41.0";
+  version = "0.42.1";
 
   src = fetchurl {
     url = "mirror://sourceforge/guitarix/guitarix2-${version}.tar.xz";
-    sha256 = "0qsfbyrrpb3bbdyq68k28mjql7kglxh8nqcw9jvja28x6x9ik5a0";
+    sha256 = "101c2hdpipj3s6rmva5wf3q9hfjv7bkyzi7s8sgaiys8f7h4czkr";
   };
 
+  patches = [
+    (fetchpatch {
+      name = "guitarix-gcc11.patch";
+      url = "https://github.com/brummer10/guitarix/commit/d8f003484c57d808682025dfb07a7a1fb848afdc.patch";
+      stripLen = 1;
+      sha256 = "1qhlbf18cn6m9jdz3741nrdfqvznjna3daqmn9l10k5nd3asy4il";
+    })
+  ];
+
   nativeBuildInputs = [
     gettext
     hicolor-icon-theme
     intltool
-    pkgconfig
+    pkg-config
     python2
     wafHook
     wrapGAppsHook
@@ -69,12 +78,11 @@ stdenv.mkDerivation rec {
     glib
     glib-networking.out
     glibmm
-    gnome3.adwaita-icon-theme
+    gnome.adwaita-icon-theme
     gsettings-desktop-schemas
     gtk3
     gtkmm3
     ladspaH
-    libav
     libjack2
     libsndfile
     lilv
@@ -100,7 +108,7 @@ stdenv.mkDerivation rec {
     "--install-roboto-font"
   ] ++ optional optimizationSupport "--optimization";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A virtual guitar amplifier for Linux running with JACK";
     longDescription = ''
         guitarix is a virtual guitar amplifier for Linux running with
diff --git a/pkgs/applications/audio/gwc/default.nix b/pkgs/applications/audio/gwc/default.nix
index d9631ac45e6..aeb64b92c88 100644
--- a/pkgs/applications/audio/gwc/default.nix
+++ b/pkgs/applications/audio/gwc/default.nix
@@ -1,8 +1,8 @@
-{ stdenv
+{ lib, stdenv
 , fetchFromGitHub
 , autoreconfHook
 , pkg-config
-, alsaLib
+, alsa-lib
 , libpulseaudio
 , gtk2
 , hicolor-icon-theme
@@ -12,13 +12,13 @@
 
 stdenv.mkDerivation rec {
   pname = "gwc";
-  version = "0.22-04";
+  version = "0.22-05";
 
   src = fetchFromGitHub {
     owner = "AlisterH";
     repo = pname;
     rev = version;
-    sha256 = "0xvfra32dchnnyf9kj5s5xmqhln8jdrc9f0040hjr2dsb58y206p";
+    sha256 = "sha256-FHKu5qAyRyMxXdWYTCeAc6Q4J+NOaU1SGgoTbe0PiFE=";
   };
 
   nativeBuildInputs = [
@@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
   ];
 
   buildInputs = [
-    alsaLib
+    alsa-lib
     libpulseaudio
     gtk2
     hicolor-icon-theme
@@ -37,7 +37,7 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = false; # Fails to generate machine.h in time.
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "GUI application for removing noise (hiss, pops and clicks) from audio files";
     homepage = "https://github.com/AlisterH/gwc/";
     license = licenses.gpl2Plus;
diff --git a/pkgs/applications/audio/gxmatcheq-lv2/default.nix b/pkgs/applications/audio/gxmatcheq-lv2/default.nix
index b2d99e0eba8..246b034400d 100644
--- a/pkgs/applications/audio/gxmatcheq-lv2/default.nix
+++ b/pkgs/applications/audio/gxmatcheq-lv2/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, xorg, xorgproto, cairo, lv2, pkgconfig }:
+{ lib, stdenv, fetchFromGitHub, xorg, xorgproto, cairo, lv2, pkg-config }:
 
 stdenv.mkDerivation rec {
   pname = "GxMatchEQ.lv2";
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
     sha256 = "0azdmgzqwjn26nx38iw13666a1i4y2bv39wk89pf6ihdi46klf72";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [
     xorg.libX11 xorgproto cairo lv2
   ];
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
 
   installFlags = [ "INSTALL_DIR=$(out)/lib/lv2" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/brummer10/GxMatchEQ.lv2";
     description = "Matching Equalizer to apply EQ curve from one source to another source";
     maintainers = [ maintainers.magnetophon ];
diff --git a/pkgs/applications/audio/gxplugins-lv2/default.nix b/pkgs/applications/audio/gxplugins-lv2/default.nix
index fa80611fc28..5e8747f7656 100644
--- a/pkgs/applications/audio/gxplugins-lv2/default.nix
+++ b/pkgs/applications/audio/gxplugins-lv2/default.nix
@@ -1,18 +1,18 @@
-{ stdenv, fetchFromGitHub, xorg, xorgproto, cairo, lv2, pkgconfig }:
+{ lib, stdenv, fetchFromGitHub, xorg, xorgproto, cairo, lv2, pkg-config }:
 
 stdenv.mkDerivation rec {
   pname = "GxPlugins.lv2";
-  version = "0.8";
+  version = "0.9";
 
   src = fetchFromGitHub {
     owner = "brummer10";
     repo = pname;
     rev = "v${version}";
-    sha256 = "11iv7bwvvspm74pisqvcpsxpg9xi6b08hq4i8q67mri4mvy9hmal";
+    sha256 = "02fksl8wr443ygwgcd1c2zab8kp67a6ps12k71ysqx7szv4zq877";
     fetchSubmodules = true;
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [
     xorg.libX11 xorgproto cairo lv2
   ];
@@ -25,10 +25,10 @@ stdenv.mkDerivation rec {
     done
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/brummer10/GxPlugins.lv2";
     description = "A set of extra lv2 plugins from the guitarix project";
     maintainers = [ maintainers.magnetophon ];
-    license = licenses.gpl3;
+    license = licenses.gpl3Plus;
   };
 }
diff --git a/pkgs/applications/audio/helio-workstation/default.nix b/pkgs/applications/audio/helio-workstation/default.nix
index 3ada3224e33..012838eb436 100644
--- a/pkgs/applications/audio/helio-workstation/default.nix
+++ b/pkgs/applications/audio/helio-workstation/default.nix
@@ -1,34 +1,37 @@
-{ stdenv, fetchFromGitHub
-, alsaLib, freetype, xorg, curl, libGL, libjack2, gnome3
-, pkgconfig, makeWrapper
+{ lib, stdenv, fetchFromGitHub
+, alsa-lib, freetype, xorg, curl, libGL, libjack2, gnome
+, pkg-config, makeWrapper
 }:
 
 stdenv.mkDerivation rec {
   pname = "helio-workstation";
-  version = "2.2";
+  version = "3.6";
 
   src = fetchFromGitHub {
     owner = "helio-fm";
     repo = pname;
     rev = version;
     fetchSubmodules = true;
-    sha256 = "16iwj4mjs1nm8dlk70q97svp3vkcgs7hdj9hfda9h67acn4a8vvk";
+    sha256 = "sha256-qW39g6rQ5VPQ3Hx9NmwLbpZiITnzFZDZlcLkE+pJKPc=";
   };
 
   buildInputs = [
-    alsaLib freetype xorg.libX11 xorg.libXext xorg.libXinerama xorg.libXrandr
-    xorg.libXcursor xorg.libXcomposite curl libGL libjack2 gnome3.zenity
+    alsa-lib freetype xorg.libX11 xorg.libXext xorg.libXinerama xorg.libXrandr
+    xorg.libXcursor xorg.libXcomposite curl libGL libjack2 gnome.zenity
   ];
 
-  nativeBuildInputs = [ pkgconfig makeWrapper ];
+  nativeBuildInputs = [ pkg-config makeWrapper ];
 
-  preBuild = "cd Projects/LinuxMakefile";
+  preBuild = ''
+    cd Projects/LinuxMakefile
+    substituteInPlace Makefile --replace alsa "alsa jack"
+  '';
   buildFlags = [ "CONFIG=Release64" ];
 
   installPhase = ''
     mkdir -p $out/bin
     install -Dm755 build/Helio $out/bin
-    wrapProgram $out/bin/Helio --prefix PATH ":" ${gnome3.zenity}/bin
+    wrapProgram $out/bin/Helio --prefix PATH ":" ${gnome.zenity}/bin
 
     mkdir -p $out/share
     cp -r ../Deployment/Linux/Debian/x64/usr/share/* $out/share
@@ -36,10 +39,10 @@ stdenv.mkDerivation rec {
       --replace "/usr/bin/helio" "$out/bin/Helio"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "One music sequencer for all major platforms, both desktop and mobile";
     homepage = "https://helio.fm/";
-    license = licenses.gpl3;
+    license = licenses.gpl3Only;
     maintainers = [ maintainers.suhr ];
     platforms = [ "x86_64-linux" ];
   };
diff --git a/pkgs/applications/audio/helm/default.nix b/pkgs/applications/audio/helm/default.nix
index 8459967a363..86497e090f4 100644
--- a/pkgs/applications/audio/helm/default.nix
+++ b/pkgs/applications/audio/helm/default.nix
@@ -1,5 +1,16 @@
-{ stdenv, fetchFromGitHub , xorg, freetype, alsaLib, curl, libjack2
-, lv2, pkgconfig, libGLU, libGL }:
+{ lib, stdenv
+, fetchFromGitHub
+, fetchpatch
+, xorg
+, freetype
+, alsa-lib
+, curl
+, libjack2
+, lv2
+, pkg-config
+, libGLU
+, libGL
+}:
 
   stdenv.mkDerivation {
   version = "0.9.0";
@@ -15,12 +26,20 @@
   buildInputs = [
     xorg.libX11 xorg.libXcomposite xorg.libXcursor xorg.libXext
     xorg.libXinerama xorg.libXrender xorg.libXrandr
-    freetype alsaLib curl libjack2 pkgconfig libGLU libGL lv2
+    freetype alsa-lib curl libjack2 pkg-config libGLU libGL lv2
   ];
 
   CXXFLAGS = "-DHAVE_LROUND";
 
-  patchPhase = ''
+  patches = [
+    # gcc9 compatibility https://github.com/mtytel/helm/pull/233
+    (fetchpatch {
+      url = "https://github.com/mtytel/helm/commit/cb611a80bd5a36d31bfc31212ebbf79aa86c6f08.patch";
+      sha256 = "1i2289srcfz17c3zzab6f51aznzdj62kk53l4afr32bkjh9s4ixk";
+    })
+  ];
+
+  prePatch = ''
     sed -i 's|usr/||g' Makefile
   '';
 
@@ -33,7 +52,7 @@
    make DESTDIR="$out" install
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://tytel.org/helm";
     description = "A free, cross-platform, polyphonic synthesizer";
     longDescription = ''
@@ -53,7 +72,7 @@
         Simple arpeggiator
         Effects: Formant filter, stutter, delay
     '';
-    license = stdenv.lib.licenses.gpl3;
+    license = lib.licenses.gpl3;
     maintainers = [ maintainers.magnetophon ];
     platforms = platforms.linux;
   };
diff --git a/pkgs/applications/audio/helvum/default.nix b/pkgs/applications/audio/helvum/default.nix
new file mode 100644
index 00000000000..cc98e9fb359
--- /dev/null
+++ b/pkgs/applications/audio/helvum/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, fetchFromGitLab
+, makeDesktopItem
+, copyDesktopItems
+, rustPlatform
+, pkg-config
+, clang
+, libclang
+, glib
+, gtk4
+, pipewire
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "helvum";
+  version = "0.2.1";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.freedesktop.org";
+    owner = "ryuukyu";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-ZnpdGXK8N8c/s4qC2NXcn0Pdqrqr47iOWvVwXD9pn1A=";
+  };
+
+  cargoSha256 = "sha256-2v2L20rUWftXdhhuE3wiRrDIuSg6VFxfpWYMRaMUyTU=";
+
+  nativeBuildInputs = [ clang copyDesktopItems pkg-config ];
+  buildInputs = [ glib gtk4 pipewire ];
+
+  LIBCLANG_PATH = "${libclang.lib}/lib";
+
+  desktopItems = makeDesktopItem {
+    name = "Helvum";
+    exec = pname;
+    desktopName = "Helvum";
+    genericName = "Helvum";
+    categories = "AudioVideo;";
+  };
+
+  meta = with lib; {
+    description = "A GTK patchbay for pipewire";
+    homepage = "https://gitlab.freedesktop.org/ryuukyu/helvum";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ fufexan ];
+  };
+}
diff --git a/pkgs/applications/audio/hivelytracker/default.nix b/pkgs/applications/audio/hivelytracker/default.nix
new file mode 100644
index 00000000000..4cf20e3c898
--- /dev/null
+++ b/pkgs/applications/audio/hivelytracker/default.nix
@@ -0,0 +1,89 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, pkg-config
+, makeWrapper
+, SDL
+, SDL_image
+, SDL_ttf
+, gtk2
+, glib
+}:
+
+stdenv.mkDerivation rec {
+  pname = "hivelytracker";
+  version = "unstable-2020-08-19";
+
+  src = fetchFromGitHub {
+    owner = "pete-gordon";
+    repo = "hivelytracker";
+    rev = "c8e3c7a5ee9f4a07cb4a941caecf7e4c4f4d40e0";
+    sha256 = "1nqianlf1msir6wqwapi7ys1vbmf6aik58wa54b6cn5v6kwxh75a";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    makeWrapper
+  ];
+
+  buildInputs = [
+    SDL
+    SDL_image
+    SDL_ttf
+    gtk2
+    glib
+  ];
+
+  makeFlags = [
+    "-C sdl"
+    "-f Makefile.linux"
+    "PREFIX=$(out)"
+  ];
+
+  # TODO: try to exclude gtk and glib from darwin builds
+  NIX_CFLAGS_COMPILE = [
+    "-I${SDL}/include/SDL"
+    "-I${SDL_image}/include/SDL"
+    "-I${SDL_ttf}/include/SDL"
+    "-I${gtk2.dev}/include/gtk-2.0"
+    "-I${glib.dev}/include/glib-2.0"
+  ];
+
+  # Also build the hvl2wav tool
+  postBuild = ''
+    make -C hvl2wav
+  '';
+
+  postInstall = ''
+    # https://github.com/pete-gordon/hivelytracker/issues/43
+    # Ideally we should patch the sources, but the program can't open
+    # files passed as arguments anyway, so this works well enough until the
+    # issue is fixed.
+    wrapProgram $out/bin/hivelytracker \
+      --run "cd $out/share/hivelytracker"
+
+    # Also install the hvl2wav tool
+    install -Dm755 hvl2wav/hvl2wav $out/bin/hvl2wav
+  '';
+
+  meta = with lib; {
+    homepage = "http://www.hivelytracker.co.uk/";
+    downloadPage = "http://www.hivelytracker.co.uk/downl.php";
+    description = "Chip music tracker based upon the AHX format";
+    longDescription = ''
+      Hively Tracker is a tracker program based upon the AHX format created in
+      the mid '90s by Dexter and Pink of Abyss. The format was relatively
+      popular, and many songs were created and used in scene productions and
+      games. AHX was designed to create a very SID-like sound on the Amiga.
+
+      HivelyTracker can import and export modules and instruments in the AHX
+      format, but it also improves on AHX in several ways and therefore has
+      its own instrument and module formats.
+    '';
+    license = licenses.bsd3;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ fgaz ];
+    broken = stdenv.isDarwin; # TODO: try to use xcbuild
+  };
+}
+
diff --git a/pkgs/applications/audio/hqplayer-desktop/default.nix b/pkgs/applications/audio/hqplayer-desktop/default.nix
new file mode 100644
index 00000000000..a0443aa9a6a
--- /dev/null
+++ b/pkgs/applications/audio/hqplayer-desktop/default.nix
@@ -0,0 +1,91 @@
+{ mkDerivation
+, alsa-lib
+, autoPatchelfHook
+, fetchurl
+, flac
+, gcc11
+, lib
+, libmicrohttpd
+, llvmPackages_10
+, qtcharts
+, qtdeclarative
+, qtquickcontrols2
+, qtwebengine
+, qtwebview
+, rpmextract
+, wavpack
+}:
+
+mkDerivation rec {
+  pname = "hqplayer-desktop";
+  version = "4.12.2-36";
+
+  src = fetchurl {
+    url = "https://www.signalyst.eu/bins/hqplayer/fc34/hqplayer4desktop-${version}.fc34.x86_64.rpm";
+    sha256 = "sha256-ng0Tkx6CSnzTxuunStaBhUYjxUmzx31ZaOY2gBWnH6Q=";
+  };
+
+  unpackPhase = ''
+    ${rpmextract}/bin/rpmextract $src
+  '';
+
+  nativeBuildInputs = [ autoPatchelfHook rpmextract ];
+
+  buildInputs = [
+    alsa-lib
+    flac
+    gcc11.cc.lib
+    libmicrohttpd
+    llvmPackages_10.openmp
+    qtcharts
+    qtdeclarative
+    qtquickcontrols2
+    qtwebengine
+    qtwebview
+    wavpack
+  ];
+
+  dontConfigure = true;
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    # main executable
+    mkdir -p $out/bin
+    cp ./usr/bin/* $out/bin
+
+    # desktop files
+    mkdir -p $out/share/applications
+    cp ./usr/share/applications/* $out/share/applications
+
+    # documentation
+    mkdir -p $out/share/doc/${pname}
+    cp ./usr/share/doc/hqplayer4desktop/* $out/share/doc/${pname}
+
+    # pixmaps
+    mkdir -p $out/share/pixmaps
+    cp ./usr/share/pixmaps/* $out/share/pixmaps
+
+    runHook postInstall
+  '';
+
+  postInstall = ''
+    for desktopFile in $out/share/applications/*; do
+      substituteInPlace "$desktopFile" \
+        --replace /usr/bin/ $out/bin/ \
+        --replace /usr/share/doc/ $out/share/doc/
+    done
+  '';
+
+  postFixup = ''
+    patchelf --replace-needed libomp.so.5 libomp.so $out/bin/.hqplayer4desktop-wrapped
+  '';
+
+  meta = with lib; {
+    homepage = "https://www.signalyst.com/custom.html";
+    description = "High-end upsampling multichannel software HD-audio player";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ lovesegfault ];
+  };
+}
diff --git a/pkgs/applications/audio/hybridreverb2/default.nix b/pkgs/applications/audio/hybridreverb2/default.nix
index 3f1fac79623..c539a316422 100644
--- a/pkgs/applications/audio/hybridreverb2/default.nix
+++ b/pkgs/applications/audio/hybridreverb2/default.nix
@@ -1,10 +1,10 @@
-{ stdenv, fetchFromGitHub, fetchzip, cmake, pkgconfig, lv2, alsaLib, libjack2,
+{ 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 }:
 
 let
   pname = "HybridReverb2";
-  version = "2.1.1";
+  version = "2.1.2";
   owner = "jpcima";
   DBversion = "1.0.0";
 in
@@ -21,12 +21,12 @@ stdenv.mkDerivation rec {
     inherit owner;
     repo = pname;
     rev = "v${version}";
-    sha256 = "15mba9qvlis0qrklr50wp3jdysvmk33m7pvclp0k1is9pirj97cb";
+    sha256 = "16r20plz1w068bgbkrydv01a991ygjybdya3ah7bhp3m5xafjwqb";
     fetchSubmodules = true;
   };
 
-  nativeBuildInputs = [ pkgconfig cmake ];
-  buildInputs = [ lv2 alsaLib libjack2 freetype libX11 gtk3 pcre
+  nativeBuildInputs = [ pkg-config cmake ];
+  buildInputs = [ lv2 alsa-lib libjack2 freetype libX11 gtk3 pcre
     libpthreadstubs libXdmcp libxkbcommon epoxy at-spi2-core dbus curl fftwFloat ];
 
   cmakeFlags = [
@@ -39,7 +39,7 @@ stdenv.mkDerivation rec {
     cp  -r ${impulseDB}/* $out/share/${pname}/
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://www2.ika.ruhr-uni-bochum.de/HybridReverb2";
     description = "Reverb effect using hybrid impulse convolution";
     license = licenses.gpl2Plus;
diff --git a/pkgs/applications/audio/hydrogen/0.nix b/pkgs/applications/audio/hydrogen/0.nix
new file mode 100644
index 00000000000..ad3566571b0
--- /dev/null
+++ b/pkgs/applications/audio/hydrogen/0.nix
@@ -0,0 +1,26 @@
+{ lib, stdenv, fetchurl, 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";
+  };
+
+  nativeBuildInputs = [ pkg-config cmake ];
+  buildInputs = [
+    alsa-lib boost glib lash libjack2 libarchive libsndfile lrdf qt4
+  ];
+
+  meta = with lib; {
+    description = "Advanced drum machine";
+    homepage = "http://www.hydrogen-music.org";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.goibhniu ];
+  };
+}
diff --git a/pkgs/applications/audio/hydrogen/default.nix b/pkgs/applications/audio/hydrogen/default.nix
index b3aff4e4c50..319ee7a5f98 100644
--- a/pkgs/applications/audio/hydrogen/default.nix
+++ b/pkgs/applications/audio/hydrogen/default.nix
@@ -1,26 +1,34 @@
-{ stdenv, fetchurl, pkgconfig, cmake
-, alsaLib, boost, glib, lash, libjack2, libarchive, libsndfile, lrdf, qt4
+{ lib, stdenv, fetchFromGitHub, cmake, pkg-config, wrapQtAppsHook
+, alsa-lib, ladspa-sdk, lash, libarchive, libjack2, liblo, libpulseaudio, libsndfile, lrdf
+, qtbase, qttools, qtxmlpatterns
 }:
 
 stdenv.mkDerivation rec {
-  version = "0.9.7";
   pname = "hydrogen";
+  version = "1.0.2";
 
-  src = fetchurl {
-    url = "https://github.com/hydrogen-music/hydrogen/archive/${version}.tar.gz";
-    sha256 = "1dy2jfkdw0nchars4xi4isrz66fqn53a9qk13bqza7lhmsg3s3qy";
+  src = fetchFromGitHub {
+    owner = "hydrogen-music";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-t3f+T1QTNbuJnWmD+q0yPgQxXPXvl91lZN17pKUVFlo=";
   };
 
-  nativeBuildInputs = [ pkgconfig cmake ];
+  nativeBuildInputs = [ cmake pkg-config wrapQtAppsHook ];
   buildInputs = [
-    alsaLib boost glib lash libjack2 libarchive libsndfile lrdf qt4
+    alsa-lib ladspa-sdk lash libarchive libjack2 liblo libpulseaudio libsndfile lrdf
+    qtbase qttools qtxmlpatterns
   ];
 
-  meta = with stdenv.lib; {
+  cmakeFlags = [
+    "-DWANT_DEBUG=OFF"
+  ];
+
+  meta = with lib; {
     description = "Advanced drum machine";
     homepage = "http://www.hydrogen-music.org";
-    license = licenses.gpl2;
+    license = licenses.gpl2Plus;
     platforms = platforms.linux;
-    maintainers = [ maintainers.goibhniu ];
+    maintainers = with maintainers; [ goibhniu orivej ];
   };
 }
diff --git a/pkgs/applications/audio/hydrogen/unstable.nix b/pkgs/applications/audio/hydrogen/unstable.nix
deleted file mode 100644
index 2f220f8d31a..00000000000
--- a/pkgs/applications/audio/hydrogen/unstable.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-{ stdenv, fetchFromGitHub, cmake, pkgconfig, wrapQtAppsHook
-, alsaLib, ladspa-sdk, lash, libarchive, libjack2, liblo, libpulseaudio, libsndfile, lrdf
-, qtbase, qttools, qtxmlpatterns
-}:
-
-stdenv.mkDerivation rec {
-  pname = "hydrogen";
-  version = "1.0.0-beta2";
-
-  src = fetchFromGitHub {
-    owner = "hydrogen-music";
-    repo = pname;
-    rev = version;
-    sha256 = "1s3jrdyjpm92flw9mkkxchnj0wz8nn1y1kifii8ws252iiqjya4a";
-  };
-
-  nativeBuildInputs = [ cmake pkgconfig wrapQtAppsHook ];
-  buildInputs = [
-    alsaLib ladspa-sdk lash libarchive libjack2 liblo libpulseaudio libsndfile lrdf
-    qtbase qttools qtxmlpatterns
-  ];
-
-  cmakeFlags = [
-    "-DWANT_DEBUG=OFF"
-  ];
-
-  meta = with stdenv.lib; {
-    description = "Advanced drum machine";
-    homepage = "http://www.hydrogen-music.org";
-    license = licenses.gpl2;
-    platforms = platforms.linux;
-    maintainers = with maintainers; [ goibhniu orivej ];
-  };
-}
diff --git a/pkgs/applications/audio/i-score/default.nix b/pkgs/applications/audio/i-score/default.nix
deleted file mode 100644
index daedb9b9820..00000000000
--- a/pkgs/applications/audio/i-score/default.nix
+++ /dev/null
@@ -1,85 +0,0 @@
-{
-  alsaLib,
-  boost,
-  cln,
-  cmake,
-  fetchFromGitHub,
-  gcc,
-  ginac,
-  jamomacore,
-  kdnssd,
-  libsndfile,
-  ninja,
-  portaudio,
-  portmidi,
-  qtbase,
-  qtdeclarative,
-  qtimageformats,
-  qtmultimedia,
-  qtquickcontrols2,
-  qtserialport,
-  qtsvg,
-  qttools,
-  qtwebsockets,
-  rtaudio,
-  stdenv
-}:
-
-stdenv.mkDerivation rec {
-  version = "1.0.0-b31";
-  pname = "i-score";
-
-  src = fetchFromGitHub {
-    owner = "OSSIA";
-    repo = "i-score";
-    rev = "v${version}";
-    sha256 = "0g7s6n11w3wflrv5i2047dxx56lryms7xj0mznnlk5bii7g8dxzb";
-    fetchSubmodules = true;
-  };
-
-  buildInputs = [
-    alsaLib
-    boost
-    cln
-    cmake
-    ginac
-    gcc
-    jamomacore
-    kdnssd
-    libsndfile
-    ninja
-    portaudio
-    portmidi
-    qtbase
-    qtdeclarative
-    qtimageformats
-    qtmultimedia
-    qtquickcontrols2
-    qtserialport
-    qtsvg
-    qttools
-    qtwebsockets
-    rtaudio
-  ];
-
-  cmakeFlags = [
-    "-GNinja"
-    "-DISCORE_CONFIGURATION=static-release"
-    "-DISCORE_ENABLE_LTO=OFF"
-    "-DISCORE_BUILD_FOR_PACKAGE_MANAGER=True"
-  ];
-
-  preConfigure = ''
-    export CMAKE_PREFIX_PATH="''${CMAKE_PREFIX_PATH-}:$(echo "${jamomacore}/jamoma/share/cmake/Jamoma")"
-  '';
-
-  postInstall = ''rm $out/bin/i-score.sh'';
-
-  meta = {
-    description = "An interactive sequencer for the intermedia arts";
-    homepage = "http://i-score.org/";
-    license = stdenv.lib.licenses.cecill20;
-    maintainers = [ stdenv.lib.maintainers.magnetophon ];
-    platforms = stdenv.lib.platforms.linux;
-  };
-}
diff --git a/pkgs/applications/audio/iannix/default.nix b/pkgs/applications/audio/iannix/default.nix
index fa779a7f0f4..f37150994fc 100644
--- a/pkgs/applications/audio/iannix/default.nix
+++ b/pkgs/applications/audio/iannix/default.nix
@@ -1,18 +1,19 @@
-{ mkDerivation, stdenv, fetchFromGitHub, alsaLib, pkgconfig, qtbase, qtscript, qmake
+{ mkDerivation, lib, fetchFromGitHub, alsa-lib, pkg-config, qtbase, qtscript, qmake
 }:
 
-mkDerivation {
+mkDerivation rec {
   pname = "iannix";
-  version = "2016-01-31";
+  version = "unstable-2020-12-09";
+
   src = fetchFromGitHub {
     owner = "iannix";
     repo = "IanniX";
-    rev = "f84becdcbe154b20a53aa2622068cb8f6fda0755";
-    sha256 = "184ydb9f1303v332k5k3f1ki7cb6nkxhh6ij0yn72v7dp7figrgj";
+    rev = "287b51d9b90b3e16ae206c0c4292599619f7b159";
+    sha256 = "AhoP+Ok78Vk8Aee/RP572hJeM8O7v2ZTvFalOZZqRy8=";
   };
 
-  nativeBuildInputs = [ pkgconfig qmake ];
-  buildInputs = [ alsaLib qtbase qtscript ];
+  nativeBuildInputs = [ pkg-config qmake ];
+  buildInputs = [ alsa-lib qtbase qtscript ];
 
   qmakeFlags = [ "PREFIX=/" ];
 
@@ -20,11 +21,11 @@ mkDerivation {
 
   enableParallelBuilding = true;
 
-  meta = {
-    description = "Graphical open-source sequencer,";
+  meta = with lib; {
+    description = "Graphical open-source sequencer";
     homepage = "https://www.iannix.org/";
-    license = stdenv.lib.licenses.lgpl3;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.nico202 ];
+    license = licenses.lgpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ freezeboy ];
   };
 }
diff --git a/pkgs/applications/audio/id3v2/default.nix b/pkgs/applications/audio/id3v2/default.nix
index 75d999ede1d..f6c88bc456e 100644
--- a/pkgs/applications/audio/id3v2/default.nix
+++ b/pkgs/applications/audio/id3v2/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, id3lib, groff, zlib}:
+{lib, stdenv, fetchurl, id3lib, groff, zlib}:
 
 stdenv.mkDerivation rec {
   pname = "id3v2";
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
     mkdir -p $out/{bin,share/man/man1}
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A command line editor for id3v2 tags";
     homepage = "http://id3v2.sourceforge.net/";
     license = licenses.gpl2Plus;
diff --git a/pkgs/applications/audio/industrializer/default.nix b/pkgs/applications/audio/industrializer/default.nix
index 593458506d8..91f7175e391 100644
--- a/pkgs/applications/audio/industrializer/default.nix
+++ b/pkgs/applications/audio/industrializer/default.nix
@@ -1,6 +1,6 @@
-{ stdenv
+{ lib, stdenv
 , fetchurl
-, alsaLib
+, alsa-lib
 , audiofile
 , autoconf
 , automake
@@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ pkg-config ];
 
   buildInputs = [
-    alsaLib
+    alsa-lib
     audiofile
     autoconf
     automake
@@ -43,8 +43,8 @@ stdenv.mkDerivation rec {
       After a sound is rendered, it can be played and then saved to a .WAV file.
     '';
     homepage = "https://sourceforge.net/projects/industrializer/";
-    license = stdenv.lib.licenses.gpl2Plus;
-    maintainers = [ stdenv.lib.maintainers.magnetophon ];
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.gpl2Plus;
+    maintainers = [ lib.maintainers.magnetophon ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/infamousPlugins/default.nix b/pkgs/applications/audio/infamousPlugins/default.nix
index 9ba835eb7ea..dd96f720e93 100644
--- a/pkgs/applications/audio/infamousPlugins/default.nix
+++ b/pkgs/applications/audio/infamousPlugins/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, fetchpatch, pkgconfig, cairomm, cmake, lv2, libpthreadstubs, libXdmcp, libXft, ntk, pcre, fftwFloat, zita-resampler }:
+{ lib, stdenv, fetchFromGitHub, fetchpatch, pkg-config, cairomm, cmake, lv2, libpthreadstubs, libXdmcp, libXft, ntk, pcre, fftwFloat, zita-resampler }:
 
 stdenv.mkDerivation rec {
   pname = "infamousPlugins";
@@ -17,10 +17,10 @@ stdenv.mkDerivation rec {
       sha256 = "08xwh6px13y1gykaw103nhvjms7vgbgkcm0avh9f5d2d7aadq0l2";
     })
   ];
-  nativeBuildInputs = [ pkgconfig cmake ];
+  nativeBuildInputs = [ pkg-config cmake ];
   buildInputs = [ cairomm lv2 libpthreadstubs libXdmcp libXft ntk pcre fftwFloat zita-resampler ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://ssj71.github.io/infamousPlugins";
     description = "A collection of open-source LV2 plugins";
     longDescription = ''
diff --git a/pkgs/applications/audio/ingen/default.nix b/pkgs/applications/audio/ingen/default.nix
index c5d4b3f87f4..a0defad0da0 100644
--- a/pkgs/applications/audio/ingen/default.nix
+++ b/pkgs/applications/audio/ingen/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchgit, boost, ganv, glibmm, gtkmm2, libjack2, lilv
-, lv2, makeWrapper, pkgconfig, python, raul, rdflib, serd, sord, sratom
+{ lib, stdenv, fetchgit, boost, ganv, glibmm, gtkmm2, libjack2, lilv
+, lv2, makeWrapper, pkg-config, python3, raul, serd, sord, sratom
 , wafHook
 , suil
 }:
@@ -16,27 +16,24 @@ stdenv.mkDerivation  rec {
     deepClone = true;
   };
 
-  nativeBuildInputs = [ pkgconfig wafHook ];
+  nativeBuildInputs = [ pkg-config wafHook python3 python3.pkgs.wrapPython ];
   buildInputs = [
-    boost ganv glibmm gtkmm2 libjack2 lilv lv2 makeWrapper
-    python raul serd sord sratom suil
+    boost ganv glibmm gtkmm2 libjack2 lilv lv2
+    python3 raul serd sord sratom suil
   ];
 
-  preConfigure = ''
-    sed -e "s@{PYTHONDIR}/'@out/'@" -i wscript
-  '';
+  strictDeps = true;
 
-  propagatedBuildInputs = [ rdflib ];
+  pythonPath = [
+    python3
+    python3.pkgs.rdflib
+  ];
 
   postInstall = ''
-    for program in ingenams ingenish
-    do
-      wrapProgram $out/bin/$program \
-        --prefix PYTHONPATH : $out/${python.sitePackages}:$PYTHONPATH
-    done
+    wrapPythonProgramsIn "$out/bin" "$out $pythonPath"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A modular audio processing system using JACK and LV2 or LADSPA plugins";
     homepage = "http://drobilla.net/software/ingen";
     license = licenses.agpl3Plus;
diff --git a/pkgs/applications/audio/ir.lv2/default.nix b/pkgs/applications/audio/ir.lv2/default.nix
index aa5eeae0a46..6c2b9c5be9c 100644
--- a/pkgs/applications/audio/ir.lv2/default.nix
+++ b/pkgs/applications/audio/ir.lv2/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, fftw, gtk2, lv2, libsamplerate, libsndfile, pkgconfig, zita-convolver }:
+{ lib, stdenv, fetchFromGitHub, fftw, gtk2, lv2, libsamplerate, libsndfile, pkg-config, zita-convolver }:
 
 stdenv.mkDerivation rec {
   pname = "ir.lv2";
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ fftw gtk2 lv2 libsamplerate libsndfile zita-convolver ];
 
-  nativeBuildInputs = [  pkgconfig ];
+  nativeBuildInputs = [  pkg-config ];
 
   postPatch = ''
      # Fix build with lv2 1.18: https://github.com/tomszilagyi/ir.lv2/pull/20
@@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
     install -Dm755 convert4chan "$out/bin/convert4chan"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://factorial.hu/plugins/lv2/ir";
     description = "Zero-latency, realtime, high performance signal convolver especially for creating reverb effects";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/jaaa/default.nix b/pkgs/applications/audio/jaaa/default.nix
index 80f15935af2..48ffd5df515 100644
--- a/pkgs/applications/audio/jaaa/default.nix
+++ b/pkgs/applications/audio/jaaa/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, alsaLib, libclthreads, libclxclient, libX11, libXft, libXrender, fftwFloat, libjack2, zita-alsa-pcmi }:
+{ lib, stdenv, fetchurl, alsa-lib, libclthreads, libclxclient, libX11, libXft, libXrender, fftwFloat, libjack2, zita-alsa-pcmi }:
 
 stdenv.mkDerivation rec {
   pname = "jaaa";
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
   };
 
   buildInputs = [
-    alsaLib libclthreads libclxclient libX11 libXft libXrender fftwFloat libjack2 zita-alsa-pcmi
+    alsa-lib libclthreads libclxclient libX11 libXft libXrender fftwFloat libjack2 zita-alsa-pcmi
   ];
 
   makeFlags = [
@@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
     cd ./source/
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://kokkinizita.linuxaudio.org/linuxaudio/index.html";
     description = "JACK and ALSA Audio Analyser";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/jack-capture/default.nix b/pkgs/applications/audio/jack-capture/default.nix
index e443a0a5269..44e6dd1cd8a 100644
--- a/pkgs/applications/audio/jack-capture/default.nix
+++ b/pkgs/applications/audio/jack-capture/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, libjack2, libsndfile, pkgconfig }:
+{ lib, stdenv, fetchurl, libjack2, libsndfile, pkg-config }:
 
 stdenv.mkDerivation rec {
   pname = "jack_capture";
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
     sha256 = "1pji0zdwm3kxjrkbzj7fnxhr8ncrc8pyqnwyrh47fhypgqjv1br1";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ libjack2 libsndfile ];
 
   buildPhase = "PREFIX=$out make jack_capture";
@@ -21,11 +21,11 @@ stdenv.mkDerivation rec {
 
   hardeningDisable = [ "format" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A program for recording soundfiles with jack";
     homepage = "http://archive.notam02.no/arkiv/src";
     license = licenses.gpl2;
     maintainers = [ maintainers.goibhniu ];
-    platforms = stdenv.lib.platforms.linux;
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/jack-oscrolloscope/default.nix b/pkgs/applications/audio/jack-oscrolloscope/default.nix
index 08263f2abdd..9905d072361 100644
--- a/pkgs/applications/audio/jack-oscrolloscope/default.nix
+++ b/pkgs/applications/audio/jack-oscrolloscope/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, SDL, libjack2, libGLU, libGL, pkgconfig }:
+{ lib, stdenv, fetchurl, SDL, libjack2, libGLU, libGL, pkg-config }:
 
 stdenv.mkDerivation rec {
   pname = "jack_oscrolloscope";
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
     sha256 = "1pl55in0sj7h5r06n1v91im7d18pplvhbjhjm1fdl39zwnyxiash";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ SDL libjack2 libGLU libGL ];
 
   installPhase = ''
@@ -17,11 +17,11 @@ stdenv.mkDerivation rec {
     mv jack_oscrolloscope $out/bin/
   '';
 
-  meta = with stdenv.lib; { 
+  meta = with lib; {
     description = "A simple waveform viewer for JACK";
     homepage = "http://das.nasophon.de/jack_oscrolloscope";
     license = licenses.gpl2;
     maintainers = [ maintainers.goibhniu ];
-    platforms = stdenv.lib.platforms.linux;
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/jack-rack/default.nix b/pkgs/applications/audio/jack-rack/default.nix
index d13dbcc1688..25ee53d3f43 100644
--- a/pkgs/applications/audio/jack-rack/default.nix
+++ b/pkgs/applications/audio/jack-rack/default.nix
@@ -1,12 +1,13 @@
-{ stdenv, fetchurl, pkgconfig, libjack2, ladspaH, gtk2, alsaLib, libxml2, lrdf }:
+{ lib, stdenv, fetchurl, pkg-config, libjack2, ladspaH, gtk2, alsa-lib, libxml2, lrdf }:
 stdenv.mkDerivation rec {
-  name = "jack-rack-1.4.7";
+  pname = "jack-rack";
+  version = "1.4.7";
   src = fetchurl {
-    url = "mirror://sourceforge/jack-rack/${name}.tar.bz2";
+    url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.bz2";
     sha256 = "1lmibx9gicagcpcisacj6qhq6i08lkl5x8szysjqvbgpxl9qg045";
   };
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ libjack2 ladspaH gtk2 alsaLib libxml2 lrdf ];
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ libjack2 ladspaH gtk2 alsa-lib libxml2 lrdf ];
   NIX_LDFLAGS = "-ldl -lm -lpthread";
 
   meta = {
@@ -18,8 +19,8 @@ stdenv.mkDerivation rec {
       computer into an effects box.
     '';
     homepage = "http://jack-rack.sourceforge.net/";
-    license = stdenv.lib.licenses.gpl2Plus;
-    maintainers = [ stdenv.lib.maintainers.astsmtl ];
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.gpl2Plus;
+    maintainers = [ lib.maintainers.astsmtl ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/jackmeter/default.nix b/pkgs/applications/audio/jackmeter/default.nix
index 2a75b384af5..95fc88a8696 100644
--- a/pkgs/applications/audio/jackmeter/default.nix
+++ b/pkgs/applications/audio/jackmeter/default.nix
@@ -1,21 +1,22 @@
-{ stdenv, fetchurl, libjack2, pkgconfig }:
+{ lib, stdenv, fetchurl, libjack2, pkg-config }:
 
 stdenv.mkDerivation rec {
-  name = "jackmeter-0.4";
+  pname = "jackmeter";
+  version = "0.4";
 
   src = fetchurl {
-    url = "https://www.aelius.com/njh/jackmeter/${name}.tar.gz";
+    url = "https://www.aelius.com/njh/${pname}/${pname}-${version}.tar.gz";
     sha256 = "1cnvgx3jv0yvxlqy0l9k285zgvazmh5k8m4l7lxckjfm5bn6hm1r";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ libjack2 ];
 
-  meta = { 
+  meta = {
     description = "Console jack loudness meter";
     homepage = "https://www.aelius.com/njh/jackmeter/";
-    license = stdenv.lib.licenses.gpl2;
-    maintainers = [ stdenv.lib.maintainers.marcweber ];
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.gpl2;
+    maintainers = [ lib.maintainers.marcweber ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/jackmix/default.nix b/pkgs/applications/audio/jackmix/default.nix
index ad01a3ff76e..e9d2abee91c 100644
--- a/pkgs/applications/audio/jackmix/default.nix
+++ b/pkgs/applications/audio/jackmix/default.nix
@@ -1,30 +1,35 @@
-{ stdenv, fetchurl, pkgconfig, sconsPackages, qt4, lash, libjack2, jack ? libjack2 }:
+{ mkDerivation, lib, fetchFromGitHub, pkg-config, sconsPackages, qtbase, lash, libjack2, jack ? libjack2, alsa-lib }:
 
-stdenv.mkDerivation {
-  name = "jackmix-0.5.2";
-  src = fetchurl {
-    url = "https://github.com/kampfschlaefer/jackmix/archive/v0.5.2.tar.gz";
-    sha256 = "18f5v7g66mgarhs476frvayhch7fy4nyjf2xivixc061ipn0m82j";
+mkDerivation rec {
+  pname = "jackmix";
+  version = "0.6.0";
+
+  src = fetchFromGitHub {
+    owner = "kampfschlaefer";
+    repo = "jackmix";
+    rev = version;
+    sha256 = "0p59411vk38lccn24r7nih10jpgg9i46yc26zpc3x13amxwwpd4h";
   };
 
   patches = [ ./no_error.patch ];
 
-  nativeBuildInputs = [ sconsPackages.scons_3_1_2 pkgconfig ];
+  nativeBuildInputs = [ sconsPackages.scons_3_1_2 pkg-config ];
   buildInputs = [
-    qt4
+    qtbase
     lash
     jack
+    alsa-lib
   ];
 
   installPhase = ''
     install -D jackmix/jackmix $out/bin/jackmix
   '';
 
-  meta = {
+  meta = with lib; {
     description = "Matrix-Mixer for the Jack-Audio-connection-Kit";
-    homepage = "http://www.arnoldarts.de/jackmix/";
-    license = stdenv.lib.licenses.gpl2;
-    maintainers = [ stdenv.lib.maintainers.kampfschlaefer ];
-    platforms = stdenv.lib.platforms.linux;
+    homepage = "https://github.com/kampfschlaefer/jackmix";
+    license = licenses.gpl2Only;
+    maintainers = with maintainers; [ kampfschlaefer ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/jackmix/no_error.patch b/pkgs/applications/audio/jackmix/no_error.patch
index d1a714ded9c..593800134e1 100644
--- a/pkgs/applications/audio/jackmix/no_error.patch
+++ b/pkgs/applications/audio/jackmix/no_error.patch
@@ -1,13 +1,13 @@
 diff --git a/SConstruct b/SConstruct
-index 4290fa5..0a7a679 100644
+index 8bf6517..a432aa9 100644
 --- a/SConstruct
 +++ b/SConstruct
 @@ -16,7 +16,7 @@ env = Environment(
- env.Replace( LIBS="" )
- env.Replace( LIBPATH="" )
-
--env.MergeFlags( ['-Wall', '-Werror', '-g', '-fpic'] )
-+env.MergeFlags( ['-g', '-fpic'] )
-
- tests = { }
- tests.update( env['PKGCONFIG_TESTS'] )
+ env.Replace(LIBS="")
+ env.Replace(LIBPATH="")
+ 
+-env.MergeFlags(['-Wall', '-Werror', '-g', '-fpic', '-std=c++11'])
++env.MergeFlags(['-g', '-fpic', '-std=c++11'])
+ 
+ tests = {}
+ tests.update(env['PKGCONFIG_TESTS'])
diff --git a/pkgs/applications/audio/jalv/default.nix b/pkgs/applications/audio/jalv/default.nix
index 39f1467138d..b640b55c547 100644
--- a/pkgs/applications/audio/jalv/default.nix
+++ b/pkgs/applications/audio/jalv/default.nix
@@ -1,21 +1,21 @@
-{ stdenv, fetchurl, gtk2, libjack2, lilv, lv2, pkgconfig, python
+{ lib, stdenv, fetchurl, gtk2, libjack2, lilv, lv2, pkg-config, python3
 , serd, sord , sratom, suil, wafHook }:
 
 stdenv.mkDerivation  rec {
   pname = "jalv";
-  version = "1.6.4";
+  version = "1.6.6";
 
   src = fetchurl {
     url = "https://download.drobilla.net/${pname}-${version}.tar.bz2";
-    sha256 = "1wwfn7yzbs37s2rdlfjgks63svd5g14yyzd2gdl7h0z12qncwsy2";
+    sha256 = "sha256-ktFBeBtmQ3MgfDQ868XpuM7UYfryb9zLld8AB7BjnhY=";
   };
 
-  nativeBuildInputs = [ pkgconfig wafHook ];
+  nativeBuildInputs = [ pkg-config wafHook ];
   buildInputs = [
-    gtk2 libjack2 lilv lv2 python serd sord sratom suil
+    gtk2 libjack2 lilv lv2 python3 serd sord sratom suil
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A simple but fully featured LV2 host for Jack";
     homepage = "http://drobilla.net/software/jalv";
     license = licenses.isc;
diff --git a/pkgs/applications/audio/jamin/default.nix b/pkgs/applications/audio/jamin/default.nix
index a9b423320a0..325d115b581 100644
--- a/pkgs/applications/audio/jamin/default.nix
+++ b/pkgs/applications/audio/jamin/default.nix
@@ -1,17 +1,18 @@
-{ stdenv, fetchurl, fftwFloat, gtk2, ladspaPlugins, libjack2, liblo, libxml2
-, makeWrapper, pkgconfig, perlPackages
+{ lib, stdenv, fetchurl, fftwFloat, gtk2, ladspaPlugins, libjack2, liblo, libxml2
+, makeWrapper, pkg-config, perlPackages
 }:
 
-stdenv.mkDerivation {
-  name = "jamin-0.95.0";
+stdenv.mkDerivation rec {
+  version = "0.95.0";
+  name = "jamin-${version}";
 
   src = fetchurl {
-    url = "mirror://sourceforge/jamin/jamin-0.95.0.tar.gz";
+    url = "mirror://sourceforge/jamin/jamin-${version}.tar.gz";
     sha256 = "0g5v74cm0q3p3pzl6xmnp4rqayaymfli7c6z8s78h9rgd24fwbvn";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ fftwFloat gtk2 ladspaPlugins libjack2 liblo libxml2 makeWrapper ]
+  nativeBuildInputs = [ pkg-config makeWrapper ];
+  buildInputs = [ fftwFloat gtk2 ladspaPlugins libjack2 liblo libxml2 ]
     ++ (with perlPackages; [ perl XMLParser ]);
 
   NIX_LDFLAGS = "-ldl";
@@ -20,7 +21,7 @@ stdenv.mkDerivation {
     wrapProgram $out/bin/jamin --set LADSPA_PATH ${ladspaPlugins}/lib/ladspa
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://jamin.sourceforge.net";
     description = "JACK Audio Mastering interface";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/jamulus/default.nix b/pkgs/applications/audio/jamulus/default.nix
index b8763f07b45..185df48ff6f 100644
--- a/pkgs/applications/audio/jamulus/default.nix
+++ b/pkgs/applications/audio/jamulus/default.nix
@@ -1,14 +1,14 @@
-{ mkDerivation, stdenv, fetchFromGitHub, fetchpatch, pkg-config, qtscript, qmake, libjack2
+{ mkDerivation, lib, fetchFromGitHub, pkg-config, qtscript, qmake, libjack2
 }:
 
 mkDerivation rec {
   pname = "jamulus";
-  version = "3.5.9";
+  version = "3.8.0";
   src = fetchFromGitHub {
-    owner = "corrados";
+    owner = "jamulussoftware";
     repo = "jamulus";
-    rev = "r${stdenv.lib.replaceStrings [ "." ] [ "_" ] version}";
-    sha256 = "0h2m1sahi8cg15k6wa9m2d38va2cs3nvi0q8rpr9vak8g8d3p460";
+    rev = "r${lib.replaceStrings [ "." ] [ "_" ] version}";
+    sha256 = "sha256-Ni6N7XW34OFNuEkqBEgMcYGmIqb+UZ0uhLt/shRkWRs=";
   };
 
   nativeBuildInputs = [ pkg-config qmake ];
@@ -20,8 +20,8 @@ mkDerivation rec {
     description = "Enables musicians to perform real-time jam sessions over the internet";
     longDescription = "You also need to enable JACK and should enable several real-time optimizations. See project website for details";
     homepage = "https://github.com/corrados/jamulus/wiki";
-    license = stdenv.lib.licenses.gpl2; # linked in git repo, at least
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.seb314 ];
+    license = lib.licenses.gpl2Plus;
+    platforms = lib.platforms.linux;
+    maintainers = [ lib.maintainers.seb314 ];
   };
 }
diff --git a/pkgs/applications/audio/japa/default.nix b/pkgs/applications/audio/japa/default.nix
index 426fea21107..016f515ce13 100644
--- a/pkgs/applications/audio/japa/default.nix
+++ b/pkgs/applications/audio/japa/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl,   alsaLib, libjack2, fftwFloat, libclthreads, libclxclient, libX11,  libXft, zita-alsa-pcmi, }:
+{ lib, stdenv, fetchurl,   alsa-lib, libjack2, fftwFloat, libclthreads, libclxclient, libX11,  libXft, zita-alsa-pcmi, }:
 
 stdenv.mkDerivation rec {
   version = "0.9.2";
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
     sha256 = "1zmi4wg23hwsypg3h6y3qb72cbrihqcs19qrbzgs5a67d13q4897";
   };
 
-  buildInputs = [ alsaLib libjack2 fftwFloat libclthreads libclxclient libX11 libXft zita-alsa-pcmi ];
+  buildInputs = [ alsa-lib libjack2 fftwFloat libclthreads libclxclient libX11 libXft zita-alsa-pcmi ];
 
   preConfigure = ''
     cd ./source/
@@ -23,8 +23,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "A 'perceptual' or 'psychoacoustic' audio spectrum analyser for JACK and ALSA";
     homepage = "http://kokkinizita.linuxaudio.org/linuxaudio/index.html";
-    license = stdenv.lib.licenses.gpl2;
-    maintainers = [ stdenv.lib.maintainers.magnetophon ];
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.gpl2;
+    maintainers = [ lib.maintainers.magnetophon ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/jmusicbot/default.nix b/pkgs/applications/audio/jmusicbot/default.nix
new file mode 100644
index 00000000000..299fe547366
--- /dev/null
+++ b/pkgs/applications/audio/jmusicbot/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, lib, fetchurl, makeWrapper, jre }:
+
+stdenv.mkDerivation rec {
+  pname = "JMusicBot";
+  version = "0.3.4";
+
+  src = fetchurl {
+    url = "https://github.com/jagrosh/MusicBot/releases/download/${version}/JMusicBot-${version}.jar";
+    sha256 = "sha256-++/ot9k74pkN9Wl7IEjiMIv/q5zklIEdU6uFjam0tmU=";
+  };
+
+  dontUnpack = true;
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out/lib
+    cp $src $out/lib/JMusicBot
+
+    makeWrapper ${jre}/bin/java $out/bin/JMusicBot \
+      --add-flags "-Xmx1G -Dnogui=true -jar $out/lib/JMusicBot"
+  '';
+
+  meta = with lib; {
+    description = "Discord music bot that's easy to set up and run yourself";
+    homepage = "https://github.com/jagrosh/MusicBot";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+    platforms = platforms.all;
+  };
+}
diff --git a/pkgs/applications/audio/kapitonov-plugins-pack/default.nix b/pkgs/applications/audio/kapitonov-plugins-pack/default.nix
index 53b55332f5d..6e5cc0d5191 100644
--- a/pkgs/applications/audio/kapitonov-plugins-pack/default.nix
+++ b/pkgs/applications/audio/kapitonov-plugins-pack/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchFromGitHub, faust, meson, ninja, pkg-config
-, boost, cairo, fftw, gnome3, ladspa-sdk, libxcb, lv2, xcbutilwm
+{ lib, stdenv, fetchFromGitHub, faust, meson, ninja, pkg-config
+, boost, cairo, fftw, gnome, ladspa-sdk, libxcb, lv2, xcbutilwm
 , zita-convolver, zita-resampler
  }:
 
@@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
     zita-resampler
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Set of LADSPA and LV2 plugins for guitar sound processing";
     homepage = https://github.com/olegkapitonov/Kapitonov-Plugins-Pack;
     license = licenses.gpl3;
diff --git a/pkgs/applications/audio/keyfinder-cli/default.nix b/pkgs/applications/audio/keyfinder-cli/default.nix
index 4bb1d63a1e7..62db3d79690 100644
--- a/pkgs/applications/audio/keyfinder-cli/default.nix
+++ b/pkgs/applications/audio/keyfinder-cli/default.nix
@@ -1,23 +1,23 @@
-{ stdenv, fetchFromGitHub, libav, libkeyfinder }:
+{ lib, stdenv, fetchFromGitHub, ffmpeg, libkeyfinder }:
 
 stdenv.mkDerivation rec {
   pname = "keyfinder-cli";
-  version = "2015-09-13";
+  version = "1.1.1";
 
   src = fetchFromGitHub {
     repo = "keyfinder-cli";
     owner = "EvanPurkhiser";
-    rev = "8579282f15ab3ebad937fed398ec5c88843be03d";
-    sha256 = "0jylykigxmsqvdny265k58vpxa4cqs1hq2f7mph1nl3apfx2shrh";
+    rev = "v${version}";
+    sha256 = "1mlcygbj3gqii3cz8jd6ks1lz612i4jp0343qjg293xm39fg47ns";
   };
 
-  buildInputs = [ libav libkeyfinder ];
+  buildInputs = [ ffmpeg libkeyfinder ];
 
   makeFlags = [ "PREFIX=$(out)" ];
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     inherit (src.meta) homepage;
     description = "Musical key detection for digital audio (command-line tool)";
     longDescription = ''
diff --git a/pkgs/applications/audio/keyfinder/default.nix b/pkgs/applications/audio/keyfinder/default.nix
index 710c1e80792..c3667ee57a5 100644
--- a/pkgs/applications/audio/keyfinder/default.nix
+++ b/pkgs/applications/audio/keyfinder/default.nix
@@ -1,12 +1,12 @@
-{ stdenv, fetchFromGitHub, libav_0_8, libkeyfinder, qtbase, qtxmlpatterns, qmake, taglib }:
+{ lib, mkDerivation, fetchFromGitHub, libav_0_8, libkeyfinder, qtbase, qtxmlpatterns, qmake, taglib }:
 
-stdenv.mkDerivation rec {
+mkDerivation rec {
   pname = "keyfinder";
-  version = "2.2";
+  version = "2.4";
 
   src = fetchFromGitHub {
-    sha256 = "0vjszk1h8vj2qycgbffzy6k7amg75jlvlnzwaqhz9nll2pcvw0zl";
-    rev = version;
+    sha256 = "11yhdwan7bz8nn8vxr54drckyrnlxynhx5s981i475bbccg8g7ls";
+    rev = "530034d6fe86d185f6a68b817f8db5f552f065d7"; # tag is missing
     repo = "is_KeyFinder";
     owner = "ibsh";
   };
@@ -16,14 +16,13 @@ stdenv.mkDerivation rec {
 
   postPatch = ''
     substituteInPlace is_KeyFinder.pro \
-       --replace "keyfinder.0" "keyfinder" \
        --replace "-stdlib=libc++" "" \
        --replace "\$\$[QT_INSTALL_PREFIX]" "$out"
   '';
 
-  enableParallelBuilding = true;
+  dontWrapQtApps = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Musical key detection for digital audio (graphical UI)";
     longDescription = ''
       KeyFinder is an open source key detection tool, for DJs interested in
diff --git a/pkgs/applications/audio/kid3/default.nix b/pkgs/applications/audio/kid3/default.nix
index 589354cf234..7f8015e7143 100644
--- a/pkgs/applications/audio/kid3/default.nix
+++ b/pkgs/applications/audio/kid3/default.nix
@@ -1,27 +1,67 @@
-{ stdenv, fetchurl
-, pkgconfig, cmake, python, ffmpeg_3, phonon, automoc4
-, chromaprint, docbook_xml_dtd_45, docbook_xsl, libxslt
-, id3lib, taglib, mp4v2, flac, libogg, libvorbis
-, zlib, readline , qtbase, qttools, qtmultimedia, qtquickcontrols
+{ lib
+, stdenv
+, fetchurl
+, automoc4
+, chromaprint
+, cmake
+, docbook_xml_dtd_45
+, docbook_xsl
+, ffmpeg
+, flac
+, id3lib
+, libogg
+, libvorbis
+, libxslt
+, mp4v2
+, phonon
+, pkg-config
+, python3
+, qtbase
+, qtmultimedia
+, qtquickcontrols
+, qttools
+, readline
+, taglib
 , wrapQtAppsHook
+, zlib
 }:
 
 stdenv.mkDerivation rec {
-
   pname = "kid3";
-  version = "3.8.3";
+  version = "3.8.6";
 
   src = fetchurl {
-    url = "mirror://sourceforge/project/kid3/kid3/${version}/${pname}-${version}.tar.gz";
-    sha256 = "0i0c4bmsm36jj1v535kil47ig0ig70ykrzcw2f56spr25xns06ka";
+    url = "https://download.kde.org/stable/${pname}/${version}/${pname}-${version}.tar.xz";
+    hash = "sha256-R4gAWlCw8RezhYbw1XDo+wdp797IbLoM3wqHwr+ul6k=";
   };
 
-  nativeBuildInputs = [ wrapQtAppsHook ];
-  buildInputs = with stdenv.lib;
-  [ pkgconfig cmake python ffmpeg_3 phonon automoc4
-    chromaprint docbook_xml_dtd_45 docbook_xsl libxslt
-    id3lib taglib mp4v2 flac libogg libvorbis zlib readline
-    qtbase qttools qtmultimedia qtquickcontrols ];
+  nativeBuildInputs = [
+    cmake
+    docbook_xml_dtd_45
+    docbook_xsl
+    pkg-config
+    python3
+    wrapQtAppsHook
+  ];
+  buildInputs = [
+    automoc4
+    chromaprint
+    ffmpeg
+    flac
+    id3lib
+    libogg
+    libvorbis
+    libxslt
+    mp4v2
+    phonon
+    qtbase
+    qtmultimedia
+    qtquickcontrols
+    qttools
+    readline
+    taglib
+    zlib
+  ];
 
   cmakeFlags = [ "-DWITH_APPS=Qt;CLI" ];
   NIX_LDFLAGS = "-lm -lpthread";
@@ -30,41 +70,38 @@ stdenv.mkDerivation rec {
     export DOCBOOKDIR="${docbook_xsl}/xml/xsl/docbook/"
   '';
 
-  enableParallelBuilding = true;
-
-  meta = with stdenv.lib; {
+  meta = with lib; {
+    homepage = "https://kid3.kde.org/";
     description = "A simple and powerful audio tag editor";
     longDescription = ''
-      If you want to easily tag multiple MP3, Ogg/Vorbis, FLAC, MPC,
-      MP4/AAC, MP2, Opus, Speex, TrueAudio, WavPack, WMA, WAV and AIFF
-      files (e.g. full albums) without typing the same information
-      again and again and have control over both ID3v1 and ID3v2 tags,
-      then Kid3 is the program you are looking for.
+      If you want to easily tag multiple MP3, Ogg/Vorbis, FLAC, MPC, MP4/AAC,
+      MP2, Opus, Speex, TrueAudio, WavPack, WMA, WAV and AIFF files (e.g. full
+      albums) without typing the same information again and again and have
+      control over both ID3v1 and ID3v2 tags, then Kid3 is the program you are
+      looking for.
 
       With Kid3 you can:
       - Edit ID3v1.1 tags;
       - Edit all ID3v2.3 and ID3v2.4 frames;
       - Convert between ID3v1.1, ID3v2.3 and ID3v2.4 tags
-      - Edit tags in MP3, Ogg/Vorbis, FLAC, MPC, MP4/AAC, MP2, Opus,
-        Speex, TrueAudio, WavPack, WMA, WAV, AIFF files and tracker
-        modules (MOD, S3M, IT, XM);
-      -  Edit tags of multiple files, e.g. the artist, album, year and
-         genre of all files of an album typically have the same values
-         and can be set together;
+      - Edit tags in MP3, Ogg/Vorbis, FLAC, MPC, MP4/AAC, MP2, Opus, Speex,
+        TrueAudio, WavPack, WMA, WAV, AIFF files and tracker modules (MOD, S3M,
+        IT, XM);
+      - Edit tags of multiple files, e.g. the artist, album, year and genre of
+        all files of an album typically have the same values and can be set
+        together;
       - Generate tags from filenames;
       - Generate tags from the contents of tag fields;
       - Generate filenames from tags;
       - Rename and create directories from tags;
       - Generate playlist files;
       - Automatically convert upper and lower case and replace strings;
-      - Import from gnudb.org, TrackType.org, MusicBrainz, Discogs,
-        Amazon and other sources of album data;
-      - Export tags as CSV, HTML, playlists, Kover XML and in other
-        formats;
-      - Edit synchronized lyrics and event timing codes, import and
-        export LRC files
+      - Import from gnudb.org, TrackType.org, MusicBrainz, Discogs, Amazon and
+        other sources of album data;
+      - Export tags as CSV, HTML, playlists, Kover XML and in other formats;
+      - Edit synchronized lyrics and event timing codes, import and export
+        LRC files.
     '';
-    homepage = "http://kid3.sourceforge.net/";
     license = licenses.lgpl2Plus;
     maintainers = [ maintainers.AndersonTorres ];
     platforms = platforms.linux;
diff --git a/pkgs/applications/audio/klick/default.nix b/pkgs/applications/audio/klick/default.nix
index 9ff063c1c80..281a7148dfe 100644
--- a/pkgs/applications/audio/klick/default.nix
+++ b/pkgs/applications/audio/klick/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, sconsPackages, pkgconfig
+{ lib, stdenv, fetchurl, sconsPackages, pkg-config
 , libsamplerate, libsndfile, liblo, libjack2, boost }:
 
 stdenv.mkDerivation rec {
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
     sha256 = "1289533c0849b1b66463bf27f7ce5f71736b655cfb7672ef884c7e6eb957ac42";
   };
 
-  nativeBuildInputs = [ sconsPackages.scons_3_0_1 pkgconfig ];
+  nativeBuildInputs = [ sconsPackages.scons_3_0_1 pkg-config ];
   buildInputs = [ libsamplerate libsndfile liblo libjack2 boost ];
   prefixKey = "PREFIX=";
   NIX_CFLAGS_COMPILE = "-fpermissive";
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "http://das.nasophon.de/klick/";
     description = "Advanced command-line metronome for JACK";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.gpl2Plus;
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/klystrack/default.nix b/pkgs/applications/audio/klystrack/default.nix
index 5e8dc060c28..5d26397efdb 100644
--- a/pkgs/applications/audio/klystrack/default.nix
+++ b/pkgs/applications/audio/klystrack/default.nix
@@ -1,6 +1,6 @@
-{ stdenv, fetchFromGitHub, fetchpatch
+{ lib, stdenv, fetchFromGitHub, fetchpatch
 , SDL2, SDL2_image
-, pkgconfig
+, pkg-config
 }:
 
 stdenv.mkDerivation rec {
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
   buildInputs = [
     SDL2 SDL2_image
   ];
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
 
   patches = [
     (fetchpatch {
@@ -42,7 +42,7 @@ stdenv.mkDerivation rec {
       --replace "klystrack %f" "$out/bin/klystrack %f"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A chiptune tracker";
     homepage = "https://kometbomb.github.io/klystrack";
     license = licenses.mit;
diff --git a/pkgs/applications/audio/kmetronome/default.nix b/pkgs/applications/audio/kmetronome/default.nix
index 30a4d5f3684..70b06e72fba 100644
--- a/pkgs/applications/audio/kmetronome/default.nix
+++ b/pkgs/applications/audio/kmetronome/default.nix
@@ -1,19 +1,21 @@
-{ stdenv, fetchurl, cmake, pkgconfig, qttools, alsaLib, drumstick, qtbase, qtsvg }:
+{ lib, stdenv, fetchurl, cmake, pkg-config, qttools, alsa-lib, drumstick, qtbase, qtsvg }:
 
 stdenv.mkDerivation rec {
   pname = "kmetronome";
-  version = "1.0.1";
+  version = "1.2.0";
 
   src = fetchurl {
     url = "mirror://sourceforge/${pname}/${version}/${pname}-${version}.tar.bz2";
-    sha256 = "0bzm6vzlm32kjrgn1nvp096b2d41ybys2sk145nhy992wg56v32s";
+    sha256 = "1ln0nm24w6bj7wc8cay08j5azzznigd39cbbw3h4skg6fxd8p0s7";
   };
 
-  nativeBuildInputs = [ cmake pkgconfig qttools ];
+  nativeBuildInputs = [ cmake pkg-config qttools ];
 
-  buildInputs = [ alsaLib drumstick qtbase qtsvg ];
+  buildInputs = [ alsa-lib drumstick qtbase qtsvg ];
 
-  meta = with stdenv.lib; {
+  dontWrapQtApps = true;
+
+  meta = with lib; {
     homepage = "https://kmetronome.sourceforge.io/";
     description = "ALSA MIDI metronome with Qt interface";
     license = licenses.gpl2Plus;
diff --git a/pkgs/applications/audio/ladspa-plugins/default.nix b/pkgs/applications/audio/ladspa-plugins/default.nix
index a0fc8631fb3..fe8e9f323a5 100644
--- a/pkgs/applications/audio/ladspa-plugins/default.nix
+++ b/pkgs/applications/audio/ladspa-plugins/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, autoreconfHook, automake, fftw, ladspaH, libxml2, pkgconfig
+{ lib, stdenv, fetchurl, autoreconfHook, automake, fftw, ladspaH, libxml2, pkg-config
 , perlPackages }:
 
 stdenv.mkDerivation rec {
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
     sha256 = "1rqwh8xrw6hnp69dg4gy336bfbfpmbx4fjrk0nb8ypjcxkz91c6i";
   };
 
-  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
   buildInputs = [ fftw ladspaH libxml2 perlPackages.perl  perlPackages.XMLParser ];
 
   patchPhase = ''
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
     cp ${automake}/share/automake-*/mkinstalldirs .
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://plugin.org.uk/";
     description = "LADSPA format audio plugins";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/ladspa-sdk/default.nix b/pkgs/applications/audio/ladspa-sdk/default.nix
index 76acd1daba7..47a36ed1b5d 100644
--- a/pkgs/applications/audio/ladspa-sdk/default.nix
+++ b/pkgs/applications/audio/ladspa-sdk/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 stdenv.mkDerivation rec {
   pname = "ladspa-sdk";
   version = "1.15";
@@ -21,8 +21,8 @@ stdenv.mkDerivation rec {
       three example programs (applyplugin, analyseplugin and listplugins).
     '';
     homepage = "http://www.ladspa.org/ladspa_sdk/overview.html";
-    license = stdenv.lib.licenses.lgpl2;
-    maintainers = [ stdenv.lib.maintainers.magnetophon ];
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.lgpl2;
+    maintainers = [ lib.maintainers.magnetophon ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/ladspa-sdk/ladspah.nix b/pkgs/applications/audio/ladspa-sdk/ladspah.nix
index d51aa3b75e1..b497e91927b 100644
--- a/pkgs/applications/audio/ladspa-sdk/ladspah.nix
+++ b/pkgs/applications/audio/ladspa-sdk/ladspah.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 stdenv.mkDerivation rec {
   pname = "ladspa.h";
   version = "1.15";
@@ -19,8 +19,8 @@ stdenv.mkDerivation rec {
       For the full SDK, use the ladspa-sdk package.
     '';
     homepage = "http://www.ladspa.org/ladspa_sdk/overview.html";
-    license = stdenv.lib.licenses.lgpl2;
-    maintainers = [ stdenv.lib.maintainers.magnetophon ];
-    platforms = stdenv.lib.platforms.all;
+    license = lib.licenses.lgpl2;
+    maintainers = [ lib.maintainers.magnetophon ];
+    platforms = lib.platforms.all;
   };
 }
diff --git a/pkgs/applications/audio/lash/default.nix b/pkgs/applications/audio/lash/default.nix
index cb0a3ee05e1..6c8ea6528f9 100644
--- a/pkgs/applications/audio/lash/default.nix
+++ b/pkgs/applications/audio/lash/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchurl, alsaLib, gtk2, libjack2, libuuid, libxml2
-, makeWrapper, pkgconfig, readline }:
+{ lib, stdenv, fetchurl, alsa-lib, gtk2, libjack2, libuuid, libxml2
+, makeWrapper, pkg-config, readline }:
 
 assert libuuid != null;
 
@@ -15,8 +15,8 @@ stdenv.mkDerivation  rec {
   # http://permalink.gmane.org/gmane.linux.redhat.fedora.extras.cvs/822346
   patches = [ ./socket.patch ./gcc-47.patch ];
 
-  buildInputs = [ alsaLib gtk2 libjack2 libxml2 makeWrapper
-    pkgconfig readline ];
+  nativeBuildInputs = [ pkg-config makeWrapper ];
+  buildInputs = [ alsa-lib gtk2 libjack2 libxml2 readline ];
   propagatedBuildInputs = [ libuuid ];
   NIX_LDFLAGS = "-lm -lpthread -luuid";
 
@@ -26,7 +26,7 @@ stdenv.mkDerivation  rec {
     done
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A Linux Audio Session Handler";
     longDescription = ''
       Session management system for GNU/Linux audio applications.
diff --git a/pkgs/applications/audio/lastfmsubmitd/default.nix b/pkgs/applications/audio/lastfmsubmitd/default.nix
index efafc5b05b1..8a786c5c69e 100644
--- a/pkgs/applications/audio/lastfmsubmitd/default.nix
+++ b/pkgs/applications/audio/lastfmsubmitd/default.nix
@@ -1,6 +1,6 @@
-{ lib, fetchurl, pythonPackages }:
+{ lib, fetchurl, python2Packages }:
 
-pythonPackages.buildPythonApplication rec {
+python2Packages.buildPythonApplication rec {
   pname = "lastfmsubmitd";
   version = "1.0.6";
 
diff --git a/pkgs/applications/audio/librespot/cargo-lock.patch b/pkgs/applications/audio/librespot/cargo-lock.patch
index 129ba96987a..0c2af8f80c6 100644
--- a/pkgs/applications/audio/librespot/cargo-lock.patch
+++ b/pkgs/applications/audio/librespot/cargo-lock.patch
@@ -1,137 +1,3817 @@
-diff --git a/Cargo.lock b/Cargo.lock
-index 533b47d..9c9c2f6 100644
---- a/Cargo.lock
-+++ b/Cargo.lock
-@@ -932,7 +932,7 @@ dependencies = [
+--- source/Cargo.lock	1970-01-01 01:00:01.000000000 +0100
++++ ../nix-build-librespot-0.1.6.drv-0/source/Cargo.lock	2021-04-27 19:07:38.535244188 +0200
+@@ -4,2784 +4,2782 @@
+ name = "aes"
+ version = "0.3.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "54eb1d8fe354e5fc611daf4f2ea97dd45a765f4f1e4512306ec183ae2e8f20c9"
+ dependencies = [
+- "aes-soft 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "aesni 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "aes-soft",
++ "aesni",
++ "block-cipher-trait",
+ ]
+ 
+ [[package]]
+ name = "aes-ctr"
+ version = "0.3.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d2e5b0458ea3beae0d1d8c0f3946564f8e10f90646cf78c06b4351052058d1ee"
+ dependencies = [
+- "aes-soft 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "aesni 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "ctr 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "aes-soft",
++ "aesni",
++ "ctr",
++ "stream-cipher",
+ ]
+ 
+ [[package]]
+ name = "aes-soft"
+ version = "0.3.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cfd7e7ae3f9a1fb5c03b389fc6bb9a51400d0c13053f0dca698c832bfd893a0d"
+ dependencies = [
+- "block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "block-cipher-trait",
++ "byteorder",
++ "opaque-debug",
+ ]
+ 
+ [[package]]
+ name = "aesni"
+ version = "0.6.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2f70a6b5f971e473091ab7cfb5ffac6cde81666c4556751d8d5620ead8abf100"
+ dependencies = [
+- "block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "block-cipher-trait",
++ "opaque-debug",
++ "stream-cipher",
+ ]
+ 
+ [[package]]
+ name = "alga"
+ version = "0.9.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4f823d037a7ec6ea2197046bafd4ae150e6bc36f9ca347404f46a46823fa84f2"
+ dependencies = [
+- "approx 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-complex 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-traits 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "approx",
++ "num-complex",
++ "num-traits",
+ ]
+ 
+ [[package]]
+ name = "alsa"
+ version = "0.2.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b4a0d4ebc8b23041c5de9bc9aee13b4bad844a589479701f31a5934cfe4aeb32"
+ dependencies = [
+- "alsa-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "nix 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "alsa-sys",
++ "bitflags 0.9.1",
++ "libc",
++ "nix",
+ ]
+ 
+ [[package]]
+ name = "alsa-sys"
+ version = "0.1.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b0edcbbf9ef68f15ae1b620f722180b82a98b6f0628d30baa6b8d2a5abc87d58"
+ dependencies = [
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "pkg-config 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc",
++ "pkg-config",
+ ]
+ 
+ [[package]]
+ name = "approx"
+ version = "0.3.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f0e60b75072ecd4168020818c0107f2857bb6c4e64252d8d3983f6263b40a5c3"
+ dependencies = [
+- "num-traits 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-traits",
+ ]
+ 
+ [[package]]
+ name = "arc-swap"
+ version = "0.4.7"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4d25d88fd6b8041580a654f9d0c581a047baee2b3efee13275f2fc392fc75034"
+ 
+ [[package]]
+ name = "atty"
+ version = "0.2.14"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
+ dependencies = [
+- "hermit-abi 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "hermit-abi",
++ "libc",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "autocfg"
+ version = "0.1.7"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2"
+ 
+ [[package]]
+ name = "autocfg"
+ version = "1.0.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d"
+ 
+ [[package]]
+ name = "base64"
+ version = "0.9.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643"
+ dependencies = [
+- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "safemem 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "byteorder",
++ "safemem",
+ ]
+ 
+ [[package]]
+ name = "base64"
+ version = "0.10.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e"
+ dependencies = [
+- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "byteorder",
+ ]
+ 
+ [[package]]
+ name = "bindgen"
+ version = "0.53.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c72a978d268b1d70b0e963217e60fdabd9523a941457a6c42a7315d15c7e89e5"
+ dependencies = [
+- "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "cexpr 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "clang-sys 0.29.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "peeking_take_while 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "proc-macro2 1.0.19 (registry+https://github.com/rust-lang/crates.io-index)",
+- "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "regex 1.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rustc-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "shlex 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags 1.2.1",
++ "cexpr",
++ "cfg-if",
++ "clang-sys",
++ "lazy_static",
++ "lazycell",
++ "peeking_take_while",
++ "proc-macro2 1.0.19",
++ "quote 1.0.7",
++ "regex",
++ "rustc-hash",
++ "shlex",
+ ]
+ 
+ [[package]]
+ name = "bit-set"
+ version = "0.5.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6e11e16035ea35e4e5997b393eacbf6f63983188f7a2ad25bfb13465f5ad59de"
+ dependencies = [
+- "bit-vec 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bit-vec",
+ ]
+ 
+ [[package]]
+ name = "bit-vec"
+ version = "0.6.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5f0dc55f2d8a1a85650ac47858bb001b4c0dd73d79e3c455a842925e68d29cd3"
+ 
+ [[package]]
+ name = "bitflags"
+ version = "0.7.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d"
+ 
+ [[package]]
+ name = "bitflags"
+ version = "0.9.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5"
+ 
+ [[package]]
+ name = "bitflags"
+ version = "1.2.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
+ 
+ [[package]]
+ name = "block-buffer"
+ version = "0.7.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b"
+ dependencies = [
+- "block-padding 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "block-padding",
++ "byte-tools",
++ "byteorder",
++ "generic-array",
+ ]
+ 
+ [[package]]
+ name = "block-cipher-trait"
+ version = "0.6.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1c924d49bd09e7c06003acda26cd9742e796e34282ec6c1189404dee0c1f4774"
+ dependencies = [
+- "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "generic-array",
+ ]
+ 
+ [[package]]
+ name = "block-modes"
+ version = "0.3.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "31aa8410095e39fdb732909fb5730a48d5bd7c2e3cd76bd1b07b3dbea130c529"
+ dependencies = [
+- "block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "block-padding 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "block-cipher-trait",
++ "block-padding",
+ ]
+ 
+ [[package]]
+ name = "block-padding"
+ version = "0.1.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5"
+ dependencies = [
+- "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "byte-tools",
+ ]
+ 
+ [[package]]
+ name = "byte-tools"
+ version = "0.3.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7"
+ 
+ [[package]]
+ name = "byteorder"
+ version = "1.3.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de"
+ 
+ [[package]]
+ name = "bytes"
+ version = "0.4.12"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c"
+ dependencies = [
+- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "byteorder",
++ "iovec",
+ ]
+ 
+ [[package]]
+ name = "cc"
+ version = "1.0.58"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f9a06fb2e53271d7c279ec1efea6ab691c35a2ae67ec0d91d7acec0caf13b518"
+ 
+ [[package]]
+ name = "cexpr"
+ version = "0.4.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f4aedb84272dbe89af497cf81375129abda4fc0a9e7c5d317498c15cc30c0d27"
+ dependencies = [
+- "nom 5.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "nom",
+ ]
+ 
+ [[package]]
+ name = "cfg-if"
+ version = "0.1.10"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
+ 
+ [[package]]
+ name = "chrono"
+ version = "0.4.13"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c74d84029116787153e02106bf53e66828452a4b325cc8652b788b5967c0a0b6"
+ dependencies = [
+- "num-integer 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-traits 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "time 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-integer",
++ "num-traits",
++ "time",
+ ]
+ 
+ [[package]]
+ name = "clang-sys"
+ version = "0.29.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fe6837df1d5cba2397b835c8530f51723267e16abbf83892e9e5af4f0e5dd10a"
+ dependencies = [
+- "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libloading 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "glob",
++ "libc",
++ "libloading 0.5.2",
+ ]
+ 
+ [[package]]
+ name = "cloudabi"
+ version = "0.0.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"
+ dependencies = [
+- "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags 1.2.1",
+ ]
+ 
+ [[package]]
+ name = "core-foundation-sys"
+ version = "0.5.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "716c271e8613ace48344f723b60b900a93150271e5be206212d052bbc0883efa"
+ dependencies = [
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc",
+ ]
+ 
+ [[package]]
+ name = "coreaudio-rs"
+ version = "0.9.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f229761965dad3e9b11081668a6ea00f1def7aa46062321b5ec245b834f6e491"
+ dependencies = [
+- "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "coreaudio-sys 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags 1.2.1",
++ "coreaudio-sys",
+ ]
+ 
+ [[package]]
+ name = "coreaudio-sys"
+ version = "0.2.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d6570ee6e089131e928d5ec9236db9e818aa3cf850f48b0eec6ef700571271d4"
+ dependencies = [
+- "bindgen 0.53.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bindgen",
+ ]
+ 
+ [[package]]
+ name = "cpal"
+ version = "0.8.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d58ae1ed6536b1b233f5e3aeb6997a046ddb4d05e3f61701b58a92eb254a829e"
+ dependencies = [
+- "alsa-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "coreaudio-rs 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "stdweb 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "alsa-sys",
++ "core-foundation-sys",
++ "coreaudio-rs",
++ "lazy_static",
++ "libc",
++ "stdweb",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "crossbeam-deque"
+ version = "0.7.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285"
+ dependencies = [
+- "crossbeam-epoch 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crossbeam-epoch",
++ "crossbeam-utils 0.7.2",
++ "maybe-uninit",
+ ]
+ 
+ [[package]]
+ name = "crossbeam-epoch"
+ version = "0.8.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace"
+ dependencies = [
+- "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "memoffset 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "autocfg 1.0.0",
++ "cfg-if",
++ "crossbeam-utils 0.7.2",
++ "lazy_static",
++ "maybe-uninit",
++ "memoffset",
++ "scopeguard",
+ ]
+ 
+ [[package]]
+ name = "crossbeam-queue"
+ version = "0.1.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b"
+ dependencies = [
+- "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crossbeam-utils 0.6.6",
+ ]
+ 
+ [[package]]
+ name = "crossbeam-queue"
+ version = "0.2.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570"
+ dependencies = [
+- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if",
++ "crossbeam-utils 0.7.2",
++ "maybe-uninit",
+ ]
+ 
+ [[package]]
+ name = "crossbeam-utils"
+ version = "0.6.6"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6"
+ dependencies = [
+- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if",
++ "lazy_static",
+ ]
+ 
+ [[package]]
+ name = "crossbeam-utils"
+ version = "0.7.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8"
+ dependencies = [
+- "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "autocfg 1.0.0",
++ "cfg-if",
++ "lazy_static",
+ ]
+ 
+ [[package]]
+ name = "crypto-mac"
+ version = "0.7.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5"
+ dependencies = [
+- "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "generic-array",
++ "subtle",
+ ]
+ 
+ [[package]]
+ name = "ctr"
+ version = "0.3.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "022cd691704491df67d25d006fe8eca083098253c4d43516c2206479c58c6736"
+ dependencies = [
+- "block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "block-cipher-trait",
++ "stream-cipher",
+ ]
+ 
+ [[package]]
+ name = "digest"
+ version = "0.8.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5"
+ dependencies = [
+- "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "generic-array",
+ ]
+ 
+ [[package]]
+ name = "dns-sd"
+ version = "0.1.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d748509dea20228f63ba519bf142ce2593396386125b01f5b0d6412dab972087"
+ dependencies = [
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "pkg-config 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc",
++ "pkg-config",
+ ]
+ 
+ [[package]]
+ name = "env_logger"
+ version = "0.6.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "aafcde04e90a5226a6443b7aabdb016ba2f8307c847d524724bd9b346dd1a2d3"
+ dependencies = [
+- "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)",
+- "humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "termcolor 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "atty",
++ "humantime",
++ "log 0.4.11",
++ "termcolor",
+ ]
+ 
+ [[package]]
+ name = "error-chain"
+ version = "0.12.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d371106cc88ffdfb1eabd7111e432da544f16f3e2d7bf1dfe8bf575f1df045cd"
+ dependencies = [
+- "version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "version_check",
+ ]
+ 
+ [[package]]
+ name = "fake-simd"
+ version = "0.1.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed"
+ 
+ [[package]]
+ name = "fnv"
+ version = "1.0.7"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+ 
+ [[package]]
+ name = "fuchsia-cprng"
+ version = "0.1.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
+ 
+ [[package]]
+ name = "fuchsia-zircon"
+ version = "0.3.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82"
+ dependencies = [
+- "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags 1.2.1",
++ "fuchsia-zircon-sys",
+ ]
+ 
+ [[package]]
+ name = "fuchsia-zircon-sys"
+ version = "0.3.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
+ 
+ [[package]]
+ name = "futures"
+ version = "0.1.29"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1b980f2816d6ee8673b6517b52cb0e808a180efc92e5c19d02cdda79066703ef"
+ 
+ [[package]]
+ name = "futures-channel"
+ version = "0.3.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f366ad74c28cca6ba456d95e6422883cfb4b252a83bed929c83abfdbbf2967d5"
+ dependencies = [
+- "futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures-core",
+ ]
+ 
+ [[package]]
+ name = "futures-core"
+ version = "0.3.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "59f5fff90fd5d971f936ad674802482ba441b6f09ba5e15fd8b39145582ca399"
+ 
+ [[package]]
+ name = "futures-cpupool"
+ version = "0.1.8"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4"
+ dependencies = [
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures",
++ "num_cpus",
+ ]
+ 
+ [[package]]
+ name = "futures-executor"
+ version = "0.3.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "10d6bb888be1153d3abeb9006b11b02cf5e9b209fda28693c31ae1e4e012e314"
+ dependencies = [
+- "futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures-task 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures-util 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures-core",
++ "futures-task",
++ "futures-util",
+ ]
+ 
+ [[package]]
+ name = "futures-macro"
+ version = "0.3.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d0b5a30a4328ab5473878237c447333c093297bded83a4983d10f4deea240d39"
+ dependencies = [
+- "proc-macro-hack 0.5.16 (registry+https://github.com/rust-lang/crates.io-index)",
+- "proc-macro2 1.0.19 (registry+https://github.com/rust-lang/crates.io-index)",
+- "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "syn 1.0.35 (registry+https://github.com/rust-lang/crates.io-index)",
++ "proc-macro-hack",
++ "proc-macro2 1.0.19",
++ "quote 1.0.7",
++ "syn 1.0.35",
+ ]
+ 
+ [[package]]
+ name = "futures-sink"
+ version = "0.3.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3f2032893cb734c7a05d85ce0cc8b8c4075278e93b24b66f9de99d6eb0fa8acc"
+ 
+ [[package]]
+ name = "futures-task"
+ version = "0.3.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "bdb66b5f09e22019b1ab0830f7785bcea8e7a42148683f99214f73f8ec21a626"
+ dependencies = [
+- "once_cell 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "once_cell",
+ ]
+ 
+ [[package]]
+ name = "futures-util"
+ version = "0.3.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8764574ff08b701a084482c3c7031349104b07ac897393010494beaa18ce32c6"
+ dependencies = [
+- "futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures-macro 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures-task 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "pin-project 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)",
+- "pin-utils 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "proc-macro-hack 0.5.16 (registry+https://github.com/rust-lang/crates.io-index)",
+- "proc-macro-nested 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
+- "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures-core",
++ "futures-macro",
++ "futures-task",
++ "pin-project",
++ "pin-utils",
++ "proc-macro-hack",
++ "proc-macro-nested",
++ "slab 0.4.2",
+ ]
+ 
+ [[package]]
+ name = "gcc"
+ version = "0.3.55"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2"
+ 
+ [[package]]
+ name = "generic-array"
+ version = "0.12.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec"
+ dependencies = [
+- "typenum 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "typenum",
+ ]
+ 
+ [[package]]
+ name = "getopts"
+ version = "0.2.21"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5"
+ dependencies = [
+- "unicode-width 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-width",
+ ]
+ 
+ [[package]]
+ name = "getrandom"
+ version = "0.1.14"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb"
+ dependencies = [
+- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if",
++ "libc",
++ "wasi",
+ ]
+ 
+ [[package]]
+ name = "glib"
+ version = "0.9.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "40fb573a09841b6386ddf15fd4bc6655b4f5b106ca962f57ecaecde32a0061c0"
+ dependencies = [
+- "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures-channel 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures-executor 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures-task 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures-util 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gobject-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags 1.2.1",
++ "futures-channel",
++ "futures-core",
++ "futures-executor",
++ "futures-task",
++ "futures-util",
++ "glib-sys",
++ "gobject-sys",
++ "lazy_static",
++ "libc",
+ ]
+ 
+ [[package]]
+ name = "glib-sys"
+ version = "0.9.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "95856f3802f446c05feffa5e24859fe6a183a7cb849c8449afc35c86b1e316e2"
+ dependencies = [
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "pkg-config 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc",
++ "pkg-config",
+ ]
+ 
+ [[package]]
+ name = "glob"
+ version = "0.3.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
+ 
+ [[package]]
+ name = "gobject-sys"
+ version = "0.9.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "31d1a804f62034eccf370006ccaef3708a71c31d561fee88564abe71177553d9"
+ dependencies = [
+- "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "pkg-config 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "glib-sys",
++ "libc",
++ "pkg-config",
+ ]
+ 
+ [[package]]
+ name = "gstreamer"
+ version = "0.15.7"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ce8664a114cd6ec16bece783d5eee59496919915b1f6884400ba4a953274a163"
+ dependencies = [
+- "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures-channel 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures-util 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "glib 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gobject-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gstreamer-sys 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "muldiv 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-rational 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "paste 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags 1.2.1",
++ "cfg-if",
++ "futures-channel",
++ "futures-core",
++ "futures-util",
++ "glib",
++ "glib-sys",
++ "gobject-sys",
++ "gstreamer-sys",
++ "lazy_static",
++ "libc",
++ "muldiv",
++ "num-rational",
++ "paste",
+ ]
+ 
+ [[package]]
+ name = "gstreamer-app"
+ version = "0.15.6"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "789784e8d42f5add1e1e965cf9f7e2d09e21dd0756bae6148f971db9a761d6a9"
+ dependencies = [
+- "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures-sink 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "glib 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gobject-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gstreamer 0.15.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gstreamer-app-sys 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gstreamer-base 0.15.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gstreamer-sys 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags 1.2.1",
++ "futures-core",
++ "futures-sink",
++ "glib",
++ "glib-sys",
++ "gobject-sys",
++ "gstreamer",
++ "gstreamer-app-sys",
++ "gstreamer-base",
++ "gstreamer-sys",
++ "lazy_static",
++ "libc",
+ ]
+ 
+ [[package]]
+ name = "gstreamer-app-sys"
+ version = "0.8.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "bf869ce152c23bca5d761ab62146b47f750d0b28d4d499731857532897d48167"
+ dependencies = [
+- "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gstreamer-base-sys 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gstreamer-sys 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "pkg-config 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "glib-sys",
++ "gstreamer-base-sys",
++ "gstreamer-sys",
++ "libc",
++ "pkg-config",
+ ]
+ 
+ [[package]]
+ name = "gstreamer-base"
+ version = "0.15.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "42552f75cc6c260b0be180d5c955f4cd74bd170289c622404c25f1210b521c12"
+ dependencies = [
+- "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "glib 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gobject-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gstreamer 0.15.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gstreamer-base-sys 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gstreamer-sys 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags 1.2.1",
++ "glib",
++ "glib-sys",
++ "gobject-sys",
++ "gstreamer",
++ "gstreamer-base-sys",
++ "gstreamer-sys",
++ "libc",
+ ]
+ 
+ [[package]]
+ name = "gstreamer-base-sys"
+ version = "0.8.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ba384f52174b3c586593fca32642680a9e67961fea9f4cd8419f678965023bed"
+ dependencies = [
+- "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gobject-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gstreamer-sys 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "pkg-config 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "glib-sys",
++ "gobject-sys",
++ "gstreamer-sys",
++ "libc",
++ "pkg-config",
+ ]
+ 
+ [[package]]
+ name = "gstreamer-sys"
+ version = "0.8.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1d18da01b97d0ab5896acd5151e4c155acefd0e6c03c3dd24dd133ba054053db"
+ dependencies = [
+- "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gobject-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "pkg-config 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "glib-sys",
++ "gobject-sys",
++ "libc",
++ "pkg-config",
+ ]
+ 
+ [[package]]
+ name = "hermit-abi"
+ version = "0.1.15"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3deed196b6e7f9e44a2ae8d94225d80302d81208b1bb673fd21fe634645c85a9"
+ dependencies = [
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc",
+ ]
+ 
+ [[package]]
+ name = "hex"
+ version = "0.3.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77"
+ 
+ [[package]]
+ name = "hmac"
+ version = "0.7.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695"
+ dependencies = [
+- "crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crypto-mac",
++ "digest",
+ ]
+ 
+ [[package]]
+ name = "hostname"
+ version = "0.3.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867"
+ dependencies = [
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "match_cfg 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc",
++ "match_cfg",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "httparse"
+ version = "1.3.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9"
+ 
+ [[package]]
+ name = "humantime"
+ version = "1.3.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f"
+ dependencies = [
+- "quick-error 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "quick-error",
+ ]
+ 
+ [[package]]
+ name = "hyper"
+ version = "0.11.27"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "34a590ca09d341e94cddf8e5af0bbccde205d5fbc2fa3c09dd67c7f85cea59d7"
+ dependencies = [
+- "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
+- "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "mime 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)",
+- "net2 0.2.34 (registry+https://github.com/rust-lang/crates.io-index)",
+- "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "relay 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "time 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-proto 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "unicase 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "want 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "base64 0.9.3",
++ "bytes",
++ "futures",
++ "futures-cpupool",
++ "httparse",
++ "iovec",
++ "language-tags",
++ "log 0.4.11",
++ "mime",
++ "net2",
++ "percent-encoding",
++ "relay",
++ "time",
++ "tokio-core",
++ "tokio-io",
++ "tokio-proto",
++ "tokio-service",
++ "unicase",
++ "want",
+ ]
+ 
+ [[package]]
+ name = "hyper-proxy"
+ version = "0.4.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "44f0925de2747e481e6e477dd212c25e8f745567f02f6182e04d27b97c3fbece"
+ dependencies = [
+- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "hyper 0.11.27 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bytes",
++ "futures",
++ "hyper",
++ "tokio-core",
++ "tokio-io",
+ ]
+ 
+ [[package]]
+ name = "idna"
+ version = "0.1.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e"
+ dependencies = [
+- "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
+- "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "unicode-normalization 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "matches",
++ "unicode-bidi",
++ "unicode-normalization",
+ ]
+ 
+ [[package]]
+ name = "if-addrs"
+ version = "0.6.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "28538916eb3f3976311f5dfbe67b5362d0add1293d0a9cad17debf86f8e3aa48"
+ dependencies = [
+- "if-addrs-sys 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "if-addrs-sys",
++ "libc",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "if-addrs-sys"
+ version = "0.3.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "de74b9dd780476e837e5eb5ab7c88b49ed304126e412030a0adba99c8efe79ea"
+ dependencies = [
+- "cc 1.0.58 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cc",
++ "libc",
+ ]
+ 
+ [[package]]
+ name = "iovec"
+ version = "0.1.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e"
+ dependencies = [
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc",
+ ]
+ 
+ [[package]]
+ name = "itoa"
+ version = "0.4.6"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6"
+ 
+ [[package]]
+ name = "jack"
+ version = "0.5.7"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1e15fc592e2e5a74a105ff507083c04db1aa20ba1b90d425362ba000e57422df"
+ dependencies = [
+- "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "jack-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags 0.7.0",
++ "jack-sys",
++ "lazy_static",
++ "libc",
+ ]
+ 
+ [[package]]
+ name = "jack-sys"
+ version = "0.2.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c0d4ca501477fd3cd93a36df581046e5d6338ed826cf7e9b8d302603521e6cc3"
+ dependencies = [
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libloading 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "lazy_static",
++ "libc",
++ "libloading 0.4.3",
+ ]
+ 
+ [[package]]
+ name = "kernel32-sys"
+ version = "0.2.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
+ dependencies = [
+- "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.2.8",
++ "winapi-build",
+ ]
+ 
+ [[package]]
+ name = "language-tags"
+ version = "0.2.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a"
+ 
+ [[package]]
+ name = "lazy_static"
+ version = "1.4.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+ 
+ [[package]]
+ name = "lazycell"
+ version = "1.2.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f"
+ 
+ [[package]]
+ name = "lewton"
+ version = "0.9.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8d542c1a317036c45c2aa1cf10cc9d403ca91eb2d333ef1a4917e5cb10628bd0"
+ dependencies = [
+- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "ogg 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "byteorder",
++ "ogg",
++ "smallvec 0.6.13",
+ ]
+ 
+ [[package]]
+ name = "libc"
+ version = "0.2.73"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "bd7d4bd64732af4bf3a67f367c27df8520ad7e230c5817b8ff485864d80242b9"
+ 
+ [[package]]
+ name = "libloading"
+ version = "0.4.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fd38073de8f7965d0c17d30546d4bb6da311ab428d1c7a3fc71dff7f9d4979b9"
+ dependencies = [
+- "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "kernel32-sys",
++ "lazy_static",
++ "winapi 0.2.8",
+ ]
+ 
+ [[package]]
+ name = "libloading"
+ version = "0.5.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753"
+ dependencies = [
+- "cc 1.0.58 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cc",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "libm"
+ version = "0.2.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702a"
+ 
+ [[package]]
+ name = "libmdns"
+ version = "0.2.7"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5d8582c174736c53633bc482ac709b24527c018356c3dc6d8e25a788b06b394e"
+ dependencies = [
+- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "hostname 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "if-addrs 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "multimap 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "net2 0.2.34 (registry+https://github.com/rust-lang/crates.io-index)",
+- "quick-error 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
++ "byteorder",
++ "futures",
++ "hostname",
++ "if-addrs",
++ "log 0.4.11",
++ "multimap",
++ "net2",
++ "quick-error",
++ "rand 0.7.3",
++ "tokio-core",
+ ]
+ 
+ [[package]]
+ name = "libpulse-sys"
+ version = "0.0.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9bb11b06faf883500c1b625cf4453e6c7737e9df9c7ba01df3f84b22b083e4ac"
+ dependencies = [
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc",
+ ]
  
  [[package]]
  name = "librespot"
--version = "0.1.2"
-+version = "0.1.3"
- dependencies = [
-  "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
-  "env_logger 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
-@@ -940,12 +940,12 @@ dependencies = [
-  "getopts 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
-  "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
-  "hyper 0.11.27 (registry+https://github.com/rust-lang/crates.io-index)",
-- "librespot-audio 0.1.2",
-- "librespot-connect 0.1.2",
-- "librespot-core 0.1.2",
-- "librespot-metadata 0.1.2",
-- "librespot-playback 0.1.2",
-- "librespot-protocol 0.1.2",
-+ "librespot-audio 0.1.3",
-+ "librespot-connect 0.1.3",
-+ "librespot-core 0.1.3",
-+ "librespot-metadata 0.1.3",
-+ "librespot-playback 0.1.3",
-+ "librespot-protocol 0.1.3",
-  "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
-  "num-bigint 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
-  "protobuf 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
-@@ -961,7 +961,7 @@ dependencies = [
+-version = "0.1.5"
++version = "0.1.6"
+ dependencies = [
+- "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "env_logger 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "getopts 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
+- "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "hyper 0.11.27 (registry+https://github.com/rust-lang/crates.io-index)",
+- "librespot-audio 0.1.5",
+- "librespot-connect 0.1.5",
+- "librespot-core 0.1.5",
+- "librespot-metadata 0.1.5",
+- "librespot-playback 0.1.5",
+- "librespot-protocol 0.1.5",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-bigint 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
+- "protobuf 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rpassword 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "sha-1 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-process 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-signal 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)",
+- "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "base64 0.10.1",
++ "env_logger",
++ "futures",
++ "getopts",
++ "hex",
++ "hyper",
++ "librespot-audio",
++ "librespot-connect",
++ "librespot-core",
++ "librespot-metadata",
++ "librespot-playback",
++ "librespot-protocol",
++ "log 0.4.11",
++ "num-bigint",
++ "protobuf",
++ "rand 0.7.3",
++ "rpassword",
++ "sha-1",
++ "tokio-core",
++ "tokio-io",
++ "tokio-process",
++ "tokio-signal",
++ "url",
+ ]
  
  [[package]]
  name = "librespot-audio"
--version = "0.1.2"
-+version = "0.1.3"
- dependencies = [
-  "aes-ctr 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
-  "bit-set 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
-@@ -969,7 +969,7 @@ dependencies = [
-  "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
-  "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
-  "lewton 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)",
-- "librespot-core 0.1.2",
-+ "librespot-core 0.1.3",
-  "librespot-tremor 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
-  "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
-  "num-bigint 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
-@@ -980,7 +980,7 @@ dependencies = [
+-version = "0.1.5"
++version = "0.1.6"
+ dependencies = [
+- "aes-ctr 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "bit-set 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lewton 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "librespot-core 0.1.5",
+- "librespot-tremor 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-bigint 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-traits 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "vorbis 0.0.14 (registry+https://github.com/rust-lang/crates.io-index)",
++ "aes-ctr",
++ "bit-set",
++ "byteorder",
++ "bytes",
++ "futures",
++ "lewton",
++ "librespot-core",
++ "librespot-tremor",
++ "log 0.4.11",
++ "num-bigint",
++ "num-traits",
++ "tempfile",
++ "vorbis",
+ ]
  
  [[package]]
  name = "librespot-connect"
--version = "0.1.2"
-+version = "0.1.3"
- dependencies = [
-  "aes-ctr 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
-  "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
-@@ -990,9 +990,9 @@ dependencies = [
-  "hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
-  "hyper 0.11.27 (registry+https://github.com/rust-lang/crates.io-index)",
-  "libmdns 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
-- "librespot-core 0.1.2",
-- "librespot-playback 0.1.2",
-- "librespot-protocol 0.1.2",
-+ "librespot-core 0.1.3",
-+ "librespot-playback 0.1.3",
-+ "librespot-protocol 0.1.3",
-  "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
-  "num-bigint 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
-  "protobuf 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
-@@ -1007,7 +1007,7 @@ dependencies = [
+-version = "0.1.5"
++version = "0.1.6"
+ dependencies = [
+- "aes-ctr 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "block-modes 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "dns-sd 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "hyper 0.11.27 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libmdns 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "librespot-core 0.1.5",
+- "librespot-playback 0.1.5",
+- "librespot-protocol 0.1.5",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-bigint 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
+- "protobuf 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "serde 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)",
+- "serde_derive 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)",
+- "serde_json 1.0.56 (registry+https://github.com/rust-lang/crates.io-index)",
+- "sha-1 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
+- "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "aes-ctr",
++ "base64 0.10.1",
++ "block-modes",
++ "dns-sd",
++ "futures",
++ "hmac",
++ "hyper",
++ "libmdns",
++ "librespot-core",
++ "librespot-playback",
++ "librespot-protocol",
++ "log 0.4.11",
++ "num-bigint",
++ "protobuf",
++ "rand 0.7.3",
++ "serde",
++ "serde_derive",
++ "serde_json",
++ "sha-1",
++ "tokio-core",
++ "url",
+ ]
  
  [[package]]
  name = "librespot-core"
--version = "0.1.2"
-+version = "0.1.3"
- dependencies = [
-  "aes 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
-  "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
-@@ -1020,7 +1020,7 @@ dependencies = [
-  "hyper 0.11.27 (registry+https://github.com/rust-lang/crates.io-index)",
-  "hyper-proxy 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
-  "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
-- "librespot-protocol 0.1.2",
-+ "librespot-protocol 0.1.3",
-  "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
-  "num-bigint 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
-  "num-integer 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
-@@ -1043,12 +1043,12 @@ dependencies = [
+-version = "0.1.5"
++version = "0.1.6"
+ dependencies = [
+- "aes 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "error-chain 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "hyper 0.11.27 (registry+https://github.com/rust-lang/crates.io-index)",
+- "hyper-proxy 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "librespot-protocol 0.1.5",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-bigint 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-integer 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-traits 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "protobuf 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "serde 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)",
+- "serde_derive 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)",
+- "serde_json 1.0.56 (registry+https://github.com/rust-lang/crates.io-index)",
+- "sha-1 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "shannon 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "vergen 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "aes",
++ "base64 0.10.1",
++ "byteorder",
++ "bytes",
++ "error-chain",
++ "futures",
++ "hmac",
++ "httparse",
++ "hyper",
++ "hyper-proxy",
++ "lazy_static",
++ "librespot-protocol",
++ "log 0.4.11",
++ "num-bigint",
++ "num-integer",
++ "num-traits",
++ "pbkdf2",
++ "protobuf",
++ "rand 0.7.3",
++ "serde",
++ "serde_derive",
++ "serde_json",
++ "sha-1",
++ "shannon",
++ "tokio-codec",
++ "tokio-core",
++ "tokio-io",
++ "url",
++ "uuid",
++ "vergen",
+ ]
  
  [[package]]
  name = "librespot-metadata"
--version = "0.1.2"
-+version = "0.1.3"
+-version = "0.1.5"
++version = "0.1.6"
  dependencies = [
-  "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
-  "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
-- "librespot-core 0.1.2",
-- "librespot-protocol 0.1.2",
-+ "librespot-core 0.1.3",
-+ "librespot-protocol 0.1.3",
-  "linear-map 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
-  "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
-  "protobuf 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
-@@ -1056,7 +1056,7 @@ dependencies = [
+- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "librespot-core 0.1.5",
+- "librespot-protocol 0.1.5",
+- "linear-map 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "protobuf 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "byteorder",
++ "futures",
++ "librespot-core",
++ "librespot-protocol",
++ "linear-map",
++ "log 0.4.11",
++ "protobuf",
+ ]
  
  [[package]]
  name = "librespot-playback"
--version = "0.1.2"
-+version = "0.1.3"
- dependencies = [
-  "alsa 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
-  "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
-@@ -1068,9 +1068,9 @@ dependencies = [
-  "jack 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)",
-  "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
-  "libpulse-sys 0.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
-- "librespot-audio 0.1.2",
-- "librespot-core 0.1.2",
-- "librespot-metadata 0.1.2",
-+ "librespot-audio 0.1.3",
-+ "librespot-core 0.1.3",
-+ "librespot-metadata 0.1.3",
-  "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
-  "portaudio-rs 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
-  "rodio 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
-@@ -1081,7 +1081,7 @@ dependencies = [
+-version = "0.1.5"
++version = "0.1.6"
+ dependencies = [
+- "alsa 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "cpal 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "glib 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gstreamer 0.15.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gstreamer-app 0.15.6 (registry+https://github.com/rust-lang/crates.io-index)",
+- "jack 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libpulse-sys 0.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "librespot-audio 0.1.5",
+- "librespot-core 0.1.5",
+- "librespot-metadata 0.1.5",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "portaudio-rs 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rodio 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "sdl2 0.32.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "shell-words 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "zerocopy 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "alsa",
++ "byteorder",
++ "cpal",
++ "futures",
++ "glib",
++ "gstreamer",
++ "gstreamer-app",
++ "jack",
++ "libc",
++ "libpulse-sys",
++ "librespot-audio",
++ "librespot-core",
++ "librespot-metadata",
++ "log 0.4.11",
++ "portaudio-rs",
++ "rodio",
++ "sdl2",
++ "shell-words",
++ "zerocopy",
+ ]
  
  [[package]]
  name = "librespot-protocol"
--version = "0.1.2"
-+version = "0.1.3"
+-version = "0.1.5"
++version = "0.1.6"
+ dependencies = [
+- "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "protobuf 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "protobuf-codegen 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "protobuf-codegen-pure 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "glob",
++ "protobuf",
++ "protobuf-codegen",
++ "protobuf-codegen-pure",
+ ]
+ 
+ [[package]]
+ name = "librespot-tremor"
+ version = "0.2.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "97f525bff915d478a76940a7b988e5ea34911ba7280c97bd3a7673f54d68b4fe"
+ dependencies = [
+- "cc 1.0.58 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "ogg-sys 0.0.9 (registry+https://github.com/rust-lang/crates.io-index)",
+- "pkg-config 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cc",
++ "libc",
++ "ogg-sys",
++ "pkg-config",
+ ]
+ 
+ [[package]]
+ name = "linear-map"
+ version = "1.2.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "bfae20f6b19ad527b550c223fddc3077a547fc70cda94b9b566575423fd303ee"
+ 
+ [[package]]
+ name = "lock_api"
+ version = "0.3.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75"
+ dependencies = [
+- "scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "scopeguard",
+ ]
+ 
+ [[package]]
+ name = "log"
+ version = "0.3.9"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b"
+ dependencies = [
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.4.11",
+ ]
+ 
+ [[package]]
+ name = "log"
+ version = "0.4.11"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b"
+ dependencies = [
+- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if",
+ ]
+ 
+ [[package]]
+ name = "match_cfg"
+ version = "0.1.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4"
+ 
+ [[package]]
+ name = "matches"
+ version = "0.1.8"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08"
+ 
+ [[package]]
+ name = "matrixmultiply"
+ version = "0.2.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d4f7ec66360130972f34830bfad9ef05c6610a43938a467bcc9ab9369ab3478f"
+ dependencies = [
+- "rawpointer 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rawpointer",
+ ]
+ 
+ [[package]]
+ name = "maybe-uninit"
+ version = "2.0.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00"
+ 
+ [[package]]
+ name = "memchr"
+ version = "2.3.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400"
+ 
+ [[package]]
+ name = "memoffset"
+ version = "0.5.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c198b026e1bbf08a937e94c6c60f9ec4a2267f5b0d2eec9c1b21b061ce2be55f"
+ dependencies = [
+- "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "autocfg 1.0.0",
+ ]
+ 
+ [[package]]
+ name = "mime"
+ version = "0.3.16"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d"
+ 
+ [[package]]
+ name = "mio"
+ version = "0.6.22"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430"
+ dependencies = [
+- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "net2 0.2.34 (registry+https://github.com/rust-lang/crates.io-index)",
+- "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if",
++ "fuchsia-zircon",
++ "fuchsia-zircon-sys",
++ "iovec",
++ "kernel32-sys",
++ "libc",
++ "log 0.4.11",
++ "miow 0.2.1",
++ "net2",
++ "slab 0.4.2",
++ "winapi 0.2.8",
+ ]
+ 
+ [[package]]
+ name = "mio-named-pipes"
+ version = "0.1.7"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0840c1c50fd55e521b247f949c241c9997709f23bd7f023b9762cd561e935656"
+ dependencies = [
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)",
+- "miow 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.4.11",
++ "mio",
++ "miow 0.3.5",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "mio-uds"
+ version = "0.6.8"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "afcb699eb26d4332647cc848492bbc15eafb26f08d0304550d5aa1f612e066f0"
+ dependencies = [
+- "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)",
++ "iovec",
++ "libc",
++ "mio",
+ ]
+ 
+ [[package]]
+ name = "miow"
+ version = "0.2.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919"
+ dependencies = [
+- "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "net2 0.2.34 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+- "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "kernel32-sys",
++ "net2",
++ "winapi 0.2.8",
++ "ws2_32-sys",
+ ]
+ 
+ [[package]]
+ name = "miow"
+ version = "0.3.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "07b88fb9795d4d36d62a012dfbf49a8f5cf12751f36d31a9dbe66d528e58979e"
+ dependencies = [
+- "socket2 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "socket2",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "muldiv"
+ version = "0.2.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0419348c027fa7be448d2ae7ea0e4e04c2334c31dc4e74ab29f00a2a7ca69204"
+ 
+ [[package]]
+ name = "multimap"
+ version = "0.8.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d8883adfde9756c1d30b0f519c9b8c502a94b41ac62f696453c37c7fc0a958ce"
+ dependencies = [
+- "serde 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde",
+ ]
+ 
+ [[package]]
+ name = "nalgebra"
+ version = "0.18.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "aaa9fddbc34c8c35dd2108515587b8ce0cab396f17977b8c738568e4edb521a2"
+ dependencies = [
+- "alga 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "approx 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "matrixmultiply 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-complex 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-rational 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-traits 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "typenum 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "alga",
++ "approx",
++ "generic-array",
++ "matrixmultiply",
++ "num-complex",
++ "num-rational",
++ "num-traits",
++ "rand 0.6.5",
++ "typenum",
+ ]
+ 
+ [[package]]
+ name = "net2"
+ version = "0.2.34"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2ba7c918ac76704fb42afcbbb43891e72731f3dcca3bef2a19786297baf14af7"
+ dependencies = [
+- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if",
++ "libc",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "nix"
+ version = "0.9.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a2c5afeb0198ec7be8569d666644b574345aad2e95a53baf3a532da3e0f3fb32"
+ dependencies = [
+- "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags 0.9.1",
++ "cfg-if",
++ "libc",
++ "void",
+ ]
+ 
+ [[package]]
+ name = "nom"
+ version = "5.1.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af"
+ dependencies = [
+- "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "memchr",
++ "version_check",
+ ]
+ 
+ [[package]]
+ name = "num"
+ version = "0.1.42"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4703ad64153382334aa8db57c637364c322d3372e097840c72000dabdcf6156e"
+ dependencies = [
+- "num-integer 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-iter 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-traits 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-integer",
++ "num-iter",
++ "num-traits",
+ ]
+ 
+ [[package]]
+ name = "num-bigint"
+ version = "0.2.6"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304"
+ dependencies = [
+- "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-integer 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-traits 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "autocfg 1.0.0",
++ "num-integer",
++ "num-traits",
+ ]
+ 
+ [[package]]
+ name = "num-complex"
+ version = "0.2.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95"
+ dependencies = [
+- "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-traits 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "autocfg 1.0.0",
++ "num-traits",
+ ]
+ 
+ [[package]]
+ name = "num-integer"
+ version = "0.1.43"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8d59457e662d541ba17869cf51cf177c0b5f0cbf476c66bdc90bf1edac4f875b"
+ dependencies = [
+- "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-traits 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "autocfg 1.0.0",
++ "num-traits",
+ ]
+ 
+ [[package]]
+ name = "num-iter"
+ version = "0.1.41"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7a6e6b7c748f995c4c29c5f5ae0248536e04a5739927c74ec0fa564805094b9f"
+ dependencies = [
+- "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-integer 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-traits 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "autocfg 1.0.0",
++ "num-integer",
++ "num-traits",
+ ]
+ 
+ [[package]]
+ name = "num-rational"
+ version = "0.2.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef"
+ dependencies = [
+- "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-integer 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-traits 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "autocfg 1.0.0",
++ "num-integer",
++ "num-traits",
+ ]
+ 
+ [[package]]
+ name = "num-traits"
+ version = "0.2.12"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ac267bcc07f48ee5f8935ab0d24f316fb722d7a1292e2913f0cc196b29ffd611"
+ dependencies = [
+- "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libm 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "autocfg 1.0.0",
++ "libm",
+ ]
+ 
+ [[package]]
+ name = "num_cpus"
+ version = "1.13.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3"
+ dependencies = [
+- "hermit-abi 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
++ "hermit-abi",
++ "libc",
+ ]
+ 
+ [[package]]
+ name = "ogg"
+ version = "0.7.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d79f1db9148be9d0e174bb3ac890f6030fcb1ed947267c5a91ee4c91b5a91e15"
+ dependencies = [
+- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "byteorder",
+ ]
+ 
+ [[package]]
+ name = "ogg-sys"
+ version = "0.0.9"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a95b8c172e17df1a41bf8d666301d3b2c4efeb90d9d0415e2a4dc0668b35fdb2"
+ dependencies = [
+- "gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "pkg-config 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "gcc",
++ "libc",
++ "pkg-config",
+ ]
+ 
+ [[package]]
+ name = "once_cell"
+ version = "1.4.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0b631f7e854af39a1739f401cf34a8a013dfe09eac4fa4dba91e9768bd28168d"
+ 
+ [[package]]
+ name = "opaque-debug"
+ version = "0.2.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c"
+ 
+ [[package]]
+ name = "parking_lot"
+ version = "0.9.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252"
+ dependencies = [
+- "lock_api 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "lock_api",
++ "parking_lot_core",
++ "rustc_version",
+ ]
+ 
+ [[package]]
+ name = "parking_lot_core"
+ version = "0.6.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b"
+ dependencies = [
+- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if",
++ "cloudabi",
++ "libc",
++ "redox_syscall",
++ "rustc_version",
++ "smallvec 0.6.13",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "paste"
+ version = "0.1.18"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "45ca20c77d80be666aef2b45486da86238fabe33e38306bd3118fe4af33fa880"
+ dependencies = [
+- "paste-impl 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)",
+- "proc-macro-hack 0.5.16 (registry+https://github.com/rust-lang/crates.io-index)",
++ "paste-impl",
++ "proc-macro-hack",
+ ]
+ 
+ [[package]]
+ name = "paste-impl"
+ version = "0.1.18"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d95a7db200b97ef370c8e6de0088252f7e0dfff7d047a28528e47456c0fc98b6"
+ dependencies = [
+- "proc-macro-hack 0.5.16 (registry+https://github.com/rust-lang/crates.io-index)",
++ "proc-macro-hack",
+ ]
+ 
+ [[package]]
+ name = "pbkdf2"
+ version = "0.3.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "006c038a43a45995a9670da19e67600114740e8511d4333bf97a56e66a7542d9"
+ dependencies = [
+- "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)",
+- "sha2 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "base64 0.9.3",
++ "byteorder",
++ "crypto-mac",
++ "hmac",
++ "rand 0.5.6",
++ "sha2",
++ "subtle",
+ ]
+ 
+ [[package]]
+ name = "peeking_take_while"
+ version = "0.1.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
+ 
+ [[package]]
+ name = "percent-encoding"
+ version = "1.0.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831"
+ 
+ [[package]]
+ name = "pin-project"
+ version = "0.4.22"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "12e3a6cdbfe94a5e4572812a0201f8c0ed98c1c452c7b8563ce2276988ef9c17"
+ dependencies = [
+- "pin-project-internal 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)",
++ "pin-project-internal",
+ ]
+ 
+ [[package]]
+ name = "pin-project-internal"
+ version = "0.4.22"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6a0ffd45cf79d88737d7cc85bfd5d2894bee1139b356e616fe85dc389c61aaf7"
+ dependencies = [
+- "proc-macro2 1.0.19 (registry+https://github.com/rust-lang/crates.io-index)",
+- "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "syn 1.0.35 (registry+https://github.com/rust-lang/crates.io-index)",
++ "proc-macro2 1.0.19",
++ "quote 1.0.7",
++ "syn 1.0.35",
+ ]
+ 
+ [[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.18"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d36492546b6af1463394d46f0c834346f31548646f6ba10849802c9c9a27ac33"
+ 
+ [[package]]
+ name = "portaudio-rs"
+ version = "0.3.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cdb6b5eff96ccc9bf44d34c379ab03ae944426d83d1694345bdf8159d561d562"
+ dependencies = [
+- "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "portaudio-sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags 1.2.1",
++ "libc",
++ "portaudio-sys",
+ ]
+ 
+ [[package]]
+ name = "portaudio-sys"
+ version = "0.1.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5194a4fa953b4ffd851c320ef6f0484cd7278cb7169ea9d6c433e49b23f7b7f5"
+ dependencies = [
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "pkg-config 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc",
++ "pkg-config",
+ ]
+ 
+ [[package]]
+ name = "ppv-lite86"
+ version = "0.2.8"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "237a5ed80e274dbc66f86bd59c1e25edc039660be53194b5fe0a482e0f2612ea"
+ 
+ [[package]]
+ name = "proc-macro-hack"
+ version = "0.5.16"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7e0456befd48169b9f13ef0f0ad46d492cf9d2dbb918bcf38e01eed4ce3ec5e4"
+ 
+ [[package]]
+ name = "proc-macro-nested"
+ version = "0.1.6"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "eba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5a"
+ 
+ [[package]]
+ name = "proc-macro2"
+ version = "0.4.30"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759"
+ dependencies = [
+- "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-xid 0.1.0",
+ ]
+ 
+ [[package]]
+ name = "proc-macro2"
+ version = "1.0.19"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "04f5f085b5d71e2188cb8271e5da0161ad52c3f227a661a3c135fdf28e258b12"
+ dependencies = [
+- "unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-xid 0.2.1",
+ ]
+ 
+ [[package]]
+ name = "protobuf"
+ version = "2.14.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8e86d370532557ae7573551a1ec8235a0f8d6cb276c7c9e6aa490b511c447485"
+ 
+ [[package]]
+ name = "protobuf-codegen"
+ version = "2.14.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "de113bba758ccf2c1ef816b127c958001b7831136c9bc3f8e9ec695ac4e82b0c"
+ dependencies = [
+- "protobuf 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "protobuf",
+ ]
+ 
+ [[package]]
+ name = "protobuf-codegen-pure"
+ version = "2.14.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2d1a4febc73bf0cada1d77c459a0c8e5973179f1cfd5b0f1ab789d45b17b6440"
+ dependencies = [
+- "protobuf 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "protobuf-codegen 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "protobuf",
++ "protobuf-codegen",
+ ]
+ 
+ [[package]]
+ name = "quick-error"
+ version = "1.2.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
+ 
+ [[package]]
+ name = "quote"
+ version = "0.6.13"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1"
+ dependencies = [
+- "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
++ "proc-macro2 0.4.30",
+ ]
+ 
+ [[package]]
+ name = "quote"
+ version = "1.0.7"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37"
+ dependencies = [
+- "proc-macro2 1.0.19 (registry+https://github.com/rust-lang/crates.io-index)",
++ "proc-macro2 1.0.19",
+ ]
+ 
+ [[package]]
+ name = "rand"
+ version = "0.3.23"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c"
+ dependencies = [
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc",
++ "rand 0.4.6",
+ ]
+ 
+ [[package]]
+ name = "rand"
+ version = "0.4.6"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293"
+ dependencies = [
+- "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "fuchsia-cprng",
++ "libc",
++ "rand_core 0.3.1",
++ "rdrand",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "rand"
+ version = "0.5.6"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9"
+ dependencies = [
+- "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cloudabi",
++ "fuchsia-cprng",
++ "libc",
++ "rand_core 0.3.1",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "rand"
+ version = "0.6.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca"
+ dependencies = [
+- "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "autocfg 0.1.7",
++ "libc",
++ "rand_chacha 0.1.1",
++ "rand_core 0.4.2",
++ "rand_hc 0.1.0",
++ "rand_isaac",
++ "rand_jitter",
++ "rand_os",
++ "rand_pcg",
++ "rand_xorshift",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "rand"
+ version = "0.7.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
+ dependencies = [
+- "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "getrandom",
++ "libc",
++ "rand_chacha 0.2.2",
++ "rand_core 0.5.1",
++ "rand_hc 0.2.0",
+ ]
+ 
+ [[package]]
+ name = "rand_chacha"
+ version = "0.1.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef"
+ dependencies = [
+- "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "autocfg 0.1.7",
++ "rand_core 0.3.1",
+ ]
+ 
+ [[package]]
+ name = "rand_chacha"
+ version = "0.2.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
+ dependencies = [
+- "ppv-lite86 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "ppv-lite86",
++ "rand_core 0.5.1",
+ ]
+ 
+ [[package]]
+ name = "rand_core"
+ version = "0.3.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"
+ dependencies = [
+- "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.4.2",
+ ]
+ 
+ [[package]]
+ name = "rand_core"
+ version = "0.4.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc"
+ 
+ [[package]]
+ name = "rand_core"
+ version = "0.5.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
+ dependencies = [
+- "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
++ "getrandom",
+ ]
+ 
+ [[package]]
+ name = "rand_hc"
+ version = "0.1.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4"
+ dependencies = [
+- "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.3.1",
+ ]
+ 
+ [[package]]
+ name = "rand_hc"
+ version = "0.2.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
+ dependencies = [
+- "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.5.1",
+ ]
+ 
+ [[package]]
+ name = "rand_isaac"
+ version = "0.1.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08"
+ dependencies = [
+- "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.3.1",
+ ]
+ 
+ [[package]]
+ name = "rand_jitter"
+ version = "0.1.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b"
+ dependencies = [
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc",
++ "rand_core 0.4.2",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "rand_os"
+ version = "0.1.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071"
+ dependencies = [
+- "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cloudabi",
++ "fuchsia-cprng",
++ "libc",
++ "rand_core 0.4.2",
++ "rdrand",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "rand_pcg"
+ version = "0.1.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44"
+ dependencies = [
+- "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "autocfg 0.1.7",
++ "rand_core 0.4.2",
+ ]
+ 
+ [[package]]
+ name = "rand_xorshift"
+ version = "0.1.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c"
+ dependencies = [
+- "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.3.1",
+ ]
+ 
+ [[package]]
+ name = "rawpointer"
+ version = "0.2.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
+ 
+ [[package]]
+ name = "rdrand"
+ version = "0.4.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"
+ dependencies = [
+- "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.3.1",
+ ]
+ 
+ [[package]]
+ name = "redox_syscall"
+ version = "0.1.57"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce"
+ 
+ [[package]]
+ name = "regex"
+ version = "1.3.9"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9c3780fcf44b193bc4d09f36d2a3c87b251da4a046c87795a0d35f4f927ad8e6"
+ dependencies = [
+- "regex-syntax 0.6.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "regex-syntax",
+ ]
+ 
+ [[package]]
+ name = "regex-syntax"
+ version = "0.6.18"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "26412eb97c6b088a6997e05f69403a802a92d520de2f8e63c2b65f9e0f47c4e8"
+ 
+ [[package]]
+ name = "relay"
+ version = "0.1.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1576e382688d7e9deecea24417e350d3062d97e32e45d70b1cde65994ff1489a"
+ dependencies = [
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures",
+ ]
+ 
+ [[package]]
+ name = "remove_dir_all"
+ version = "0.5.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
+ dependencies = [
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "rodio"
+ version = "0.9.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5d0f961b254e66d147a7b550c78b01308934c97d807a34b417fd0f5a0a0f3a2d"
+ dependencies = [
+- "cpal 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "nalgebra 0.18.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cpal",
++ "lazy_static",
++ "nalgebra",
+ ]
+ 
+ [[package]]
+ name = "rpassword"
+ version = "3.0.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c34fa7bcae7fca3c8471e8417088bbc3ad9af8066b0ecf4f3c0d98a0d772716e"
+ dependencies = [
+- "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "kernel32-sys",
++ "libc",
++ "winapi 0.2.8",
+ ]
+ 
+ [[package]]
+ name = "rustc-hash"
+ version = "1.1.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
+ 
+ [[package]]
+ name = "rustc_version"
+ version = "0.2.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
+ dependencies = [
+- "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "semver",
+ ]
+ 
+ [[package]]
+ name = "ryu"
+ version = "1.0.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e"
+ 
+ [[package]]
+ name = "safemem"
+ version = "0.3.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072"
+ 
+ [[package]]
+ name = "scoped-tls"
+ version = "0.1.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "332ffa32bf586782a3efaeb58f127980944bbc8c4d6913a86107ac2a5ab24b28"
+ 
+ [[package]]
+ name = "scopeguard"
+ version = "1.1.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+ 
+ [[package]]
+ name = "sdl2"
+ version = "0.32.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d051a07231e303f5f719da78cb6f7394f6d5b54f733aef5b0b447804a83edd7b"
+ dependencies = [
+- "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "sdl2-sys 0.32.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags 1.2.1",
++ "lazy_static",
++ "libc",
++ "num",
++ "rand 0.6.5",
++ "sdl2-sys",
+ ]
+ 
+ [[package]]
+ name = "sdl2-sys"
+ version = "0.32.6"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "34e71125077d297d57e4c1acfe8981b5bdfbf5a20e7b589abfdcb33bf1127f86"
+ dependencies = [
+- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if",
++ "libc",
+ ]
+ 
+ [[package]]
+ name = "semver"
+ version = "0.9.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
+ dependencies = [
+- "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "semver-parser",
+ ]
+ 
+ [[package]]
+ name = "semver-parser"
+ version = "0.7.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
+ 
+ [[package]]
+ name = "serde"
+ version = "1.0.114"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5317f7588f0a5078ee60ef675ef96735a1442132dc645eb1d12c018620ed8cd3"
+ 
+ [[package]]
+ name = "serde_derive"
+ version = "1.0.114"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2a0be94b04690fbaed37cddffc5c134bf537c8e3329d53e982fe04c374978f8e"
+ dependencies = [
+- "proc-macro2 1.0.19 (registry+https://github.com/rust-lang/crates.io-index)",
+- "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "syn 1.0.35 (registry+https://github.com/rust-lang/crates.io-index)",
++ "proc-macro2 1.0.19",
++ "quote 1.0.7",
++ "syn 1.0.35",
+ ]
+ 
+ [[package]]
+ name = "serde_json"
+ version = "1.0.56"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3433e879a558dde8b5e8feb2a04899cf34fdde1fafb894687e52105fc1162ac3"
+ dependencies = [
+- "itoa 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
+- "ryu 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "serde 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)",
++ "itoa",
++ "ryu",
++ "serde",
+ ]
+ 
+ [[package]]
+ name = "sha-1"
+ version = "0.8.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df"
+ dependencies = [
+- "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "block-buffer",
++ "digest",
++ "fake-simd",
++ "opaque-debug",
+ ]
+ 
+ [[package]]
+ name = "sha2"
+ version = "0.8.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69"
+ dependencies = [
+- "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "block-buffer",
++ "digest",
++ "fake-simd",
++ "opaque-debug",
+ ]
+ 
+ [[package]]
+ name = "shannon"
+ version = "0.2.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7ea5b41c9427b56caa7b808cb548a04fb50bb5b9e98590b53f28064ff4174561"
+ dependencies = [
+- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "byteorder",
+ ]
+ 
+ [[package]]
+ name = "shell-words"
+ version = "0.1.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "39acde55a154c4cd3ae048ac78cc21c25f3a0145e44111b523279113dce0d94a"
+ 
+ [[package]]
+ name = "shlex"
+ version = "0.1.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2"
+ 
+ [[package]]
+ name = "signal-hook-registry"
+ version = "1.2.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "94f478ede9f64724c5d173d7bb56099ec3e2d9fc2774aac65d34b8b890405f41"
+ dependencies = [
+- "arc-swap 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
++ "arc-swap",
++ "libc",
+ ]
+ 
+ [[package]]
+ name = "slab"
+ version = "0.3.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "17b4fcaed89ab08ef143da37bc52adbcc04d4a69014f4c1208d6b51f0c47bc23"
+ 
+ [[package]]
+ name = "slab"
+ version = "0.4.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8"
+ 
+ [[package]]
+ name = "smallvec"
+ version = "0.2.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4c8cbcd6df1e117c2210e13ab5109635ad68a929fcbb8964dc965b76cb5ee013"
+ 
+ [[package]]
+ name = "smallvec"
+ version = "0.6.13"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6"
+ dependencies = [
+- "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "maybe-uninit",
+ ]
+ 
+ [[package]]
+ name = "socket2"
+ version = "0.3.12"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "03088793f677dce356f3ccc2edb1b314ad191ab702a5de3faf49304f7e104918"
+ dependencies = [
+- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if",
++ "libc",
++ "redox_syscall",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "stdweb"
+ version = "0.1.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ef5430c8e36b713e13b48a9f709cc21e046723fe44ce34587b73a830203b533e"
+ 
+ [[package]]
+ name = "stream-cipher"
+ version = "0.3.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8131256a5896cabcf5eb04f4d6dacbe1aefda854b0d9896e09cb58829ec5638c"
+ dependencies = [
+- "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "generic-array",
+ ]
+ 
+ [[package]]
+ name = "subtle"
+ version = "1.0.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee"
+ 
+ [[package]]
+ name = "syn"
+ version = "0.15.44"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5"
+ dependencies = [
+- "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
+- "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "proc-macro2 0.4.30",
++ "quote 0.6.13",
++ "unicode-xid 0.1.0",
+ ]
+ 
+ [[package]]
+ name = "syn"
+ version = "1.0.35"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fb7f4c519df8c117855e19dd8cc851e89eb746fe7a73f0157e0d95fdec5369b0"
+ dependencies = [
+- "proc-macro2 1.0.19 (registry+https://github.com/rust-lang/crates.io-index)",
+- "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "proc-macro2 1.0.19",
++ "quote 1.0.7",
++ "unicode-xid 0.2.1",
+ ]
+ 
+ [[package]]
+ name = "synstructure"
+ version = "0.10.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "02353edf96d6e4dc81aea2d8490a7e9db177bf8acb0e951c24940bf866cb313f"
+ dependencies = [
+- "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
+- "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)",
+- "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "proc-macro2 0.4.30",
++ "quote 0.6.13",
++ "syn 0.15.44",
++ "unicode-xid 0.1.0",
+ ]
+ 
+ [[package]]
+ name = "take"
+ version = "0.1.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b157868d8ac1f56b64604539990685fa7611d8fa9e5476cf0c02cf34d32917c5"
+ 
+ [[package]]
+ name = "tempfile"
+ version = "3.1.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9"
+ dependencies = [
+- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)",
+- "remove_dir_all 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if",
++ "libc",
++ "rand 0.7.3",
++ "redox_syscall",
++ "remove_dir_all",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "termcolor"
+ version = "1.1.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "bb6bfa289a4d7c5766392812c0a1f4c1ba45afa1ad47803c11e1f407d846d75f"
+ dependencies = [
+- "winapi-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi-util",
+ ]
+ 
+ [[package]]
+ name = "time"
+ version = "0.1.43"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438"
+ dependencies = [
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "tinyvec"
+ version = "0.3.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "53953d2d3a5ad81d9f844a32f14ebb121f50b650cd59d0ee2a07cf13c617efed"
+ 
+ [[package]]
+ name = "tokio"
+ version = "0.1.22"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6"
+ dependencies = [
+- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-current-thread 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-fs 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-sync 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-tcp 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-threadpool 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-timer 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-udp 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-uds 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bytes",
++ "futures",
++ "mio",
++ "num_cpus",
++ "tokio-codec",
++ "tokio-current-thread",
++ "tokio-executor",
++ "tokio-fs",
++ "tokio-io",
++ "tokio-reactor",
++ "tokio-sync",
++ "tokio-tcp",
++ "tokio-threadpool",
++ "tokio-timer",
++ "tokio-udp",
++ "tokio-uds",
+ ]
+ 
+ [[package]]
+ name = "tokio-codec"
+ version = "0.1.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "25b2998660ba0e70d18684de5d06b70b70a3a747469af9dea7618cc59e75976b"
+ dependencies = [
+- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bytes",
++ "futures",
++ "tokio-io",
+ ]
+ 
+ [[package]]
+ name = "tokio-core"
+ version = "0.1.17"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "aeeffbbb94209023feaef3c196a41cbcdafa06b4a6f893f68779bb5e53796f71"
+ dependencies = [
+- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)",
+- "scoped-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-timer 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bytes",
++ "futures",
++ "iovec",
++ "log 0.4.11",
++ "mio",
++ "scoped-tls",
++ "tokio",
++ "tokio-executor",
++ "tokio-io",
++ "tokio-reactor",
++ "tokio-timer",
+ ]
+ 
+ [[package]]
+ name = "tokio-current-thread"
+ version = "0.1.7"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b1de0e32a83f131e002238d7ccde18211c0a5397f60cbfffcb112868c2e0e20e"
+ dependencies = [
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures",
++ "tokio-executor",
+ ]
+ 
+ [[package]]
+ name = "tokio-executor"
+ version = "0.1.10"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671"
+ dependencies = [
+- "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crossbeam-utils 0.7.2",
++ "futures",
+ ]
+ 
+ [[package]]
+ name = "tokio-fs"
+ version = "0.1.7"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "297a1206e0ca6302a0eed35b700d292b275256f596e2f3fea7729d5e629b6ff4"
+ dependencies = [
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-threadpool 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures",
++ "tokio-io",
++ "tokio-threadpool",
+ ]
+ 
+ [[package]]
+ name = "tokio-io"
+ version = "0.1.13"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674"
+ dependencies = [
+- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bytes",
++ "futures",
++ "log 0.4.11",
+ ]
+ 
+ [[package]]
+ name = "tokio-process"
+ version = "0.2.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "382d90f43fa31caebe5d3bc6cfd854963394fff3b8cb59d5146607aaae7e7e43"
+ dependencies = [
+- "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)",
+- "mio-named-pipes 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-signal 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crossbeam-queue 0.1.2",
++ "futures",
++ "lazy_static",
++ "libc",
++ "log 0.4.11",
++ "mio",
++ "mio-named-pipes",
++ "tokio-io",
++ "tokio-reactor",
++ "tokio-signal",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "tokio-proto"
+ version = "0.1.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8fbb47ae81353c63c487030659494b295f6cb6576242f907f203473b191b0389"
+ dependencies = [
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
+- "net2 0.2.34 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)",
+- "slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "smallvec 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "take 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures",
++ "log 0.3.9",
++ "net2",
++ "rand 0.3.23",
++ "slab 0.3.0",
++ "smallvec 0.2.1",
++ "take",
++ "tokio-core",
++ "tokio-io",
++ "tokio-service",
+ ]
+ 
+ [[package]]
+ name = "tokio-reactor"
+ version = "0.1.12"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351"
+ dependencies = [
+- "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-sync 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crossbeam-utils 0.7.2",
++ "futures",
++ "lazy_static",
++ "log 0.4.11",
++ "mio",
++ "num_cpus",
++ "parking_lot",
++ "slab 0.4.2",
++ "tokio-executor",
++ "tokio-io",
++ "tokio-sync",
+ ]
+ 
+ [[package]]
+ name = "tokio-service"
+ version = "0.1.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "24da22d077e0f15f55162bdbdc661228c1581892f52074fb242678d015b45162"
+ dependencies = [
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures",
+ ]
+ 
+ [[package]]
+ name = "tokio-signal"
+ version = "0.2.9"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d0c34c6e548f101053321cba3da7cbb87a610b85555884c41b07da2eb91aff12"
+ dependencies = [
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)",
+- "mio-uds 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)",
+- "signal-hook-registry 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures",
++ "libc",
++ "mio",
++ "mio-uds",
++ "signal-hook-registry",
++ "tokio-executor",
++ "tokio-io",
++ "tokio-reactor",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "tokio-sync"
+ version = "0.1.8"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "edfe50152bc8164fcc456dab7891fa9bf8beaf01c5ee7e1dd43a397c3cf87dee"
+ dependencies = [
+- "fnv 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
++ "fnv",
++ "futures",
+ ]
+ 
+ [[package]]
+ name = "tokio-tcp"
+ version = "0.1.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "98df18ed66e3b72e742f185882a9e201892407957e45fbff8da17ae7a7c51f72"
+ dependencies = [
+- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bytes",
++ "futures",
++ "iovec",
++ "mio",
++ "tokio-io",
++ "tokio-reactor",
+ ]
+ 
+ [[package]]
+ name = "tokio-threadpool"
+ version = "0.1.18"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "df720b6581784c118f0eb4310796b12b1d242a7eb95f716a8367855325c25f89"
+ dependencies = [
+- "crossbeam-deque 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "crossbeam-queue 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crossbeam-deque",
++ "crossbeam-queue 0.2.3",
++ "crossbeam-utils 0.7.2",
++ "futures",
++ "lazy_static",
++ "log 0.4.11",
++ "num_cpus",
++ "slab 0.4.2",
++ "tokio-executor",
+ ]
+ 
+ [[package]]
+ name = "tokio-timer"
+ version = "0.2.13"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "93044f2d313c95ff1cb7809ce9a7a05735b012288a888b62d4434fd58c94f296"
+ dependencies = [
+- "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crossbeam-utils 0.7.2",
++ "futures",
++ "slab 0.4.2",
++ "tokio-executor",
+ ]
+ 
+ [[package]]
+ name = "tokio-udp"
+ version = "0.1.6"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e2a0b10e610b39c38b031a2fcab08e4b82f16ece36504988dcbd81dbba650d82"
+ dependencies = [
+- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bytes",
++ "futures",
++ "log 0.4.11",
++ "mio",
++ "tokio-codec",
++ "tokio-io",
++ "tokio-reactor",
+ ]
+ 
+ [[package]]
+ name = "tokio-uds"
+ version = "0.2.7"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ab57a4ac4111c8c9dbcf70779f6fc8bc35ae4b2454809febac840ad19bd7e4e0"
+ dependencies = [
+- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)",
+- "mio-uds 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bytes",
++ "futures",
++ "iovec",
++ "libc",
++ "log 0.4.11",
++ "mio",
++ "mio-uds",
++ "tokio-codec",
++ "tokio-io",
++ "tokio-reactor",
+ ]
+ 
+ [[package]]
+ name = "try-lock"
+ version = "0.1.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ee2aa4715743892880f70885373966c83d73ef1b0838a664ef0c76fffd35e7c2"
+ 
+ [[package]]
+ name = "typenum"
+ version = "1.12.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33"
+ 
+ [[package]]
+ name = "unicase"
+ version = "2.6.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6"
+ dependencies = [
+- "version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "version_check",
+ ]
+ 
+ [[package]]
+ name = "unicode-bidi"
+ version = "0.3.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5"
+ dependencies = [
+- "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "matches",
+ ]
+ 
+ [[package]]
+ name = "unicode-normalization"
+ version = "0.1.13"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6fb19cf769fa8c6a80a162df694621ebeb4dafb606470b2b2fce0be40a98a977"
+ dependencies = [
+- "tinyvec 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tinyvec",
+ ]
+ 
+ [[package]]
+ name = "unicode-width"
+ version = "0.1.8"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3"
+ 
+ [[package]]
+ name = "unicode-xid"
+ version = "0.1.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
+ 
+ [[package]]
+ name = "unicode-xid"
+ version = "0.2.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564"
+ 
+ [[package]]
+ name = "url"
+ version = "1.7.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a"
+ dependencies = [
+- "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
+- "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "idna",
++ "matches",
++ "percent-encoding",
+ ]
+ 
+ [[package]]
+ name = "uuid"
+ version = "0.7.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a"
+ dependencies = [
+- "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand 0.6.5",
+ ]
+ 
+ [[package]]
+ name = "vergen"
+ version = "3.1.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4ce50d8996df1f85af15f2cd8d33daae6e479575123ef4314a51a70a230739cb"
+ dependencies = [
+- "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "chrono 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags 1.2.1",
++ "chrono",
+ ]
+ 
+ [[package]]
+ name = "version_check"
+ version = "0.9.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed"
+ 
+ [[package]]
+ name = "void"
+ version = "1.0.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
+ 
+ [[package]]
+ name = "vorbis"
+ version = "0.0.14"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5e8a194457075360557b82dac78f7ca2d65bbb6679bccfabae5f7c8c706cc776"
+ dependencies = [
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "ogg-sys 0.0.9 (registry+https://github.com/rust-lang/crates.io-index)",
+- "vorbis-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "vorbisfile-sys 0.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc",
++ "ogg-sys",
++ "vorbis-sys",
++ "vorbisfile-sys",
+ ]
+ 
+ [[package]]
+ name = "vorbis-sys"
+ version = "0.1.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3a0a8d7034313748da1d84b0adfa501f83f9ec83250f37fbacfa92a3580327c4"
+ dependencies = [
+- "gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "ogg-sys 0.0.9 (registry+https://github.com/rust-lang/crates.io-index)",
+- "pkg-config 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "gcc",
++ "libc",
++ "ogg-sys",
++ "pkg-config",
+ ]
+ 
+ [[package]]
+ name = "vorbisfile-sys"
+ version = "0.0.8"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4f4306d7e1ac4699b55e20de9483750b90c250913188efd7484db6bfbe9042d1"
+ dependencies = [
+- "gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "ogg-sys 0.0.9 (registry+https://github.com/rust-lang/crates.io-index)",
+- "pkg-config 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)",
+- "vorbis-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "gcc",
++ "libc",
++ "ogg-sys",
++ "pkg-config",
++ "vorbis-sys",
+ ]
+ 
+ [[package]]
+ name = "want"
+ version = "0.0.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a05d9d966753fa4b5c8db73fcab5eed4549cfe0e1e4e66911e5564a0085c35d1"
+ dependencies = [
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "try-lock 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures",
++ "log 0.4.11",
++ "try-lock",
+ ]
+ 
+ [[package]]
+ name = "wasi"
+ version = "0.9.0+wasi-snapshot-preview1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
+ 
+ [[package]]
+ name = "winapi"
+ version = "0.2.8"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
+ 
+ [[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 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi-i686-pc-windows-gnu",
++ "winapi-x86_64-pc-windows-gnu",
+ ]
+ 
+ [[package]]
+ name = "winapi-build"
+ version = "0.1.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
+ 
+ [[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-util"
+ version = "0.1.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+ dependencies = [
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.9",
+ ]
+ 
+ [[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 = "ws2_32-sys"
+ version = "0.2.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e"
+ dependencies = [
+- "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.2.8",
++ "winapi-build",
+ ]
+ 
+ [[package]]
+ name = "zerocopy"
+ version = "0.2.8"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "992b9b31f80fd4a167f903f879b8ca43d6716cc368ea01df90538baa2dd34056"
+ dependencies = [
+- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "zerocopy-derive 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "byteorder",
++ "zerocopy-derive",
+ ]
+ 
+ [[package]]
+ name = "zerocopy-derive"
+ version = "0.1.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b090467ecd0624026e8a6405d343ac7382592530d54881330b3fc8e400280fa5"
  dependencies = [
-  "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
-  "protobuf 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
+- "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)",
+- "synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)",
+-]
+-
+-[metadata]
+-"checksum aes 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "54eb1d8fe354e5fc611daf4f2ea97dd45a765f4f1e4512306ec183ae2e8f20c9"
+-"checksum aes-ctr 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d2e5b0458ea3beae0d1d8c0f3946564f8e10f90646cf78c06b4351052058d1ee"
+-"checksum aes-soft 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cfd7e7ae3f9a1fb5c03b389fc6bb9a51400d0c13053f0dca698c832bfd893a0d"
+-"checksum aesni 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2f70a6b5f971e473091ab7cfb5ffac6cde81666c4556751d8d5620ead8abf100"
+-"checksum alga 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4f823d037a7ec6ea2197046bafd4ae150e6bc36f9ca347404f46a46823fa84f2"
+-"checksum alsa 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b4a0d4ebc8b23041c5de9bc9aee13b4bad844a589479701f31a5934cfe4aeb32"
+-"checksum alsa-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b0edcbbf9ef68f15ae1b620f722180b82a98b6f0628d30baa6b8d2a5abc87d58"
+-"checksum approx 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f0e60b75072ecd4168020818c0107f2857bb6c4e64252d8d3983f6263b40a5c3"
+-"checksum arc-swap 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "4d25d88fd6b8041580a654f9d0c581a047baee2b3efee13275f2fc392fc75034"
+-"checksum atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
+-"checksum autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2"
+-"checksum autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d"
+-"checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e"
+-"checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643"
+-"checksum bindgen 0.53.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c72a978d268b1d70b0e963217e60fdabd9523a941457a6c42a7315d15c7e89e5"
+-"checksum bit-set 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6e11e16035ea35e4e5997b393eacbf6f63983188f7a2ad25bfb13465f5ad59de"
+-"checksum bit-vec 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5f0dc55f2d8a1a85650ac47858bb001b4c0dd73d79e3c455a842925e68d29cd3"
+-"checksum bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d"
+-"checksum bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5"
+-"checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
+-"checksum block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b"
+-"checksum block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1c924d49bd09e7c06003acda26cd9742e796e34282ec6c1189404dee0c1f4774"
+-"checksum block-modes 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "31aa8410095e39fdb732909fb5730a48d5bd7c2e3cd76bd1b07b3dbea130c529"
+-"checksum block-padding 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5"
+-"checksum byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7"
+-"checksum byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de"
+-"checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c"
+-"checksum cc 1.0.58 (registry+https://github.com/rust-lang/crates.io-index)" = "f9a06fb2e53271d7c279ec1efea6ab691c35a2ae67ec0d91d7acec0caf13b518"
+-"checksum cexpr 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f4aedb84272dbe89af497cf81375129abda4fc0a9e7c5d317498c15cc30c0d27"
+-"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
+-"checksum chrono 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)" = "c74d84029116787153e02106bf53e66828452a4b325cc8652b788b5967c0a0b6"
+-"checksum clang-sys 0.29.3 (registry+https://github.com/rust-lang/crates.io-index)" = "fe6837df1d5cba2397b835c8530f51723267e16abbf83892e9e5af4f0e5dd10a"
+-"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"
+-"checksum core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "716c271e8613ace48344f723b60b900a93150271e5be206212d052bbc0883efa"
+-"checksum coreaudio-rs 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f229761965dad3e9b11081668a6ea00f1def7aa46062321b5ec245b834f6e491"
+-"checksum coreaudio-sys 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d6570ee6e089131e928d5ec9236db9e818aa3cf850f48b0eec6ef700571271d4"
+-"checksum cpal 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d58ae1ed6536b1b233f5e3aeb6997a046ddb4d05e3f61701b58a92eb254a829e"
+-"checksum crossbeam-deque 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285"
+-"checksum crossbeam-epoch 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace"
+-"checksum crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b"
+-"checksum crossbeam-queue 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570"
+-"checksum crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6"
+-"checksum crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8"
+-"checksum crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5"
+-"checksum ctr 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "022cd691704491df67d25d006fe8eca083098253c4d43516c2206479c58c6736"
+-"checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5"
+-"checksum dns-sd 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d748509dea20228f63ba519bf142ce2593396386125b01f5b0d6412dab972087"
+-"checksum env_logger 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "aafcde04e90a5226a6443b7aabdb016ba2f8307c847d524724bd9b346dd1a2d3"
+-"checksum error-chain 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d371106cc88ffdfb1eabd7111e432da544f16f3e2d7bf1dfe8bf575f1df045cd"
+-"checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed"
+-"checksum fnv 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+-"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
+-"checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82"
+-"checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
+-"checksum futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)" = "1b980f2816d6ee8673b6517b52cb0e808a180efc92e5c19d02cdda79066703ef"
+-"checksum futures-channel 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f366ad74c28cca6ba456d95e6422883cfb4b252a83bed929c83abfdbbf2967d5"
+-"checksum futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "59f5fff90fd5d971f936ad674802482ba441b6f09ba5e15fd8b39145582ca399"
+-"checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4"
+-"checksum futures-executor 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "10d6bb888be1153d3abeb9006b11b02cf5e9b209fda28693c31ae1e4e012e314"
+-"checksum futures-macro 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d0b5a30a4328ab5473878237c447333c093297bded83a4983d10f4deea240d39"
+-"checksum futures-sink 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3f2032893cb734c7a05d85ce0cc8b8c4075278e93b24b66f9de99d6eb0fa8acc"
+-"checksum futures-task 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "bdb66b5f09e22019b1ab0830f7785bcea8e7a42148683f99214f73f8ec21a626"
+-"checksum futures-util 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "8764574ff08b701a084482c3c7031349104b07ac897393010494beaa18ce32c6"
+-"checksum gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)" = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2"
+-"checksum generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec"
+-"checksum getopts 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)" = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5"
+-"checksum getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb"
+-"checksum glib 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "40fb573a09841b6386ddf15fd4bc6655b4f5b106ca962f57ecaecde32a0061c0"
+-"checksum glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "95856f3802f446c05feffa5e24859fe6a183a7cb849c8449afc35c86b1e316e2"
+-"checksum glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
+-"checksum gobject-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31d1a804f62034eccf370006ccaef3708a71c31d561fee88564abe71177553d9"
+-"checksum gstreamer 0.15.7 (registry+https://github.com/rust-lang/crates.io-index)" = "ce8664a114cd6ec16bece783d5eee59496919915b1f6884400ba4a953274a163"
+-"checksum gstreamer-app 0.15.6 (registry+https://github.com/rust-lang/crates.io-index)" = "789784e8d42f5add1e1e965cf9f7e2d09e21dd0756bae6148f971db9a761d6a9"
+-"checksum gstreamer-app-sys 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bf869ce152c23bca5d761ab62146b47f750d0b28d4d499731857532897d48167"
+-"checksum gstreamer-base 0.15.4 (registry+https://github.com/rust-lang/crates.io-index)" = "42552f75cc6c260b0be180d5c955f4cd74bd170289c622404c25f1210b521c12"
+-"checksum gstreamer-base-sys 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ba384f52174b3c586593fca32642680a9e67961fea9f4cd8419f678965023bed"
+-"checksum gstreamer-sys 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1d18da01b97d0ab5896acd5151e4c155acefd0e6c03c3dd24dd133ba054053db"
+-"checksum hermit-abi 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "3deed196b6e7f9e44a2ae8d94225d80302d81208b1bb673fd21fe634645c85a9"
+-"checksum hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77"
+-"checksum hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695"
+-"checksum hostname 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867"
+-"checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9"
+-"checksum humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f"
+-"checksum hyper 0.11.27 (registry+https://github.com/rust-lang/crates.io-index)" = "34a590ca09d341e94cddf8e5af0bbccde205d5fbc2fa3c09dd67c7f85cea59d7"
+-"checksum hyper-proxy 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "44f0925de2747e481e6e477dd212c25e8f745567f02f6182e04d27b97c3fbece"
+-"checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e"
+-"checksum if-addrs 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "28538916eb3f3976311f5dfbe67b5362d0add1293d0a9cad17debf86f8e3aa48"
+-"checksum if-addrs-sys 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "de74b9dd780476e837e5eb5ab7c88b49ed304126e412030a0adba99c8efe79ea"
+-"checksum iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e"
+-"checksum itoa 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6"
+-"checksum jack 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1e15fc592e2e5a74a105ff507083c04db1aa20ba1b90d425362ba000e57422df"
+-"checksum jack-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c0d4ca501477fd3cd93a36df581046e5d6338ed826cf7e9b8d302603521e6cc3"
+-"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
+-"checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a"
+-"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+-"checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f"
+-"checksum lewton 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8d542c1a317036c45c2aa1cf10cc9d403ca91eb2d333ef1a4917e5cb10628bd0"
+-"checksum libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)" = "bd7d4bd64732af4bf3a67f367c27df8520ad7e230c5817b8ff485864d80242b9"
+-"checksum libloading 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "fd38073de8f7965d0c17d30546d4bb6da311ab428d1c7a3fc71dff7f9d4979b9"
+-"checksum libloading 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753"
+-"checksum libm 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702a"
+-"checksum libmdns 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "5d8582c174736c53633bc482ac709b24527c018356c3dc6d8e25a788b06b394e"
+-"checksum libpulse-sys 0.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9bb11b06faf883500c1b625cf4453e6c7737e9df9c7ba01df3f84b22b083e4ac"
+-"checksum librespot-tremor 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "97f525bff915d478a76940a7b988e5ea34911ba7280c97bd3a7673f54d68b4fe"
+-"checksum linear-map 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bfae20f6b19ad527b550c223fddc3077a547fc70cda94b9b566575423fd303ee"
+-"checksum lock_api 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75"
+-"checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b"
+-"checksum log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b"
+-"checksum match_cfg 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4"
+-"checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08"
+-"checksum matrixmultiply 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d4f7ec66360130972f34830bfad9ef05c6610a43938a467bcc9ab9369ab3478f"
+-"checksum maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00"
+-"checksum memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400"
+-"checksum memoffset 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c198b026e1bbf08a937e94c6c60f9ec4a2267f5b0d2eec9c1b21b061ce2be55f"
+-"checksum mime 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)" = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d"
+-"checksum mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)" = "fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430"
+-"checksum mio-named-pipes 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "0840c1c50fd55e521b247f949c241c9997709f23bd7f023b9762cd561e935656"
+-"checksum mio-uds 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)" = "afcb699eb26d4332647cc848492bbc15eafb26f08d0304550d5aa1f612e066f0"
+-"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919"
+-"checksum miow 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "07b88fb9795d4d36d62a012dfbf49a8f5cf12751f36d31a9dbe66d528e58979e"
+-"checksum muldiv 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0419348c027fa7be448d2ae7ea0e4e04c2334c31dc4e74ab29f00a2a7ca69204"
+-"checksum multimap 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d8883adfde9756c1d30b0f519c9b8c502a94b41ac62f696453c37c7fc0a958ce"
+-"checksum nalgebra 0.18.1 (registry+https://github.com/rust-lang/crates.io-index)" = "aaa9fddbc34c8c35dd2108515587b8ce0cab396f17977b8c738568e4edb521a2"
+-"checksum net2 0.2.34 (registry+https://github.com/rust-lang/crates.io-index)" = "2ba7c918ac76704fb42afcbbb43891e72731f3dcca3bef2a19786297baf14af7"
+-"checksum nix 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a2c5afeb0198ec7be8569d666644b574345aad2e95a53baf3a532da3e0f3fb32"
+-"checksum nom 5.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af"
+-"checksum num 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "4703ad64153382334aa8db57c637364c322d3372e097840c72000dabdcf6156e"
+-"checksum num-bigint 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304"
+-"checksum num-complex 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95"
+-"checksum num-integer 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "8d59457e662d541ba17869cf51cf177c0b5f0cbf476c66bdc90bf1edac4f875b"
+-"checksum num-iter 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e6b7c748f995c4c29c5f5ae0248536e04a5739927c74ec0fa564805094b9f"
+-"checksum num-rational 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef"
+-"checksum num-traits 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)" = "ac267bcc07f48ee5f8935ab0d24f316fb722d7a1292e2913f0cc196b29ffd611"
+-"checksum num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3"
+-"checksum ogg 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d79f1db9148be9d0e174bb3ac890f6030fcb1ed947267c5a91ee4c91b5a91e15"
+-"checksum ogg-sys 0.0.9 (registry+https://github.com/rust-lang/crates.io-index)" = "a95b8c172e17df1a41bf8d666301d3b2c4efeb90d9d0415e2a4dc0668b35fdb2"
+-"checksum once_cell 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0b631f7e854af39a1739f401cf34a8a013dfe09eac4fa4dba91e9768bd28168d"
+-"checksum opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c"
+-"checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252"
+-"checksum parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b"
+-"checksum paste 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "45ca20c77d80be666aef2b45486da86238fabe33e38306bd3118fe4af33fa880"
+-"checksum paste-impl 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "d95a7db200b97ef370c8e6de0088252f7e0dfff7d047a28528e47456c0fc98b6"
+-"checksum pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "006c038a43a45995a9670da19e67600114740e8511d4333bf97a56e66a7542d9"
+-"checksum peeking_take_while 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
+-"checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831"
+-"checksum pin-project 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)" = "12e3a6cdbfe94a5e4572812a0201f8c0ed98c1c452c7b8563ce2276988ef9c17"
+-"checksum pin-project-internal 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)" = "6a0ffd45cf79d88737d7cc85bfd5d2894bee1139b356e616fe85dc389c61aaf7"
+-"checksum pin-utils 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+-"checksum pkg-config 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)" = "d36492546b6af1463394d46f0c834346f31548646f6ba10849802c9c9a27ac33"
+-"checksum portaudio-rs 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "cdb6b5eff96ccc9bf44d34c379ab03ae944426d83d1694345bdf8159d561d562"
+-"checksum portaudio-sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5194a4fa953b4ffd851c320ef6f0484cd7278cb7169ea9d6c433e49b23f7b7f5"
+-"checksum ppv-lite86 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "237a5ed80e274dbc66f86bd59c1e25edc039660be53194b5fe0a482e0f2612ea"
+-"checksum proc-macro-hack 0.5.16 (registry+https://github.com/rust-lang/crates.io-index)" = "7e0456befd48169b9f13ef0f0ad46d492cf9d2dbb918bcf38e01eed4ce3ec5e4"
+-"checksum proc-macro-nested 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "eba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5a"
+-"checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759"
+-"checksum proc-macro2 1.0.19 (registry+https://github.com/rust-lang/crates.io-index)" = "04f5f085b5d71e2188cb8271e5da0161ad52c3f227a661a3c135fdf28e258b12"
+-"checksum protobuf 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8e86d370532557ae7573551a1ec8235a0f8d6cb276c7c9e6aa490b511c447485"
+-"checksum protobuf-codegen 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "de113bba758ccf2c1ef816b127c958001b7831136c9bc3f8e9ec695ac4e82b0c"
+-"checksum protobuf-codegen-pure 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d1a4febc73bf0cada1d77c459a0c8e5973179f1cfd5b0f1ab789d45b17b6440"
+-"checksum quick-error 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
+-"checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1"
+-"checksum quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37"
+-"checksum rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)" = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c"
+-"checksum rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293"
+-"checksum rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9"
+-"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca"
+-"checksum rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
+-"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef"
+-"checksum rand_chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
+-"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"
+-"checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc"
+-"checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
+-"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4"
+-"checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
+-"checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08"
+-"checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b"
+-"checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071"
+-"checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44"
+-"checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c"
+-"checksum rawpointer 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
+-"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"
+-"checksum redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)" = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce"
+-"checksum regex 1.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "9c3780fcf44b193bc4d09f36d2a3c87b251da4a046c87795a0d35f4f927ad8e6"
+-"checksum regex-syntax 0.6.18 (registry+https://github.com/rust-lang/crates.io-index)" = "26412eb97c6b088a6997e05f69403a802a92d520de2f8e63c2b65f9e0f47c4e8"
+-"checksum relay 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1576e382688d7e9deecea24417e350d3062d97e32e45d70b1cde65994ff1489a"
+-"checksum remove_dir_all 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
+-"checksum rodio 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5d0f961b254e66d147a7b550c78b01308934c97d807a34b417fd0f5a0a0f3a2d"
+-"checksum rpassword 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c34fa7bcae7fca3c8471e8417088bbc3ad9af8066b0ecf4f3c0d98a0d772716e"
+-"checksum rustc-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
+-"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
+-"checksum ryu 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e"
+-"checksum safemem 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072"
+-"checksum scoped-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "332ffa32bf586782a3efaeb58f127980944bbc8c4d6913a86107ac2a5ab24b28"
+-"checksum scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+-"checksum sdl2 0.32.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d051a07231e303f5f719da78cb6f7394f6d5b54f733aef5b0b447804a83edd7b"
+-"checksum sdl2-sys 0.32.6 (registry+https://github.com/rust-lang/crates.io-index)" = "34e71125077d297d57e4c1acfe8981b5bdfbf5a20e7b589abfdcb33bf1127f86"
+-"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
+-"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
+-"checksum serde 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)" = "5317f7588f0a5078ee60ef675ef96735a1442132dc645eb1d12c018620ed8cd3"
+-"checksum serde_derive 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)" = "2a0be94b04690fbaed37cddffc5c134bf537c8e3329d53e982fe04c374978f8e"
+-"checksum serde_json 1.0.56 (registry+https://github.com/rust-lang/crates.io-index)" = "3433e879a558dde8b5e8feb2a04899cf34fdde1fafb894687e52105fc1162ac3"
+-"checksum sha-1 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df"
+-"checksum sha2 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69"
+-"checksum shannon 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7ea5b41c9427b56caa7b808cb548a04fb50bb5b9e98590b53f28064ff4174561"
+-"checksum shell-words 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "39acde55a154c4cd3ae048ac78cc21c25f3a0145e44111b523279113dce0d94a"
+-"checksum shlex 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2"
+-"checksum signal-hook-registry 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94f478ede9f64724c5d173d7bb56099ec3e2d9fc2774aac65d34b8b890405f41"
+-"checksum slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "17b4fcaed89ab08ef143da37bc52adbcc04d4a69014f4c1208d6b51f0c47bc23"
+-"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8"
+-"checksum smallvec 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4c8cbcd6df1e117c2210e13ab5109635ad68a929fcbb8964dc965b76cb5ee013"
+-"checksum smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6"
+-"checksum socket2 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)" = "03088793f677dce356f3ccc2edb1b314ad191ab702a5de3faf49304f7e104918"
+-"checksum stdweb 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ef5430c8e36b713e13b48a9f709cc21e046723fe44ce34587b73a830203b533e"
+-"checksum stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8131256a5896cabcf5eb04f4d6dacbe1aefda854b0d9896e09cb58829ec5638c"
+-"checksum subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee"
+-"checksum syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)" = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5"
+-"checksum syn 1.0.35 (registry+https://github.com/rust-lang/crates.io-index)" = "fb7f4c519df8c117855e19dd8cc851e89eb746fe7a73f0157e0d95fdec5369b0"
+-"checksum synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "02353edf96d6e4dc81aea2d8490a7e9db177bf8acb0e951c24940bf866cb313f"
+-"checksum take 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b157868d8ac1f56b64604539990685fa7611d8fa9e5476cf0c02cf34d32917c5"
+-"checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9"
+-"checksum termcolor 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb6bfa289a4d7c5766392812c0a1f4c1ba45afa1ad47803c11e1f407d846d75f"
+-"checksum time 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438"
+-"checksum tinyvec 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "53953d2d3a5ad81d9f844a32f14ebb121f50b650cd59d0ee2a07cf13c617efed"
+-"checksum tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)" = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6"
+-"checksum tokio-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "25b2998660ba0e70d18684de5d06b70b70a3a747469af9dea7618cc59e75976b"
+-"checksum tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "aeeffbbb94209023feaef3c196a41cbcdafa06b4a6f893f68779bb5e53796f71"
+-"checksum tokio-current-thread 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "b1de0e32a83f131e002238d7ccde18211c0a5397f60cbfffcb112868c2e0e20e"
+-"checksum tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "fb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671"
+-"checksum tokio-fs 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "297a1206e0ca6302a0eed35b700d292b275256f596e2f3fea7729d5e629b6ff4"
+-"checksum tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674"
+-"checksum tokio-process 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "382d90f43fa31caebe5d3bc6cfd854963394fff3b8cb59d5146607aaae7e7e43"
+-"checksum tokio-proto 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fbb47ae81353c63c487030659494b295f6cb6576242f907f203473b191b0389"
+-"checksum tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351"
+-"checksum tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "24da22d077e0f15f55162bdbdc661228c1581892f52074fb242678d015b45162"
+-"checksum tokio-signal 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)" = "d0c34c6e548f101053321cba3da7cbb87a610b85555884c41b07da2eb91aff12"
+-"checksum tokio-sync 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "edfe50152bc8164fcc456dab7891fa9bf8beaf01c5ee7e1dd43a397c3cf87dee"
+-"checksum tokio-tcp 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "98df18ed66e3b72e742f185882a9e201892407957e45fbff8da17ae7a7c51f72"
+-"checksum tokio-threadpool 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "df720b6581784c118f0eb4310796b12b1d242a7eb95f716a8367855325c25f89"
+-"checksum tokio-timer 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "93044f2d313c95ff1cb7809ce9a7a05735b012288a888b62d4434fd58c94f296"
+-"checksum tokio-udp 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "e2a0b10e610b39c38b031a2fcab08e4b82f16ece36504988dcbd81dbba650d82"
+-"checksum tokio-uds 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "ab57a4ac4111c8c9dbcf70779f6fc8bc35ae4b2454809febac840ad19bd7e4e0"
+-"checksum try-lock 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee2aa4715743892880f70885373966c83d73ef1b0838a664ef0c76fffd35e7c2"
+-"checksum typenum 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33"
+-"checksum unicase 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6"
+-"checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5"
+-"checksum unicode-normalization 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6fb19cf769fa8c6a80a162df694621ebeb4dafb606470b2b2fce0be40a98a977"
+-"checksum unicode-width 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3"
+-"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
+-"checksum unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564"
+-"checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a"
+-"checksum uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a"
+-"checksum vergen 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4ce50d8996df1f85af15f2cd8d33daae6e479575123ef4314a51a70a230739cb"
+-"checksum version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed"
+-"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
+-"checksum vorbis 0.0.14 (registry+https://github.com/rust-lang/crates.io-index)" = "5e8a194457075360557b82dac78f7ca2d65bbb6679bccfabae5f7c8c706cc776"
+-"checksum vorbis-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3a0a8d7034313748da1d84b0adfa501f83f9ec83250f37fbacfa92a3580327c4"
+-"checksum vorbisfile-sys 0.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "4f4306d7e1ac4699b55e20de9483750b90c250913188efd7484db6bfbe9042d1"
+-"checksum want 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a05d9d966753fa4b5c8db73fcab5eed4549cfe0e1e4e66911e5564a0085c35d1"
+-"checksum wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)" = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
+-"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
+-"checksum winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+-"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
+-"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+-"checksum winapi-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+-"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+-"checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e"
+-"checksum zerocopy 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "992b9b31f80fd4a167f903f879b8ca43d6716cc368ea01df90538baa2dd34056"
+-"checksum zerocopy-derive 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b090467ecd0624026e8a6405d343ac7382592530d54881330b3fc8e400280fa5"
++ "proc-macro2 0.4.30",
++ "syn 0.15.44",
++ "synstructure",
++]
diff --git a/pkgs/applications/audio/librespot/default.nix b/pkgs/applications/audio/librespot/default.nix
index 6061edac025..61f709b33e1 100644
--- a/pkgs/applications/audio/librespot/default.nix
+++ b/pkgs/applications/audio/librespot/default.nix
@@ -1,23 +1,22 @@
-{ stdenv, fetchFromGitHub, rustPlatform, pkgconfig, openssl, withRodio ? true
-, withALSA ? true, alsaLib ? null, withPulseAudio ? false, libpulseaudio ? null
+{ lib, fetchFromGitHub, rustPlatform, pkg-config, openssl, withRodio ? true
+, withALSA ? true, alsa-lib ? null, withPulseAudio ? false, libpulseaudio ? null
 , withPortAudio ? false, portaudio ? null }:
 
 rustPlatform.buildRustPackage rec {
   pname = "librespot";
-  version = "0.1.3";
+  version = "0.1.6";
 
   src = fetchFromGitHub {
     owner = "librespot-org";
     repo = "librespot";
     rev = "v${version}";
-    sha256 = "1ixh47yvaamrpzagqsiimc3y6bi4nbym95843d23am55zkrgnmy5";
+    sha256 = "153i9n3qwmmwc29f62cz8nbqrlry16iygvibm1sdnvpf0s6wk5f3";
   };
 
-  cargoSha256 = "1csls8kzzx28ng6w9vdwhnnav5sqp2m5fj430db5z306xh5acg3d";
-
   cargoPatches = [ ./cargo-lock.patch ];
+  cargoSha256 = "11d64rpq4b5rdxk5wx0hhzgc6mvs6h2br0w3kfncfklp67vn3v4v";
 
-  cargoBuildFlags = with stdenv.lib; [
+  cargoBuildFlags = with lib; [
     "--no-default-features"
     "--features"
     (concatStringsSep "," (filter (x: x != "") [
@@ -29,15 +28,15 @@ rustPlatform.buildRustPackage rec {
     ]))
   ];
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
 
-  buildInputs = [ openssl ] ++ stdenv.lib.optional withALSA alsaLib
-    ++ stdenv.lib.optional withPulseAudio libpulseaudio
-    ++ stdenv.lib.optional withPortAudio portaudio;
+  buildInputs = [ openssl ] ++ lib.optional withALSA alsa-lib
+    ++ lib.optional withPulseAudio libpulseaudio
+    ++ lib.optional withPortAudio portaudio;
 
   doCheck = false;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Open Source Spotify client library and playback daemon";
     homepage = "https://github.com/librespot-org/librespot";
     license = with licenses; [ mit ];
diff --git a/pkgs/applications/audio/lingot/default.nix b/pkgs/applications/audio/lingot/default.nix
index 256f5766c41..22cab165ccf 100644
--- a/pkgs/applications/audio/lingot/default.nix
+++ b/pkgs/applications/audio/lingot/default.nix
@@ -1,12 +1,14 @@
-{ stdenv
+{ lib, stdenv
 , fetchurl
 , pkg-config
 , intltool
 , gtk3
 , wrapGAppsHook
-, alsaLib
+, alsa-lib
+, libjack2
 , libpulseaudio
 , fftw
+, jackSupport ? true
 }:
 
 stdenv.mkDerivation rec {
@@ -26,20 +28,18 @@ stdenv.mkDerivation rec {
 
   buildInputs = [
     gtk3
-    alsaLib
+    alsa-lib
     libpulseaudio
     fftw
-  ];
+  ] ++ lib.optional jackSupport libjack2;
 
-  configureFlags = [
-    "--disable-jack"
-  ];
+  configureFlags = lib.optional (!jackSupport) "--disable-jack";
 
   meta = {
     description = "Not a Guitar-Only tuner";
     homepage = "https://www.nongnu.org/lingot/";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = with stdenv.lib.platforms; linux;
-    maintainers = with stdenv.lib.maintainers; [ viric ];
+    license = lib.licenses.gpl2Plus;
+    platforms = with lib.platforms; linux;
+    maintainers = with lib.maintainers; [ viric ];
   };
 }
diff --git a/pkgs/applications/audio/linuxband/default.nix b/pkgs/applications/audio/linuxband/default.nix
index cd9ca5e2674..ec034ae238d 100644
--- a/pkgs/applications/audio/linuxband/default.nix
+++ b/pkgs/applications/audio/linuxband/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, makeWrapper, pkgconfig, MMA, libjack2, libsmf, python2Packages }:
+{ lib, stdenv, fetchurl, makeWrapper, pkg-config, MMA, libjack2, libsmf, python2Packages }:
 
 let
   inherit (python2Packages) pyGtkGlade pygtksourceview python;
@@ -7,12 +7,12 @@ in stdenv.mkDerivation rec {
   pname = "linuxband";
 
   src = fetchurl {
-    url = "http://linuxband.org/assets/sources/${pname}-${version}.tar.gz";
+    url = "https://linuxband.org/assets/sources/${pname}-${version}.tar.gz";
     sha256 = "1r71h4yg775m4gax4irrvygmrsclgn503ykmc2qwjsxa42ri4n2n";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ makeWrapper MMA libjack2 libsmf python pyGtkGlade pygtksourceview ];
+  nativeBuildInputs = [ pkg-config makeWrapper ];
+  buildInputs = [ MMA libjack2 libsmf python pyGtkGlade pygtksourceview ];
 
   patchPhase = ''
     sed -i 's@/usr/@${MMA}/@g' src/main/config/linuxband.rc.in
@@ -29,9 +29,9 @@ in stdenv.mkDerivation rec {
 
   meta = {
     description = "A GUI front-end for MMA: Type in the chords, choose the groove and it will play an accompaniment";
-    homepage = "http://linuxband.org/";
-    license = stdenv.lib.licenses.gpl2;
-    maintainers = [ stdenv.lib.maintainers.magnetophon ];
-    platforms = stdenv.lib.platforms.linux;
+    homepage = "https://linuxband.org/";
+    license = lib.licenses.gpl2;
+    maintainers = [ lib.maintainers.magnetophon ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/linuxsampler/default.nix b/pkgs/applications/audio/linuxsampler/default.nix
index 6b6cfd55926..1c33bff5b76 100644
--- a/pkgs/applications/audio/linuxsampler/default.nix
+++ b/pkgs/applications/audio/linuxsampler/default.nix
@@ -1,26 +1,26 @@
-{ stdenv, fetchurl, autoconf, automake, bison, libtool, pkgconfig, which
-, alsaLib, asio, libjack2, libgig, libsndfile, lv2 }:
+{ lib, stdenv, fetchurl, autoconf, automake, bison, libtool, pkg-config, which
+, alsa-lib, asio, libjack2, libgig, libsndfile, lv2 }:
 
 stdenv.mkDerivation rec {
   pname = "linuxsampler";
-  version = "2.1.1";
+  version = "2.2.0";
 
   src = fetchurl {
     url = "https://download.linuxsampler.org/packages/${pname}-${version}.tar.bz2";
-    sha256 = "1gijf50x5xbpya5dj3v2mzj7azx4qk9p012csgddp73f0qi0n190";
+    sha256 = "sha256-xNFjxrrC0B8Oj10HIQ1AmI7pO34HuYRyyUaoB2MDmYw=";
   };
 
   preConfigure = ''
     make -f Makefile.svn
   '';
 
-  nativeBuildInputs = [ autoconf automake bison libtool pkgconfig which ];
+  nativeBuildInputs = [ autoconf automake bison libtool pkg-config which ];
 
-  buildInputs = [ alsaLib asio libjack2 libgig libsndfile lv2 ];
+  buildInputs = [ alsa-lib asio libjack2 libgig libsndfile lv2 ];
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://www.linuxsampler.org";
     description = "Sampler backend";
     longDescription = ''
diff --git a/pkgs/applications/audio/littlegptracker/0001-Remove-coherency-checks.patch b/pkgs/applications/audio/littlegptracker/0001-Remove-coherency-checks.patch
new file mode 100644
index 00000000000..3cabd2a2c56
--- /dev/null
+++ b/pkgs/applications/audio/littlegptracker/0001-Remove-coherency-checks.patch
@@ -0,0 +1,52 @@
+From 2e1e9b3ffce9d1069fca0b27b8011f85c7547c3b Mon Sep 17 00:00:00 2001
+From: Francesco Gazzetta <fgaz@fgaz.me>
+Date: Wed, 19 Aug 2020 15:06:19 +0200
+Subject: [PATCH 1/2] Remove coherency checks >:)
+
+As far as I can see, they are just to make sure that the types can fit
+in the word length, but this check was written when 64 bits weren't a
+possibility and didn't take that into account,
+so although the types do fit, the checks fail.
+Indeed, the program seems to work well on 64 bits.
+More info here:
+https://github.com/Mdashdotdashn/LittleGPTracker/issues/4
+---
+ sources/Externals/Soundfont/DATATYPE.H | 22 ----------------------
+ 1 file changed, 22 deletions(-)
+
+diff --git a/sources/Externals/Soundfont/DATATYPE.H b/sources/Externals/Soundfont/DATATYPE.H
+index 762a724..f6b031f 100644
+--- a/sources/Externals/Soundfont/DATATYPE.H
++++ b/sources/Externals/Soundfont/DATATYPE.H
+@@ -123,28 +123,6 @@ typedef short               SHORT;     /* 16 bit signed value was: INT */
+ ********************************************************************/
+ typedef unsigned short        EMUSTAT;
+ 
+-/********************************************************************
+-* Compare <limits.h> values with SoundFont Enabler limits.  Fail compile
+-* if discrepency. If compile fails due to one of these errors, then
+-* the SoundFont enabler will not work with your system or the state of your
+-* development environment.
+-********************************************************************/
+-#if (SCHAR_MAX != CHAR_MAXVAL) || (UCHAR_MAX != BYTE_MAXVAL)
+-  #error <datatype.h>: char is out of range!
+-#endif
+-
+-#if (SHRT_MAX != SHRT_MAXVAL)
+-  #error <datatype.h>: short is out of range!
+-#endif
+-
+-#if (LONG_MAX != LONG_MAXVAL)
+-  #error <datatype.h>: long is out of range!
+-#endif
+-
+-#if (ULONG_MAX != DWORD_MAXVAL)
+-  #error <datatype.h>: unsigned long is out of range!
+-#endif
+-
+ #ifdef __BYTE_COHERENT
+ 
+ /********************************************************************
+-- 
+2.25.4
+
diff --git a/pkgs/applications/audio/littlegptracker/default.nix b/pkgs/applications/audio/littlegptracker/default.nix
new file mode 100644
index 00000000000..4d7d70aebd6
--- /dev/null
+++ b/pkgs/applications/audio/littlegptracker/default.nix
@@ -0,0 +1,74 @@
+{ lib, stdenv
+, fetchFromGitHub
+, unstableGitUpdater
+, SDL
+, jack2
+, Foundation
+}:
+
+stdenv.mkDerivation rec {
+  pname = "littlegptracker";
+  version = "unstable-2020-11-26";
+
+  src = fetchFromGitHub {
+    owner = "Mdashdotdashn";
+    repo = "littlegptracker";
+    rev = "4aca8cd765e1ad586da62decd019e66cb64b45b8";
+    sha256 = "0f2ip8z5wxk8fvlw47mczsbcrzh4nh1hgw1fwf5gjrqnzm8v111x";
+  };
+
+  buildInputs = [
+    SDL
+  ]
+  ++ lib.optional stdenv.isDarwin Foundation
+  ++ lib.optional stdenv.isLinux jack2;
+
+  patches = [
+    # Remove outdated (pre-64bit) checks that would fail on modern platforms
+    # (see description in patch file)
+    ./0001-Remove-coherency-checks.patch
+  ];
+
+  preBuild = "cd projects";
+
+  makeFlags = [ "CXX=${stdenv.cc.targetPrefix}c++" ]
+    ++ lib.optionals stdenv.isLinux  [ "PLATFORM=DEB" ]
+    ++ lib.optionals stdenv.isDarwin [ "PLATFORM=OSX" ];
+
+  NIX_CFLAGS_COMPILE = [ "-fpermissive" ] ++
+    lib.optional stdenv.hostPlatform.isAarch64 "-Wno-error=narrowing";
+
+  NIX_LDFLAGS = lib.optional stdenv.isDarwin "-framework Foundation";
+
+  installPhase = let extension = if stdenv.isDarwin then "app" else "deb-exe";
+    in "install -Dm555 lgpt.${extension} $out/bin/lgpt";
+
+  passthru.updateScript = unstableGitUpdater {
+    url = "https://github.com/Mdashdotdashn/littlegptracker.git";
+  };
+
+  meta = with lib; {
+    description = "A music tracker similar to lsdj optimised to run on portable game consoles";
+    longDescription = ''
+      LittleGPTracker (a.k.a 'The piggy', 'lgpt') is a music tracker optimised
+      to run on portable game consoles. It is currently running on Game Park's
+      GP2x & Caanoo, PSP, Dingoo, Windows, Mac OSX (intel/ppc) & Linux (Debian).
+
+      It implements the user interface of littlesounddj, a very famous tracker
+      for the Gameboy platform that has been tried and tested by many users over
+      the years, leading to a little complex but yet extremely efficent way of
+      working.
+
+      Piggy currently supports 8 monophonic 16Bit/44.1Khz stereo sample playback
+      channels. Additionally, the program can drive MIDI instruments (with the
+      gp32 and gp2x a custom MIDI interface is required).
+    '';
+    homepage = "http://www.littlegptracker.com/";
+    downloadPage = "http://www.littlegptracker.com/download.php";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ fgaz ];
+    platforms = platforms.all;
+    # https://github.com/NixOS/nixpkgs/pull/91766#issuecomment-688751821
+    broken = stdenv.isDarwin;
+  };
+}
diff --git a/pkgs/applications/audio/lmms/default.nix b/pkgs/applications/audio/lmms/default.nix
index b01c4055e40..f791ad51bf9 100644
--- a/pkgs/applications/audio/lmms/default.nix
+++ b/pkgs/applications/audio/lmms/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, cmake, pkgconfig, alsaLib ? null, fftwFloat, fltk13
+{ lib, fetchFromGitHub, cmake, pkg-config, alsa-lib ? null, fftwFloat, fltk13
 , fluidsynth_1 ? null, lame ? null, libgig ? null, libjack2 ? null, libpulseaudio ? null
 , libsamplerate, libsoundio ? null, libsndfile, libvorbis ? null, portaudio ? null
 , qtbase, qtx11extras, qttools, SDL ? null, mkDerivation }:
@@ -15,10 +15,10 @@ mkDerivation rec {
     fetchSubmodules = true;
   };
 
-  nativeBuildInputs = [ cmake qttools pkgconfig ];
+  nativeBuildInputs = [ cmake qttools pkg-config ];
 
   buildInputs = [
-    alsaLib
+    alsa-lib
     fftwFloat
     fltk13
     fluidsynth_1
@@ -37,9 +37,8 @@ mkDerivation rec {
   ];
 
   cmakeFlags = [ "-DWANT_QT5=ON" ];
-  enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "DAW similar to FL Studio (music production software)";
     homepage = "https://lmms.io";
     license = licenses.gpl2Plus;
diff --git a/pkgs/applications/audio/lollypop/default.nix b/pkgs/applications/audio/lollypop/default.nix
index f325185920d..860a621847d 100644
--- a/pkgs/applications/audio/lollypop/default.nix
+++ b/pkgs/applications/audio/lollypop/default.nix
@@ -3,10 +3,11 @@
 , nix-update-script
 , meson
 , ninja
-, pkgconfig
+, pkg-config
 , python3
 , gtk3
 , gst_all_1
+, libhandy
 , libsecret
 , libsoup
 , appstream-glib
@@ -24,7 +25,7 @@
 
 python3.pkgs.buildPythonApplication rec  {
   pname = "lollypop";
-  version = "1.3.2";
+  version = "1.4.17";
 
   format = "other";
   doCheck = false;
@@ -33,7 +34,7 @@ python3.pkgs.buildPythonApplication rec  {
     url = "https://gitlab.gnome.org/World/lollypop";
     rev = "refs/tags/${version}";
     fetchSubmodules = true;
-    sha256 = "14854j1dhq67s1vzs0lqy345vbl6f5w8nb36n4i33fmpva2flsk3";
+    sha256 = "sha256-GrznUXIYUTYOKQ1znsCqmBdm5YImCABMK2NGRtx5fSk=";
   };
 
   nativeBuildInputs = [
@@ -42,7 +43,7 @@ python3.pkgs.buildPythonApplication rec  {
     gobject-introspection
     meson
     ninja
-    pkgconfig
+    pkg-config
     wrapGAppsHook
   ];
 
@@ -57,6 +58,7 @@ python3.pkgs.buildPythonApplication rec  {
     gst-plugins-ugly
     gstreamer
     gtk3
+    libhandy
     libsoup
     pango
     totem-pl-parser
@@ -104,7 +106,7 @@ python3.pkgs.buildPythonApplication rec  {
     description = "A modern music player for GNOME";
     homepage = "https://wiki.gnome.org/Apps/Lollypop";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ worldofpeace ];
+    maintainers = with maintainers; [ lovesegfault ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/lsp-plugins/default.nix b/pkgs/applications/audio/lsp-plugins/default.nix
index fadc7e8f184..2bf47786ef5 100644
--- a/pkgs/applications/audio/lsp-plugins/default.nix
+++ b/pkgs/applications/audio/lsp-plugins/default.nix
@@ -1,24 +1,24 @@
-{ stdenv, fetchFromGitHub, pkgconfig, makeWrapper
-, libsndfile, jack2Full
+{ lib, stdenv, fetchFromGitHub, pkg-config, makeWrapper
+, libsndfile, jack2
 , libGLU, libGL, lv2, cairo
 , ladspaH, php }:
 
 stdenv.mkDerivation rec {
   pname = "lsp-plugins";
-  version = "1.1.24";
+  version = "1.1.30";
 
   src = fetchFromGitHub {
     owner = "sadko4u";
     repo = pname;
-    rev = "${pname}-${version}";
-    sha256 = "0rzgzkg6wvhjcf664i16nz4v30drgv80s34bhdflcjzx2x7ix5zk";
+    rev = version;
+    sha256 = "0g0nx05dyjwz2149v3pj6sa9divr26jyqvg2kk1qk48s2n4najkz";
   };
 
-  nativeBuildInputs = [ pkgconfig php makeWrapper ];
-  buildInputs = [ jack2Full libsndfile libGLU libGL lv2 cairo ladspaH ];
+  nativeBuildInputs = [ pkg-config php makeWrapper ];
+  buildInputs = [ jack2 libsndfile libGLU libGL lv2 cairo ladspaH ];
 
   makeFlags = [
-    "PREFIX=${placeholder ''out''}"
+    "PREFIX=${placeholder "out"}"
     "ETC_PATH=$(out)/etc"
   ];
 
@@ -36,7 +36,9 @@ stdenv.mkDerivation rec {
 
   buildFlags = [ "release" ];
 
-  meta = with stdenv.lib;
+  enableParallelBuilding = true;
+
+  meta = with lib;
     { description = "Collection of open-source audio plugins";
       longDescription = ''
         Compatible with follwing formats:
@@ -58,6 +60,10 @@ stdenv.mkDerivation rec {
         - Expander MidSide - Expander MidSide
         - Expander Mono - Expander Mono
         - Expander Stereo - Expander Stereo
+        - Crossover LeftRight x8 - Frequenzweiche LeftRight x8
+        - Crossover MidSide x8 - Frequenzweiche MidSide x8
+        - Crossover Mono x8 - Frequenzweiche Mono x8
+        - Crossover Stereo x8 - Frequenzweiche Stereo x8
         - Gate LeftRight - Gate LeftRight
         - Gate MidSide - Gate MidSide
         - Gate Mono - Gate Mono
@@ -80,11 +86,26 @@ stdenv.mkDerivation rec {
         - Compressor MidSide - Kompressor MidSide
         - Compressor Mono - Kompressor Mono
         - Compressor Stereo - Kompressor Stereo
+        - Artistic Delay Mono - Künstlerische Verzögerung
+        - Artistic Delay Stereo - Künstlerische Verzögerung
         - Latency Meter - Latenzmessgerät
+        - Loudness Compensator Mono - Lautstärke Kompensator Mono
+        - Loudness Compensator Stereo - Lautstärke Kompensator Stereo
+        - Multiband Expander LeftRight x8 - Multi-band Expander LeftRight x8
+        - Multiband Expander MidSide x8 - Multi-band Expander MidSide x8
+        - Multiband Expander Mono x8 - Multi-band Expander Mono x8
+        - Multiband Expander Stereo x8 - Multi-band Expander Stereo x8
+        - Multiband Gate LeftRight x8 - Multi-band Gate LeftRight x8
+        - Multiband Gate MidSide x8 - Multi-band Gate MidSide x8
+        - Multiband Gate Mono x8 - Multi-band Gate Mono x8
+        - Multiband Gate Stereo x8 - Multi-band Gate Stereo x8
         - Multiband Compressor LeftRight x8 - Multi-band Kompressor LeftRight x8
         - Multiband Compressor MidSide x8 - Multi-band Kompressor MidSide x8
         - Multiband Compressor Mono x8 - Multi-band Kompressor Mono x8
         - Multiband Compressor Stereo x8 - Multi-band Kompressor Stereo x8
+        - Oscilloscope x1 - Oscilloscope x1
+        - Oscilloscope x2 - Oscilloscope x2
+        - Oscilloscope x4 - Oscilloscope x4
         - Oscillator Mono - Oszillator Mono
         - Parametric Equalizer x16 LeftRight - Parametrischer Entzerrer x16 LeftRight
         - Parametric Equalizer x16 MidSide - Parametrischer Entzerrer x16 MidSide
@@ -96,12 +117,23 @@ stdenv.mkDerivation rec {
         - Parametric Equalizer x32 Stereo - Parametrischer Entzerrer x32 Stereo
         - Phase Detector - Phasendetektor
         - Profiler Mono - Profiler Mono
+        - Profiler Stereo - Profiler Stereo
+        - Room Builder Mono - Raumbaumeister Mono
+        - Room Builder Stereo - Raumbaumeister Stereo
         - Multi-Sampler x12 DirectOut - Schlagzeug x12 Direktausgabe
         - Multi-Sampler x12 Stereo - Schlagzeug x12 Stereo
         - Multi-Sampler x24 DirectOut - Schlagzeug x24 Direktausgabe
         - Multi-Sampler x24 Stereo - Schlagzeug x24 Stereo
         - Multi-Sampler x48 DirectOut - Schlagzeug x48 Direktausgabe
         - Multi-Sampler x48 Stereo - Schlagzeug x48 Stereo
+        - Sidechain Multiband Expander LeftRight x8 - Sidechain Multi-band Expander LeftRight x8
+        - Sidechain Multiband Expander MidSide x8 - Sidechain Multi-band Expander MidSide x8
+        - Sidechain Multiband Expander Mono x8 - Sidechain Multi-band Expander Mono x8
+        - Sidechain Multiband Expander Stereo x8 - Sidechain Multi-band Expander Stereo x8
+        - Sidechain Multiband Gate LeftRight x8 - Sidechain Multi-band Gate LeftRight x8
+        - Sidechain Multiband Gate MidSide x8 - Sidechain Multi-band Gate MidSide x8
+        - Sidechain Multiband Gate Mono x8 - Sidechain Multi-band Gate Mono x8
+        - Sidechain Multiband Gate Stereo x8 - Sidechain Multi-band Gate Stereo x8
         - Sidechain Multiband Compressor LeftRight x8 - Sidechain Multi-band Kompressor LeftRight x8
         - Sidechain Multiband Compressor MidSide x8 - Sidechain Multi-band Kompressor MidSide x8
         - Sidechain Multiband Compressor Mono x8 - Sidechain Multi-band Kompressor Mono x8
@@ -132,6 +164,8 @@ stdenv.mkDerivation rec {
         - Spectrum Analyzer x2 - Spektrumanalysator x2
         - Spectrum Analyzer x4 - Spektrumanalysator x4
         - Spectrum Analyzer x8 - Spektrumanalysator x8
+        - Surge Filter Mono - Sprungfilter Mono
+        - Surge Filter Stereo - Sprungfilter Stereo
         - Trigger MIDI Mono - Triggersensor MIDI Mono
         - Trigger MIDI Stereo - Triggersensor MIDI Stereo
         - Trigger Mono - Triggersensor Mono
diff --git a/pkgs/applications/audio/ltc-tools/default.nix b/pkgs/applications/audio/ltc-tools/default.nix
index c986e3af288..c8c87959727 100644
--- a/pkgs/applications/audio/ltc-tools/default.nix
+++ b/pkgs/applications/audio/ltc-tools/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchFromGitHub, pkgconfig, libltc, libsndfile, jack2}:
+{lib, stdenv, fetchFromGitHub, pkg-config, libltc, libsndfile, jack2}:
 
 stdenv.mkDerivation rec {
   pname = "ltc-tools";
@@ -11,11 +11,11 @@ stdenv.mkDerivation rec {
     sha256 = "0vp25b970r1hv5ndzs4di63rgwnl31jfaj3jz5dka276kx34q4al";
   };
 
-  buildInputs = [ pkgconfig libltc libsndfile jack2 ];
+  buildInputs = [ pkg-config libltc libsndfile jack2 ];
 
   makeFlags = [ "PREFIX=$(out)" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/x42/ltc-tools";
     description = "Tools to deal with linear-timecode (LTC)";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/luppp/build-install.patch b/pkgs/applications/audio/luppp/build-install.patch
deleted file mode 100644
index 4dae65438cb..00000000000
--- a/pkgs/applications/audio/luppp/build-install.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-commit 4ec09e6f6e00e40622a5207ed24dc657da9a9090
-Author: Pavol Rusnak <stick@gk2.sk>
-Date:   Tue Dec 4 12:06:22 2018 +0100
-
-    build: add install: true to executable in meson.build
-
-diff --git a/meson.build b/meson.build
-index 050e1b1..9224ed5 100644
---- a/meson.build
-+++ b/meson.build
-@@ -39,4 +39,5 @@ endforeach
- 
- # compile the main project
- executable('luppp', luppp_src + [version_hxx],
-+    install: true,
-     dependencies: deps)
diff --git a/pkgs/applications/audio/luppp/default.nix b/pkgs/applications/audio/luppp/default.nix
index c1494ffc333..36d329bcafd 100644
--- a/pkgs/applications/audio/luppp/default.nix
+++ b/pkgs/applications/audio/luppp/default.nix
@@ -1,7 +1,8 @@
-{ stdenv, fetchFromGitHub
+{ lib, stdenv
+, fetchFromGitHub
 , meson
 , ninja
-, pkgconfig
+, pkg-config
 , jack2
 , cairo
 , liblo
@@ -12,26 +13,32 @@
 
 stdenv.mkDerivation rec {
   pname = "luppp";
-  version = "1.2.0";
-  patches = [ ./build-install.patch ];
+  version = "1.2.1";
 
   src = fetchFromGitHub {
     owner = "openAVproductions";
     repo = "openAV-Luppp";
     rev = "release-${version}";
-    sha256 = "194yq0lqc2psq9vyxmzif40ccawcvd9jndcn18mkz4f8h5w5rc1a";
+    sha256 = "1ncbn099fyfnr7jw2bp3wf2g9k738lw53m6ssw6wji2wxwmghv78";
   };
 
   nativeBuildInputs = [
-    meson ninja pkgconfig
+    meson
+    ninja
+    pkg-config
   ];
 
   buildInputs = [
-    jack2 cairo liblo libsndfile libsamplerate ntk
+    jack2
+    cairo
+    liblo
+    libsndfile
+    libsamplerate
+    ntk
   ];
 
-  meta = with stdenv.lib; {
-    homepage = "http://openavproductions.com/luppp/";
+  meta = with lib; {
+    homepage = "http://openavproductions.com/luppp/";  # https does not work
     description = "A music creation tool, intended for live use";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ prusnak ];
diff --git a/pkgs/applications/audio/lv2-cpp-tools/default.nix b/pkgs/applications/audio/lv2-cpp-tools/default.nix
index d98135fb014..f1709d00558 100644
--- a/pkgs/applications/audio/lv2-cpp-tools/default.nix
+++ b/pkgs/applications/audio/lv2-cpp-tools/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchzip, pkgconfig, lv2, gtkmm2, boost }:
+{ lib, stdenv, fetchzip, pkg-config, lv2, gtkmm2, boost }:
 
 stdenv.mkDerivation rec {
   pname = "lv2-cpp-tools";
@@ -14,11 +14,11 @@ stdenv.mkDerivation rec {
     sed -r 's,/sbin/ldconfig,ldconfig,g' -i ./Makefile.template
   '';
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
 
   buildInputs = [ lv2 gtkmm2 boost ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://ll-plugins.nongnu.org/hacking.html";
     description = "Tools and libraries that may come in handy when writing LV2 plugins in C++";
     license = licenses.gpl3;
diff --git a/pkgs/applications/audio/lv2bm/default.nix b/pkgs/applications/audio/lv2bm/default.nix
index aee910f56eb..553e0e67f83 100644
--- a/pkgs/applications/audio/lv2bm/default.nix
+++ b/pkgs/applications/audio/lv2bm/default.nix
@@ -1,24 +1,24 @@
-{ stdenv, fetchFromGitHub, glib, lilv, lv2, pkgconfig, serd, sord, sratom }:
+{ lib, stdenv, fetchFromGitHub, glib, libsndfile, lilv, lv2, pkg-config, serd, sord, sratom }:
 
-stdenv.mkDerivation {
+stdenv.mkDerivation rec {
   pname = "lv2bm";
-  version = "git-2015-11-29";
+  version = "1.1";
 
   src = fetchFromGitHub {
     owner = "moddevices";
     repo = "lv2bm";
-    rev = "e844931503b7597f45da6d61ff506bb9fca2e9ca";
-    sha256 = "1rrz5sp04zjal6v34ldkl6fjj9xqidb8xm1iscjyljf6z4l516cx";
+    rev = "v${version}";
+    sha256 = "0vlppxfb9zbmffazs1kiyb79py66s8x9hihj36m2vz86zsq7ybl0";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ glib lilv lv2 serd sord sratom ];
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ glib libsndfile lilv lv2 serd sord sratom ];
 
   installPhase = ''
     make install PREFIX=$out
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/portalmod/lv2bm";
     description = "A benchmark tool for LV2 plugins";
     license = licenses.gpl3;
diff --git a/pkgs/applications/audio/lyrebird/default.nix b/pkgs/applications/audio/lyrebird/default.nix
new file mode 100644
index 00000000000..b40dbfe65bf
--- /dev/null
+++ b/pkgs/applications/audio/lyrebird/default.nix
@@ -0,0 +1,63 @@
+{ python3Packages
+, lib
+, fetchFromGitHub
+, makeDesktopItem
+, wrapGAppsHook
+, gtk3
+, gobject-introspection
+, sox
+, pulseaudio
+}:
+let
+  desktopItem = makeDesktopItem {
+    name = "lyrebird";
+    exec = "lyrebird";
+    icon = "${placeholder "out"}/share/lyrebird/icon.png";
+    desktopName = "Lyrebird";
+    genericName = "Voice Changer";
+    categories = "AudioVideo;Audio;";
+  };
+in
+python3Packages.buildPythonApplication rec {
+  pname = "lyrebird";
+  version = "1.1.0";
+
+  format = "other";
+  doCheck = false;
+
+  src = fetchFromGitHub {
+    owner = "chxrlt";
+    repo = "lyrebird";
+    rev = "v${version}";
+    sha256 = "0wmnww2wi8bb9m8jgc18n04gjia8pf9klmvij0w98xz11l6kxb13";
+  };
+
+  propagatedBuildInputs = with python3Packages; [ toml pygobject3 ];
+
+  nativeBuildInputs = [ wrapGAppsHook ];
+
+  buildInputs = [ gtk3 gobject-introspection sox ];
+
+  dontWrapGApps = true;
+  makeWrapperArgs = [
+    "--prefix 'PATH' ':' '${lib.makeBinPath [ sox pulseaudio ]}'"
+    "--prefix 'PYTHONPATH' ':' '${placeholder "out"}/share/lyrebird'"
+    "--run 'cd ${placeholder "out"}/share/lyrebird'"
+    ''"''${gappsWrapperArgs[@]}"''
+  ];
+
+  installPhase = ''
+    mkdir -p $out/{bin,share/{applications,lyrebird}}
+    cp -at $out/share/lyrebird/ app icon.png
+    cp -at $out/share/applications/ ${desktopItem}
+    install -Dm755 app.py $out/bin/lyrebird
+  '';
+
+  meta = with lib; {
+    description = "Simple and powerful voice changer for Linux, written in GTK 3";
+    homepage = "https://github.com/chxrlt/lyrebird";
+    license = licenses.mit;
+    maintainers = with maintainers; [ OPNA2608 ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/audio/m4acut/default.nix b/pkgs/applications/audio/m4acut/default.nix
new file mode 100644
index 00000000000..f3ceee9227c
--- /dev/null
+++ b/pkgs/applications/audio/m4acut/default.nix
@@ -0,0 +1,24 @@
+{ lib, stdenv, autoreconfHook, fetchFromGitHub, l-smash }:
+
+stdenv.mkDerivation rec {
+  pname = "m4acut";
+  version = "0.1.2";
+
+  src = fetchFromGitHub {
+    owner = "nu774";
+    repo = "m4acut";
+    rev = "v${version}";
+    sha256 = "1hzf9f1fzmlpnxjaxhs2w22wzb28vd87ycaddnix1mmhvh3nvzkd";
+  };
+
+  nativeBuildInputs = [ autoreconfHook ];
+  buildInputs = [ l-smash ];
+
+  meta = with lib; {
+    description = "Losslessly & gaplessly cut m4a (AAC in MP4) files.";
+    homepage = "https://github.com/nu774/m4acut";
+    license = with licenses; [ bsdOriginal zlib ];
+    maintainers = [ maintainers.chkno ];
+    platforms = platforms.all;
+  };
+}
diff --git a/pkgs/applications/audio/magnetophonDSP/CharacterCompressor/default.nix b/pkgs/applications/audio/magnetophonDSP/CharacterCompressor/default.nix
index e16198696a6..400f268d439 100644
--- a/pkgs/applications/audio/magnetophonDSP/CharacterCompressor/default.nix
+++ b/pkgs/applications/audio/magnetophonDSP/CharacterCompressor/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }:
+{ lib, stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }:
 stdenv.mkDerivation rec {
   pname = "CharacterCompressor";
   version = "0.3.3";
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
   meta = {
     description = "A compressor with character. For jack and lv2";
     homepage = "https://github.com/magnetophon/CharacterCompressor";
-    license = stdenv.lib.licenses.gpl3;
-    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+    license = lib.licenses.gpl3;
+    maintainers = [ lib.maintainers.magnetophon ];
   };
 }
diff --git a/pkgs/applications/audio/magnetophonDSP/CompBus/default.nix b/pkgs/applications/audio/magnetophonDSP/CompBus/default.nix
index 1ccc9f3fcd5..0b80aef170a 100644
--- a/pkgs/applications/audio/magnetophonDSP/CompBus/default.nix
+++ b/pkgs/applications/audio/magnetophonDSP/CompBus/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }:
+{ lib, stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }:
 stdenv.mkDerivation rec {
   pname = "CompBus";
   version = "1.1.1";
@@ -37,7 +37,7 @@ stdenv.mkDerivation rec {
   meta = {
     description = "A group of compressors mixed into a bus, sidechained from that mix bus. For jack and lv2";
     homepage = "https://github.com/magnetophon/CompBus";
-    license = stdenv.lib.licenses.gpl3;
-    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+    license = lib.licenses.gpl3;
+    maintainers = [ lib.maintainers.magnetophon ];
   };
 }
diff --git a/pkgs/applications/audio/magnetophonDSP/ConstantDetuneChorus/default.nix b/pkgs/applications/audio/magnetophonDSP/ConstantDetuneChorus/default.nix
index d5ed7e85b69..56534309733 100644
--- a/pkgs/applications/audio/magnetophonDSP/ConstantDetuneChorus/default.nix
+++ b/pkgs/applications/audio/magnetophonDSP/ConstantDetuneChorus/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }:
+{ lib, stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }:
 stdenv.mkDerivation rec {
   pname = "constant-detune-chorus";
   version = "0.1.3";
@@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
   meta = {
     description = "A chorus algorithm that maintains constant and symmetric detuning depth (in cents), regardless of modulation rate. For jack and lv2";
     homepage = "https://github.com/magnetophon/constant-detune-chorus";
-    license = stdenv.lib.licenses.gpl3;
-    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+    license = lib.licenses.gpl3;
+    maintainers = [ lib.maintainers.magnetophon ];
   };
 }
diff --git a/pkgs/applications/audio/magnetophonDSP/LazyLimiter/default.nix b/pkgs/applications/audio/magnetophonDSP/LazyLimiter/default.nix
index 6d119394d5d..4b1157de0b0 100644
--- a/pkgs/applications/audio/magnetophonDSP/LazyLimiter/default.nix
+++ b/pkgs/applications/audio/magnetophonDSP/LazyLimiter/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }:
+{ lib, stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }:
 stdenv.mkDerivation rec {
   pname = "LazyLimiter";
   version = "0.3.2";
@@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
   meta = {
     description = "A fast yet clean lookahead limiter for jack and lv2";
     homepage = "https://magnetophon.github.io/LazyLimiter/";
-    license = stdenv.lib.licenses.gpl2;
-    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+    license = lib.licenses.gpl2;
+    maintainers = [ lib.maintainers.magnetophon ];
   };
 }
diff --git a/pkgs/applications/audio/magnetophonDSP/MBdistortion/default.nix b/pkgs/applications/audio/magnetophonDSP/MBdistortion/default.nix
index 0eb68e65eae..32f43eaed9c 100644
--- a/pkgs/applications/audio/magnetophonDSP/MBdistortion/default.nix
+++ b/pkgs/applications/audio/magnetophonDSP/MBdistortion/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }:
+{ lib, stdenv, fetchFromGitHub, fetchpatch, faust2jaqt, faust2lv2 }:
 stdenv.mkDerivation rec {
   pname = "MBdistortion";
   version = "1.1.1";
@@ -10,6 +10,13 @@ stdenv.mkDerivation rec {
     sha256 = "0mdzaqmxzgspfgx9w1hdip18y17hwpdcgjyq1rrfm843vkascwip";
   };
 
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/magnetophon/MBdistortion/commit/10e35084b88c559f1b63760cf40fd5ef5a6745a5.patch";
+      sha256 = "0hwjl3rzvn3id0sr0qs8f37jdmr915mdan8miaf78ra0ir3wnk76";
+    })
+  ];
+
   buildInputs = [ faust2jaqt faust2lv2 ];
 
   buildPhase = ''
@@ -27,7 +34,7 @@ stdenv.mkDerivation rec {
   meta = {
     description = "Mid-side multiband distortion for jack and lv2";
     homepage = "https://github.com/magnetophon/MBdistortion";
-    license = stdenv.lib.licenses.gpl2;
-    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+    license = lib.licenses.gpl2;
+    maintainers = [ lib.maintainers.magnetophon ];
   };
 }
diff --git a/pkgs/applications/audio/magnetophonDSP/RhythmDelay/default.nix b/pkgs/applications/audio/magnetophonDSP/RhythmDelay/default.nix
index be8ad72d28d..fff4292cd76 100644
--- a/pkgs/applications/audio/magnetophonDSP/RhythmDelay/default.nix
+++ b/pkgs/applications/audio/magnetophonDSP/RhythmDelay/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }:
+{ lib, stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }:
 stdenv.mkDerivation rec {
   pname = "RhythmDelay";
   version = "2.1";
@@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
   meta = {
     description = "Tap a rhythm into your delay! For jack and lv2";
     homepage = "https://github.com/magnetophon/RhythmDelay";
-    license = stdenv.lib.licenses.gpl3;
-    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+    license = lib.licenses.gpl3;
+    maintainers = [ lib.maintainers.magnetophon ];
   };
 }
diff --git a/pkgs/applications/audio/magnetophonDSP/VoiceOfFaust/default.nix b/pkgs/applications/audio/magnetophonDSP/VoiceOfFaust/default.nix
index dce2db4cb77..6bc8cff2261 100644
--- a/pkgs/applications/audio/magnetophonDSP/VoiceOfFaust/default.nix
+++ b/pkgs/applications/audio/magnetophonDSP/VoiceOfFaust/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, faust2jack, faust2lv2, helmholtz, mrpeach, puredata-with-plugins }:
+{ lib, stdenv, fetchFromGitHub, faust2jack, faust2lv2, helmholtz, mrpeach, puredata-with-plugins }:
 stdenv.mkDerivation rec {
   pname = "VoiceOfFaust";
   version = "1.1.4";
@@ -50,7 +50,7 @@ stdenv.mkDerivation rec {
   meta = {
     description = "Turn your voice into a synthesizer";
     homepage = "https://github.com/magnetophon/VoiceOfFaust";
-    license = stdenv.lib.licenses.gpl3;
-    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+    license = lib.licenses.gpl3;
+    maintainers = [ lib.maintainers.magnetophon ];
   };
 }
diff --git a/pkgs/applications/audio/magnetophonDSP/faustCompressors/default.nix b/pkgs/applications/audio/magnetophonDSP/faustCompressors/default.nix
index 172b5ed3891..7ea5fa753c8 100644
--- a/pkgs/applications/audio/magnetophonDSP/faustCompressors/default.nix
+++ b/pkgs/applications/audio/magnetophonDSP/faustCompressors/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }:
+{ lib, stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }:
 stdenv.mkDerivation rec {
   name = "faustCompressors-v${version}";
   version = "1.2";
@@ -42,7 +42,7 @@ stdenv.mkDerivation rec {
   meta = {
     description = "A collection of bread and butter compressors";
     homepage = "https://github.com/magnetophon/faustCompressors";
-    license = stdenv.lib.licenses.gpl3;
-    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+    license = lib.licenses.gpl3;
+    maintainers = [ lib.maintainers.magnetophon ];
   };
 }
diff --git a/pkgs/applications/audio/magnetophonDSP/pluginUtils/default.nix b/pkgs/applications/audio/magnetophonDSP/pluginUtils/default.nix
index 11d51d756ab..fd807dd4245 100644
--- a/pkgs/applications/audio/magnetophonDSP/pluginUtils/default.nix
+++ b/pkgs/applications/audio/magnetophonDSP/pluginUtils/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }:
+{ lib, stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }:
 stdenv.mkDerivation rec {
   pname = "pluginUtils";
   version = "1.1";
@@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
   meta = {
     description = "Some simple utility lv2 plugins";
     homepage = "https://github.com/magnetophon/pluginUtils";
-    license = stdenv.lib.licenses.gpl3;
-    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+    license = lib.licenses.gpl3;
+    maintainers = [ lib.maintainers.magnetophon ];
   };
 }
diff --git a/pkgs/applications/audio/magnetophonDSP/shelfMultiBand/default.nix b/pkgs/applications/audio/magnetophonDSP/shelfMultiBand/default.nix
index 360cee243c3..07d4402578c 100644
--- a/pkgs/applications/audio/magnetophonDSP/shelfMultiBand/default.nix
+++ b/pkgs/applications/audio/magnetophonDSP/shelfMultiBand/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }:
+{ lib, stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }:
 stdenv.mkDerivation rec {
   pname = "shelfMultiBand";
   version = "0.6.1";
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
   meta = {
     description = "A multiband compressor made from shelving filters.";
     homepage = "https://github.com/magnetophon/shelfMultiBand";
-    license = stdenv.lib.licenses.gpl3;
-    maintainers = [ stdenv.lib.maintainers.magnetophon ];
+    license = lib.licenses.gpl3;
+    maintainers = [ lib.maintainers.magnetophon ];
   };
 }
diff --git a/pkgs/applications/audio/mamba/default.nix b/pkgs/applications/audio/mamba/default.nix
index a3e33471cee..6f518dac9ca 100644
--- a/pkgs/applications/audio/mamba/default.nix
+++ b/pkgs/applications/audio/mamba/default.nix
@@ -1,9 +1,12 @@
-{ stdenv
+{ lib, stdenv
 , fetchFromGitHub
-, pkgconfig
+, pkg-config
+, xxd
 , cairo
+, fluidsynth
 , libX11
 , libjack2
+, alsa-lib
 , liblo
 , libsigcxx
 , libsmf
@@ -11,26 +14,24 @@
 
 stdenv.mkDerivation rec {
   pname = "mamba";
-  version = "1.3";
+  version = "2.2";
 
   src = fetchFromGitHub {
     owner = "brummer10";
     repo = "Mamba";
     rev = "v${version}";
-    sha256 = "1wa3f9c4l239mpxa7nxx8hajy4icn40vpvaxq5l1qzskl74w072d";
+    sha256 = "1885qxyfkpslzk0aaaaws0x73b10h9nbr04jkk7xhkya25gf280m";
     fetchSubmodules = true;
   };
 
-  patches = [ ./fix-build.patch ];
-
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ cairo libX11 libjack2 liblo libsigcxx libsmf ];
+  nativeBuildInputs = [ pkg-config xxd ];
+  buildInputs = [ cairo fluidsynth libX11 libjack2 alsa-lib liblo libsigcxx libsmf ];
 
   makeFlags = [ "PREFIX=$(out)" ];
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/brummer10/Mamba";
     description = "Virtual MIDI keyboard for Jack Audio Connection Kit";
     license = licenses.bsd0;
diff --git a/pkgs/applications/audio/mamba/fix-build.patch b/pkgs/applications/audio/mamba/fix-build.patch
deleted file mode 100644
index ed366963676..00000000000
--- a/pkgs/applications/audio/mamba/fix-build.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/libxputty/Build/Makefile
-+++ b/libxputty/Build/Makefile
-@@ -20,1 +20,1 @@
--	LDFLAGS += -fPIC `pkg-config --static --cflags --libs cairo x11` -lm
-+	LDFLAGS += -fPIC `pkg-config --cflags --libs cairo x11` -lm
---- a/src/Makefile
-+++ b/src/Makefile
-@@ -84,1 +83,1 @@ ifneq ("$(wildcard ./$(BUILD_DIR))","")
--	update-desktop-database
-+	update-desktop-database || true
diff --git a/pkgs/applications/audio/mbrola/default.nix b/pkgs/applications/audio/mbrola/default.nix
new file mode 100644
index 00000000000..01a9fdd636b
--- /dev/null
+++ b/pkgs/applications/audio/mbrola/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, lib, fetchFromGitHub }:
+
+let
+  voices = fetchFromGitHub {
+    owner = "numediart";
+    repo = "MBROLA-voices";
+    rev = "fe05a0ccef6a941207fd6aaad0b31294a1f93a51";  # using latest commit
+    sha256 = "1w0y2xjp9rndwdjagp2wxh656mdm3d6w9cs411g27rjyfy1205a0";
+  };
+in
+stdenv.mkDerivation rec {
+  pname = "mbrola";
+  version = "3.3";
+
+  src = fetchFromGitHub {
+    owner = "numediart";
+    repo = "MBROLA";
+    rev = version;
+    sha256 = "1w86gv6zs2cbr0731n49z8v6xxw0g8b0hzyv2iqb9mqcfh38l8zy";
+  };
+
+  installPhase = ''
+    runHook preInstall
+    install -D Bin/mbrola $out/bin/mbrola
+
+    # TODO: package separately because it's very big
+    install -d $out/share/mbrola/voices
+    cp -R ${voices}/data/* $out/share/mbrola/voices/
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Speech synthesizer based on the concatenation of diphones";
+    homepage = "https://github.com/numediart/MBROLA";
+    license = licenses.agpl3Plus;
+    maintainers = with maintainers; [ davidak ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/audio/mda-lv2/default.nix b/pkgs/applications/audio/mda-lv2/default.nix
index 2464abb6585..92f8506483f 100644
--- a/pkgs/applications/audio/mda-lv2/default.nix
+++ b/pkgs/applications/audio/mda-lv2/default.nix
@@ -1,18 +1,18 @@
-{ stdenv, fetchurl, fftwSinglePrec, lv2, pkgconfig, wafHook }:
+{ lib, stdenv, fetchurl, fftwSinglePrec, lv2, pkg-config, wafHook, python3 }:
 
 stdenv.mkDerivation rec {
   pname = "mda-lv2";
-  version = "1.2.4";
+  version = "1.2.6";
 
   src = fetchurl {
     url = "https://download.drobilla.net/${pname}-${version}.tar.bz2";
-    sha256 = "1a3cv6w5xby9yn11j695rbh3c4ih7rxfxmkca9s1324ljphh06m8";
+    sha256 = "sha256-zWYRcCSuBJzzrKg/npBKcCdyJOI6lp9yqcXQEKSYV9s=";
   };
 
-  nativeBuildInputs = [ pkgconfig wafHook ];
+  nativeBuildInputs = [ pkg-config wafHook python3 ];
   buildInputs = [ fftwSinglePrec lv2 ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://drobilla.net/software/mda-lv2/";
     description = "An LV2 port of the MDA plugins by Paul Kellett";
     license = licenses.gpl2Plus;
diff --git a/pkgs/applications/audio/mellowplayer/default.nix b/pkgs/applications/audio/mellowplayer/default.nix
index 93c0b36bbb0..5bdcb81fb63 100644
--- a/pkgs/applications/audio/mellowplayer/default.nix
+++ b/pkgs/applications/audio/mellowplayer/default.nix
@@ -3,7 +3,7 @@
 , lib
 , libnotify
 , mkDerivation
-, pkgconfig
+, pkg-config
 , qtbase
 , qtdeclarative
 , qtgraphicaleffects
@@ -14,16 +14,16 @@
 
 mkDerivation rec {
   pname = "MellowPlayer";
-  version = "3.6.5";
+  version = "3.6.8";
 
   src = fetchFromGitLab {
     owner = "ColinDuquesnoy";
     repo = "MellowPlayer";
     rev = version;
-    sha256 = "1fnfqyy52hnh9vwq4rcndcqwh0zsm1sd3vi4h5gzaj4zbniq5v2f";
+    sha256 = "sha256-rsF2xQet7U8d4oGU/HgghvE3vvmkxjlGXPBlLD9mWTk=";
   };
 
-  nativeBuildInputs = [ cmake pkgconfig ];
+  nativeBuildInputs = [ cmake pkg-config ];
 
   buildInputs = [
     libnotify
@@ -62,7 +62,7 @@ mkDerivation rec {
   meta = with lib; {
     inherit (qtbase.meta) platforms;
 
-    description = "Cloud music integration for your desktop.";
+    description = "Cloud music integration for your desktop";
     homepage = "https://gitlab.com/ColinDuquesnoy/MellowPlayer";
     license = licenses.gpl2;
     maintainers = with maintainers; [ kalbasit ];
diff --git a/pkgs/applications/audio/melmatcheq.lv2/default.nix b/pkgs/applications/audio/melmatcheq.lv2/default.nix
new file mode 100644
index 00000000000..55c6e4c185a
--- /dev/null
+++ b/pkgs/applications/audio/melmatcheq.lv2/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenv, fetchFromGitHub, xorg, xorgproto, cairo, lv2, pkg-config }:
+
+stdenv.mkDerivation rec {
+  pname = "MelMatchEQ.lv2";
+  version = "0.1";
+
+  src = fetchFromGitHub {
+    owner = "brummer10";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1s805jgb9msxfq9047s7pxrngizb00w8sm4z94iii80ba65rd20x";
+  };
+
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [
+    xorg.libX11 xorgproto cairo lv2
+  ];
+
+  installFlags = [ "INSTALL_DIR=$(out)/lib/lv2" ];
+
+  meta = with lib; {
+    homepage = "https://github.com/brummer10/MelMatchEQ.lv2";
+    description = "a profiling EQ using a 26 step Mel Frequency Band";
+    maintainers = with maintainers; [ magnetophon ];
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/audio/meterbridge/default.nix b/pkgs/applications/audio/meterbridge/default.nix
index 9d807358cd5..a825eaa4e38 100644
--- a/pkgs/applications/audio/meterbridge/default.nix
+++ b/pkgs/applications/audio/meterbridge/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, SDL, SDL_image, libjack2
+{ lib, stdenv, fetchurl, pkg-config, SDL, SDL_image, libjack2
 }:
 
 stdenv.mkDerivation rec {
@@ -13,10 +13,10 @@ stdenv.mkDerivation rec {
   patches = [ ./buf_rect.patch ./fix_build_with_gcc-5.patch];
 
   buildInputs =
-    [ pkgconfig SDL SDL_image libjack2
+    [ pkg-config SDL SDL_image libjack2
     ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Various meters (VU, PPM, DPM, JF, SCO) for Jack Audio Connection Kit";
     homepage = "http://plugin.org.uk/meterbridge/";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/meters_lv2/default.nix b/pkgs/applications/audio/meters_lv2/default.nix
index cd9523d2710..b21b859596e 100644
--- a/pkgs/applications/audio/meters_lv2/default.nix
+++ b/pkgs/applications/audio/meters_lv2/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig
+{ lib, stdenv, fetchurl, pkg-config
 , lv2, libGLU, libGL, gtk2, cairo, pango, fftwFloat, libjack2 }:
 
 let
@@ -25,7 +25,7 @@ in
 stdenv.mkDerivation {
   inherit name;
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ lv2 libGLU libGL gtk2 cairo pango fftwFloat libjack2 ];
 
   srcs = [ src robtkSrc ];
@@ -36,7 +36,7 @@ stdenv.mkDerivation {
   preConfigure = "makeFlagsArray=( PREFIX=$out )";
   meter_VERSION = version;
 
-  meta = with stdenv.lib;
+  meta = with lib;
     { description = "Collection of audio level meters with GUI in LV2 plugin format";
       homepage = "http://x42.github.io/meters.lv2/";
       maintainers = with maintainers; [ ehmry ];
diff --git a/pkgs/applications/audio/mhwaveedit/default.nix b/pkgs/applications/audio/mhwaveedit/default.nix
index 67204260da2..e6b21dff2dc 100644
--- a/pkgs/applications/audio/mhwaveedit/default.nix
+++ b/pkgs/applications/audio/mhwaveedit/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchFromGitHub, makeWrapper, SDL, alsaLib, autoreconfHook, gtk2, libjack2, ladspaH
-, ladspaPlugins, libsamplerate, libsndfile, pkgconfig, libpulseaudio, lame
+{ lib, stdenv, fetchFromGitHub, makeWrapper, SDL, alsa-lib, autoreconfHook, gtk2, libjack2, ladspaH
+, ladspaPlugins, libsamplerate, libsndfile, pkg-config, libpulseaudio, lame
 , vorbis-tools }:
 
 stdenv.mkDerivation rec {
@@ -13,12 +13,12 @@ stdenv.mkDerivation rec {
     sha256 = "037pbq23kh8hsih994x2sv483imglwcrqrx6m8visq9c46fi0j1y";
   };
 
-  nativeBuildInputs = [ autoreconfHook makeWrapper pkgconfig ];
+  nativeBuildInputs = [ autoreconfHook makeWrapper pkg-config ];
 
   preAutoreconf = "(cd docgen && sh gendocs.sh)";
 
   buildInputs = [
-    SDL alsaLib gtk2 libjack2 ladspaH libsamplerate libsndfile libpulseaudio
+    SDL alsa-lib gtk2 libjack2 ladspaH libsamplerate libsndfile libpulseaudio
   ];
 
   configureFlags = [ "--with-default-ladspa-path=${ladspaPlugins}/lib/ladspa" ];
@@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
       --prefix PATH : ${vorbis-tools}/bin/
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Graphical program for editing, playing and recording sound files";
     homepage = "https://github.com/magnush/mhwaveedit";
     license = licenses.gpl2Plus;
diff --git a/pkgs/applications/audio/mi2ly/default.nix b/pkgs/applications/audio/mi2ly/default.nix
index 58c1690a9bb..b4f7668394f 100644
--- a/pkgs/applications/audio/mi2ly/default.nix
+++ b/pkgs/applications/audio/mi2ly/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl}:
+{lib, stdenv, fetchurl}:
 let
   s = # Generated upstream information
   rec {
@@ -32,10 +32,10 @@ stdenv.mkDerivation {
 
   meta = {
     inherit (s) version;
-    description = ''MIDI to Lilypond converter'';
-    license = stdenv.lib.licenses.gpl2Plus ;
-    maintainers = [stdenv.lib.maintainers.raskin];
-    platforms = stdenv.lib.platforms.linux;
+    description = "MIDI to Lilypond converter";
+    license = lib.licenses.gpl2Plus ;
+    maintainers = [lib.maintainers.raskin];
+    platforms = lib.platforms.linux;
     broken = true; # 2018-04-11
   };
 }
diff --git a/pkgs/applications/audio/mid2key/default.nix b/pkgs/applications/audio/mid2key/default.nix
index 071b18e5a8a..5db17b99d1c 100644
--- a/pkgs/applications/audio/mid2key/default.nix
+++ b/pkgs/applications/audio/mid2key/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, alsaLib, libX11, libXi, libXtst, xorgproto }:
+{ lib, stdenv, fetchurl, alsa-lib, libX11, libXi, libXtst, xorgproto }:
 
 stdenv.mkDerivation rec {
   name = "mid2key-r1";
@@ -10,13 +10,13 @@ stdenv.mkDerivation rec {
 
   unpackPhase = "tar xvzf $src";
 
-  buildInputs = [ alsaLib libX11 libXi libXtst xorgproto ];
+  buildInputs = [ alsa-lib libX11 libXi libXtst xorgproto ];
 
   buildPhase = "make";
 
   installPhase = "mkdir -p $out/bin && mv mid2key $out/bin";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://code.google.com/p/mid2key/";
     description = "A simple tool which maps midi notes to simulated keystrokes";
     license = licenses.gpl3;
diff --git a/pkgs/applications/audio/midas/generic.nix b/pkgs/applications/audio/midas/generic.nix
index 293d1b0b6c8..93a215e46b1 100644
--- a/pkgs/applications/audio/midas/generic.nix
+++ b/pkgs/applications/audio/midas/generic.nix
@@ -1,11 +1,11 @@
-{ stdenv, fetchurl, lib, libX11, libXext, alsaLib, freetype, brand, type, version, homepage, sha256, ... }:
+{ stdenv, fetchurl, lib, libX11, libXext, alsa-lib, freetype, brand, type, version, homepage, url, sha256, ... }:
 stdenv.mkDerivation rec {
   inherit type;
   baseName = "${type}-Edit";
   name = "${lib.toLower baseName}-${version}";
 
   src = fetchurl {
-    url = "http://downloads.music-group.com/software/behringer/${type}/${type}-Edit_LINUX_64bit_${version}.tar.gz";
+    inherit url;
     inherit sha256;
   };
 
@@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
     libPath = lib.makeLibraryPath [
       libX11           # libX11.so.6
       libXext          # libXext.so.6
-      alsaLib          # libasound.so.2
+      alsa-lib          # libasound.so.2
       freetype         # libfreetype.so.6
       stdenv.cc.cc.lib # libstdc++.so.6
     ];
@@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
       $out/bin/${baseName}
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     inherit homepage;
     description = "Editor for the ${brand} ${type} digital mixer";
     license = licenses.unfree;
diff --git a/pkgs/applications/audio/midas/m32edit.nix b/pkgs/applications/audio/midas/m32edit.nix
index 6af11d42e31..082da1621be 100644
--- a/pkgs/applications/audio/midas/m32edit.nix
+++ b/pkgs/applications/audio/midas/m32edit.nix
@@ -1,9 +1,10 @@
 { callPackage, ... } @ args:
 
-callPackage ./generic.nix (args // {
+callPackage ./generic.nix (args // rec {
   brand = "Midas";
   type = "M32";
-  version = "3.2";
-  sha256 = "1cds6qinz37086l6pmmgrzrxadygjr2z96sjjyznnai2wz4z2nrd";
-  homepage = "http://www.musictri.be/Categories/Midas/Mixers/Digital/M32/p/P0B3I/downloads";
+  version = "4.1";
+  url = "https://mediadl.musictribe.com/download/software/midas_${type}/${type}-Edit_LINUX_64-Bit_${version}.tar.gz";
+  sha256 = "0aqhdrxqa49liyvbbw5x32kwk0h1spzvmizmdxklrfs64vvr9bvh";
+  homepage = "https://midasconsoles.com/midas/product?modelCode=P0B3I";
 })
diff --git a/pkgs/applications/audio/midas/x32edit.nix b/pkgs/applications/audio/midas/x32edit.nix
index 7e364ff984a..a07c83a9dfe 100644
--- a/pkgs/applications/audio/midas/x32edit.nix
+++ b/pkgs/applications/audio/midas/x32edit.nix
@@ -1,9 +1,10 @@
 { callPackage, ... } @ args:
 
-callPackage ./generic.nix (args // {
+callPackage ./generic.nix (args // rec {
   brand = "Behringer";
   type = "X32";
-  version = "3.2";
-  sha256 = "1lzmhd0sqnlzc0khpwm82sfi48qhv7rg153a57qjih7hhhy41mzk";
-  homepage = "http://www.musictri.be/Categories/Behringer/Mixers/Digital/X32/p/P0ASF/downloads";
+  version = "4.1";
+  url = "https://mediadl.musictribe.com/download/software/behringer/${type}/${type}-Edit_LINUX_64-Bit_${version}.tar.gz";
+  sha256 = "0zsw7qfmcci87skkpq8vx5zxk35phn8y4byispvki9ascifnnb33";
+  homepage = "https://www.behringer.com/behringer/product?modelCode=P0ASF";
 })
diff --git a/pkgs/applications/audio/midi-visualizer/default.nix b/pkgs/applications/audio/midi-visualizer/default.nix
new file mode 100644
index 00000000000..0213dc4af6d
--- /dev/null
+++ b/pkgs/applications/audio/midi-visualizer/default.nix
@@ -0,0 +1,42 @@
+{ lib, stdenv, fetchFromGitHub, cmake, pkg-config, libX11, glfw, makeWrapper,
+  libXrandr, libXinerama, libXcursor, gtk3, ffmpeg-full, ...}:
+
+stdenv.mkDerivation rec {
+  pname = "MIDIVisualizer";
+  version = "6.4";
+
+  src = fetchFromGitHub {
+    owner = "kosua20";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-XR5xmQYVbBR6QWt/+PLeGqg0t4xl35MPrQNaPsmgAYA=";
+  };
+
+  nativeBuildInputs = [ cmake pkg-config makeWrapper];
+
+  buildInputs = [
+    libX11
+    glfw
+    libXrandr
+    libXinerama
+    libXcursor
+    gtk3
+    ffmpeg-full
+  ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp MIDIVisualizer $out/bin
+
+    wrapProgram $out/bin/MIDIVisualizer \
+      --prefix XDG_DATA_DIRS : "${gtk3}/share/gsettings-schemas/${gtk3.name}:$XDG_DATA_DIRS"
+  '';
+
+  meta = with lib; {
+    description = "A small MIDI visualizer tool, using OpenGL";
+    homepage = "https://github.com/kosua20/MIDIVisualizer";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.ericdallo ];
+  };
+}
diff --git a/pkgs/applications/audio/midisheetmusic/default.nix b/pkgs/applications/audio/midisheetmusic/default.nix
index 388fc2a1b3e..6a5626d98a6 100644
--- a/pkgs/applications/audio/midisheetmusic/default.nix
+++ b/pkgs/applications/audio/midisheetmusic/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl
+{ lib, stdenv, fetchurl
 , mono, dotnetPackages, makeWrapper
 , gtk2, cups, timidity }:
 
@@ -47,16 +47,16 @@ in stdenv.mkDerivation {
     cp bin/Debug/MidiSheetMusic.exe $out/bin/.MidiSheetMusic.exe
 
     makeWrapper ${mono}/bin/mono $out/bin/midisheetmusic.mono.exe \
-      --prefix LD_LIBRARY_PATH : ${stdenv.lib.makeLibraryPath [ gtk2 cups ]} \
-      --prefix PATH : ${stdenv.lib.makeBinPath [ timidity ]} \
+      --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ gtk2 cups ]} \
+      --prefix PATH : ${lib.makeBinPath [ timidity ]} \
       --add-flags $out/bin/.MidiSheetMusic.exe
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Convert MIDI Files to Piano Sheet Music for two hands";
     homepage = "http://midisheetmusic.com";
     license = licenses.gpl2;
-    maintainers = [ maintainers.gnidorah ];
+    maintainers = [ ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/mikmod/default.nix b/pkgs/applications/audio/mikmod/default.nix
index 9be303cb652..4cc0fec2e2f 100644
--- a/pkgs/applications/audio/mikmod/default.nix
+++ b/pkgs/applications/audio/mikmod/default.nix
@@ -1,10 +1,11 @@
-{ stdenv, fetchurl, libmikmod, ncurses }:
+{ lib, stdenv, fetchurl, libmikmod, ncurses }:
 
 stdenv.mkDerivation rec {
-  name = "mikmod-3.2.8";
+  pname = "mikmod";
+  version = "3.2.8";
 
   src = fetchurl {
-    url = "mirror://sourceforge/mikmod/${name}.tar.gz";
+    url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.gz";
     sha256 = "1k54p8pn3jinha0f2i23ad15pf1pamibzcxjrbzjbklpcz1ipc6v";
   };
 
@@ -13,8 +14,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "Tracker music player for the terminal";
     homepage = "http://mikmod.shlomifish.org/";
-    license = stdenv.lib.licenses.gpl2Plus;
-    maintainers = with stdenv.lib.maintainers; [ ];
-    platforms = with stdenv.lib.platforms; linux;
+    license = lib.licenses.gpl2Plus;
+    maintainers = with lib.maintainers; [ ];
+    platforms = with lib.platforms; linux;
   };
 }
diff --git a/pkgs/applications/audio/milkytracker/default.nix b/pkgs/applications/audio/milkytracker/default.nix
index d7b9e5a6355..ce29a587d23 100644
--- a/pkgs/applications/audio/milkytracker/default.nix
+++ b/pkgs/applications/audio/milkytracker/default.nix
@@ -1,25 +1,31 @@
-{ stdenv, fetchFromGitHub, cmake, pkgconfig, makeWrapper
-, SDL2, alsaLib, libjack2, lhasa, perl, rtmidi, zlib, zziplib }:
+{ lib, stdenv, fetchFromGitHub, cmake, pkg-config, makeWrapper
+, SDL2, alsa-lib, libjack2, lhasa, perl, rtmidi, zlib, zziplib }:
 
 stdenv.mkDerivation rec {
-  version = "1.02.00";
+  version = "1.03.00";
   pname = "milkytracker";
 
   src = fetchFromGitHub {
     owner  = "milkytracker";
     repo   = "MilkyTracker";
     rev    = "v${version}";
-    sha256 = "05a6d7l98k9i82dwrgi855dnccm3f2lkb144gi244vhk1156n0ca";
+    sha256 = "025fj34gq2kmkpwcswcyx7wdxb89vm944dh685zi4bxx0hz16vvk";
   };
 
-  nativeBuildInputs = [ cmake pkgconfig makeWrapper ];
+  nativeBuildInputs = [ cmake pkg-config makeWrapper ];
 
-  buildInputs = [ SDL2 alsaLib libjack2 lhasa perl rtmidi zlib zziplib ];
+  buildInputs = [ SDL2 alsa-lib libjack2 lhasa perl rtmidi zlib zziplib ];
 
   # Somehow this does not get set automatically
   cmakeFlags = [ "-DSDL2MAIN_LIBRARY=${SDL2}/lib/libSDL2.so" ];
 
-  meta = with stdenv.lib; {
+  postInstall = ''
+    install -Dm644 $src/resources/milkytracker.desktop $out/share/applications/milkytracker.desktop
+    install -Dm644 $src/resources/pictures/carton.png $out/share/pixmaps/milkytracker.png
+    install -Dm644 $src/resources/milkytracker.appdata $out/share/appdata/milkytracker.appdata.xml
+  '';
+
+  meta = with lib; {
     description = "Music tracker application, similar to Fasttracker II";
     homepage = "http://milkytracker.org";
     license = licenses.gpl3Plus;
diff --git a/pkgs/applications/audio/mimic/default.nix b/pkgs/applications/audio/mimic/default.nix
index e33e69ad78c..5ed51a99895 100644
--- a/pkgs/applications/audio/mimic/default.nix
+++ b/pkgs/applications/audio/mimic/default.nix
@@ -1,5 +1,5 @@
-{ config, stdenv, autoreconfHook, fetchFromGitHub, pkgconfig
-, alsaLib, libtool, icu
+{ config, lib, stdenv, autoreconfHook, fetchFromGitHub, pkg-config
+, alsa-lib, libtool, icu
 , pulseaudioSupport ? config.pulseaudio or false, libpulseaudio }:
 
 stdenv.mkDerivation rec {
@@ -15,20 +15,20 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [
     autoreconfHook
-    pkgconfig
+    pkg-config
   ];
 
   buildInputs = [
-    alsaLib
+    alsa-lib
     libtool
     icu
-  ] ++ stdenv.lib.optional pulseaudioSupport libpulseaudio;
+  ] ++ lib.optional pulseaudioSupport libpulseaudio;
 
   meta = {
     description = "Mycroft's TTS engine, based on CMU's Flite (Festival Lite)";
     homepage = "https://mimic.mycroft.ai/";
-    license = stdenv.lib.licenses.free;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.noneucat ];
+    license = lib.licenses.free;
+    platforms = lib.platforms.linux;
+    maintainers = [ lib.maintainers.noneucat ];
   };
 }
diff --git a/pkgs/applications/audio/mimms/default.nix b/pkgs/applications/audio/mimms/default.nix
index 47e9fa306dc..9811998c368 100644
--- a/pkgs/applications/audio/mimms/default.nix
+++ b/pkgs/applications/audio/mimms/default.nix
@@ -1,4 +1,4 @@
-{ fetchurl, stdenv, pythonPackages, libmms }:
+{ fetchurl, lib, pythonPackages, libmms }:
 
 pythonPackages.buildPythonApplication rec {
   pname = "mimms";
@@ -16,7 +16,7 @@ pythonPackages.buildPythonApplication rec {
 
   meta = {
     homepage = "https://savannah.nongnu.org/projects/mimms/";
-    license = stdenv.lib.licenses.gpl3;
+    license = lib.licenses.gpl3;
     description = "An mms (e.g. mms://) stream downloader";
 
     longDescription = ''
diff --git a/pkgs/applications/audio/miniaudicle/default.nix b/pkgs/applications/audio/miniaudicle/default.nix
new file mode 100644
index 00000000000..90821b01476
--- /dev/null
+++ b/pkgs/applications/audio/miniaudicle/default.nix
@@ -0,0 +1,59 @@
+{ lib
+, stdenv
+, fetchurl
+, bison
+, flex
+, which
+, alsa-lib
+, libsndfile
+, qt4
+, qscintilla
+, libpulseaudio
+, libjack2
+, audioBackend ? "pulse" # "pulse", "alsa", or "jack"
+}:
+
+stdenv.mkDerivation rec {
+  pname = "miniaudicle";
+  version = "1.3.5.2";
+
+  src = fetchurl {
+    url = "https://audicle.cs.princeton.edu/mini/release/files/miniAudicle-${version}.tgz";
+    hash = "sha256-dakDz69uHbKZFj8z67CubmRXEQ5X6GuYqlCXXvLzqSI=";
+  };
+
+  sourceRoot = "miniAudicle-${version}/src";
+
+  postPatch = ''
+    substituteInPlace miniAudicle.pro \
+      --replace "/usr/local" $out
+  '';
+
+  nativeBuildInputs = [
+    bison
+    flex
+    which
+  ];
+
+  buildInputs = [
+    alsa-lib
+    libsndfile
+    qt4
+    qscintilla
+  ] ++ lib.optional (audioBackend == "pulse") libpulseaudio
+    ++ lib.optional (audioBackend == "jack")  libjack2;
+
+  buildFlags = [ "linux-${audioBackend}" ];
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  meta = with lib; {
+    description = "A light-weight integrated development environment for the ChucK digital audio programming language";
+    homepage = "https://audicle.cs.princeton.edu/mini/";
+    downloadPage = "https://audicle.cs.princeton.edu/mini/linux/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ fgaz ];
+    platforms = platforms.all;
+    broken = stdenv.isDarwin; # not attempted
+  };
+}
diff --git a/pkgs/applications/audio/mixxx/default.nix b/pkgs/applications/audio/mixxx/default.nix
index 576dd4d97b3..60591f42e81 100644
--- a/pkgs/applications/audio/mixxx/default.nix
+++ b/pkgs/applications/audio/mixxx/default.nix
@@ -1,58 +1,144 @@
-{ stdenv, mkDerivation, fetchurl, fetchFromGitHub, chromaprint
-, fftw, flac, faad2, glibcLocales, mp4v2
-, libid3tag, libmad, libopus, libshout, libsndfile, libusb1, libvorbis
-, libGLU, libxcb, lilv, lv2, opusfile
-, pkgconfig, portaudio, portmidi, protobuf, qtbase, qtscript, qtsvg
-, qtx11extras, rubberband, sconsPackages, sqlite, taglib, upower, vamp-plugin-sdk
+{ lib
+, stdenv
+, mkDerivation
+, fetchurl
+, fetchFromGitHub
+, chromaprint
+, cmake
+, faad2
+, ffmpeg
+, fftw
+, flac
+, glibcLocales
+, hidapi
+, lame
+, libebur128
+, libGLU
+, libid3tag
+, libkeyfinder
+, libmad
+, libmodplug
+, libopus
+, libsecret
+, libshout
+, libsndfile
+, libusb1
+, libvorbis
+, libxcb
+, lilv
+, lv2
+, mp4v2
+, opusfile
+, pcre
+, pkg-config
+, portaudio
+, portmidi
+, protobuf
+, qtbase
+, qtkeychain
+, qtscript
+, qtsvg
+, qtx11extras
+, rubberband
+, serd
+, sord
+, soundtouch
+, sratom
+, sqlite
+, taglib
+, upower
+, vamp-plugin-sdk
+, wavpack
 }:
 
-let
-  # Because libshout 2.4.2 and newer seem to break streaming in mixxx, build it
-  # with 2.4.1 instead.
-  libshout241 = libshout.overrideAttrs (o: rec {
-    name = "libshout-2.4.1";
-    src = fetchurl {
-      url = "http://downloads.xiph.org/releases/libshout/${name}.tar.gz";
-      sha256 = "0kgjpf8jkgyclw11nilxi8vyjk4s8878x23qyxnvybbgqbgbib7k";
-    };
-  });
-in
 mkDerivation rec {
   pname = "mixxx";
-  version = "2.2.4";
+  version = "2.3.0";
 
   src = fetchFromGitHub {
     owner = "mixxxdj";
     repo = "mixxx";
-    rev = "release-${version}";
-    sha256 = "1dj9li8av9b2kbm76jvvbdmihy1pyrw0s4xd7dd524wfhwr1llxr";
+    rev = version;
+    sha256 = "18sx4l3zzbn5142xfv5bp0crdd615a5728fkprqacnx3zpa144x6";
   };
 
-  nativeBuildInputs = [ sconsPackages.scons_3_1_2 ];
+  nativeBuildInputs = [ cmake pkg-config ];
+
   buildInputs = [
-    chromaprint fftw flac faad2 glibcLocales mp4v2 libid3tag libmad libopus libshout241 libsndfile
-    libusb1 libvorbis libxcb libGLU lilv lv2 opusfile pkgconfig portaudio portmidi protobuf qtbase qtscript qtsvg
-    qtx11extras rubberband sqlite taglib upower vamp-plugin-sdk
+    chromaprint
+    faad2
+    ffmpeg
+    fftw
+    flac
+    glibcLocales
+    hidapi
+    lame
+    libebur128
+    libGLU
+    libid3tag
+    libkeyfinder
+    libmad
+    libmodplug
+    libopus
+    libsecret
+    libshout
+    libsndfile
+    libusb1
+    libvorbis
+    libxcb
+    lilv
+    lv2
+    mp4v2
+    opusfile
+    pcre
+    portaudio
+    portmidi
+    protobuf
+    qtbase
+    qtkeychain
+    qtscript
+    qtsvg
+    qtx11extras
+    rubberband
+    serd
+    sord
+    soundtouch
+    sratom
+    sqlite
+    taglib
+    upower
+    vamp-plugin-sdk
+    wavpack
   ];
 
   enableParallelBuilding = true;
 
-  sconsFlags = [
-    "build=release"
-    "qtdir=${qtbase}"
-    "faad=1"
-    "opus=1"
-  ];
-
   qtWrapperArgs = [
     "--set LOCALE_ARCHIVE ${glibcLocales}/lib/locale/locale-archive"
   ];
 
-  meta = with stdenv.lib; {
+  # 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
+  cmakeFlags = [
+    "-DINSTALL_USER_UDEV_RULES=OFF"
+  ];
+
+  postInstall = lib.optionalString stdenv.isLinux ''
+    rules="$src/res/linux/mixxx-usb-uaccess.rules"
+    if [ ! -f "$rules" ]; then
+        echo "$rules is missing, must update the Nix file."
+        exit 1
+    fi
+    mkdir -p "$out/lib/udev/rules.d"
+    cp "$rules" "$out/lib/udev/rules.d/69-mixxx-usb-uaccess.rules"
+  '';
+
+  meta = with lib; {
     homepage = "https://mixxx.org";
     description = "Digital DJ mixing software";
     license = licenses.gpl2Plus;
-    maintainers = [ maintainers.goibhniu maintainers.bfortz ];
+    maintainers = with maintainers; [ goibhniu bfortz ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/mmtc/default.nix b/pkgs/applications/audio/mmtc/default.nix
new file mode 100644
index 00000000000..fc5a2e9b035
--- /dev/null
+++ b/pkgs/applications/audio/mmtc/default.nix
@@ -0,0 +1,33 @@
+{ fetchFromGitHub, installShellFiles, lib, rustPlatform }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "mmtc";
+  version = "0.2.13";
+
+  src = fetchFromGitHub {
+    owner = "figsoda";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0ag87hgdg6fvk80fgznba0xjlcajks5w5s6y8lvwhz9irn2kq2rz";
+  };
+
+  cargoSha256 = "0lkx0zj9xc0rlrq91l4wydzp430hxlrqyq7ii8wq2fcan8ln22lv";
+
+  nativeBuildInputs = [ installShellFiles ];
+
+  preFixup = ''
+    completions=($releaseDir/build/mmtc-*/out/completions)
+    installShellCompletion ''${completions[0]}/mmtc.{bash,fish}
+    installShellCompletion --zsh ''${completions[0]}/_mmtc
+  '';
+
+  GEN_COMPLETIONS = "1";
+
+  meta = with lib; {
+    description = "Minimal mpd terminal client that aims to be simple yet highly configurable";
+    homepage = "https://github.com/figsoda/mmtc";
+    changelog = "https://github.com/figsoda/mmtc/blob/v${version}/CHANGELOG.md";
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ figsoda ];
+  };
+}
diff --git a/pkgs/applications/audio/moc/default.nix b/pkgs/applications/audio/moc/default.nix
index 9f68f8bb8e8..1d26782b6ae 100644
--- a/pkgs/applications/audio/moc/default.nix
+++ b/pkgs/applications/audio/moc/default.nix
@@ -1,7 +1,7 @@
-{ stdenv, fetchurl, pkgconfig
+{ lib, stdenv, fetchurl, pkg-config
 , ncurses, db , popt, libtool
 # Sound sub-systems
-, alsaSupport ? true, alsaLib
+, alsaSupport ? true, alsa-lib
 , pulseSupport ? true, libpulseaudio, autoreconfHook
 , jackSupport ? true, libjack2
 , ossSupport ? true
@@ -14,18 +14,17 @@
 , musepackSupport ? true, libmpc, libmpcdec, taglib
 , vorbisSupport ? true, libvorbis
 , speexSupport ? true, speex
-, ffmpegSupport ? true, ffmpeg_3
+, ffmpegSupport ? true, ffmpeg
 , sndfileSupport ? true, libsndfile
 , wavpackSupport ? true, wavpack
 # Misc
-, withffmpeg4 ? false, ffmpeg_4
 , curlSupport ? true, curl
 , samplerateSupport ? true, libsamplerate
 , withDebug ? false
 }:
 
 let
-  opt = stdenv.lib.optional;
+  opt = lib.optional;
   mkFlag = c: f: if c then "--with-${f}" else "--without-${f}";
 
 in stdenv.mkDerivation rec {
@@ -39,15 +38,15 @@ in stdenv.mkDerivation rec {
   };
 
   patches = []
-    ++ opt withffmpeg4 ./moc-ffmpeg4.patch
+    ++ opt ffmpegSupport ./moc-ffmpeg4.patch
     ++ opt pulseSupport ./pulseaudio.patch;
 
-  nativeBuildInputs = [ pkgconfig ]
+  nativeBuildInputs = [ pkg-config ]
     ++ opt pulseSupport autoreconfHook;
 
   buildInputs = [ ncurses db popt libtool ]
     # Sound sub-systems
-    ++ opt alsaSupport alsaLib
+    ++ opt alsaSupport alsa-lib
     ++ opt pulseSupport libpulseaudio
     ++ opt jackSupport libjack2
     # Audio formats
@@ -57,11 +56,10 @@ in stdenv.mkDerivation rec {
     ++ opt midiSupport timidity
     ++ opt modplugSupport libmodplug
     ++ opt mp3Support libmad
-    ++ stdenv.lib.optionals musepackSupport [ libmpc libmpcdec taglib ]
+    ++ lib.optionals musepackSupport [ libmpc libmpcdec taglib ]
     ++ opt vorbisSupport libvorbis
     ++ opt speexSupport speex
-    ++ opt (ffmpegSupport && !withffmpeg4) ffmpeg_3
-    ++ opt (ffmpegSupport && withffmpeg4) ffmpeg_4
+    ++ opt ffmpegSupport ffmpeg
     ++ opt sndfileSupport libsndfile
     ++ opt wavpackSupport wavpack
     # Misc
@@ -94,7 +92,7 @@ in stdenv.mkDerivation rec {
     "--without-rcc"
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "An ncurses console audio player designed to be powerful and easy to use";
     homepage = "http://moc.daper.net/";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/mod-distortion/default.nix b/pkgs/applications/audio/mod-distortion/default.nix
index 765def25d60..7c9f2acfd84 100644
--- a/pkgs/applications/audio/mod-distortion/default.nix
+++ b/pkgs/applications/audio/mod-distortion/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, lv2 }:
+{ lib, stdenv, fetchFromGitHub, lv2 }:
 
 stdenv.mkDerivation {
   pname = "mod-distortion-git";
@@ -15,7 +15,7 @@ stdenv.mkDerivation {
 
   installFlags = [ "INSTALL_PATH=$(out)/lib/lv2" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/portalmod/mod-distortion";
     description = "Analog distortion emulation lv2 plugins";
     license = licenses.gpl3;
diff --git a/pkgs/applications/audio/molot-lite/default.nix b/pkgs/applications/audio/molot-lite/default.nix
index 5c5aa505537..c44f597ef30 100644
--- a/pkgs/applications/audio/molot-lite/default.nix
+++ b/pkgs/applications/audio/molot-lite/default.nix
@@ -1,35 +1,31 @@
-{ stdenv, fetchurl, unzip, lv2 }:
+{ lib, stdenv, fetchFromGitHub, lv2 }:
+
+stdenv.mkDerivation rec {
 
-stdenv.mkDerivation {
   pname = "molot-lite";
-  version = "unstable-2014-04-23";
+  version = "1.0.0";
 
-  src = fetchurl {
-    # fetchzip does not accept urls that do not end with .zip.
-    url = "https://sourceforge.net/p/molot/code/ci/c4eddc426f8d5821e8ebcf1d67265365e4c8c52a/tree/molot_src.zip?format=raw";
-    sha256 = "1c47dwfgrmn9459px8s5zikcqyr0777v226qzcxlr6azlcjwr51b";
+  src = fetchFromGitHub {
+    owner = "magnetophon";
+    repo = pname;
+    rev = version;
+    sha256 = "0xbvicfk1rgp01nlg6hlym9bnygry0nrbv88mv7w6hnacvl63ba4";
   };
 
-  nativeBuildInputs = [ unzip ];
   buildInputs = [ lv2 ];
 
-  unpackPhase = ''
-    unzip $src
-  '';
-
-  buildPhase = ''
-    make -C Molot_Mono_Lite
-    make -C Molot_Stereo_Lite
-  '';
+  makeFlags = [ "INSTALL_DIR=$out/lib/lv2" ];
 
   installPhase = ''
+    runHook preInstall
     make install INSTALL_DIR=$out/lib/lv2 -C Molot_Mono_Lite
     make install INSTALL_DIR=$out/lib/lv2 -C Molot_Stereo_Lite
+    runHook postInstall
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Stereo and mono audio signal dynamic range compressor in LV2 format";
-    homepage = "https://sourceforge.net/projects/molot/";
+    homepage = "https://github.com/magnetophon/molot-lite";
     license = licenses.gpl3Plus;
     maintainers = [ maintainers.magnetophon ];
     platforms = platforms.linux;
diff --git a/pkgs/applications/audio/monkeys-audio/default.nix b/pkgs/applications/audio/monkeys-audio/default.nix
index adc8eb2087e..62b63f7e1ca 100644
--- a/pkgs/applications/audio/monkeys-audio/default.nix
+++ b/pkgs/applications/audio/monkeys-audio/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl}:
+{lib, stdenv, fetchurl}:
 
 stdenv.mkDerivation rec {
   version = "3.99-u4-b5";
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
     sha256 = "0kjfwzfxfx7f958b2b1kf8yj655lp0ppmn0sh57gbkjvj8lml7nz";
   };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Lossless audio codec";
     platforms = platforms.linux;
     license = licenses.lgpl2;
diff --git a/pkgs/applications/audio/mooSpace/default.nix b/pkgs/applications/audio/mooSpace/default.nix
new file mode 100644
index 00000000000..b7d7502d25a
--- /dev/null
+++ b/pkgs/applications/audio/mooSpace/default.nix
@@ -0,0 +1,35 @@
+{ lib, stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }:
+stdenv.mkDerivation rec {
+  pname = "mooSpace";
+  version = "unstable-2020-06-10";
+
+  src = fetchFromGitHub {
+    owner = "modularev";
+    repo = pname;
+    rev = "e5440407ea6ef9f7fcca838383b2b9a388c22874";
+    sha256 = "10vsbddf6d7i06040850v8xkmqh3bqawczs29kfgakair809wqxl";
+  };
+
+  buildInputs = [ faust2jaqt faust2lv2 ];
+
+  patchPhase = "mv ${pname}_faust.dsp ${pname}.dsp";
+
+  buildPhase = ''
+    faust2jaqt -time -vec -t 0 ${pname}.dsp
+    faust2lv2  -time -vec -t 0 -gui ${pname}.dsp
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp ${pname} $out/bin/
+      mkdir -p $out/lib/lv2
+      cp -r ${pname}.lv2 $out/lib/lv2
+  '';
+
+  meta = {
+    description = "Variable reverb audio effect, jack and lv2";
+    homepage = "https://github.com/modularev/mooSpace";
+    license = lib.licenses.gpl3;
+    maintainers = [ lib.maintainers.magnetophon ];
+  };
+}
diff --git a/pkgs/applications/audio/mopidy/default.nix b/pkgs/applications/audio/mopidy/default.nix
index 23322ca5663..0deecaec7ff 100644
--- a/pkgs/applications/audio/mopidy/default.nix
+++ b/pkgs/applications/audio/mopidy/default.nix
@@ -1,47 +1,41 @@
-{ newScope, python }:
+{ lib, newScope, python }:
 
 # Create a custom scope so we are consistent in which python version is used
+lib.makeScope newScope (self: with self; {
+  inherit python;
+  pythonPackages = python.pkgs;
 
-let
-  callPackage = newScope self;
+  mopidy = callPackage ./mopidy.nix { };
 
-  self = {
+  mopidy-iris = callPackage ./iris.nix { };
 
-    inherit python;
-    pythonPackages = python.pkgs;
+  mopidy-local = callPackage ./local.nix { };
 
-    mopidy = callPackage ./mopidy.nix { };
+  mopidy-moped = callPackage ./moped.nix { };
 
-    mopidy-gmusic = callPackage ./gmusic.nix { };
+  mopidy-mopify = callPackage ./mopify.nix { };
 
-    mopidy-local-images = callPackage ./local-images.nix { };
+  mopidy-mpd = callPackage ./mpd.nix { };
 
-    mopidy-local-sqlite = callPackage ./local-sqlite.nix { };
+  mopidy-mpris = callPackage ./mpris.nix { };
 
-    mopidy-spotify = callPackage ./spotify.nix { };
+  mopidy-musicbox-webclient = callPackage ./musicbox-webclient.nix { };
 
-    mopidy-moped = callPackage ./moped.nix { };
+  mopidy-podcast = callPackage ./podcast.nix { };
 
-    mopidy-mopify = callPackage ./mopify.nix { };
+  mopidy-scrobbler = callPackage ./scrobbler.nix { };
 
-    mopidy-mpd = callPackage ./mpd.nix { };
+  mopidy-somafm = callPackage ./somafm.nix { };
 
-    mopidy-mpris = callPackage ./mpris.nix { };
+  mopidy-soundcloud = callPackage ./soundcloud.nix { };
 
-    mopidy-somafm = callPackage ./somafm.nix { };
+  mopidy-spotify = callPackage ./spotify.nix { };
 
-    mopidy-spotify-tunigo = callPackage ./spotify-tunigo.nix { };
+  mopidy-spotify-tunigo = callPackage ./spotify-tunigo.nix { };
 
-    mopidy-youtube = callPackage ./youtube.nix { };
+  mopidy-tunein = callPackage ./tunein.nix { };
 
-    mopidy-soundcloud = callPackage ./soundcloud.nix { };
+  mopidy-youtube = callPackage ./youtube.nix { };
 
-    mopidy-musicbox-webclient = callPackage ./musicbox-webclient.nix { };
-
-    mopidy-iris = callPackage ./iris.nix { };
-
-    mopidy-tunein = callPackage ./tunein.nix { };
-
-  };
-
-in self
+  mopidy-subidy = callPackage ./subidy.nix { };
+})
diff --git a/pkgs/applications/audio/mopidy/gmusic.nix b/pkgs/applications/audio/mopidy/gmusic.nix
deleted file mode 100644
index 1e5e42ac2f3..00000000000
--- a/pkgs/applications/audio/mopidy/gmusic.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ stdenv, python3Packages, mopidy }:
-
-python3Packages.buildPythonApplication rec {
-  pname = "mopidy-gmusic";
-  version = "4.0.0";
-
-  src = python3Packages.fetchPypi {
-    inherit version;
-    pname = "Mopidy-GMusic";
-    sha256 = "14yswmlfs659rs3k595606m77lw9c6pjykb5pikqw21sb97haxl3";
-  };
-
-  propagatedBuildInputs = [
-    mopidy
-    python3Packages.requests
-    python3Packages.gmusicapi
-    python3Packages.cachetools
-  ];
-
-  doCheck = false;
-
-  meta = with stdenv.lib; {
-    homepage = "https://www.mopidy.com/";
-    description = "Mopidy extension for playing music from Google Play Music";
-    license = licenses.asl20;
-    maintainers = [ maintainers.jgillich ];
-    hydraPlatforms = [];
-  };
-}
diff --git a/pkgs/applications/audio/mopidy/iris.nix b/pkgs/applications/audio/mopidy/iris.nix
index 796812a9bd0..c2171d4cecc 100644
--- a/pkgs/applications/audio/mopidy/iris.nix
+++ b/pkgs/applications/audio/mopidy/iris.nix
@@ -1,12 +1,12 @@
-{ stdenv, python3Packages, mopidy, mopidy-local-images }:
+{ lib, python3Packages, mopidy }:
 
 python3Packages.buildPythonApplication rec {
   pname = "Mopidy-Iris";
-  version = "3.50.0";
+  version = "3.54.0";
 
   src = python3Packages.fetchPypi {
     inherit pname version;
-    sha256 = "04miwf0dqb8jir9g7xkfnn3l62bdn74ap03kqzz2v3byg64f1p0g";
+    sha256 = "0qnshn77dv7fl6smwnpnbq67mbc1vic9gf85skiqnqy8v8w5829f";
   };
 
   propagatedBuildInputs = [
@@ -14,13 +14,13 @@ python3Packages.buildPythonApplication rec {
   ] ++ (with python3Packages; [
     configobj
     requests
-    tornado_4
+    tornado
   ]);
 
   # no tests implemented
   doCheck = false;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/jaedb/Iris";
     description = "A fully-functional Mopidy web client encompassing Spotify and many other backends";
     license = licenses.asl20;
diff --git a/pkgs/applications/audio/mopidy/local-images.nix b/pkgs/applications/audio/mopidy/local-images.nix
deleted file mode 100644
index 085fe855e8a..00000000000
--- a/pkgs/applications/audio/mopidy/local-images.nix
+++ /dev/null
@@ -1,32 +0,0 @@
-{ stdenv, fetchFromGitHub, pythonPackages, mopidy, gobject-introspection }:
-
-pythonPackages.buildPythonApplication rec {
-  pname = "mopidy-local-images";
-  version = "1.0.0";
-
-  src = fetchFromGitHub {
-    owner = "mopidy";
-    repo = "mopidy-local-images";
-    rev = "v${version}";
-    sha256 = "0gdqxws0jish50mmi57mlqcs659wrllzv00czl18niz94vzvyc0d";
-  };
-
-  buildInputs = [ gobject-introspection ];
-
-  checkInputs = [
-    pythonPackages.mock
-  ];
-
-  propagatedBuildInputs = [
-    mopidy
-    pythonPackages.pykka
-    pythonPackages.uritools
-  ];
-
-  meta = with stdenv.lib; {
-    homepage = "https://github.com/mopidy/mopidy-local-images";
-    description = "Mopidy local library proxy extension for handling embedded album art";
-    license = licenses.asl20;
-    maintainers = [ maintainers.rvolosatovs ];
-  };
-}
diff --git a/pkgs/applications/audio/mopidy/local-sqlite.nix b/pkgs/applications/audio/mopidy/local-sqlite.nix
deleted file mode 100644
index 23e01c02a0f..00000000000
--- a/pkgs/applications/audio/mopidy/local-sqlite.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ stdenv, fetchFromGitHub, pythonPackages, mopidy }:
-
-pythonPackages.buildPythonApplication rec {
-  pname = "mopidy-local-sqlite";
-  version = "1.0.0";
-
-  src = fetchFromGitHub {
-    owner = "mopidy";
-    repo = "mopidy-local-sqlite";
-    rev = "v${version}";
-    sha256 = "1fjd9ydbfwd1n9b9zw8zjn4l7c5hpam2n0xs51pjkjn82m3zq9zv";
-  };
-
-  propagatedBuildInputs = [
-    mopidy
-    pythonPackages.uritools
-  ];
-
-  meta = with stdenv.lib; {
-    homepage = "https://github.com/mopidy/mopidy-local-sqlite";
-    description = "Mopidy SQLite local library extension";
-    license = licenses.asl20;
-    maintainers = [ maintainers.rvolosatovs ];
-  };
-}
diff --git a/pkgs/applications/audio/mopidy/local.nix b/pkgs/applications/audio/mopidy/local.nix
new file mode 100644
index 00000000000..ebe9885e495
--- /dev/null
+++ b/pkgs/applications/audio/mopidy/local.nix
@@ -0,0 +1,30 @@
+{ lib
+, mopidy
+, python3Packages
+}:
+
+python3Packages.buildPythonApplication rec {
+  pname = "Mopidy-Local";
+  version = "3.2.1";
+
+  src = python3Packages.fetchPypi {
+    inherit pname version;
+    sha256 = "18w39mxpv8p17whd6zfw5653d21q138f8xd6ili6ks2g2dbm25i9";
+  };
+
+  propagatedBuildInputs = [
+    mopidy
+    python3Packages.uritools
+  ];
+
+  checkInputs = [
+    python3Packages.pytestCheckHook
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/mopidy/mopidy-local";
+    description = "Mopidy extension for playing music from your local music archive";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ ruuda ];
+  };
+}
diff --git a/pkgs/applications/audio/mopidy/moped.nix b/pkgs/applications/audio/mopidy/moped.nix
index ffd9af76d17..c191eba4c4d 100644
--- a/pkgs/applications/audio/mopidy/moped.nix
+++ b/pkgs/applications/audio/mopidy/moped.nix
@@ -1,4 +1,4 @@
-{ stdenv, pythonPackages, mopidy, glibcLocales }:
+{ lib, pythonPackages, mopidy, glibcLocales }:
 
 pythonPackages.buildPythonApplication rec {
   pname = "Mopidy-Moped";
@@ -16,7 +16,7 @@ pythonPackages.buildPythonApplication rec {
   # no tests implemented
   doCheck = false;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/martijnboland/moped";
     description = "A web client for Mopidy";
     license = licenses.mit;
diff --git a/pkgs/applications/audio/mopidy/mopidy.nix b/pkgs/applications/audio/mopidy/mopidy.nix
index ae65d9b2f6e..d53bfee9efd 100644
--- a/pkgs/applications/audio/mopidy/mopidy.nix
+++ b/pkgs/applications/audio/mopidy/mopidy.nix
@@ -1,41 +1,48 @@
-{ stdenv, fetchFromGitHub, pythonPackages, wrapGAppsHook
+{ lib, stdenv, fetchFromGitHub, pythonPackages, wrapGAppsHook
 , gst_all_1, glib-networking, gobject-introspection
 }:
 
 pythonPackages.buildPythonApplication rec {
   pname = "mopidy";
-  version = "3.0.2";
+  version = "3.1.1";
 
   src = fetchFromGitHub {
     owner = "mopidy";
     repo = "mopidy";
     rev = "v${version}";
-    sha256 = "1n9lpgq0p112cjgsrc1cd6mnffk56y36g2c5skk9cqzw27qrkd15";
+    sha256 = "14m80z9spi2vhfs2bbff7ky80mr6bksl4550y17hwd7zpkid60za";
   };
 
   nativeBuildInputs = [ wrapGAppsHook ];
 
   buildInputs = with gst_all_1; [
-    gst-plugins-base gst-plugins-good gst-plugins-ugly gst-plugins-bad
-    glib-networking gobject-introspection
+    glib-networking
+    gst-plugins-bad
+    gst-plugins-base
+    gst-plugins-good
+    gst-plugins-ugly
   ];
 
-  propagatedBuildInputs = with pythonPackages; [
-    gst-python pygobject3 pykka tornado_4 requests setuptools
-  ] ++ stdenv.lib.optional (!stdenv.isDarwin) dbus-python;
+  propagatedBuildInputs = [
+    gobject-introspection
+  ] ++ (with pythonPackages; [
+      gst-python
+      pygobject3
+      pykka
+      requests
+      setuptools
+      tornado
+    ] ++ lib.optional (!stdenv.isDarwin) dbus-python
+  );
 
   # There are no tests
   doCheck = false;
 
-  preFixup = ''
-    gappsWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH")
-  '';
-
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://www.mopidy.com/";
     description = ''
       An extensible music server that plays music from local disk, Spotify,
-      SoundCloud, Google Play Music, and more
+      SoundCloud, and more
     '';
     license = licenses.asl20;
     maintainers = [ maintainers.fpletz ];
diff --git a/pkgs/applications/audio/mopidy/mopify.nix b/pkgs/applications/audio/mopidy/mopify.nix
index a9902ca4172..670b1a9c509 100644
--- a/pkgs/applications/audio/mopidy/mopify.nix
+++ b/pkgs/applications/audio/mopidy/mopify.nix
@@ -1,4 +1,4 @@
-{ stdenv, pythonPackages, mopidy }:
+{ lib, pythonPackages, mopidy }:
 
 pythonPackages.buildPythonApplication rec {
   pname = "Mopidy-Mopify";
@@ -14,7 +14,7 @@ pythonPackages.buildPythonApplication rec {
   # no tests implemented
   doCheck = false;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/dirkgroenen/mopidy-mopify";
     description = "A mopidy webclient based on the Spotify webbased interface";
     license = licenses.gpl3;
diff --git a/pkgs/applications/audio/mopidy/mpd.nix b/pkgs/applications/audio/mopidy/mpd.nix
index 4dd32ea3aa3..d686d492898 100644
--- a/pkgs/applications/audio/mopidy/mpd.nix
+++ b/pkgs/applications/audio/mopidy/mpd.nix
@@ -1,4 +1,4 @@
-{ stdenv, python3Packages, mopidy }:
+{ lib, python3Packages, mopidy }:
 
 python3Packages.buildPythonApplication rec {
   pname = "Mopidy-MPD";
@@ -15,7 +15,7 @@ python3Packages.buildPythonApplication rec {
   doCheck = false;
   pythonImportsCheck = [ "mopidy_mpd" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/mopidy/mopidy-mpd";
     description = "Mopidy extension for controlling playback from MPD clients";
     license = licenses.asl20;
diff --git a/pkgs/applications/audio/mopidy/mpris.nix b/pkgs/applications/audio/mopidy/mpris.nix
index 16fbfab380b..6327ba020bf 100644
--- a/pkgs/applications/audio/mopidy/mpris.nix
+++ b/pkgs/applications/audio/mopidy/mpris.nix
@@ -1,13 +1,13 @@
-{ stdenv, python3Packages, mopidy }:
+{ lib, python3Packages, mopidy }:
 
 python3Packages.buildPythonApplication rec {
   pname = "mopidy-mpris";
-  version = "3.0.1";
+  version = "3.0.2";
 
   src = python3Packages.fetchPypi {
     inherit version;
     pname = "Mopidy-MPRIS";
-    sha256 = "0qk46aq5r92qgkldzl41x09naww1gv92l4c4hknyl7yymyvm9lr2";
+    sha256 = "0mmdaikw00f43gzjdbvlcvzff6yppm7v8mv012r79adzd992q9y0";
   };
 
   propagatedBuildInputs = [
@@ -17,8 +17,8 @@ python3Packages.buildPythonApplication rec {
 
   doCheck = false;
 
-  meta = with stdenv.lib; {
-    homepage = https://www.mopidy.com/;
+  meta = with lib; {
+    homepage = "https://www.mopidy.com/";
     description = "Mopidy extension for controlling Mopidy through D-Bus using the MPRIS specification";
     license = licenses.asl20;
     maintainers = [ maintainers.nickhu ];
diff --git a/pkgs/applications/audio/mopidy/musicbox-webclient.nix b/pkgs/applications/audio/mopidy/musicbox-webclient.nix
index b0abefd7a1f..1e2cb8d0609 100644
--- a/pkgs/applications/audio/mopidy/musicbox-webclient.nix
+++ b/pkgs/applications/audio/mopidy/musicbox-webclient.nix
@@ -1,23 +1,24 @@
-{ stdenv, fetchFromGitHub, pythonPackages, mopidy }:
+{ lib, stdenv, fetchFromGitHub, pythonPackages, mopidy }:
 
 pythonPackages.buildPythonApplication rec {
   pname = "mopidy-musicbox-webclient";
-  version = "2.3.0";
+  version = "3.1.0";
 
   src = fetchFromGitHub {
     owner = "pimusicbox";
     repo = "mopidy-musicbox-webclient";
     rev = "v${version}";
-    sha256 = "1jcfrwsi7axiph3jplqzmcqia9pc46xb2yf13d8h6lnh3h49rwvz";
+    sha256 = "1lzarazq67gciyn6r8cdms0f7j0ayyfwhpf28z93ydb280mfrrb9";
   };
 
   propagatedBuildInputs = [ mopidy ];
 
   doCheck = false;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Mopidy extension for playing music from SoundCloud";
     license = licenses.mit;
+    broken = stdenv.isDarwin;
     maintainers = [ maintainers.spwhitt ];
   };
 }
diff --git a/pkgs/applications/audio/mopidy/podcast.nix b/pkgs/applications/audio/mopidy/podcast.nix
new file mode 100644
index 00000000000..8a5c4ec2b3d
--- /dev/null
+++ b/pkgs/applications/audio/mopidy/podcast.nix
@@ -0,0 +1,31 @@
+{ lib, python3Packages, mopidy }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "mopidy-podcast";
+  version = "3.0.0";
+
+  src = python3Packages.fetchPypi {
+    inherit version;
+    pname = "Mopidy-Podcast";
+    sha256 = "1z2b523yvdpcf8p7m7kczrvaw045lmxzhq4qj00dflxa2yw61qxr";
+  };
+
+  propagatedBuildInputs = [
+    mopidy
+    python3Packages.cachetools
+    python3Packages.uritools
+  ];
+
+  checkInputs = with python3Packages; [
+    pytestCheckHook
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/tkem/mopidy-podcast";
+    description = "Mopidy extension for browsing and playing podcasts";
+    license = licenses.asl20;
+    maintainers = [
+      maintainers.daneads
+    ];
+  };
+}
diff --git a/pkgs/applications/audio/mopidy/scrobbler.nix b/pkgs/applications/audio/mopidy/scrobbler.nix
new file mode 100644
index 00000000000..621ced53646
--- /dev/null
+++ b/pkgs/applications/audio/mopidy/scrobbler.nix
@@ -0,0 +1,24 @@
+{ lib, python3Packages, mopidy }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "Mopidy-Scrobbler";
+  version = "2.0.1";
+
+  src = python3Packages.fetchPypi {
+    inherit pname version;
+    sha256 = "11vxgax4xgkggnq4fr1rh2rcvzspkkimck5p3h4phdj3qpnj0680";
+  };
+
+  propagatedBuildInputs = with python3Packages; [ mopidy pylast ];
+
+  # no tests implemented
+  doCheck = false;
+  pythonImportsCheck = [ "mopidy_scrobbler" ];
+
+  meta = with lib; {
+    homepage = "https://github.com/mopidy/mopidy-scrobbler";
+    description = "Mopidy extension for scrobbling played tracks to Last.fm.";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ jakeisnt ];
+  };
+}
diff --git a/pkgs/applications/audio/mopidy/somafm.nix b/pkgs/applications/audio/mopidy/somafm.nix
index 2e3380fa20f..81c689a343d 100644
--- a/pkgs/applications/audio/mopidy/somafm.nix
+++ b/pkgs/applications/audio/mopidy/somafm.nix
@@ -1,4 +1,4 @@
-{ stdenv, python3Packages, mopidy }:
+{ lib, python3Packages, mopidy }:
 
 python3Packages.buildPythonApplication rec {
   pname = "mopidy-somafm";
@@ -16,8 +16,8 @@ python3Packages.buildPythonApplication rec {
 
   doCheck = false;
 
-  meta = with stdenv.lib; {
-    homepage = https://www.mopidy.com/;
+  meta = with lib; {
+    homepage = "https://www.mopidy.com/";
     description = "Mopidy extension for playing music from SomaFM";
     license = licenses.mit;
     maintainers = [ maintainers.nickhu ];
diff --git a/pkgs/applications/audio/mopidy/soundcloud.nix b/pkgs/applications/audio/mopidy/soundcloud.nix
index 8002feb0f90..d8a244b5146 100644
--- a/pkgs/applications/audio/mopidy/soundcloud.nix
+++ b/pkgs/applications/audio/mopidy/soundcloud.nix
@@ -1,21 +1,21 @@
-{ stdenv, fetchFromGitHub, pythonPackages, mopidy }:
+{ lib, fetchFromGitHub, pythonPackages, mopidy }:
 
 pythonPackages.buildPythonApplication rec {
   pname = "mopidy-soundcloud";
-  version = "2.1.0";
+  version = "3.0.1";
 
   src = fetchFromGitHub {
     owner = "mopidy";
     repo = "mopidy-soundcloud";
     rev = "v${version}";
-    sha256 = "131qdm9i0j3ayff0js11qcmbjv50ws5s6iiqr6x5b66ymjl4scfv";
+    sha256 = "18wiiv4rca9vibvnc27f3q4apf8n61kbp7mdbm2pmz86qwmd47pa";
   };
 
   propagatedBuildInputs = [ mopidy ];
 
   doCheck = false;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Mopidy extension for playing music from SoundCloud";
     license = licenses.mit;
     maintainers = [ maintainers.spwhitt ];
diff --git a/pkgs/applications/audio/mopidy/spotify-tunigo.nix b/pkgs/applications/audio/mopidy/spotify-tunigo.nix
index 4b75af5ed57..70d076190cd 100644
--- a/pkgs/applications/audio/mopidy/spotify-tunigo.nix
+++ b/pkgs/applications/audio/mopidy/spotify-tunigo.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, pythonPackages, mopidy, mopidy-spotify }:
+{ lib, fetchFromGitHub, pythonPackages, mopidy, mopidy-spotify }:
 
 pythonPackages.buildPythonApplication rec {
   pname = "mopidy-spotify-tunigo";
@@ -15,7 +15,7 @@ pythonPackages.buildPythonApplication rec {
 
   doCheck = false;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Mopidy extension for providing the browse feature of Spotify";
     license = licenses.asl20;
     maintainers = [ maintainers.spwhitt ];
diff --git a/pkgs/applications/audio/mopidy/spotify.nix b/pkgs/applications/audio/mopidy/spotify.nix
index 32019c74f86..e44b9f35daa 100644
--- a/pkgs/applications/audio/mopidy/spotify.nix
+++ b/pkgs/applications/audio/mopidy/spotify.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pythonPackages, mopidy }:
+{ lib, fetchurl, pythonPackages, mopidy }:
 
 pythonPackages.buildPythonApplication rec {
   pname = "mopidy-spotify";
@@ -13,7 +13,7 @@ pythonPackages.buildPythonApplication rec {
 
   doCheck = false;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://www.mopidy.com/";
     description = "Mopidy extension for playing music from Spotify";
     license = licenses.asl20;
diff --git a/pkgs/applications/audio/mopidy/subidy.nix b/pkgs/applications/audio/mopidy/subidy.nix
new file mode 100644
index 00000000000..98d69816b73
--- /dev/null
+++ b/pkgs/applications/audio/mopidy/subidy.nix
@@ -0,0 +1,24 @@
+{ lib, fetchFromGitHub, pythonPackages, mopidy }:
+
+pythonPackages.buildPythonApplication rec {
+  pname = "mopidy-subidy";
+  version = "1.0.0";
+
+  src = fetchFromGitHub {
+    owner = "Prior99";
+    repo = pname;
+    rev = version;
+    sha256 = "0c5ghhhrj5v3yp4zmll9ari6r5c6ha8c1izwqshvadn40b02q7xz";
+  };
+
+  propagatedBuildInputs = [ mopidy pythonPackages.py-sonic ];
+
+  checkInputs = with pythonPackages; [ pytestCheckHook ];
+
+  meta = with lib; {
+    homepage = "https://www.mopidy.com/";
+    description = "Mopidy extension for playing music from a Subsonic-compatible Music Server";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ wenngle ];
+  };
+}
diff --git a/pkgs/applications/audio/mopidy/tunein.nix b/pkgs/applications/audio/mopidy/tunein.nix
index 569d08fb4a0..4a3edd2a434 100644
--- a/pkgs/applications/audio/mopidy/tunein.nix
+++ b/pkgs/applications/audio/mopidy/tunein.nix
@@ -1,26 +1,23 @@
-{ stdenv, python3Packages, mopidy }:
+{ lib, python3Packages, mopidy }:
 
 python3Packages.buildPythonApplication rec {
   pname = "mopidy-tunein";
-  version = "1.0.0";
+  version = "1.1.0";
 
   src = python3Packages.fetchPypi {
     inherit version;
     pname = "Mopidy-TuneIn";
-    sha256 = "0insasf4w8ajsqjh5zmax7pkzmrk1p245vh4y8ddicldj45p6qfj";
+    sha256 = "01y1asylscr73yqx071imhrzfzlg07wmqqzkdvpgm6r35marc2li";
   };
 
   propagatedBuildInputs = [
     mopidy
   ];
 
-  # tests fail with "ValueError: Namespace Gst not available" in mopidy itself
-  doCheck = false;
-
   pythonImportsCheck = [ "mopidy_tunein.tunein" ];
 
-  meta = with stdenv.lib; {
-    description = "Mopidy extension for playing music from tunein.";
+  meta = with lib; {
+    description = "Mopidy extension for playing music from tunein";
     homepage = "https://github.com/kingosticks/mopidy-tunein";
     license = licenses.asl20;
     maintainers = with maintainers; [ hexa ];
diff --git a/pkgs/applications/audio/mopidy/youtube.nix b/pkgs/applications/audio/mopidy/youtube.nix
index a115812b86a..b84a756c2ce 100644
--- a/pkgs/applications/audio/mopidy/youtube.nix
+++ b/pkgs/applications/audio/mopidy/youtube.nix
@@ -1,13 +1,13 @@
-{ stdenv, python3Packages, mopidy }:
+{ lib, python3Packages, mopidy }:
 
 python3Packages.buildPythonApplication rec {
   pname = "mopidy-youtube";
-  version = "3.1";
+  version = "3.2";
 
   src = python3Packages.fetchPypi {
     inherit version;
     pname = "Mopidy-YouTube";
-    sha256 = "1bn3nxianbal9f81z9wf2cxi893hndvrz2zdqvh1zpxrhs0cr038";
+    sha256 = "0wmalfqnskglssq3gj6kkrq6h6c9yab503y72afhkm7n9r5c57zz";
   };
 
   patchPhase = "sed s/bs4/beautifulsoup4/ -i setup.cfg";
@@ -21,7 +21,7 @@ python3Packages.buildPythonApplication rec {
 
   doCheck = false;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Mopidy extension for playing music from YouTube";
     license = licenses.asl20;
     maintainers = [ maintainers.spwhitt ];
diff --git a/pkgs/applications/audio/mousai/default.nix b/pkgs/applications/audio/mousai/default.nix
new file mode 100644
index 00000000000..9044d201c45
--- /dev/null
+++ b/pkgs/applications/audio/mousai/default.nix
@@ -0,0 +1,69 @@
+{ lib
+, python3
+, fetchFromGitHub
+, appstream-glib
+, desktop-file-utils
+, gettext
+, glib
+, gobject-introspection
+, gst_all_1
+, gtk4
+, libadwaita
+, librsvg
+, meson
+, ninja
+, pkg-config
+, wrapGAppsHook
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "mousai";
+  version = "0.4.2";
+
+  format = "other";
+
+  src = fetchFromGitHub {
+    owner = "SeaDve";
+    repo = "Mousai";
+    rev = "v${version}";
+    sha256 = "sha256-zH++GGFIz3oxkKOYB4zhY6yL3vENEXxtrv8mZZ+41kU=";
+  };
+
+  postPatch = ''
+    patchShebangs build-aux/meson
+  '';
+
+  nativeBuildInputs = [
+    appstream-glib
+    desktop-file-utils
+    gettext
+    glib
+    gtk4
+    meson
+    ninja
+    pkg-config
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gobject-introspection
+    gst_all_1.gstreamer
+    gst_all_1.gst-plugins-base
+    gst_all_1.gst-plugins-good
+    gtk4
+    libadwaita
+    librsvg
+  ];
+
+  propagatedBuildInputs = with python3.pkgs; [
+    pygobject3
+    requests
+  ];
+
+  meta = with lib; {
+    description = "Identify any songs in seconds";
+    homepage = "https://github.com/SeaDve/Mousai";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/applications/audio/mp3blaster/default.nix b/pkgs/applications/audio/mp3blaster/default.nix
index 74814a1b7ce..d7dd5f102db 100644
--- a/pkgs/applications/audio/mp3blaster/default.nix
+++ b/pkgs/applications/audio/mp3blaster/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, ncurses, libvorbis, SDL }:
+{ lib, stdenv, fetchFromGitHub, ncurses, libvorbis, SDL }:
 
 stdenv.mkDerivation rec {
   pname = "mp3blaster";
@@ -14,15 +14,15 @@ stdenv.mkDerivation rec {
   buildInputs = [
     ncurses
     libvorbis
-  ] ++ stdenv.lib.optional stdenv.isDarwin SDL;
+  ] ++ lib.optional stdenv.isDarwin SDL;
 
   NIX_CFLAGS_COMPILE = toString ([
     "-Wno-narrowing"
-  ] ++ stdenv.lib.optionals stdenv.cc.isClang [
+  ] ++ lib.optionals stdenv.cc.isClang [
     "-Wno-reserved-user-defined-literal"
   ]);
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "An audio player for the text console";
     homepage = "http://www.mp3blaster.org/";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/mp3gain/default.nix b/pkgs/applications/audio/mp3gain/default.nix
index f2b4564c7cc..ba2a757e090 100644
--- a/pkgs/applications/audio/mp3gain/default.nix
+++ b/pkgs/applications/audio/mp3gain/default.nix
@@ -1,27 +1,37 @@
-{ stdenv, fetchurl, unzip, mpg123 }:
+{ lib, stdenv, fetchurl, fetchpatch, unzip, mpg123 }:
 
-stdenv.mkDerivation {
-  name = "mp3gain-1.6.2";
+stdenv.mkDerivation rec {
+  pname = "mp3gain";
+  version = "1.6.2";
   src = fetchurl {
-    url = "mirror://sourceforge/mp3gain/mp3gain-1_6_2-src.zip";
+    url = "mirror://sourceforge/${pname}/${pname}-${lib.replaceStrings ["."] ["_"] version}-src.zip";
     sha256 = "0varr6y7k8zarr56b42r0ad9g3brhn5vv3xjg1c0v19jxwr4gh2w";
   };
 
-  buildInputs = [ unzip mpg123 ];
+  nativeBuildInputs = [ unzip ];
+  buildInputs = [ mpg123 ];
 
   sourceRoot = ".";
 
+  patches = [
+    (fetchpatch {
+      name = "0001-fix-security-bugs.patch";
+      url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/media-sound/mp3gain/files/mp3gain-1.6.2-CVE-2019-18359-plus.patch?id=36f8689f7903548f5d89827a6e7bdf70a9882cee";
+      sha256 = "10n53wm0xynlcxqlnaqfgamjzcpfz41q1jlg0bhw4kq1kzhs4yyw";
+    })
+  ];
+
   buildFlags = [ "OSTYPE=linux" ];
 
   installPhase = ''
     install -vD mp3gain "$out/bin/mp3gain"
   '';
 
-  meta = {
+  meta = with lib; {
     description = "Lossless mp3 normalizer with statistical analysis";
     homepage = "http://mp3gain.sourceforge.net/";
-    license = stdenv.lib.licenses.lgpl21;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.devhell ];
+    license = licenses.lgpl21;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ devhell ];
   };
 }
diff --git a/pkgs/applications/audio/mp3info/default.nix b/pkgs/applications/audio/mp3info/default.nix
index 69ca271d27d..86c1f87f522 100644
--- a/pkgs/applications/audio/mp3info/default.nix
+++ b/pkgs/applications/audio/mp3info/default.nix
@@ -1,14 +1,15 @@
-{ fetchurl, stdenv, ncurses, pkgconfig, gtk2 }:
+{ fetchurl, lib, stdenv, ncurses, pkg-config, gtk2 }:
 
 stdenv.mkDerivation rec {
-  name = "mp3info-0.8.5a";
+  pname = "mp3info";
+  version = "0.8.5a";
 
   src = fetchurl {
-    url = "ftp://ftp.ibiblio.org/pub/linux/apps/sound/mp3-utils/mp3info/${name}.tgz";
+    url = "ftp://ftp.ibiblio.org/pub/linux/apps/sound/mp3-utils/${pname}/${pname}-${version}.tgz";
     sha256 = "042f1czcs9n2sbqvg4rsvfwlqib2gk976mfa2kxlfjghx5laqf04";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ ncurses gtk2 ];
 
   hardeningDisable = [ "format" ];
@@ -37,9 +38,9 @@ stdenv.mkDerivation rec {
 
     homepage = "http://www.ibiblio.org/mp3info/";
 
-    license = stdenv.lib.licenses.gpl2Plus;
+    license = lib.licenses.gpl2Plus;
 
     maintainers = [ ];
-    platforms = stdenv.lib.platforms.linux;
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/mp3splt/default.nix b/pkgs/applications/audio/mp3splt/default.nix
index 323854575ea..1407c153aed 100644
--- a/pkgs/applications/audio/mp3splt/default.nix
+++ b/pkgs/applications/audio/mp3splt/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, libmp3splt }:
+{ lib, stdenv, fetchurl, pkg-config, libmp3splt }:
 
 stdenv.mkDerivation rec {
   pname = "mp3splt";
@@ -11,12 +11,12 @@ stdenv.mkDerivation rec {
   };
 
   configureFlags = [ "--enable-oggsplt-symlink" "--enable-flacsplt-symlink" ];
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ libmp3splt ];
 
   outputs = [ "out" "man" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Utility to split mp3, ogg vorbis and FLAC files without decoding";
     homepage = "https://sourceforge.net/projects/mp3splt/";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/mp3val/default.nix b/pkgs/applications/audio/mp3val/default.nix
index 636fb7d9b9a..dc1a3085831 100644
--- a/pkgs/applications/audio/mp3val/default.nix
+++ b/pkgs/applications/audio/mp3val/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
   pname = "mp3val";
@@ -30,8 +30,8 @@ stdenv.mkDerivation rec {
       common types of tags (ID3v1, ID3v2, APEv2).
     '';
     homepage = "http://mp3val.sourceforge.net/index.shtml";
-    license = stdenv.lib.licenses.gpl2;
-    platforms = stdenv.lib.platforms.unix;
-    maintainers = [ stdenv.lib.maintainers.devhell ];
+    license = lib.licenses.gpl2;
+    platforms = lib.platforms.unix;
+    maintainers = [ lib.maintainers.devhell ];
   };
 }
diff --git a/pkgs/applications/audio/mpc/default.nix b/pkgs/applications/audio/mpc/default.nix
index a226b720df9..e4ecc920247 100644
--- a/pkgs/applications/audio/mpc/default.nix
+++ b/pkgs/applications/audio/mpc/default.nix
@@ -1,4 +1,13 @@
-{ stdenv, fetchFromGitHub, meson, ninja, pkgconfig, mpd_clientlib, sphinx, libiconv }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, pkg-config
+, libmpdclient
+, sphinx
+, libiconv
+}:
 
 stdenv.mkDerivation rec {
   pname = "mpc";
@@ -11,11 +20,11 @@ stdenv.mkDerivation rec {
     sha256 = "1qbi0i9cq54rj8z2kapk8x8g1jkw2jz781niwb9i7kw4xfhvy5zx";
   };
 
-  buildInputs = [ mpd_clientlib ] ++ stdenv.lib.optionals stdenv.isDarwin [ libiconv ];
+  buildInputs = [ libmpdclient ] ++ lib.optionals stdenv.isDarwin [ libiconv ];
 
-  nativeBuildInputs = [ meson ninja pkgconfig sphinx ];
+  nativeBuildInputs = [ meson ninja pkg-config sphinx ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A minimalist command line interface to MPD";
     homepage = "https://www.musicpd.org/clients/mpc/";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/mpc123/default.nix b/pkgs/applications/audio/mpc123/default.nix
index ef5cb169a2c..7ce8af1de23 100644
--- a/pkgs/applications/audio/mpc123/default.nix
+++ b/pkgs/applications/audio/mpc123/default.nix
@@ -1,4 +1,4 @@
-{ fetchurl, stdenv, gettext, libmpcdec, libao }:
+{ fetchurl, lib, stdenv, gettext, libmpcdec, libao }:
 
 let version = "0.2.4"; in
 stdenv.mkDerivation rec {
@@ -25,9 +25,9 @@ stdenv.mkDerivation rec {
 
     description = "A Musepack (.mpc) audio player";
 
-    license = stdenv.lib.licenses.gpl2Plus;
+    license = lib.licenses.gpl2Plus;
 
     maintainers = [ ];
-    platforms = stdenv.lib.platforms.gnu ++ stdenv.lib.platforms.linux; # arbitrary choice
+    platforms = lib.platforms.gnu ++ lib.platforms.linux; # arbitrary choice
   };
 }
diff --git a/pkgs/applications/audio/mpdevil/default.nix b/pkgs/applications/audio/mpdevil/default.nix
new file mode 100644
index 00000000000..09256911f87
--- /dev/null
+++ b/pkgs/applications/audio/mpdevil/default.nix
@@ -0,0 +1,52 @@
+{ lib, fetchFromGitHub
+, python3Packages
+, gdk-pixbuf, glib, gobject-introspection, gtk3
+, intltool
+, wrapGAppsHook }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "mpdevil";
+  version = "1.1.1";
+
+  src = fetchFromGitHub {
+    owner = "SoongNoonien";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0l7mqv7ys05al2hds4icb32hf14fqi3n7b0f5v1yx54cbl9cqfap";
+  };
+
+  nativeBuildInputs = [
+    glib.dev gobject-introspection gtk3 intltool wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gdk-pixbuf glib
+  ];
+
+  propagatedBuildInputs = with python3Packages; [
+    beautifulsoup4 distutils_extra mpd2 notify-py pygobject3 requests
+  ];
+
+  postInstall = ''
+    glib-compile-schemas $out/share/glib-2.0/schemas
+  '';
+
+  preFixup = ''
+    makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
+  '';
+
+  # Prevent double wrapping.
+  dontWrapGApps = true;
+  # Otherwise wrapGAppsHook do not pick up the dependencies correctly.
+  strictDeps = false;
+  # There aren't any checks.
+  doCheck = false;
+
+  meta = with lib; {
+    description = "A simple music browser for MPD";
+    homepage = "https://github.com/SoongNoonien/mpdevil";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ bloomvdomino ];
+  };
+}
diff --git a/pkgs/applications/audio/mpg123/default.nix b/pkgs/applications/audio/mpg123/default.nix
index 5260cb85a27..44788467d8f 100644
--- a/pkgs/applications/audio/mpg123/default.nix
+++ b/pkgs/applications/audio/mpg123/default.nix
@@ -1,26 +1,50 @@
-{ stdenv
-, fetchurl, alsaLib
+{ lib, stdenv
+, fetchurl
+, makeWrapper
+, alsa-lib
+, perl
+, withConplay ? !stdenv.targetPlatform.isWindows
 }:
 
 stdenv.mkDerivation rec {
-  name = "mpg123-1.26.2";
+  pname = "mpg123";
+  version = "1.26.5";
 
   src = fetchurl {
-    url = "mirror://sourceforge/mpg123/${name}.tar.bz2";
-    sha256 = "1wrgds46wj6xsnqa6bi8kkh3wd29i2nxclbps34w5kjglrzbzxq0";
+    url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-UCqX4Nk1vn432YczgCHY8wG641wohPKoPVnEtSRm7wY=";
   };
 
-  buildInputs = stdenv.lib.optional (!stdenv.isDarwin) alsaLib;
+  outputs = [ "out" ] ++ lib.optionals withConplay [ "conplay" ];
 
-  configureFlags = stdenv.lib.optional
+  nativeBuildInputs = lib.optionals withConplay [ makeWrapper ];
+
+  buildInputs = lib.optionals withConplay [ perl ]
+    ++ lib.optionals (!stdenv.isDarwin && !stdenv.targetPlatform.isWindows) [ alsa-lib ];
+
+  configureFlags = lib.optional
     (stdenv.hostPlatform ? mpg123)
     "--with-cpu=${stdenv.hostPlatform.mpg123.cpu}";
 
-  meta = {
+  postInstall = lib.optionalString withConplay ''
+    mkdir -p $conplay/bin
+    mv scripts/conplay $conplay/bin/
+  '';
+
+  preFixup = lib.optionalString withConplay ''
+    patchShebangs $conplay/bin/conplay
+  '';
+
+  postFixup = lib.optionalString withConplay ''
+    wrapProgram $conplay/bin/conplay \
+      --prefix PATH : $out/bin
+  '';
+
+  meta = with lib; {
     description = "Fast console MPEG Audio Player and decoder library";
-    homepage = "http://mpg123.org";
-    license = stdenv.lib.licenses.lgpl21;
-    maintainers = [ stdenv.lib.maintainers.ftrvxmtrx ];
-    platforms = stdenv.lib.platforms.unix;
+    homepage = "https://mpg123.org";
+    license = licenses.lgpl21;
+    maintainers = [ maintainers.ftrvxmtrx ];
+    platforms = platforms.all;
   };
 }
diff --git a/pkgs/applications/audio/mpg321/default.nix b/pkgs/applications/audio/mpg321/default.nix
index 63b8e2d867a..03aee52f2a9 100644
--- a/pkgs/applications/audio/mpg321/default.nix
+++ b/pkgs/applications/audio/mpg321/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, fetchpatch, libao, libmad, libid3tag, zlib, alsaLib
+{lib, stdenv, fetchurl, fetchpatch, libao, libmad, libid3tag, zlib, alsa-lib
 # Specify default libao output plugin to use (e.g. "alsa", "pulse" …).
 # If null, it will use the libao system default.
 , defaultAudio ? null
@@ -25,19 +25,18 @@ stdenv.mkDerivation rec {
 
   configureFlags =
     [ ("--enable-alsa=" + (if stdenv.isLinux then "yes" else "no")) ]
-    ++ (stdenv.lib.optional (defaultAudio != null)
+    ++ (lib.optional (defaultAudio != null)
          "--with-default-audio=${defaultAudio}");
 
   buildInputs = [libao libid3tag libmad zlib]
-    ++ stdenv.lib.optional stdenv.isLinux alsaLib;
+    ++ lib.optional stdenv.isLinux alsa-lib;
 
   installTargets = [ "install" "install-man" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Command-line MP3 player";
     homepage = "http://mpg321.sourceforge.net/";
     license = licenses.gpl2;
-    maintainers = [ maintainers.rycee ];
     platforms = platforms.gnu ++ platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/munt/default.nix b/pkgs/applications/audio/munt/default.nix
index bf9710fb17e..191612700f4 100644
--- a/pkgs/applications/audio/munt/default.nix
+++ b/pkgs/applications/audio/munt/default.nix
@@ -1,38 +1,51 @@
-{ stdenv, mkDerivation, fetchFromGitHub, cmake, qtbase, alsaLib, makeDesktopItem }:
+{ lib
+, mkDerivation
+, stdenv
+, fetchFromGitHub
+, makeDesktopItem
+, cmake
+, pkg-config
+, qtbase
+, glib
+, alsa-lib
+, withJack ? stdenv.hostPlatform.isUnix, jack
+}:
 
 let
-  desktopItem = makeDesktopItem rec {
-    name = "Munt";
-    exec = "mt32emu-qt";
-    desktopName = name;
-    genericName = "Munt synthesiser";
-    categories = "Audio;AudioVideo;";
-  };
-in mkDerivation rec {
-  version = "2.4.0";
+  mainProgram = "mt32emu-qt";
+in
+mkDerivation rec {
   pname = "munt";
+  version = "2.5.0";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
-    rev = with stdenv.lib.versions; "libmt32emu_${major version}_${minor version}_${patch version}";
-    sha256 = "0521i7js5imlsxj6n7181w5szfjikam0k4vq1d2ilkqgcwrkg6ln";
+    rev = "munt_${lib.replaceChars [ "." ] [ "_" ] version}";
+    sha256 = "1lknq2a72gv1ddhzr7f967wpa12lh805jj4gjacdnamgrc1h22yn";
   };
 
-  postInstall = ''
-    ln -s ${desktopItem}/share/applications $out/share
-  '';
-
   dontFixCmake = true;
 
-  nativeBuildInputs = [ cmake ];
-  buildInputs = [ qtbase alsaLib ];
+  nativeBuildInputs = [ cmake pkg-config ];
+
+  buildInputs = [ qtbase glib ]
+    ++ lib.optional stdenv.hostPlatform.isLinux alsa-lib
+    ++ lib.optional withJack jack;
+
+  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}
+  '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
+    inherit mainProgram;
     description = "Multi-platform software synthesiser emulating Roland MT-32, CM-32L, CM-64 and LAPC-I devices";
     homepage = "http://munt.sourceforge.net/";
     license = with licenses; [ lgpl21 gpl3 ];
-    platforms = platforms.linux;
-    maintainers = with maintainers; [ gnidorah ];
+    platforms = platforms.all;
+    maintainers = with maintainers; [ OPNA2608 ];
   };
 }
diff --git a/pkgs/applications/audio/mup/default.nix b/pkgs/applications/audio/mup/default.nix
index 0227255d38d..8f1d5c38b34 100644
--- a/pkgs/applications/audio/mup/default.nix
+++ b/pkgs/applications/audio/mup/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, autoreconfHook, bison, flex, ghostscript, groff, netpbm
+{ lib, stdenv, fetchurl, autoreconfHook, bison, flex, ghostscript, groff, netpbm
 , fltk, libXinerama, libXpm, libjpeg
 }:
 
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = false; # Undeclared dependencies + https://stackoverflow.com/a/19822767/1687334 for prolog.ps.
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://www.arkkra.com/";
     description = "Music typesetting program (ASCII to PostScript and MIDI)";
     license = licenses.bsd3;
diff --git a/pkgs/applications/audio/muse/default.nix b/pkgs/applications/audio/muse/default.nix
index 6ba29226b58..f5a6bafe792 100644
--- a/pkgs/applications/audio/muse/default.nix
+++ b/pkgs/applications/audio/muse/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchFromGitHub, cmake, pkgconfig, qttools, wrapQtAppsHook
-, alsaLib, dssi, fluidsynth, ladspaH, lash, libinstpatch, libjack2, liblo
+{ lib, stdenv, fetchFromGitHub, cmake, pkg-config, qttools, wrapQtAppsHook
+, alsa-lib, dssi, fluidsynth, ladspaH, lash, libinstpatch, libjack2, liblo
 , libsamplerate, libsndfile, lilv, lrdf, lv2, qtsvg, rtaudio, rubberband, sord
 }:
 
@@ -22,15 +22,15 @@ stdenv.mkDerivation rec {
 
   patches = [ ./fix-parallel-building.patch ];
 
-  nativeBuildInputs = [ cmake pkgconfig qttools wrapQtAppsHook ];
+  nativeBuildInputs = [ cmake pkg-config qttools wrapQtAppsHook ];
 
   buildInputs = [
-    alsaLib dssi fluidsynth ladspaH lash libinstpatch libjack2 liblo
+    alsa-lib dssi fluidsynth ladspaH lash libinstpatch libjack2 liblo
     libsamplerate libsndfile lilv lrdf lv2 qtsvg rtaudio rubberband sord
   ];
 
-  meta = with stdenv.lib; {
-    homepage = "https://www.muse-sequencer.org/";
+  meta = with lib; {
+    homepage = "https://muse-sequencer.github.io/";
     description = "MIDI/Audio sequencer with recording and editing capabilities";
     longDescription = ''
       MusE is a MIDI/Audio sequencer with recording and editing capabilities
diff --git a/pkgs/applications/audio/musescore/darwin.nix b/pkgs/applications/audio/musescore/darwin.nix
index 8870a144c9f..13141729320 100644
--- a/pkgs/applications/audio/musescore/darwin.nix
+++ b/pkgs/applications/audio/musescore/darwin.nix
@@ -11,6 +11,9 @@ stdenv.mkDerivation rec {
   pname = "musescore-darwin";
   version = concatStringsSep "." versionComponents;
 
+  # The disk image contains the .app and a symlink to /Applications.
+  sourceRoot = "${appName}.app";
+
   src = fetchurl {
     url =  "ftp://ftp.osuosl.org/pub/musescore/releases/MuseScore-${concatStringsSep "." (take 3 versionComponents)}/MuseScore-${version}.dmg";
     sha256 = "19xkaxlkbrhvfip6n3iw6q7463ngr6y5gfisrpjqg2xl2igyl795";
@@ -23,12 +26,12 @@ stdenv.mkDerivation rec {
     chmod a+x "$out/Applications/${appName}.app/Contents/MacOS/mscore"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Music notation and composition software";
     homepage = "https://musescore.org/";
     license = licenses.gpl2;
     platforms = platforms.darwin;
-    maintainers = with maintainers; [ yurrriq ];
+    maintainers = [];
     repositories.git = "https://github.com/musescore/MuseScore";
   };
 }
diff --git a/pkgs/applications/audio/musescore/default.nix b/pkgs/applications/audio/musescore/default.nix
index 71c639ca406..c2a2e7b9603 100644
--- a/pkgs/applications/audio/musescore/default.nix
+++ b/pkgs/applications/audio/musescore/default.nix
@@ -1,18 +1,20 @@
-{ stdenv, mkDerivation, lib, fetchzip, cmake, pkgconfig
-, alsaLib, freetype, libjack2, lame, libogg, libpulseaudio, libsndfile, libvorbis
+{ mkDerivation, lib, fetchFromGitHub, cmake, pkg-config
+, alsa-lib, freetype, libjack2, lame, libogg, libpulseaudio, libsndfile, libvorbis
 , portaudio, portmidi, qtbase, qtdeclarative, qtgraphicaleffects
 , qtquickcontrols2, qtscript, qtsvg, qttools
 , qtwebengine, qtxmlpatterns
+, nixosTests
 }:
 
 mkDerivation rec {
   pname = "musescore";
-  version = "3.5.0";
+  version = "3.6.2";
 
-  src = fetchzip {
-    url = "https://github.com/musescore/MuseScore/releases/download/v3.5/MuseScore-${version}.zip";
-    sha256 = "0m598xh0s4f5m4l2ymy7g44bbvc14bcfi4gifhjnrg091rsk57c9";
-    stripRoot = false;
+  src = fetchFromGitHub {
+    owner = "musescore";
+    repo = "MuseScore";
+    rev = "v${version}";
+    sha256 = "sha256-GBGAD/qdOhoNfDzI+O0EiKgeb86GFJxpci35T6tZ+2s=";
   };
 
   patches = [
@@ -20,6 +22,7 @@ mkDerivation rec {
   ];
 
   cmakeFlags = [
+    "-DMUSESCORE_BUILD_CONFIG=release"
     "-DUSE_SYSTEM_FREETYPE=ON"
   ];
 
@@ -29,16 +32,18 @@ mkDerivation rec {
     "--set QML_DISABLE_DISK_CACHE 1"
   ];
 
-  nativeBuildInputs = [ cmake pkgconfig ];
+  nativeBuildInputs = [ cmake pkg-config ];
 
   buildInputs = [
-    alsaLib libjack2 freetype lame libogg libpulseaudio libsndfile libvorbis
+    alsa-lib libjack2 freetype lame libogg libpulseaudio libsndfile libvorbis
     portaudio portmidi # tesseract
     qtbase qtdeclarative qtgraphicaleffects qtquickcontrols2
     qtscript qtsvg qttools qtwebengine qtxmlpatterns
   ];
 
-  meta = with stdenv.lib; {
+  passthru.tests = nixosTests.musescore;
+
+  meta = with lib; {
     description = "Music notation and composition software";
     homepage = "https://musescore.org/";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/musikcube/default.nix b/pkgs/applications/audio/musikcube/default.nix
index 8fc0616ff73..2824832ef60 100644
--- a/pkgs/applications/audio/musikcube/default.nix
+++ b/pkgs/applications/audio/musikcube/default.nix
@@ -1,29 +1,29 @@
 { cmake
 , pkg-config
-, alsaLib
+, alsa-lib
 , boost
 , curl
 , fetchFromGitHub
-, ffmpeg_3
+, ffmpeg
 , lame
 , libev
 , libmicrohttpd
 , ncurses
 , pulseaudio
-, stdenv
+, lib, stdenv
 , taglib
 , systemdSupport ? stdenv.isLinux, systemd
 }:
 
 stdenv.mkDerivation rec {
   pname = "musikcube";
-  version = "0.93.1";
+  version = "0.96.7";
 
   src = fetchFromGitHub {
     owner = "clangen";
     repo = pname;
     rev = version;
-    sha256 = "05qsxyr7x8l0vlmn4yjg4gglxvcw9raf6vfzvblsl2ngsdsrnizy";
+    sha256 = "1y00vwn1h10cfflxrm5bk271ak9gilhjycgi44hlkkhmf5bdgn35";
   };
 
   nativeBuildInputs = [
@@ -31,23 +31,23 @@ stdenv.mkDerivation rec {
     pkg-config
   ];
   buildInputs = [
-    alsaLib
+    alsa-lib
     boost
     curl
-    ffmpeg_3
+    ffmpeg
     lame
     libev
     libmicrohttpd
     ncurses
     pulseaudio
     taglib
-  ] ++ stdenv.lib.optional systemdSupport systemd;
+  ] ++ lib.optional systemdSupport systemd;
 
   cmakeFlags = [
     "-DDISABLE_STRIP=true"
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A fully functional terminal-based music player, library, and streaming audio server";
     homepage = "https://musikcube.com/";
     maintainers = [ maintainers.aanderse ];
diff --git a/pkgs/applications/audio/musly/default.nix b/pkgs/applications/audio/musly/default.nix
index b1e8822cdcf..0d10b55d329 100644
--- a/pkgs/applications/audio/musly/default.nix
+++ b/pkgs/applications/audio/musly/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, cmake, eigen, libav_all }:
+{ lib, stdenv, fetchFromGitHub, cmake, eigen, ffmpeg }:
 stdenv.mkDerivation {
   pname = "musly";
   version = "unstable-2017-04-26";
@@ -9,14 +9,14 @@ stdenv.mkDerivation {
     sha256 = "1q42wvdwy2pac7bhfraqqj2czw7w2m33ms3ifjl8phm7d87i8825";
   };
   nativeBuildInputs = [ cmake ];
-  buildInputs = [ eigen (libav_all.override { vaapiSupport = stdenv.isLinux; }).libav_11 ];
+  buildInputs = [ eigen ffmpeg ];
   fixupPhase = if stdenv.isDarwin then ''
     install_name_tool -change libmusly.dylib $out/lib/libmusly.dylib $out/bin/musly
     install_name_tool -change libmusly_resample.dylib $out/lib/libmusly_resample.dylib $out/bin/musly
     install_name_tool -change libmusly_resample.dylib $out/lib/libmusly_resample.dylib $out/lib/libmusly.dylib
   '' else "";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://www.musly.org";
     description = "A fast and high-quality audio music similarity library written in C/C++";
     longDescription = ''
diff --git a/pkgs/applications/audio/muso/default.nix b/pkgs/applications/audio/muso/default.nix
new file mode 100644
index 00000000000..15c61196d43
--- /dev/null
+++ b/pkgs/applications/audio/muso/default.nix
@@ -0,0 +1,37 @@
+{ lib, stdenv, fetchFromGitHub, rustPlatform
+, pkg-config, wrapGAppsHook, CoreServices
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "muso";
+  version = "2.0.0";
+
+  src = fetchFromGitHub {
+    owner = "quebin31";
+    repo = pname;
+    rev = "68cc90869bcc0f202830a318fbfd6bb9bdb75a39";
+    sha256 = "1dnfslliss173igympl7h1zc0qz0g10kf96dwrcj6aglmvvw426p";
+  };
+
+  nativeBuildInputs = [ pkg-config wrapGAppsHook ];
+  buildInputs = lib.optional stdenv.isDarwin CoreServices;
+
+  preConfigure = ''
+    substituteInPlace lib/utils.rs \
+      --replace "/usr/share/muso" "$out/share/muso"
+  '';
+
+  postInstall = ''
+    mkdir -p $out/share/muso
+    cp share/* $out/share/muso/
+  '';
+
+  cargoSha256 = "1hgdzyz005244f2mh97js9ga0a6s2hcd6iydz07f1hmhsh1j2bwy";
+
+  meta = with lib; {
+    description = "An automatic music sorter (based on ID3 tags)";
+    homepage = "https://github.com/quebin31/muso";
+    license = with licenses; [ gpl3Plus ];
+    maintainers = with maintainers; [ bloomvdomino ];
+  };
+}
diff --git a/pkgs/applications/audio/mympd/default.nix b/pkgs/applications/audio/mympd/default.nix
new file mode 100644
index 00000000000..03d0556326a
--- /dev/null
+++ b/pkgs/applications/audio/mympd/default.nix
@@ -0,0 +1,52 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, cmake
+, pkg-config
+, libmpdclient
+, openssl
+, lua5_3
+, libid3tag
+, flac
+, pcre
+}:
+
+stdenv.mkDerivation rec {
+  pname = "mympd";
+  version = "7.0.2";
+
+  src = fetchFromGitHub {
+    owner = "jcorporation";
+    repo = "myMPD";
+    rev = "v${version}";
+    sha256 = "sha256-2V3LbgnJfTIO71quZ+hfLnw/lNLYxXt19jw2Od6BVvM=";
+  };
+
+  nativeBuildInputs = [ pkg-config cmake ];
+  buildInputs = [
+    libmpdclient
+    openssl
+    lua5_3
+    libid3tag
+    flac
+    pcre
+  ];
+
+  cmakeFlags = [
+    "-DENABLE_LUA=ON"
+    # Otherwise, it tries to parse $out/etc/mympd.conf on startup.
+    "-DCMAKE_INSTALL_SYSCONFDIR=/etc"
+    # similarly here
+    "-DCMAKE_INSTALL_LOCALSTATEDIR=/var/lib/mympd"
+  ];
+  # See https://github.com/jcorporation/myMPD/issues/315
+  hardeningDisable = [ "strictoverflow" ];
+
+  meta = {
+    homepage = "https://jcorporation.github.io/mympd";
+    description = "A standalone and mobile friendly web mpd client with a tiny footprint and advanced features";
+    maintainers = [ lib.maintainers.doronbehar ];
+    platforms = lib.platforms.linux;
+    license = lib.licenses.gpl2Plus;
+  };
+}
diff --git a/pkgs/applications/audio/myxer/default.nix b/pkgs/applications/audio/myxer/default.nix
new file mode 100644
index 00000000000..0aa3727f797
--- /dev/null
+++ b/pkgs/applications/audio/myxer/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, rustPlatform
+, fetchFromGitHub
+, pkg-config
+, libpulseaudio
+, glib
+, pango
+, gtk3
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "myxer";
+  version = "1.2.1";
+
+  src = fetchFromGitHub {
+    owner = "Aurailus";
+    repo = pname;
+    rev = version;
+    sha256 = "0bnhpzmx4yyasv0j7bp31q6jm20p0qwcia5bzmpkz1jhnc27ngix";
+  };
+
+  cargoSha256 = "1cyh0nk627sgyr78rcnhj7af5jcahvjkiv5sz7xwqfdhvx5kqsk5";
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [ libpulseaudio glib pango gtk3 ];
+
+  # Currently no tests are implemented, so we avoid building the package twice
+  doCheck = false;
+
+  meta = with lib; {
+    description = "A modern Volume Mixer for PulseAudio";
+    homepage = "https://github.com/Aurailus/Myxer";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ erin ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/audio/ncmpc/default.nix b/pkgs/applications/audio/ncmpc/default.nix
index aea50d71d75..e397534d126 100644
--- a/pkgs/applications/audio/ncmpc/default.nix
+++ b/pkgs/applications/audio/ncmpc/default.nix
@@ -1,34 +1,42 @@
-{ stdenv, fetchFromGitHub, meson, ninja, pkgconfig, glib, ncurses
-, mpd_clientlib, gettext, boost
-, pcreSupport ? false
-, pcre ? null
+{ lib
+, stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, pkg-config
+, glib
+, ncurses
+, libmpdclient
+, gettext
+, boost
+, pcreSupport ? false, pcre ? null
 }:
 
-with stdenv.lib;
+with lib;
 
 assert pcreSupport -> pcre != null;
 
 stdenv.mkDerivation rec {
   pname = "ncmpc";
-  version = "0.38";
+  version = "0.45";
 
   src = fetchFromGitHub {
     owner  = "MusicPlayerDaemon";
     repo   = "ncmpc";
     rev    = "v${version}";
-    sha256 = "1kidpd1xrfax3v31q93r9g9b7jd841476q47wgd94h1a86b70gs9";
+    sha256 = "sha256-KDSHbEZ2PJLEIlXqPvBQ2ZPWno+IoajTjkl9faAXIko=";
   };
 
-  buildInputs = [ glib ncurses mpd_clientlib boost ]
+  buildInputs = [ glib ncurses libmpdclient boost ]
     ++ optional pcreSupport pcre;
-  nativeBuildInputs = [ meson ninja pkgconfig gettext ];
+  nativeBuildInputs = [ meson ninja pkg-config gettext ];
 
   mesonFlags = [
     "-Dlirc=disabled"
     "-Ddocumentation=disabled"
   ] ++ optional (!pcreSupport) "-Dregex=disabled";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Curses-based interface for MPD (music player daemon)";
     homepage    = "https://www.musicpd.org/clients/ncmpc/";
     license     = licenses.gpl2Plus;
diff --git a/pkgs/applications/audio/ncmpcpp/default.nix b/pkgs/applications/audio/ncmpcpp/default.nix
index f8adc522fcb..fee5dc88403 100644
--- a/pkgs/applications/audio/ncmpcpp/default.nix
+++ b/pkgs/applications/audio/ncmpcpp/default.nix
@@ -1,5 +1,14 @@
-{ stdenv, fetchurl, boost, mpd_clientlib, ncurses, pkgconfig, readline
-, libiconv, icu, curl
+{ lib
+, stdenv
+, fetchurl
+, boost
+, libmpdclient
+, ncurses
+, pkg-config
+, readline
+, libiconv
+, icu
+, curl
 , outputsSupport ? true # outputs screen
 , visualizerSupport ? false, fftw ? null # visualizer screen
 , clockSupport ? true # clock screen
@@ -9,31 +18,33 @@
 assert visualizerSupport -> (fftw != null);
 assert taglibSupport -> (taglib != null);
 
-with stdenv.lib;
+with lib;
 stdenv.mkDerivation rec {
   pname = "ncmpcpp";
-  version = "0.8.2";
+  version = "0.9.2";
 
   src = fetchurl {
-    url = "https://ncmpcpp.rybczak.net/stable/${pname}-${version}.tar.bz2";
-    sha256 = "0m0mjb049sl62vx13h9waavysa30mk0rphacksnvf94n13la62v5";
+    url = "https://rybczak.net/ncmpcpp/stable/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-+qv2FXyMsbJKBZryduFi+p+aO5zTgQxDuRKIYMk4Ohs=";
   };
 
+  enableParallelBuilding = true;
   configureFlags = [ "BOOST_LIB_SUFFIX=" ]
     ++ optional outputsSupport "--enable-outputs"
     ++ optional visualizerSupport "--enable-visualizer --with-fftw"
     ++ optional clockSupport "--enable-clock"
     ++ optional taglibSupport "--with-taglib";
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
 
-  buildInputs = [ boost mpd_clientlib ncurses readline libiconv icu curl ]
+  buildInputs = [ boost libmpdclient ncurses readline libiconv icu curl ]
     ++ optional visualizerSupport fftw
     ++ optional taglibSupport taglib;
 
   meta = {
     description = "A featureful ncurses based MPD client inspired by ncmpc";
-    homepage    = "https://ncmpcpp.rybczak.net/";
+    homepage    = "https://rybczak.net/ncmpcpp/";
+    changelog   = "https://github.com/ncmpcpp/ncmpcpp/blob/${version}/CHANGELOG.md";
     license     = licenses.gpl2Plus;
     maintainers = with maintainers; [ jfrankenau koral lovek323 ];
     platforms   = platforms.all;
diff --git a/pkgs/applications/audio/ncpamixer/default.nix b/pkgs/applications/audio/ncpamixer/default.nix
index 32d8df2f048..aca96ef5da3 100644
--- a/pkgs/applications/audio/ncpamixer/default.nix
+++ b/pkgs/applications/audio/ncpamixer/default.nix
@@ -1,33 +1,29 @@
-{ stdenv, fetchFromGitHub, cmake, ncurses, libpulseaudio, pkgconfig }:
+{ lib, stdenv, fetchFromGitHub, cmake, ncurses, libpulseaudio, pkg-config }:
 
 stdenv.mkDerivation rec {
-
   pname = "ncpamixer";
-  version = "1.3.3";
+  version = "1.3.3.1";
 
   src = fetchFromGitHub {
     owner = "fulhax";
     repo = "ncpamixer";
     rev = version;
-    sha256 = "19pxfvfhhrbfk1wz5awx60y51jccrgrcvlq7lb622sw2z0wzw4ac";
+    sha256 = "1v3bz0vpgh18257hdnz3yvbnl51779g1h5b265zgc21ks7m1jw5z";
   };
 
+  nativeBuildInputs = [ cmake pkg-config ];
+
   buildInputs = [ ncurses libpulseaudio ];
-  nativeBuildInputs = [ cmake pkgconfig ];
 
   configurePhase = ''
-    make PREFIX=$out build/Makefile
-  '';
-
-  buildPhase = ''
-    make build
+    make PREFIX=$out USE_WIDE=1 RELEASE=1 build/Makefile
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "An ncurses mixer for PulseAudio inspired by pavucontrol";
     homepage = "https://github.com/fulhax/ncpamixer";
     license = licenses.mit;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ StijnDW ];
+    maintainers = with maintainers; [ StijnDW SuperSandro2000 ];
   };
 }
diff --git a/pkgs/applications/audio/ncspot/default.nix b/pkgs/applications/audio/ncspot/default.nix
index 90dc4e6db33..0a887ebaf3d 100644
--- a/pkgs/applications/audio/ncspot/default.nix
+++ b/pkgs/applications/audio/ncspot/default.nix
@@ -1,5 +1,5 @@
-{ lib, fetchFromGitHub, rustPlatform, pkg-config, ncurses, openssl
-, withALSA ? true, alsaLib ? null
+{ stdenv, lib, fetchFromGitHub, rustPlatform, pkg-config, ncurses, openssl, libiconv
+, withALSA ? true, alsa-lib ? null
 , withPulseAudio ? false, libpulseaudio ? null
 , withPortAudio ? false, portaudio ? null
 , withMPRIS ? false, dbus ? null
@@ -14,23 +14,24 @@ let
 in
 rustPlatform.buildRustPackage rec {
   pname = "ncspot";
-  version = "0.2.1";
+  version = "0.7.3";
 
   src = fetchFromGitHub {
     owner = "hrkfdn";
     repo = "ncspot";
     rev = "v${version}";
-    sha256 = "1yx0fc24bgh1x6fdwznc1hqvjq0j7i0zvws3bsyijzs7q48jm0z7";
+    sha256 = "0lfly3d8pag78pabmna4i6xjwzi65dx1mwfmsk7nx64brq3iypbq";
   };
 
-  cargoSha256 = "0bh2shg80xbs2cw10dabrdxkvhf2csk5h9wmmk5z87q6w25paz1f";
+  cargoSha256 = "0a6d41ll90fza6k3lixjqzwxim98q6zbkqa3zvxvs7q5ydzg8nsp";
 
   cargoBuildFlags = [ "--no-default-features" "--features" "${lib.concatStringsSep "," features}" ];
 
   nativeBuildInputs = [ pkg-config ];
 
   buildInputs = [ ncurses openssl ]
-    ++ lib.optional withALSA alsaLib
+    ++ lib.optional stdenv.isDarwin libiconv
+    ++ lib.optional withALSA alsa-lib
     ++ lib.optional withPulseAudio libpulseaudio
     ++ lib.optional withPortAudio portaudio
     ++ lib.optional withMPRIS dbus;
diff --git a/pkgs/applications/audio/netease-cloud-music/default.nix b/pkgs/applications/audio/netease-cloud-music/default.nix
deleted file mode 100644
index c4cc291d026..00000000000
--- a/pkgs/applications/audio/netease-cloud-music/default.nix
+++ /dev/null
@@ -1,81 +0,0 @@
-{ stdenv, lib, fontconfig, zlib, libGL, glib, pango
-, gdk-pixbuf, freetype, atk, cairo, libsForQt5, xorg
-, sqlite, taglib, nss, nspr, cups, dbus, alsaLib
-, libpulseaudio, deepin, qt5, harfbuzz, p11-kit
-, libgpgerror, libudev0-shim, makeWrapper, dpkg, fetchurl }:
-let
-  rpath = lib.makeLibraryPath [
-    fontconfig.lib
-    zlib
-    stdenv.cc.cc.lib
-    libGL
-    glib
-    pango
-    gdk-pixbuf
-    freetype
-    atk
-    cairo
-    libsForQt5.vlc
-    sqlite
-    taglib
-    nss
-    nspr
-    cups.lib
-    dbus.lib
-    alsaLib
-    libpulseaudio
-    xorg.libX11
-    xorg.libXext
-    xorg.libXtst
-    xorg.libXdamage
-    xorg.libXScrnSaver
-    xorg.libxcb
-    xorg.libXi
-    deepin.qcef
-    qt5.qtwebchannel
-    qt5.qtbase
-    qt5.qtx11extras
-    qt5.qtdeclarative
-    harfbuzz
-    p11-kit
-    libgpgerror
-  ];   
-
-  runtimeLibs = lib.makeLibraryPath [ libudev0-shim ];
-
-in stdenv.mkDerivation rec {
-  pname = "netease-cloud-music";
-  version = "1.2.0";
-  src = fetchurl {
-    url    = "http://d1.music.126.net/dmusic/netease-cloud-music_1.2.0_amd64_deepin_stable_20190424.deb";
-    sha256 = "0hg8jqim77vd0fmk8gfbz2fmlj99byxcm9jn70xf7vk1sy7wp6h1";
-    curlOpts = "-A 'Mozilla/5.0'";
-  };
-  unpackCmd = "${dpkg}/bin/dpkg -x $src .";
-  sourceRoot = ".";
-
-  nativeBuildInputs = [ qt5.wrapQtAppsHook makeWrapper ];
-
-  installPhase = ''
-    mkdir -p $out
-    cp -r usr/* $out
-  '';
-
-  preFixup = ''
-    local exefile="$out/bin/netease-cloud-music"
-    patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$exefile"
-    patchelf --set-rpath "$out/libs:$(patchelf --print-rpath "$exefile"):${rpath}" "$exefile"
-
-    wrapProgram $out/bin/netease-cloud-music \
-      --prefix LD_LIBRARY_PATH : "${runtimeLibs}" \
-      --set QCEF_INSTALL_PATH "${deepin.qcef}/lib/qcef"
-  '';
-
-  meta = {
-    description = "Client for Netease Cloud Music service";
-    homepage = "https://music.163.com";
-    platforms = [ "i686-linux" "x86_64-linux" ];
-    maintainers = [ stdenv.lib.maintainers.mlatus ];
-    license = stdenv.lib.licenses.unfreeRedistributable;
-  };
-}
diff --git a/pkgs/applications/audio/netease-music-tui/cargo-lock.patch b/pkgs/applications/audio/netease-music-tui/cargo-lock.patch
new file mode 100644
index 00000000000..f47c233d6ae
--- /dev/null
+++ b/pkgs/applications/audio/netease-music-tui/cargo-lock.patch
@@ -0,0 +1,2655 @@
+diff --git a/Cargo.lock b/Cargo.lock
+new file mode 100644
+index 0000000..f191345
+--- /dev/null
++++ b/Cargo.lock
+@@ -0,0 +1,2649 @@
++# This file is automatically @generated by Cargo.
++# It is not intended for manual editing.
++[[package]]
++name = "addr2line"
++version = "0.14.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a55f82cfe485775d02112886f4169bde0c5894d75e79ead7eafe7e40a25e45f7"
++dependencies = [
++ "gimli",
++]
++
++[[package]]
++name = "adler"
++version = "1.0.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
++
++[[package]]
++name = "aho-corasick"
++version = "0.7.15"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5"
++dependencies = [
++ "memchr",
++]
++
++[[package]]
++name = "alsa"
++version = "0.5.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "75c4da790adcb2ce5e758c064b4f3ec17a30349f9961d3e5e6c9688b052a9e18"
++dependencies = [
++ "alsa-sys",
++ "bitflags",
++ "libc",
++ "nix",
++]
++
++[[package]]
++name = "alsa-sys"
++version = "0.3.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "db8fee663d06c4e303404ef5f40488a53e062f89ba8bfed81f42325aafad1527"
++dependencies = [
++ "libc",
++ "pkg-config",
++]
++
++[[package]]
++name = "arrayref"
++version = "0.3.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544"
++
++[[package]]
++name = "arrayvec"
++version = "0.5.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b"
++
++[[package]]
++name = "async-compression"
++version = "0.3.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b72c1f1154e234325b50864a349b9c8e56939e266a4c307c0f159812df2f9537"
++dependencies = [
++ "bytes 0.5.6",
++ "flate2",
++ "futures-core",
++ "memchr",
++ "pin-project-lite 0.2.6",
++]
++
++[[package]]
++name = "autocfg"
++version = "1.0.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
++
++[[package]]
++name = "backtrace"
++version = "0.3.56"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9d117600f438b1707d4e4ae15d3595657288f8235a0eb593e80ecc98ab34e1bc"
++dependencies = [
++ "addr2line",
++ "cfg-if 1.0.0",
++ "libc",
++ "miniz_oxide",
++ "object",
++ "rustc-demangle",
++]
++
++[[package]]
++name = "base-x"
++version = "0.2.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b"
++
++[[package]]
++name = "base64"
++version = "0.11.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7"
++
++[[package]]
++name = "base64"
++version = "0.13.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd"
++
++[[package]]
++name = "bindgen"
++version = "0.56.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2da379dbebc0b76ef63ca68d8fc6e71c0f13e59432e0987e508c1820e6ab5239"
++dependencies = [
++ "bitflags",
++ "cexpr",
++ "clang-sys",
++ "lazy_static 1.4.0",
++ "lazycell",
++ "peeking_take_while",
++ "proc-macro2",
++ "quote",
++ "regex",
++ "rustc-hash",
++ "shlex",
++]
++
++[[package]]
++name = "bitflags"
++version = "1.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
++
++[[package]]
++name = "blake2b_simd"
++version = "0.5.11"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587"
++dependencies = [
++ "arrayref",
++ "arrayvec",
++ "constant_time_eq",
++]
++
++[[package]]
++name = "bumpalo"
++version = "3.6.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "63396b8a4b9de3f4fdfb320ab6080762242f66a8ef174c49d8e19b674db4cdbe"
++
++[[package]]
++name = "byteorder"
++version = "1.4.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
++
++[[package]]
++name = "bytes"
++version = "0.4.12"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c"
++dependencies = [
++ "byteorder",
++ "iovec",
++]
++
++[[package]]
++name = "bytes"
++version = "0.5.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38"
++
++[[package]]
++name = "bytes"
++version = "1.0.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040"
++
++[[package]]
++name = "cassowary"
++version = "0.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53"
++
++[[package]]
++name = "cc"
++version = "1.0.67"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e3c69b077ad434294d3ce9f1f6143a2a4b89a8a2d54ef813d85003a4fd1137fd"
++dependencies = [
++ "jobserver",
++]
++
++[[package]]
++name = "cesu8"
++version = "1.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
++
++[[package]]
++name = "cexpr"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f4aedb84272dbe89af497cf81375129abda4fc0a9e7c5d317498c15cc30c0d27"
++dependencies = [
++ "nom 5.1.2",
++]
++
++[[package]]
++name = "cfg-if"
++version = "0.1.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
++
++[[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 0.2.14",
++ "time 0.1.43",
++ "winapi 0.3.9",
++]
++
++[[package]]
++name = "clang-sys"
++version = "1.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f54d78e30b388d4815220c8dd03fea5656b6c6d32adb59e89061552a102f8da1"
++dependencies = [
++ "glob",
++ "libc",
++ "libloading",
++]
++
++[[package]]
++name = "claxon"
++version = "0.4.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4bfbf56724aa9eca8afa4fcfadeb479e722935bb2a0900c2d37e0cc477af0688"
++
++[[package]]
++name = "combine"
++version = "4.5.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cc4369b5e4c0cddf64ad8981c0111e7df4f7078f4d6ba98fb31f2e17c4c57b7e"
++dependencies = [
++ "bytes 1.0.1",
++ "memchr",
++]
++
++[[package]]
++name = "config"
++version = "0.9.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f9107d78ed62b3fa5a86e7d18e647abed48cfd8f8fab6c72f4cdb982d196f7e6"
++dependencies = [
++ "lazy_static 1.4.0",
++ "nom 4.2.3",
++ "rust-ini",
++ "serde 1.0.125",
++ "serde-hjson",
++ "serde_json",
++ "toml 0.4.10",
++ "yaml-rust",
++]
++
++[[package]]
++name = "const_fn"
++version = "0.4.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "076a6803b0dacd6a88cfe64deba628b01533ff5ef265687e6938280c1afd0a28"
++
++[[package]]
++name = "constant_time_eq"
++version = "0.1.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc"
++
++[[package]]
++name = "cookie"
++version = "0.14.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "03a5d7b21829bc7b4bf4754a978a241ae54ea55a40f92bb20216e54096f4b951"
++dependencies = [
++ "percent-encoding",
++ "time 0.2.26",
++ "version_check 0.9.3",
++]
++
++[[package]]
++name = "cookie_store"
++version = "0.12.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3818dfca4b0cb5211a659bbcbb94225b7127407b2b135e650d717bfb78ab10d3"
++dependencies = [
++ "cookie",
++ "idna",
++ "log",
++ "publicsuffix",
++ "serde 1.0.125",
++ "serde_json",
++ "time 0.2.26",
++ "url",
++]
++
++[[package]]
++name = "core-foundation"
++version = "0.9.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0a89e2ae426ea83155dccf10c0fa6b1463ef6d5fcb44cee0b224a408fa640a62"
++dependencies = [
++ "core-foundation-sys 0.8.2",
++ "libc",
++]
++
++[[package]]
++name = "core-foundation-sys"
++version = "0.6.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b"
++
++[[package]]
++name = "core-foundation-sys"
++version = "0.8.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b"
++
++[[package]]
++name = "coreaudio-rs"
++version = "0.10.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "11894b20ebfe1ff903cbdc52259693389eea03b94918a2def2c30c3bf227ad88"
++dependencies = [
++ "bitflags",
++ "coreaudio-sys",
++]
++
++[[package]]
++name = "coreaudio-sys"
++version = "0.2.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2b7e3347be6a09b46aba228d6608386739fb70beff4f61e07422da87b0bb31fa"
++dependencies = [
++ "bindgen",
++]
++
++[[package]]
++name = "cpal"
++version = "0.13.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8351ddf2aaa3c583fa388029f8b3d26f3c7035a20911fdd5f2e2ed7ab57dad25"
++dependencies = [
++ "alsa",
++ "core-foundation-sys 0.6.2",
++ "coreaudio-rs",
++ "jni",
++ "js-sys",
++ "lazy_static 1.4.0",
++ "libc",
++ "mach",
++ "ndk",
++ "ndk-glue",
++ "nix",
++ "oboe",
++ "parking_lot",
++ "stdweb 0.1.3",
++ "thiserror",
++ "web-sys",
++ "winapi 0.3.9",
++]
++
++[[package]]
++name = "crc32fast"
++version = "1.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a"
++dependencies = [
++ "cfg-if 1.0.0",
++]
++
++[[package]]
++name = "crossbeam-utils"
++version = "0.8.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e7e9d99fa91428effe99c5c6d4634cdeba32b8cf784fc428a2a687f61a952c49"
++dependencies = [
++ "autocfg",
++ "cfg-if 1.0.0",
++ "lazy_static 1.4.0",
++]
++
++[[package]]
++name = "darling"
++version = "0.10.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0d706e75d87e35569db781a9b5e2416cff1236a47ed380831f959382ccd5f858"
++dependencies = [
++ "darling_core",
++ "darling_macro",
++]
++
++[[package]]
++name = "darling_core"
++version = "0.10.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f0c960ae2da4de88a91b2d920c2a7233b400bc33cb28453a2987822d8392519b"
++dependencies = [
++ "fnv",
++ "ident_case",
++ "proc-macro2",
++ "quote",
++ "strsim",
++ "syn",
++]
++
++[[package]]
++name = "darling_macro"
++version = "0.10.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72"
++dependencies = [
++ "darling_core",
++ "quote",
++ "syn",
++]
++
++[[package]]
++name = "dbus"
++version = "0.7.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "add8dd36d6d34a084220eb9fe216d3e230d52b37c31702e1ffda4fb2d4ef950e"
++dependencies = [
++ "libc",
++ "libdbus-sys",
++]
++
++[[package]]
++name = "derivative"
++version = "2.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn",
++]
++
++[[package]]
++name = "dirs"
++version = "2.0.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "13aea89a5c93364a98e9b37b2fa237effbb694d5cfe01c5b70941f7eb087d5e3"
++dependencies = [
++ "cfg-if 0.1.10",
++ "dirs-sys",
++]
++
++[[package]]
++name = "dirs-sys"
++version = "0.3.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8e93d7f5705de3e49895a2b5e0b8855a1c27f080192ae9c32a6432d50741a57a"
++dependencies = [
++ "libc",
++ "redox_users",
++ "winapi 0.3.9",
++]
++
++[[package]]
++name = "discard"
++version = "1.0.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0"
++
++[[package]]
++name = "dtoa"
++version = "0.4.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0"
++
++[[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.28"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "80df024fbc5ac80f87dfef0d9f5209a252f2a497f7f42944cff24d8253cac065"
++dependencies = [
++ "cfg-if 1.0.0",
++]
++
++[[package]]
++name = "failure"
++version = "0.1.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86"
++dependencies = [
++ "backtrace",
++ "failure_derive",
++]
++
++[[package]]
++name = "failure_derive"
++version = "0.1.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn",
++ "synstructure",
++]
++
++[[package]]
++name = "flate2"
++version = "1.0.20"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cd3aec53de10fe96d7d8c565eb17f2c687bb5518a2ec453b5b1252964526abe0"
++dependencies = [
++ "cfg-if 1.0.0",
++ "crc32fast",
++ "libc",
++ "miniz_oxide",
++]
++
++[[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 = "fuchsia-zircon"
++version = "0.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82"
++dependencies = [
++ "bitflags",
++ "fuchsia-zircon-sys",
++]
++
++[[package]]
++name = "fuchsia-zircon-sys"
++version = "0.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
++
++[[package]]
++name = "futures"
++version = "0.3.13"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7f55667319111d593ba876406af7c409c0ebb44dc4be6132a783ccf163ea14c1"
++dependencies = [
++ "futures-channel",
++ "futures-core",
++ "futures-executor",
++ "futures-io",
++ "futures-sink",
++ "futures-task",
++ "futures-util",
++]
++
++[[package]]
++name = "futures-channel"
++version = "0.3.13"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8c2dd2df839b57db9ab69c2c9d8f3e8c81984781937fe2807dc6dcf3b2ad2939"
++dependencies = [
++ "futures-core",
++ "futures-sink",
++]
++
++[[package]]
++name = "futures-core"
++version = "0.3.13"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "15496a72fabf0e62bdc3df11a59a3787429221dd0710ba8ef163d6f7a9112c94"
++
++[[package]]
++name = "futures-executor"
++version = "0.3.13"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "891a4b7b96d84d5940084b2a37632dd65deeae662c114ceaa2c879629c9c0ad1"
++dependencies = [
++ "futures-core",
++ "futures-task",
++ "futures-util",
++]
++
++[[package]]
++name = "futures-io"
++version = "0.3.13"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d71c2c65c57704c32f5241c1223167c2c3294fd34ac020c807ddbe6db287ba59"
++
++[[package]]
++name = "futures-macro"
++version = "0.3.13"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ea405816a5139fb39af82c2beb921d52143f556038378d6db21183a5c37fbfb7"
++dependencies = [
++ "proc-macro-hack",
++ "proc-macro2",
++ "quote",
++ "syn",
++]
++
++[[package]]
++name = "futures-sink"
++version = "0.3.13"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "85754d98985841b7d4f5e8e6fbfa4a4ac847916893ec511a2917ccd8525b8bb3"
++
++[[package]]
++name = "futures-task"
++version = "0.3.13"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fa189ef211c15ee602667a6fcfe1c1fd9e07d42250d2156382820fba33c9df80"
++
++[[package]]
++name = "futures-util"
++version = "0.3.13"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1812c7ab8aedf8d6f2701a43e1243acdbcc2b36ab26e2ad421eb99ac963d96d1"
++dependencies = [
++ "futures-channel",
++ "futures-core",
++ "futures-io",
++ "futures-macro",
++ "futures-sink",
++ "futures-task",
++ "memchr",
++ "pin-project-lite 0.2.6",
++ "pin-utils",
++ "proc-macro-hack",
++ "proc-macro-nested",
++ "slab",
++]
++
++[[package]]
++name = "getrandom"
++version = "0.1.16"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
++dependencies = [
++ "cfg-if 1.0.0",
++ "libc",
++ "wasi 0.9.0+wasi-snapshot-preview1",
++]
++
++[[package]]
++name = "getrandom"
++version = "0.2.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8"
++dependencies = [
++ "cfg-if 1.0.0",
++ "libc",
++ "wasi 0.10.2+wasi-snapshot-preview1",
++]
++
++[[package]]
++name = "gimli"
++version = "0.23.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce"
++
++[[package]]
++name = "glob"
++version = "0.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
++
++[[package]]
++name = "h2"
++version = "0.2.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5e4728fd124914ad25e99e3d15a9361a879f6620f63cb56bbb08f95abb97a535"
++dependencies = [
++ "bytes 0.5.6",
++ "fnv",
++ "futures-core",
++ "futures-sink",
++ "futures-util",
++ "http",
++ "indexmap",
++ "slab",
++ "tokio",
++ "tokio-util",
++ "tracing",
++ "tracing-futures",
++]
++
++[[package]]
++name = "hashbrown"
++version = "0.9.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04"
++
++[[package]]
++name = "hermit-abi"
++version = "0.1.18"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c"
++dependencies = [
++ "libc",
++]
++
++[[package]]
++name = "hex"
++version = "0.4.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
++
++[[package]]
++name = "hound"
++version = "3.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8a164bb2ceaeff4f42542bdb847c41517c78a60f5649671b2a07312b6e117549"
++
++[[package]]
++name = "http"
++version = "0.2.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7245cd7449cc792608c3c8a9eaf69bd4eabbabf802713748fd739c98b82f0747"
++dependencies = [
++ "bytes 1.0.1",
++ "fnv",
++ "itoa",
++]
++
++[[package]]
++name = "http-body"
++version = "0.3.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b"
++dependencies = [
++ "bytes 0.5.6",
++ "http",
++]
++
++[[package]]
++name = "httparse"
++version = "1.3.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "615caabe2c3160b313d52ccc905335f4ed5f10881dd63dc5699d47e90be85691"
++
++[[package]]
++name = "httpdate"
++version = "0.3.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47"
++
++[[package]]
++name = "hyper"
++version = "0.13.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8a6f157065790a3ed2f88679250419b5cdd96e714a0d65f7797fd337186e96bb"
++dependencies = [
++ "bytes 0.5.6",
++ "futures-channel",
++ "futures-core",
++ "futures-util",
++ "h2",
++ "http",
++ "http-body",
++ "httparse",
++ "httpdate",
++ "itoa",
++ "pin-project",
++ "socket2",
++ "tokio",
++ "tower-service",
++ "tracing",
++ "want",
++]
++
++[[package]]
++name = "hyper-tls"
++version = "0.4.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d979acc56dcb5b8dddba3917601745e877576475aa046df3226eabdecef78eed"
++dependencies = [
++ "bytes 0.5.6",
++ "hyper",
++ "native-tls",
++ "tokio",
++ "tokio-tls",
++]
++
++[[package]]
++name = "ident_case"
++version = "1.0.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
++
++[[package]]
++name = "idna"
++version = "0.2.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "89829a5d69c23d348314a7ac337fe39173b61149a9864deabd260983aed48c21"
++dependencies = [
++ "matches",
++ "unicode-bidi",
++ "unicode-normalization",
++]
++
++[[package]]
++name = "indexmap"
++version = "1.6.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "824845a0bf897a9042383849b02c1bc219c2383772efcd5c6f9766fa4b81aef3"
++dependencies = [
++ "autocfg",
++ "hashbrown",
++]
++
++[[package]]
++name = "instant"
++version = "0.1.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec"
++dependencies = [
++ "cfg-if 1.0.0",
++]
++
++[[package]]
++name = "iovec"
++version = "0.1.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e"
++dependencies = [
++ "libc",
++]
++
++[[package]]
++name = "ipnet"
++version = "2.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "47be2f14c678be2fdcab04ab1171db51b2762ce6f0a8ee87c8dd4a04ed216135"
++
++[[package]]
++name = "itertools"
++version = "0.8.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f56a2d0bc861f9165be4eb3442afd3c236d8a98afd426f65d92324ae1091a484"
++dependencies = [
++ "either",
++]
++
++[[package]]
++name = "itoa"
++version = "0.4.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736"
++
++[[package]]
++name = "jni"
++version = "0.18.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "24967112a1e4301ca5342ea339763613a37592b8a6ce6cf2e4494537c7a42faf"
++dependencies = [
++ "cesu8",
++ "combine",
++ "jni-sys",
++ "log",
++ "thiserror",
++ "walkdir",
++]
++
++[[package]]
++name = "jni-sys"
++version = "0.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"
++
++[[package]]
++name = "jobserver"
++version = "0.1.21"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5c71313ebb9439f74b00d9d2dcec36440beaf57a6aa0623068441dd7cd81a7f2"
++dependencies = [
++ "libc",
++]
++
++[[package]]
++name = "js-sys"
++version = "0.3.50"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2d99f9e3e84b8f67f846ef5b4cbbc3b1c29f6c759fcbce6f01aa0e73d932a24c"
++dependencies = [
++ "wasm-bindgen",
++]
++
++[[package]]
++name = "kernel32-sys"
++version = "0.2.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
++dependencies = [
++ "winapi 0.2.8",
++ "winapi-build",
++]
++
++[[package]]
++name = "lazy_static"
++version = "0.2.11"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73"
++
++[[package]]
++name = "lazy_static"
++version = "1.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
++
++[[package]]
++name = "lazycell"
++version = "1.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
++
++[[package]]
++name = "lewton"
++version = "0.10.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "777b48df9aaab155475a83a7df3070395ea1ac6902f5cd062b8f2b028075c030"
++dependencies = [
++ "byteorder",
++ "ogg",
++ "tinyvec",
++]
++
++[[package]]
++name = "libc"
++version = "0.2.92"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "56d855069fafbb9b344c0f962150cd2c1187975cb1c22c1522c240d8c4986714"
++
++[[package]]
++name = "libdbus-sys"
++version = "0.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "dc12a3bc971424edbbf7edaf6e5740483444db63aa8e23d3751ff12a30f306f0"
++dependencies = [
++ "pkg-config",
++]
++
++[[package]]
++name = "libloading"
++version = "0.7.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6f84d96438c15fcd6c3f244c8fce01d1e2b9c6b5623e9c711dc9286d8fc92d6a"
++dependencies = [
++ "cfg-if 1.0.0",
++ "winapi 0.3.9",
++]
++
++[[package]]
++name = "linked-hash-map"
++version = "0.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6d262045c5b87c0861b3f004610afd0e2c851e2908d08b6c870cbb9d5f494ecd"
++dependencies = [
++ "serde 0.8.23",
++ "serde_test",
++]
++
++[[package]]
++name = "linked-hash-map"
++version = "0.5.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3"
++
++[[package]]
++name = "lock_api"
++version = "0.4.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "dd96ffd135b2fd7b973ac026d28085defbe8983df057ced3eb4f2130b0831312"
++dependencies = [
++ "scopeguard",
++]
++
++[[package]]
++name = "log"
++version = "0.4.14"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710"
++dependencies = [
++ "cfg-if 1.0.0",
++]
++
++[[package]]
++name = "log-panics"
++version = "2.0.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ae0136257df209261daa18d6c16394757c63e032e27aafd8b07788b051082bef"
++dependencies = [
++ "log",
++]
++
++[[package]]
++name = "mach"
++version = "0.3.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa"
++dependencies = [
++ "libc",
++]
++
++[[package]]
++name = "matches"
++version = "0.1.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08"
++
++[[package]]
++name = "memchr"
++version = "2.3.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525"
++
++[[package]]
++name = "mime"
++version = "0.3.16"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d"
++
++[[package]]
++name = "mime_guess"
++version = "2.0.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2684d4c2e97d99848d30b324b00c8fcc7e5c897b7cbb5819b09e7c90e8baf212"
++dependencies = [
++ "mime",
++ "unicase",
++]
++
++[[package]]
++name = "minimp3"
++version = "0.5.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "985438f75febf74c392071a975a29641b420dd84431135a6e6db721de4b74372"
++dependencies = [
++ "minimp3-sys",
++ "slice-deque",
++ "thiserror",
++]
++
++[[package]]
++name = "minimp3-sys"
++version = "0.3.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e21c73734c69dc95696c9ed8926a2b393171d98b3f5f5935686a26a487ab9b90"
++dependencies = [
++ "cc",
++]
++
++[[package]]
++name = "miniz_oxide"
++version = "0.4.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b"
++dependencies = [
++ "adler",
++ "autocfg",
++]
++
++[[package]]
++name = "mio"
++version = "0.6.23"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4"
++dependencies = [
++ "cfg-if 0.1.10",
++ "fuchsia-zircon",
++ "fuchsia-zircon-sys",
++ "iovec",
++ "kernel32-sys",
++ "libc",
++ "log",
++ "miow",
++ "net2",
++ "slab",
++ "winapi 0.2.8",
++]
++
++[[package]]
++name = "miow"
++version = "0.2.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d"
++dependencies = [
++ "kernel32-sys",
++ "net2",
++ "winapi 0.2.8",
++ "ws2_32-sys",
++]
++
++[[package]]
++name = "mp3-duration"
++version = "0.1.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "348bdc7300502f0801e5b57c448815713cd843b744ef9bda252a2698fdf90a0f"
++dependencies = [
++ "thiserror",
++]
++
++[[package]]
++name = "native-tls"
++version = "0.2.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b8d96b2e1c8da3957d58100b09f102c6d9cfdfced01b7ec5a8974044bb09dbd4"
++dependencies = [
++ "lazy_static 1.4.0",
++ "libc",
++ "log",
++ "openssl",
++ "openssl-probe",
++ "openssl-sys",
++ "schannel",
++ "security-framework",
++ "security-framework-sys",
++ "tempfile",
++]
++
++[[package]]
++name = "ndk"
++version = "0.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8794322172319b972f528bf90c6b467be0079f1fa82780ffb431088e741a73ab"
++dependencies = [
++ "jni-sys",
++ "ndk-sys",
++ "num_enum",
++ "thiserror",
++]
++
++[[package]]
++name = "ndk-glue"
++version = "0.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c5caf0c24d51ac1c905c27d4eda4fa0635bbe0de596b8f79235e0b17a4d29385"
++dependencies = [
++ "lazy_static 1.4.0",
++ "libc",
++ "log",
++ "ndk",
++ "ndk-macro",
++ "ndk-sys",
++]
++
++[[package]]
++name = "ndk-macro"
++version = "0.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "05d1c6307dc424d0f65b9b06e94f88248e6305726b14729fd67a5e47b2dc481d"
++dependencies = [
++ "darling",
++ "proc-macro-crate",
++ "proc-macro2",
++ "quote",
++ "syn",
++]
++
++[[package]]
++name = "ndk-sys"
++version = "0.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c44922cb3dbb1c70b5e5f443d63b64363a898564d739ba5198e3a9138442868d"
++
++[[package]]
++name = "net2"
++version = "0.2.37"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "391630d12b68002ae1e25e8f974306474966550ad82dac6886fb8910c19568ae"
++dependencies = [
++ "cfg-if 0.1.10",
++ "libc",
++ "winapi 0.3.9",
++]
++
++[[package]]
++name = "netease_music_tui"
++version = "0.1.3"
++dependencies = [
++ "base64 0.11.0",
++ "byteorder",
++ "bytes 0.4.12",
++ "chrono",
++ "config",
++ "dbus",
++ "dirs",
++ "failure",
++ "futures",
++ "hex",
++ "lazy_static 1.4.0",
++ "log",
++ "log-panics",
++ "mp3-duration",
++ "num-bigint",
++ "openssl",
++ "rand 0.7.3",
++ "regex",
++ "reqwest",
++ "rodio",
++ "serde 1.0.125",
++ "serde_derive",
++ "serde_json",
++ "serde_urlencoded 0.6.1",
++ "simple-logging",
++ "tempfile",
++ "termion",
++ "tokio",
++ "tui",
++ "unicode-width",
++]
++
++[[package]]
++name = "nix"
++version = "0.20.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fa9b4819da1bc61c0ea48b63b7bc8604064dd43013e7cc325df098d49cd7c18a"
++dependencies = [
++ "bitflags",
++ "cc",
++ "cfg-if 1.0.0",
++ "libc",
++]
++
++[[package]]
++name = "nom"
++version = "4.2.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6"
++dependencies = [
++ "memchr",
++ "version_check 0.1.5",
++]
++
++[[package]]
++name = "nom"
++version = "5.1.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af"
++dependencies = [
++ "memchr",
++ "version_check 0.9.3",
++]
++
++[[package]]
++name = "num-bigint"
++version = "0.2.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304"
++dependencies = [
++ "autocfg",
++ "num-integer",
++ "num-traits 0.2.14",
++]
++
++[[package]]
++name = "num-derive"
++version = "0.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn",
++]
++
++[[package]]
++name = "num-integer"
++version = "0.1.44"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db"
++dependencies = [
++ "autocfg",
++ "num-traits 0.2.14",
++]
++
++[[package]]
++name = "num-traits"
++version = "0.1.43"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31"
++dependencies = [
++ "num-traits 0.2.14",
++]
++
++[[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 = "num_enum"
++version = "0.5.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "226b45a5c2ac4dd696ed30fa6b94b057ad909c7b7fc2e0d0808192bced894066"
++dependencies = [
++ "derivative",
++ "num_enum_derive",
++]
++
++[[package]]
++name = "num_enum_derive"
++version = "0.5.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1c0fd9eba1d5db0994a239e09c1be402d35622277e35468ba891aa5e3188ce7e"
++dependencies = [
++ "proc-macro-crate",
++ "proc-macro2",
++ "quote",
++ "syn",
++]
++
++[[package]]
++name = "numtoa"
++version = "0.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef"
++
++[[package]]
++name = "object"
++version = "0.23.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a9a7ab5d64814df0fe4a4b5ead45ed6c5f181ee3ff04ba344313a6c80446c5d4"
++
++[[package]]
++name = "oboe"
++version = "0.4.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4cfb2390bddb9546c0f7448fd1d2abdd39e6075206f960991eb28c7fa7f126c4"
++dependencies = [
++ "jni",
++ "ndk",
++ "ndk-glue",
++ "num-derive",
++ "num-traits 0.2.14",
++ "oboe-sys",
++]
++
++[[package]]
++name = "oboe-sys"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fe069264d082fc820dfa172f79be3f2e088ecfece9b1c47b0c9fd838d2bef103"
++dependencies = [
++ "cc",
++]
++
++[[package]]
++name = "ogg"
++version = "0.8.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6951b4e8bf21c8193da321bcce9c9dd2e13c858fe078bf9054a288b419ae5d6e"
++dependencies = [
++ "byteorder",
++]
++
++[[package]]
++name = "once_cell"
++version = "1.7.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "af8b08b04175473088b46763e51ee54da5f9a164bc162f615b91bc179dbf15a3"
++
++[[package]]
++name = "openssl"
++version = "0.10.33"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a61075b62a23fef5a29815de7536d940aa35ce96d18ce0cc5076272db678a577"
++dependencies = [
++ "bitflags",
++ "cfg-if 1.0.0",
++ "foreign-types",
++ "libc",
++ "once_cell",
++ "openssl-sys",
++]
++
++[[package]]
++name = "openssl-probe"
++version = "0.1.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de"
++
++[[package]]
++name = "openssl-sys"
++version = "0.9.61"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "313752393519e876837e09e1fa183ddef0be7735868dced3196f4472d536277f"
++dependencies = [
++ "autocfg",
++ "cc",
++ "libc",
++ "pkg-config",
++ "vcpkg",
++]
++
++[[package]]
++name = "parking_lot"
++version = "0.11.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb"
++dependencies = [
++ "instant",
++ "lock_api",
++ "parking_lot_core",
++]
++
++[[package]]
++name = "parking_lot_core"
++version = "0.8.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fa7a782938e745763fe6907fc6ba86946d72f49fe7e21de074e08128a99fb018"
++dependencies = [
++ "cfg-if 1.0.0",
++ "instant",
++ "libc",
++ "redox_syscall 0.2.5",
++ "smallvec",
++ "winapi 0.3.9",
++]
++
++[[package]]
++name = "peeking_take_while"
++version = "0.1.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
++
++[[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.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "bc174859768806e91ae575187ada95c91a29e96a98dc5d2cd9a1fed039501ba6"
++dependencies = [
++ "pin-project-internal",
++]
++
++[[package]]
++name = "pin-project-internal"
++version = "1.0.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a490329918e856ed1b083f244e3bfe2d8c4f336407e4ea9e1a9f479ff09049e5"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn",
++]
++
++[[package]]
++name = "pin-project-lite"
++version = "0.1.12"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777"
++
++[[package]]
++name = "pin-project-lite"
++version = "0.2.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "dc0e1f259c92177c30a4c9d177246edd0a3568b25756a977d0632cf8fa37e905"
++
++[[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.19"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c"
++
++[[package]]
++name = "ppv-lite86"
++version = "0.2.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857"
++
++[[package]]
++name = "proc-macro-crate"
++version = "0.1.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
++dependencies = [
++ "toml 0.5.8",
++]
++
++[[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.26"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a152013215dca273577e18d2bf00fa862b89b24169fb78c4c95aeb07992c9cec"
++dependencies = [
++ "unicode-xid",
++]
++
++[[package]]
++name = "publicsuffix"
++version = "1.5.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "95b4ce31ff0a27d93c8de1849cf58162283752f065a90d508f1105fa6c9a213f"
++dependencies = [
++ "idna",
++ "url",
++]
++
++[[package]]
++name = "quote"
++version = "1.0.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7"
++dependencies = [
++ "proc-macro2",
++]
++
++[[package]]
++name = "rand"
++version = "0.7.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
++dependencies = [
++ "getrandom 0.1.16",
++ "libc",
++ "rand_chacha 0.2.2",
++ "rand_core 0.5.1",
++ "rand_hc 0.2.0",
++]
++
++[[package]]
++name = "rand"
++version = "0.8.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e"
++dependencies = [
++ "libc",
++ "rand_chacha 0.3.0",
++ "rand_core 0.6.2",
++ "rand_hc 0.3.0",
++]
++
++[[package]]
++name = "rand_chacha"
++version = "0.2.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
++dependencies = [
++ "ppv-lite86",
++ "rand_core 0.5.1",
++]
++
++[[package]]
++name = "rand_chacha"
++version = "0.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d"
++dependencies = [
++ "ppv-lite86",
++ "rand_core 0.6.2",
++]
++
++[[package]]
++name = "rand_core"
++version = "0.5.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
++dependencies = [
++ "getrandom 0.1.16",
++]
++
++[[package]]
++name = "rand_core"
++version = "0.6.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7"
++dependencies = [
++ "getrandom 0.2.2",
++]
++
++[[package]]
++name = "rand_hc"
++version = "0.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
++dependencies = [
++ "rand_core 0.5.1",
++]
++
++[[package]]
++name = "rand_hc"
++version = "0.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73"
++dependencies = [
++ "rand_core 0.6.2",
++]
++
++[[package]]
++name = "redox_syscall"
++version = "0.1.57"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce"
++
++[[package]]
++name = "redox_syscall"
++version = "0.2.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "94341e4e44e24f6b591b59e47a8a027df12e008d73fd5672dbea9cc22f4507d9"
++dependencies = [
++ "bitflags",
++]
++
++[[package]]
++name = "redox_termios"
++version = "0.1.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8440d8acb4fd3d277125b4bd01a6f38aee8d814b3b5fc09b3f2b825d37d3fe8f"
++dependencies = [
++ "redox_syscall 0.2.5",
++]
++
++[[package]]
++name = "redox_users"
++version = "0.3.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d"
++dependencies = [
++ "getrandom 0.1.16",
++ "redox_syscall 0.1.57",
++ "rust-argon2",
++]
++
++[[package]]
++name = "regex"
++version = "1.4.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "957056ecddbeba1b26965114e191d2e8589ce74db242b6ea25fc4062427a5c19"
++dependencies = [
++ "aho-corasick",
++ "memchr",
++ "regex-syntax",
++]
++
++[[package]]
++name = "regex-syntax"
++version = "0.6.23"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "24d5f089152e60f62d28b835fbff2cd2e8dc0baf1ac13343bef92ab7eed84548"
++
++[[package]]
++name = "remove_dir_all"
++version = "0.5.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
++dependencies = [
++ "winapi 0.3.9",
++]
++
++[[package]]
++name = "reqwest"
++version = "0.10.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0718f81a8e14c4dbb3b34cf23dc6aaf9ab8a0dfec160c534b3dbca1aaa21f47c"
++dependencies = [
++ "async-compression",
++ "base64 0.13.0",
++ "bytes 0.5.6",
++ "cookie",
++ "cookie_store",
++ "encoding_rs",
++ "futures-core",
++ "futures-util",
++ "http",
++ "http-body",
++ "hyper",
++ "hyper-tls",
++ "ipnet",
++ "js-sys",
++ "lazy_static 1.4.0",
++ "log",
++ "mime",
++ "mime_guess",
++ "native-tls",
++ "percent-encoding",
++ "pin-project-lite 0.2.6",
++ "serde 1.0.125",
++ "serde_urlencoded 0.7.0",
++ "time 0.2.26",
++ "tokio",
++ "tokio-socks",
++ "tokio-tls",
++ "url",
++ "wasm-bindgen",
++ "wasm-bindgen-futures",
++ "web-sys",
++ "winreg",
++]
++
++[[package]]
++name = "rodio"
++version = "0.13.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b65c2eda643191f6d1bb12ea323a9db8d9ba95374e9be3780b5a9fb5cfb8520f"
++dependencies = [
++ "claxon",
++ "cpal",
++ "hound",
++ "lewton",
++ "minimp3",
++]
++
++[[package]]
++name = "rust-argon2"
++version = "0.8.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb"
++dependencies = [
++ "base64 0.13.0",
++ "blake2b_simd",
++ "constant_time_eq",
++ "crossbeam-utils",
++]
++
++[[package]]
++name = "rust-ini"
++version = "0.13.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3e52c148ef37f8c375d49d5a73aa70713125b7f19095948a923f80afdeb22ec2"
++
++[[package]]
++name = "rustc-demangle"
++version = "0.1.18"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232"
++
++[[package]]
++name = "rustc-hash"
++version = "1.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
++
++[[package]]
++name = "rustc_version"
++version = "0.2.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
++dependencies = [
++ "semver",
++]
++
++[[package]]
++name = "ryu"
++version = "1.0.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e"
++
++[[package]]
++name = "same-file"
++version = "1.0.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
++dependencies = [
++ "winapi-util",
++]
++
++[[package]]
++name = "schannel"
++version = "0.1.19"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75"
++dependencies = [
++ "lazy_static 1.4.0",
++ "winapi 0.3.9",
++]
++
++[[package]]
++name = "scopeguard"
++version = "1.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
++
++[[package]]
++name = "security-framework"
++version = "2.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3670b1d2fdf6084d192bc71ead7aabe6c06aa2ea3fbd9cc3ac111fa5c2b1bd84"
++dependencies = [
++ "bitflags",
++ "core-foundation",
++ "core-foundation-sys 0.8.2",
++ "libc",
++ "security-framework-sys",
++]
++
++[[package]]
++name = "security-framework-sys"
++version = "2.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3676258fd3cfe2c9a0ec99ce3038798d847ce3e4bb17746373eb9f0f1ac16339"
++dependencies = [
++ "core-foundation-sys 0.8.2",
++ "libc",
++]
++
++[[package]]
++name = "semver"
++version = "0.9.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
++dependencies = [
++ "semver-parser",
++]
++
++[[package]]
++name = "semver-parser"
++version = "0.7.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
++
++[[package]]
++name = "serde"
++version = "0.8.23"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9dad3f759919b92c3068c696c15c3d17238234498bbdcc80f2c469606f948ac8"
++
++[[package]]
++name = "serde"
++version = "1.0.125"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "558dc50e1a5a5fa7112ca2ce4effcb321b0300c0d4ccf0776a9f60cd89031171"
++dependencies = [
++ "serde_derive",
++]
++
++[[package]]
++name = "serde-hjson"
++version = "0.8.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0b833c5ad67d52ced5f5938b2980f32a9c1c5ef047f0b4fb3127e7a423c76153"
++dependencies = [
++ "lazy_static 0.2.11",
++ "linked-hash-map 0.3.0",
++ "num-traits 0.1.43",
++ "regex",
++ "serde 0.8.23",
++]
++
++[[package]]
++name = "serde_derive"
++version = "1.0.125"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b093b7a2bb58203b5da3056c05b4ec1fed827dcfdb37347a8841695263b3d06d"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn",
++]
++
++[[package]]
++name = "serde_json"
++version = "1.0.64"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79"
++dependencies = [
++ "itoa",
++ "ryu",
++ "serde 1.0.125",
++]
++
++[[package]]
++name = "serde_test"
++version = "0.8.23"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "110b3dbdf8607ec493c22d5d947753282f3bae73c0f56d322af1e8c78e4c23d5"
++dependencies = [
++ "serde 0.8.23",
++]
++
++[[package]]
++name = "serde_urlencoded"
++version = "0.6.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9ec5d77e2d4c73717816afac02670d5c4f534ea95ed430442cad02e7a6e32c97"
++dependencies = [
++ "dtoa",
++ "itoa",
++ "serde 1.0.125",
++ "url",
++]
++
++[[package]]
++name = "serde_urlencoded"
++version = "0.7.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "edfa57a7f8d9c1d260a549e7224100f6c43d43f9103e06dd8b4095a9b2b43ce9"
++dependencies = [
++ "form_urlencoded",
++ "itoa",
++ "ryu",
++ "serde 1.0.125",
++]
++
++[[package]]
++name = "sha1"
++version = "0.6.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d"
++
++[[package]]
++name = "shlex"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2"
++
++[[package]]
++name = "simple-logging"
++version = "2.0.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b00d48e85675326bb182a2286ea7c1a0b264333ae10f27a937a72be08628b542"
++dependencies = [
++ "lazy_static 1.4.0",
++ "log",
++ "thread-id",
++]
++
++[[package]]
++name = "slab"
++version = "0.4.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8"
++
++[[package]]
++name = "slice-deque"
++version = "0.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "31ef6ee280cdefba6d2d0b4b78a84a1c1a3f3a4cec98c2d4231c8bc225de0f25"
++dependencies = [
++ "libc",
++ "mach",
++ "winapi 0.3.9",
++]
++
++[[package]]
++name = "smallvec"
++version = "1.6.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e"
++
++[[package]]
++name = "socket2"
++version = "0.3.19"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e"
++dependencies = [
++ "cfg-if 1.0.0",
++ "libc",
++ "winapi 0.3.9",
++]
++
++[[package]]
++name = "standback"
++version = "0.2.17"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e113fb6f3de07a243d434a56ec6f186dfd51cb08448239fe7bcae73f87ff28ff"
++dependencies = [
++ "version_check 0.9.3",
++]
++
++[[package]]
++name = "stdweb"
++version = "0.1.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ef5430c8e36b713e13b48a9f709cc21e046723fe44ce34587b73a830203b533e"
++
++[[package]]
++name = "stdweb"
++version = "0.4.20"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5"
++dependencies = [
++ "discard",
++ "rustc_version",
++ "stdweb-derive",
++ "stdweb-internal-macros",
++ "stdweb-internal-runtime",
++ "wasm-bindgen",
++]
++
++[[package]]
++name = "stdweb-derive"
++version = "0.5.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "serde 1.0.125",
++ "serde_derive",
++ "syn",
++]
++
++[[package]]
++name = "stdweb-internal-macros"
++version = "0.2.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11"
++dependencies = [
++ "base-x",
++ "proc-macro2",
++ "quote",
++ "serde 1.0.125",
++ "serde_derive",
++ "serde_json",
++ "sha1",
++ "syn",
++]
++
++[[package]]
++name = "stdweb-internal-runtime"
++version = "0.1.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0"
++
++[[package]]
++name = "strsim"
++version = "0.9.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c"
++
++[[package]]
++name = "syn"
++version = "1.0.68"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3ce15dd3ed8aa2f8eeac4716d6ef5ab58b6b9256db41d7e1a0224c2788e8fd87"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "unicode-xid",
++]
++
++[[package]]
++name = "synstructure"
++version = "0.12.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b834f2d66f734cb897113e34aaff2f1ab4719ca946f9a7358dba8f8064148701"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn",
++ "unicode-xid",
++]
++
++[[package]]
++name = "tempfile"
++version = "3.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22"
++dependencies = [
++ "cfg-if 1.0.0",
++ "libc",
++ "rand 0.8.3",
++ "redox_syscall 0.2.5",
++ "remove_dir_all",
++ "winapi 0.3.9",
++]
++
++[[package]]
++name = "termion"
++version = "1.5.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "077185e2eac69c3f8379a4298e1e07cd36beb962290d4a51199acf0fdc10607e"
++dependencies = [
++ "libc",
++ "numtoa",
++ "redox_syscall 0.2.5",
++ "redox_termios",
++]
++
++[[package]]
++name = "thiserror"
++version = "1.0.24"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e0f4a65597094d4483ddaed134f409b2cb7c1beccf25201a9f73c719254fa98e"
++dependencies = [
++ "thiserror-impl",
++]
++
++[[package]]
++name = "thiserror-impl"
++version = "1.0.24"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7765189610d8241a44529806d6fd1f2e0a08734313a35d5b3a556f92b381f3c0"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn",
++]
++
++[[package]]
++name = "thread-id"
++version = "3.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c7fbf4c9d56b320106cd64fd024dadfa0be7cb4706725fc44a7d7ce952d820c1"
++dependencies = [
++ "libc",
++ "redox_syscall 0.1.57",
++ "winapi 0.3.9",
++]
++
++[[package]]
++name = "time"
++version = "0.1.43"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438"
++dependencies = [
++ "libc",
++ "winapi 0.3.9",
++]
++
++[[package]]
++name = "time"
++version = "0.2.26"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "08a8cbfbf47955132d0202d1662f49b2423ae35862aee471f3ba4b133358f372"
++dependencies = [
++ "const_fn",
++ "libc",
++ "standback",
++ "stdweb 0.4.20",
++ "time-macros",
++ "version_check 0.9.3",
++ "winapi 0.3.9",
++]
++
++[[package]]
++name = "time-macros"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "957e9c6e26f12cb6d0dd7fc776bb67a706312e7299aed74c8dd5b17ebb27e2f1"
++dependencies = [
++ "proc-macro-hack",
++ "time-macros-impl",
++]
++
++[[package]]
++name = "time-macros-impl"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e5c3be1edfad6027c69f5491cf4cb310d1a71ecd6af742788c6ff8bced86b8fa"
++dependencies = [
++ "proc-macro-hack",
++ "proc-macro2",
++ "quote",
++ "standback",
++ "syn",
++]
++
++[[package]]
++name = "tinyvec"
++version = "1.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "317cca572a0e89c3ce0ca1f1bdc9369547fe318a683418e42ac8f59d14701023"
++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 = "tokio"
++version = "0.2.25"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6703a273949a90131b290be1fe7b039d0fc884aa1935860dfcbe056f28cd8092"
++dependencies = [
++ "bytes 0.5.6",
++ "fnv",
++ "futures-core",
++ "iovec",
++ "lazy_static 1.4.0",
++ "memchr",
++ "mio",
++ "num_cpus",
++ "pin-project-lite 0.1.12",
++ "slab",
++ "tokio-macros",
++]
++
++[[package]]
++name = "tokio-macros"
++version = "0.2.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e44da00bfc73a25f814cd8d7e57a68a5c31b74b3152a0a1d1f590c97ed06265a"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn",
++]
++
++[[package]]
++name = "tokio-socks"
++version = "0.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d611fd5d241872372d52a0a3d309c52d0b95a6a67671a6c8f7ab2c4a37fb2539"
++dependencies = [
++ "bytes 0.4.12",
++ "either",
++ "futures",
++ "thiserror",
++ "tokio",
++]
++
++[[package]]
++name = "tokio-tls"
++version = "0.3.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9a70f4fcd7b3b24fb194f837560168208f669ca8cb70d0c4b862944452396343"
++dependencies = [
++ "native-tls",
++ "tokio",
++]
++
++[[package]]
++name = "tokio-util"
++version = "0.3.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "be8242891f2b6cbef26a2d7e8605133c2c554cd35b3e4948ea892d6d68436499"
++dependencies = [
++ "bytes 0.5.6",
++ "futures-core",
++ "futures-sink",
++ "log",
++ "pin-project-lite 0.1.12",
++ "tokio",
++]
++
++[[package]]
++name = "toml"
++version = "0.4.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f"
++dependencies = [
++ "serde 1.0.125",
++]
++
++[[package]]
++name = "toml"
++version = "0.5.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa"
++dependencies = [
++ "serde 1.0.125",
++]
++
++[[package]]
++name = "tower-service"
++version = "0.3.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6"
++
++[[package]]
++name = "tracing"
++version = "0.1.25"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "01ebdc2bb4498ab1ab5f5b73c5803825e60199229ccba0698170e3be0e7f959f"
++dependencies = [
++ "cfg-if 1.0.0",
++ "log",
++ "pin-project-lite 0.2.6",
++ "tracing-core",
++]
++
++[[package]]
++name = "tracing-core"
++version = "0.1.17"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f50de3927f93d202783f4513cda820ab47ef17f624b03c096e86ef00c67e6b5f"
++dependencies = [
++ "lazy_static 1.4.0",
++]
++
++[[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 = "try-lock"
++version = "0.2.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642"
++
++[[package]]
++name = "tui"
++version = "0.6.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "73b422ff4986065d33272b587907654f918a3fe8702786a8110bf68dede0d8ee"
++dependencies = [
++ "bitflags",
++ "cassowary",
++ "either",
++ "itertools",
++ "log",
++ "termion",
++ "unicode-segmentation",
++ "unicode-width",
++]
++
++[[package]]
++name = "unicase"
++version = "2.6.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6"
++dependencies = [
++ "version_check 0.9.3",
++]
++
++[[package]]
++name = "unicode-bidi"
++version = "0.3.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5"
++dependencies = [
++ "matches",
++]
++
++[[package]]
++name = "unicode-normalization"
++version = "0.1.17"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "07fbfce1c8a97d547e8b5334978438d9d6ec8c20e38f56d4a4374d181493eaef"
++dependencies = [
++ "tinyvec",
++]
++
++[[package]]
++name = "unicode-segmentation"
++version = "1.7.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "bb0d2e7be6ae3a5fa87eed5fb451aff96f2573d2694942e40543ae0bbe19c796"
++
++[[package]]
++name = "unicode-width"
++version = "0.1.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3"
++
++[[package]]
++name = "unicode-xid"
++version = "0.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564"
++
++[[package]]
++name = "url"
++version = "2.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9ccd964113622c8e9322cfac19eb1004a07e636c545f325da085d5cdde6f1f8b"
++dependencies = [
++ "form_urlencoded",
++ "idna",
++ "matches",
++ "percent-encoding",
++]
++
++[[package]]
++name = "vcpkg"
++version = "0.2.11"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b00bca6106a5e23f3eee943593759b7fcddb00554332e856d990c893966879fb"
++
++[[package]]
++name = "version_check"
++version = "0.1.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd"
++
++[[package]]
++name = "version_check"
++version = "0.9.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe"
++
++[[package]]
++name = "walkdir"
++version = "2.3.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56"
++dependencies = [
++ "same-file",
++ "winapi 0.3.9",
++ "winapi-util",
++]
++
++[[package]]
++name = "want"
++version = "0.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0"
++dependencies = [
++ "log",
++ "try-lock",
++]
++
++[[package]]
++name = "wasi"
++version = "0.9.0+wasi-snapshot-preview1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
++
++[[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.73"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "83240549659d187488f91f33c0f8547cbfef0b2088bc470c116d1d260ef623d9"
++dependencies = [
++ "cfg-if 1.0.0",
++ "serde 1.0.125",
++ "serde_json",
++ "wasm-bindgen-macro",
++]
++
++[[package]]
++name = "wasm-bindgen-backend"
++version = "0.2.73"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ae70622411ca953215ca6d06d3ebeb1e915f0f6613e3b495122878d7ebec7dae"
++dependencies = [
++ "bumpalo",
++ "lazy_static 1.4.0",
++ "log",
++ "proc-macro2",
++ "quote",
++ "syn",
++ "wasm-bindgen-shared",
++]
++
++[[package]]
++name = "wasm-bindgen-futures"
++version = "0.4.23"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "81b8b767af23de6ac18bf2168b690bed2902743ddf0fb39252e36f9e2bfc63ea"
++dependencies = [
++ "cfg-if 1.0.0",
++ "js-sys",
++ "wasm-bindgen",
++ "web-sys",
++]
++
++[[package]]
++name = "wasm-bindgen-macro"
++version = "0.2.73"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3e734d91443f177bfdb41969de821e15c516931c3c3db3d318fa1b68975d0f6f"
++dependencies = [
++ "quote",
++ "wasm-bindgen-macro-support",
++]
++
++[[package]]
++name = "wasm-bindgen-macro-support"
++version = "0.2.73"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d53739ff08c8a68b0fdbcd54c372b8ab800b1449ab3c9d706503bc7dd1621b2c"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn",
++ "wasm-bindgen-backend",
++ "wasm-bindgen-shared",
++]
++
++[[package]]
++name = "wasm-bindgen-shared"
++version = "0.2.73"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d9a543ae66aa233d14bb765ed9af4a33e81b8b58d1584cf1b47ff8cd0b9e4489"
++
++[[package]]
++name = "web-sys"
++version = "0.3.50"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a905d57e488fec8861446d3393670fb50d27a262344013181c2cdf9fff5481be"
++dependencies = [
++ "js-sys",
++ "wasm-bindgen",
++]
++
++[[package]]
++name = "winapi"
++version = "0.2.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
++
++[[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-build"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
++
++[[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-util"
++version = "0.1.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
++dependencies = [
++ "winapi 0.3.9",
++]
++
++[[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 = "winreg"
++version = "0.7.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69"
++dependencies = [
++ "winapi 0.3.9",
++]
++
++[[package]]
++name = "ws2_32-sys"
++version = "0.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e"
++dependencies = [
++ "winapi 0.2.8",
++ "winapi-build",
++]
++
++[[package]]
++name = "yaml-rust"
++version = "0.4.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85"
++dependencies = [
++ "linked-hash-map 0.5.4",
++]
diff --git a/pkgs/applications/audio/netease-music-tui/default.nix b/pkgs/applications/audio/netease-music-tui/default.nix
new file mode 100644
index 00000000000..bf7d680ff15
--- /dev/null
+++ b/pkgs/applications/audio/netease-music-tui/default.nix
@@ -0,0 +1,27 @@
+{ fetchFromGitHub, rustPlatform, lib, alsa-lib, pkg-config, openssl }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "netease-music-tui";
+  version = "0.1.3";
+
+  src = fetchFromGitHub {
+    owner = "betta-cyber";
+    repo = "netease-music-tui";
+    rev = "v${version}";
+    sha256 = "09355a6d197ckayh9833y39dsarklgpgrq3raapiv25z59di30qq";
+  };
+
+  cargoPatches = [ ./cargo-lock.patch ];
+
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ alsa-lib openssl ];
+
+  cargoSha256 = "1pca0sz4rz8qls6k2vhf70ixhnvgk81c4hbx81q3pv106g5k205f";
+
+  meta = with lib; {
+    homepage = "https://github.com/betta-cyber/netease-music-tui";
+    description = "netease cloud music terminal client by rust";
+    maintainers = with maintainers; [ vonfry ];
+    license = licenses.mit;
+  };
+}
diff --git a/pkgs/applications/audio/netease-music-tui/update-cargo-lock.sh b/pkgs/applications/audio/netease-music-tui/update-cargo-lock.sh
new file mode 100644
index 00000000000..b7ca4216ace
--- /dev/null
+++ b/pkgs/applications/audio/netease-music-tui/update-cargo-lock.sh
@@ -0,0 +1,20 @@
+#!nix-shell
+#!nix-shell -i bash -p coreutils gnugrep git cargo
+
+# This updates cargo-lock.patch for the netease-music-tui version listed in
+# default.nix.
+
+set -eu -o verbose
+
+here=$PWD
+version=$(cat default.nix | grep '^  version = "' | cut -d '"' -f 2)
+checkout=$(mktemp -d)
+git clone -b "$version" --depth=1 https://github.com/betta-cyber/netease-music-tui "$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/pkgs/applications/audio/new-session-manager/default.nix b/pkgs/applications/audio/new-session-manager/default.nix
new file mode 100644
index 00000000000..eedd193b2c5
--- /dev/null
+++ b/pkgs/applications/audio/new-session-manager/default.nix
@@ -0,0 +1,27 @@
+{ lib, stdenv, fetchFromGitHub, meson, pkg-config, ninja, liblo, libjack2, fltk }:
+
+stdenv.mkDerivation rec {
+  pname = "new-session-manager";
+  version = "1.5.1";
+
+  src = fetchFromGitHub {
+    owner = "linuxaudio";
+    repo = "new-session-manager";
+    rev = "v${version}";
+    sha256 = "sha256-hcw+Fn5s1S786eqmR95RmkFcIaRzWaH38YE9DXVQJU0=";
+  };
+
+  nativeBuildInputs = [ meson pkg-config ninja ];
+
+  buildInputs = [ liblo libjack2 fltk ];
+
+  hardeningDisable = [ "format" ];
+
+  meta = with lib; {
+    homepage = "https://linuxaudio.github.io/new-session-manager/";
+    description = "A session manager designed for audio applications.";
+    maintainers = [ maintainers._6AA4FD ];
+    license = licenses.gpl3Plus;
+    platforms = ["x86_64-linux"];
+  };
+}
diff --git a/pkgs/applications/audio/ninjas2/default.nix b/pkgs/applications/audio/ninjas2/default.nix
index 3a23347c1e7..8fa5bed3066 100644
--- a/pkgs/applications/audio/ninjas2/default.nix
+++ b/pkgs/applications/audio/ninjas2/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, libjack2, libGL, pkgconfig, xorg, mesa, libsndfile, libsamplerate }:
+{ lib, stdenv, fetchFromGitHub, libjack2, libGL, pkg-config, xorg, mesa, libsndfile, libsamplerate }:
 
 stdenv.mkDerivation rec {
   pname = "ninjas2";
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
     patchShebangs dpf/utils/generate-ttl.sh
   '';
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [
     libjack2 xorg.libX11 libGL mesa libsndfile libsamplerate
   ];
@@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
 
   makeFlags = [ "PREFIX=$(out)" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/clearly-broken-software/ninjas2";
     description = "sample slicer plugin for LV2, VST, and jack standalone";
     license = with licenses; [ gpl3 ];
diff --git a/pkgs/applications/audio/noise-repellent/default.nix b/pkgs/applications/audio/noise-repellent/default.nix
index 3b2f233c6af..7aaa8ddd843 100644
--- a/pkgs/applications/audio/noise-repellent/default.nix
+++ b/pkgs/applications/audio/noise-repellent/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, meson, ninja, pkgconfig, fftwFloat, lv2 }:
+{ lib, stdenv, fetchFromGitHub, meson, ninja, pkg-config, fftwFloat, lv2 }:
 
 stdenv.mkDerivation rec {
   pname = "noise-repellent";
@@ -14,12 +14,12 @@ stdenv.mkDerivation rec {
 
   mesonFlags = ("--prefix=${placeholder "out"}/lib/lv2");
 
-  nativeBuildInputs = [ meson ninja pkgconfig ];
+  nativeBuildInputs = [ meson ninja pkg-config ];
   buildInputs = [
     fftwFloat lv2
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "An lv2 plugin for broadband noise reduction";
     homepage    = "https://github.com/lucianodato/noise-repellent";
     license     = licenses.gpl3;
diff --git a/pkgs/applications/audio/noisetorch/config.patch b/pkgs/applications/audio/noisetorch/config.patch
deleted file mode 100644
index f6e258862db..00000000000
--- a/pkgs/applications/audio/noisetorch/config.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/config.go b/config.go
-index de16249..fb91ec0 100644
---- a/config.go
-+++ b/config.go
-@@ -20,7 +20,7 @@ const configFile = "config.toml"
- 
- func initializeConfigIfNot() {
- 	log.Println("Checking if config needs to be initialized")
--	conf := config{Threshold: 95, DisplayMonitorSources: false, EnableUpdates: true}
-+	conf := config{Threshold: 95, DisplayMonitorSources: false, EnableUpdates: false}
- 	configdir := configDir()
- 	ok, err := exists(configdir)
- 	if err != nil {
diff --git a/pkgs/applications/audio/noisetorch/default.nix b/pkgs/applications/audio/noisetorch/default.nix
index 1739d27870a..05e17bf7c98 100644
--- a/pkgs/applications/audio/noisetorch/default.nix
+++ b/pkgs/applications/audio/noisetorch/default.nix
@@ -1,44 +1,42 @@
-{ stdenv, buildGoModule, fetchFromGitHub, rnnoise-plugin }:
+{ lib, buildGoModule, fetchFromGitHub, copyDesktopItems }:
 
 buildGoModule rec {
   pname = "NoiseTorch";
-  version = "0.5.2-beta";
+  version = "0.11.3";
 
   src = fetchFromGitHub {
     owner = "lawl";
     repo = "NoiseTorch";
     rev = version;
-    sha256 = "1q0gfpqczlpybxcjjkiybcy6yc0gnrq8x27r0mpg4pvgwy7mps47";
+    sha256 = "0rjs6hbi7dvd179lzjmvqy4rv4pbc9amgzb8jfky4yc0zh8xf5z5";
   };
 
-  patches = [ ./version.patch ./config.patch ./embedlibrnnoise.patch ];
-
   vendorSha256 = null;
 
   doCheck = false;
 
+  ldflags = [ "-X main.version=${version}"  "-X main.distribution=nix" ];
+
   subPackages = [ "." ];
 
-  buildInputs = [ rnnoise-plugin ];
+  nativeBuildInputs = [ copyDesktopItems ];
 
   preBuild = ''
-    export RNNOISE_LADSPA_PLUGIN="${rnnoise-plugin}/lib/ladspa/librnnoise_ladspa.so";
-    go generate;
+    make -C c/ladspa/
+    go generate
     rm  ./scripts/*
   '';
 
   postInstall = ''
-    mkdir -p $out/share/icons/hicolor/256x256/apps/
-    cp assets/icon/noisetorch.png $out/share/icons/hicolor/256x256/apps/
-    mkdir -p $out/share/applications/
-    cp assets/noisetorch.desktop $out/share/applications/
+    install -D ./assets/icon/noisetorch.png $out/share/icons/hicolor/256x256/apps/noisetorch.png
+    copyDesktopItems assets/noisetorch.desktop $out/share/applications/
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Virtual microphone device with noise supression for PulseAudio";
     homepage = "https://github.com/lawl/NoiseTorch";
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ panaeon ];
+    maintainers = with maintainers; [ panaeon legendofmiracles ];
   };
 }
diff --git a/pkgs/applications/audio/noisetorch/embedlibrnnoise.patch b/pkgs/applications/audio/noisetorch/embedlibrnnoise.patch
deleted file mode 100644
index b1782efb8b3..00000000000
--- a/pkgs/applications/audio/noisetorch/embedlibrnnoise.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/scripts/embedlibrnnoise.go b/scripts/embedlibrnnoise.go
-index 43daf80..0b3004b 100644
---- a/scripts/embedlibrnnoise.go
-+++ b/scripts/embedlibrnnoise.go
-@@ -8,7 +8,7 @@ import (
- )
- 
- func main() {
--	b, err := ioutil.ReadFile("librnnoise_ladspa/bin/ladspa/librnnoise_ladspa.so")
-+	b, err := ioutil.ReadFile(os.Getenv("RNNOISE_LADSPA_PLUGIN"))
- 	if err != nil {
- 		fmt.Printf("Couldn't read librnnoise_ladspa.so: %v\n", err)
- 		os.Exit(1)
diff --git a/pkgs/applications/audio/noisetorch/version.patch b/pkgs/applications/audio/noisetorch/version.patch
deleted file mode 100644
index 20c51863744..00000000000
--- a/pkgs/applications/audio/noisetorch/version.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-diff --git a/scripts/embedversion.go b/scripts/embedversion.go
-index ce0a756..60e7a5e 100644
---- a/scripts/embedversion.go
-+++ b/scripts/embedversion.go
-@@ -1,24 +1,18 @@
- package main
- 
- import (
--	"os"
--	"os/exec"
--	"strings"
-+        "os"
-+        "strings"
- )
- 
- func main() {
--	cmd := exec.Command("git", "describe", "--tags")
--	ret, err := cmd.Output()
- 
--	if err != nil {
--		panic("Couldn't read git tags to embed version number")
--	}
--	version := strings.TrimSpace(string(ret))
-+        version := strings.TrimSpace(string(os.Getenv("version")))
- 
--	out, _ := os.Create("version.go")
--	defer out.Close()
-+        out, _ := os.Create("version.go")
-+        defer out.Close()
- 
--	out.Write([]byte("package main\n\n//THIS FILE IS AUTOMATICALLY GENERATED BY `go generate` DO NOT EDIT!\n\nvar version=\""))
--	out.Write([]byte(version))
--	out.Write([]byte("\"\n"))
-+        out.Write([]byte("package main\n\n//THIS FILE IS AUTOMATICALLY GENERATED BY `go generate` DO NOT EDIT!\n\nvar version=\""))
-+        out.Write([]byte(version))
-+        out.Write([]byte("\"\n"))
- }
diff --git a/pkgs/applications/audio/non/default.nix b/pkgs/applications/audio/non/default.nix
index 9b4b147c230..9dd377a601b 100644
--- a/pkgs/applications/audio/non/default.nix
+++ b/pkgs/applications/audio/non/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, pkgconfig, python2, cairo, libjpeg, ntk, libjack2
+{ lib, stdenv, fetchFromGitHub, pkg-config, python2, cairo, libjpeg, ntk, libjack2
 , libsndfile, ladspaH, liblo, libsigcxx, lrdf, wafHook
 }:
 
@@ -12,7 +12,7 @@ stdenv.mkDerivation {
     sha256 = "1cljkkyi9dxqpqhx8y6l2ja4zjmlya26m26kqxml8gx08vyvddhx";
   };
 
-  nativeBuildInputs = [ pkgconfig wafHook ];
+  nativeBuildInputs = [ pkg-config wafHook ];
   buildInputs = [ python2 cairo libjpeg ntk libjack2 libsndfile
     ladspaH liblo libsigcxx lrdf
   ];
@@ -20,8 +20,8 @@ stdenv.mkDerivation {
   meta = {
     description = "Lightweight and lightning fast modular Digital Audio Workstation";
     homepage = "http://non.tuxfamily.org";
-    license = stdenv.lib.licenses.lgpl21;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.nico202 ];
+    license = lib.licenses.lgpl21;
+    platforms = lib.platforms.linux;
+    maintainers = [ lib.maintainers.nico202 ];
   };
 }
diff --git a/pkgs/applications/audio/nootka/default.nix b/pkgs/applications/audio/nootka/default.nix
index b0d4843aecd..59d58df8c8d 100644
--- a/pkgs/applications/audio/nootka/default.nix
+++ b/pkgs/applications/audio/nootka/default.nix
@@ -1,18 +1,19 @@
-{ stdenv, fetchurl, cmake
-, alsaLib, fftwSinglePrec, libjack2, libpulseaudio, libvorbis, soundtouch, qtbase
+{ lib, stdenv, fetchurl, cmake
+, alsa-lib, fftwSinglePrec, libjack2, libpulseaudio, libvorbis, soundtouch, qtbase
 }:
 
 stdenv.mkDerivation rec {
-  name = "nootka-1.4.7";
+  pname = "nootka";
+  version = "1.4.7";
 
   src = fetchurl {
-    url = "mirror://sourceforge/nootka/${name}-source.tar.bz2";
+    url = "mirror://sourceforge/nootka/${pname}-${version}-source.tar.bz2";
     sha256 = "1y9wlwri74v2z9dwbcfjs7xri54yra24vpwq19xi2lfv1nbs518x";
   };
 
   nativeBuildInputs = [ cmake ];
   buildInputs = [
-    alsaLib fftwSinglePrec libjack2 libpulseaudio libvorbis soundtouch qtbase
+    alsa-lib fftwSinglePrec libjack2 libpulseaudio libvorbis soundtouch qtbase
   ];
 
   cmakeFlags = [
@@ -21,7 +22,9 @@ stdenv.mkDerivation rec {
     "-DENABLE_PULSEAUDIO=ON"
   ];
 
-  meta = with stdenv.lib; {
+  dontWrapQtApps = true;
+
+  meta = with lib; {
     description = "Application for practicing playing musical scores and ear training";
     homepage = "https://nootka.sourceforge.io/";
     license = licenses.gpl3Plus;
diff --git a/pkgs/applications/audio/nootka/unstable.nix b/pkgs/applications/audio/nootka/unstable.nix
index 16df55c1dfb..edfb1948364 100644
--- a/pkgs/applications/audio/nootka/unstable.nix
+++ b/pkgs/applications/audio/nootka/unstable.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchurl, cmake
-, alsaLib, fftwSinglePrec, libjack2, libpulseaudio, libvorbis, soundtouch
+{ lib, stdenv, fetchurl, cmake
+, alsa-lib, fftwSinglePrec, libjack2, libpulseaudio, libvorbis, soundtouch
 , qtbase, qtdeclarative, qtquickcontrols2
 }:
 
@@ -13,17 +13,19 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ cmake ];
   buildInputs = [
-    alsaLib fftwSinglePrec libjack2 libpulseaudio libvorbis soundtouch
+    alsa-lib fftwSinglePrec libjack2 libpulseaudio libvorbis soundtouch
     qtbase qtdeclarative qtquickcontrols2
   ];
 
+  dontWrapQtApps = true;
+
   cmakeFlags = [
     "-DCMAKE_INCLUDE_PATH=${libjack2}/include/jack;${libpulseaudio.dev}/include/pulse"
     "-DENABLE_JACK=ON"
     "-DENABLE_PULSEAUDIO=ON"
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Application for practicing playing musical scores and ear training";
     homepage = "https://nootka.sourceforge.io/";
     license = licenses.gpl3Plus;
diff --git a/pkgs/applications/audio/normalize/default.nix b/pkgs/applications/audio/normalize/default.nix
index 0aa26411693..78951c67e8d 100644
--- a/pkgs/applications/audio/normalize/default.nix
+++ b/pkgs/applications/audio/normalize/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, libmad }:
+{ lib, stdenv, fetchurl, libmad }:
 
 stdenv.mkDerivation rec {
   pname = "normalize";
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ libmad ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://www.nongnu.org/normalize/";
     description = "Audio file normalizer";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/nova-filters/default.nix b/pkgs/applications/audio/nova-filters/default.nix
index bc5a3efc59a..cae9353d2de 100644
--- a/pkgs/applications/audio/nova-filters/default.nix
+++ b/pkgs/applications/audio/nova-filters/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, sconsPackages, boost, ladspaH, pkgconfig }:
+{lib, stdenv, fetchurl, sconsPackages, boost, ladspaH, pkg-config }:
 
 stdenv.mkDerivation {
   version = "0.2-2";
@@ -9,7 +9,7 @@ stdenv.mkDerivation {
     sha256 = "16064vvl2w5lz4xi3lyjk4xx7fphwsxc14ajykvndiz170q32s6i";
   };
 
-  nativeBuildInputs = [ pkgconfig sconsPackages.scons_3_0_1 ];
+  nativeBuildInputs = [ pkg-config sconsPackages.scons_3_0_1 ];
   buildInputs = [ boost ladspaH ];
 
   patchPhase = ''
@@ -21,7 +21,7 @@ stdenv.mkDerivation {
     sed -i "s/= check/= detail::filter_base<internal_type, checked>::check/" nova/source/dsp/filter.hpp
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "LADSPA plugins based on filters of nova";
     homepage = "http://klingt.org/~tim/nova-filters/";
     license = licenses.gpl2Plus;
diff --git a/pkgs/applications/audio/nuclear/default.nix b/pkgs/applications/audio/nuclear/default.nix
new file mode 100644
index 00000000000..e107f44cf6f
--- /dev/null
+++ b/pkgs/applications/audio/nuclear/default.nix
@@ -0,0 +1,32 @@
+{ appimageTools, lib, fetchurl }:
+let
+  pname = "nuclear";
+  version = "0.6.6";
+  name = "${pname}-v${version}";
+
+  src = fetchurl {
+    url = "https://github.com/nukeop/nuclear/releases/download/v${version}/${name}.AppImage";
+    sha256 = "0c1335m76fv0wfbk07s8r6ln7zbmlqd66052gqfisakl8a1aafl6";
+  };
+
+  appimageContents = appimageTools.extract { inherit name src; };
+in appimageTools.wrapType2 {
+  inherit name src;
+
+  extraInstallCommands = ''
+    mv $out/bin/${name} $out/bin/${pname}
+
+    install -m 444 -D ${appimageContents}/${pname}.desktop -t $out/share/applications
+    substituteInPlace $out/share/applications/${pname}.desktop \
+      --replace 'Exec=AppRun' 'Exec=${pname}'
+    cp -r ${appimageContents}/usr/share/icons $out/share
+  '';
+
+  meta = with lib; {
+    description = "Streaming music player that finds free music for you";
+    homepage = "https://nuclear.js.org/";
+    license = licenses.agpl3Plus;
+    maintainers = [ maintainers.ivar ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/pkgs/applications/audio/ocenaudio/default.nix b/pkgs/applications/audio/ocenaudio/default.nix
new file mode 100644
index 00000000000..7ad1e319bff
--- /dev/null
+++ b/pkgs/applications/audio/ocenaudio/default.nix
@@ -0,0 +1,54 @@
+{ stdenv
+, lib
+, fetchurl
+, autoPatchelfHook
+, dpkg
+, qt5
+, libjack2
+, alsa-lib
+, bzip2
+, libpulseaudio }:
+
+stdenv.mkDerivation rec {
+  pname = "ocenaudio";
+  version = "3.10.6";
+
+  src = fetchurl {
+    url = "https://www.ocenaudio.com/downloads/index.php/ocenaudio_debian9_64.deb?version=${version}";
+    sha256 = "0fgvm1xw2kgrqj3w6slpfxbb3pw9k8i0dz16q9d5d8gyyvr2mh8g";
+  };
+
+  nativeBuildInputs = [
+    autoPatchelfHook
+    qt5.qtbase
+    qt5.wrapQtAppsHook
+    libjack2
+    libpulseaudio
+    bzip2
+    alsa-lib
+  ];
+
+  buildInputs = [ dpkg ];
+
+  dontUnpack = true;
+  dontBuild = true;
+  dontStrip = true;
+
+  installPhase = ''
+    mkdir -p $out
+    dpkg -x $src $out
+    cp -av $out/opt/ocenaudio/* $out
+    rm -rf $out/opt
+
+    # Create symlink bzip2 library
+    ln -s ${bzip2.out}/lib/libbz2.so.1 $out/libbz2.so.1.0
+  '';
+
+  meta = with lib; {
+    description = "Cross-platform, easy to use, fast and functional audio editor";
+    homepage = "https://www.ocenaudio.com";
+    license = licenses.unfree;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ onny ];
+  };
+}
diff --git a/pkgs/applications/audio/openmpt123/default.nix b/pkgs/applications/audio/openmpt123/default.nix
index 15d38a1eea7..3bfb1a5a4da 100644
--- a/pkgs/applications/audio/openmpt123/default.nix
+++ b/pkgs/applications/audio/openmpt123/default.nix
@@ -1,31 +1,30 @@
-{ config, stdenv, fetchurl, zlib, pkgconfig, mpg123, libogg, libvorbis, portaudio, libsndfile, flac
+{ config, lib, stdenv, fetchurl, zlib, pkg-config, mpg123, libogg, libvorbis, portaudio, libsndfile, flac
 , usePulseAudio ? config.pulseaudio or false, libpulseaudio }:
 
-let
-  version = "0.5.1";
-in stdenv.mkDerivation {
+stdenv.mkDerivation rec {
   pname = "openmpt123";
-  inherit version;
+  version = "0.5.10";
 
   src = fetchurl {
     url = "https://lib.openmpt.org/files/libopenmpt/src/libopenmpt-${version}+release.autotools.tar.gz";
-    sha256 = "1vpalfsrkbx4vyrh1qy564lr91jwdxlbjivv5gzf8zcywxasf0xa";
+    sha256 = "sha256-Waj6KNi432nLf6WXK9+TEIHatOHhFWxpoaU7ZcK+n/o=";
   };
 
   enableParallelBuilding = true;
-  doCheck = true;
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ zlib mpg123 libogg libvorbis portaudio libsndfile flac ]
-  ++ stdenv.lib.optional usePulseAudio libpulseaudio;
+  ++ lib.optional usePulseAudio libpulseaudio;
+
+  configureFlags = lib.optional (!usePulseAudio) "--without-pulseaudio";
 
-  configureFlags = stdenv.lib.optional (!usePulseAudio) "--without-pulseaudio";
+  doCheck = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A cross-platform command-line based module file player";
     homepage = "https://lib.openmpt.org/libopenmpt/";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ gnidorah ];
-    platforms = platforms.linux;
+    maintainers = with maintainers; [ OPNA2608 ];
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/applications/audio/opus-tools/default.nix b/pkgs/applications/audio/opus-tools/default.nix
index 9d95c362d92..6c602ef1d03 100644
--- a/pkgs/applications/audio/opus-tools/default.nix
+++ b/pkgs/applications/audio/opus-tools/default.nix
@@ -1,20 +1,22 @@
-{stdenv, fetchurl, libogg, libao, pkgconfig, flac, opusfile, libopusenc}:
+{lib, stdenv, fetchurl, libogg, libao, pkg-config, flac, opusfile, libopusenc}:
 
 stdenv.mkDerivation rec {
-  name = "opus-tools-0.2";
+  pname = "opus-tools";
+  version = "0.2";
+
   src = fetchurl {
-    url = "http://downloads.xiph.org/releases/opus/${name}.tar.gz";
+    url = "https://downloads.xiph.org/releases/opus/${pname}-${version}.tar.gz";
     sha256 = "11pzl27s4vcz4m18ch72nivbhww2zmzn56wspb7rll1y1nq6rrdl";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ libogg libao flac opusfile libopusenc ];
 
   meta = {
     description = "Tools to work with opus encoded audio streams";
-    homepage = "http://www.opus-codec.org/";
-    license = stdenv.lib.licenses.bsd2;
-    maintainers = with stdenv.lib.maintainers; [ ];
-    platforms = with stdenv.lib.platforms; unix;
+    homepage = "https://www.opus-codec.org/";
+    license = lib.licenses.bsd2;
+    maintainers = with lib.maintainers; [ ];
+    platforms = with lib.platforms; unix;
   };
 }
diff --git a/pkgs/applications/audio/opusfile/default.nix b/pkgs/applications/audio/opusfile/default.nix
index df3bf7c215b..a6683904cb1 100644
--- a/pkgs/applications/audio/opusfile/default.nix
+++ b/pkgs/applications/audio/opusfile/default.nix
@@ -1,23 +1,27 @@
-{ stdenv, fetchurl, pkgconfig, openssl, libogg, libopus }:
+{ lib, stdenv, fetchurl, pkg-config, openssl, libogg, libopus }:
 
 stdenv.mkDerivation rec {
-  name = "opusfile-0.12";
+  pname = "opusfile";
+  version = "0.12";
   src = fetchurl {
-    url = "http://downloads.xiph.org/releases/opus/${name}.tar.gz";
+    url = "http://downloads.xiph.org/releases/opus/opusfile-${version}.tar.gz";
     sha256 = "02smwc5ah8nb3a67mnkjzqmrzk43j356hgj2a97s9midq40qd38i";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ openssl libogg ];
   propagatedBuildInputs = [ libopus ];
-  patches = [ ./include-multistream.patch ];
+  patches = [ ./include-multistream.patch ]
+    # fixes problem with openssl 1.1 dependency
+    # see https://github.com/xiph/opusfile/issues/13
+    ++ lib.optionals stdenv.hostPlatform.isWindows [ ./disable-cert-store.patch ];
   configureFlags = [ "--disable-examples" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "High-level API for decoding and seeking in .opus files";
-    homepage = "http://www.opus-codec.org/";
+    homepage = "https://www.opus-codec.org/";
     license = licenses.bsd3;
-    platforms = platforms.linux ++ platforms.darwin;
-    maintainers = with maintainers; [ ];
+    platforms = platforms.all;
+    maintainers = with maintainers; [ taeer ];
   };
 }
diff --git a/pkgs/applications/audio/opusfile/disable-cert-store.patch b/pkgs/applications/audio/opusfile/disable-cert-store.patch
new file mode 100644
index 00000000000..e0a7dd4fe3d
--- /dev/null
+++ b/pkgs/applications/audio/opusfile/disable-cert-store.patch
@@ -0,0 +1,35 @@
+diff --git a/src/http.c b/src/http.c
+index bd08562..3a3592c 100644
+--- a/src/http.c
++++ b/src/http.c
+@@ -327,10 +327,12 @@ static int op_poll_win32(struct pollfd *_fds,nfds_t _nfds,int _timeout){
+ typedef ptrdiff_t ssize_t;
+ #  endif
+ 
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ /*Load certificates from the built-in certificate store.*/
+ int SSL_CTX_set_default_verify_paths_win32(SSL_CTX *_ssl_ctx);
+ #  define SSL_CTX_set_default_verify_paths \
+  SSL_CTX_set_default_verify_paths_win32
++#endif
+ 
+ # else
+ /*Normal Berkeley sockets.*/
+diff --git a/src/wincerts.c b/src/wincerts.c
+index 409a4e0..c355952 100644
+--- a/src/wincerts.c
++++ b/src/wincerts.c
+@@ -33,6 +33,8 @@
+ # include <openssl/err.h>
+ # include <openssl/x509.h>
+ 
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
++
+ static int op_capi_new(X509_LOOKUP *_lu){
+   HCERTSTORE h_store;
+   h_store=CertOpenStore(CERT_STORE_PROV_SYSTEM_A,0,0,
+@@ -171,3 +173,4 @@ int SSL_CTX_set_default_verify_paths_win32(SSL_CTX *_ssl_ctx){
+ }
+ 
+ #endif
++#endif
diff --git a/pkgs/applications/audio/opustags/default.nix b/pkgs/applications/audio/opustags/default.nix
new file mode 100644
index 00000000000..83cf44853a5
--- /dev/null
+++ b/pkgs/applications/audio/opustags/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, lib, fetchFromGitHub, cmake, pkg-config, libiconv, libogg
+, ffmpeg, glibcLocales, perl, perlPackages }:
+
+stdenv.mkDerivation rec {
+  pname = "opustags";
+  version = "1.6.0";
+
+  src = fetchFromGitHub {
+    owner = "fmang";
+    repo = "opustags";
+    rev = version;
+    sha256 = "1wsfw713rhi2gg5xc04cx5i31hlw0l3wdflj3r1y8w45bdk6ag1z";
+  };
+
+  buildInputs = [ libogg ];
+
+  nativeBuildInputs = [ cmake pkg-config ] ++ lib.optionals stdenv.isDarwin [ libiconv ];
+
+  doCheck = true;
+
+  checkInputs = [ ffmpeg glibcLocales perl ] ++ (with perlPackages; [ ListMoreUtils ]);
+
+  checkPhase = ''
+    export LANG="en_US.UTF-8"
+    export LC_ALL="en_US.UTF-8"
+    make check
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/fmang/opustags";
+    description = "Ogg Opus tags editor";
+    platforms = platforms.all;
+    broken = stdenv.isDarwin;
+    maintainers = with maintainers; [ kmein SuperSandro2000 ];
+    license = licenses.bsd3;
+  };
+}
diff --git a/pkgs/applications/audio/orca-c/default.nix b/pkgs/applications/audio/orca-c/default.nix
index 3a4f4b2ce2b..2c3a8fb1390 100644
--- a/pkgs/applications/audio/orca-c/default.nix
+++ b/pkgs/applications/audio/orca-c/default.nix
@@ -1,31 +1,35 @@
-{ stdenv, fetchFromGitHub, ncurses, portmidi }:
+{ lib, stdenv, fetchgit, ncurses, portmidi }:
 stdenv.mkDerivation {
   pname = "orca-c";
 
-  version = "git-2020-05-01";
+  version = "git-2021-02-13";
 
-  src = fetchFromGitHub {
-    owner = "hundredrabbits";
-    repo = "Orca-c";
-    rev = "d7a3b169c5ed0b06a9ad0fdb3057704da9a0b6ce";
-    sha256 = "101y617a295hzwr98ykvza1sycxlk29kzxn2ybjwc718r0alkbzz";
+  src = fetchgit {
+    url = "https://git.sr.ht/~rabbits/orca";
+    rev = "5ba56ca67baae3db140f8b7a2b2fc46bbac5602f";
+    sha256 = "sha256-bbIH0kyHRTcMGXV3WdBQIH1br0FyIzKKL88wqpGZ0NY=";
   };
 
   buildInputs = [ ncurses portmidi ];
 
-  patchPhase = ''
+  postPatch = ''
     patchShebangs tool
   '';
 
   installPhase = ''
+    runHook preInstall
+
     mkdir -p $out/bin
     install build/orca $out/bin/orca
+
+    runHook postInstall
   '';
 
-  meta = with stdenv.lib; {
-    description = "An esoteric programming language designed to quickly create procedural sequencers.";
-    homepage = "https://github.com/hundredrabbits/Orca-c";
+  meta = with lib; {
+    description = "An esoteric programming language designed to quickly create procedural sequencers";
+    homepage = "https://git.sr.ht/~rabbits/orca";
     license = licenses.mit;
     platforms = platforms.all;
+    maintainers = with maintainers; [ netcrns ];
   };
 }
diff --git a/pkgs/applications/audio/osmid/default.nix b/pkgs/applications/audio/osmid/default.nix
index 2e31efd8172..1a65826dca3 100644
--- a/pkgs/applications/audio/osmid/default.nix
+++ b/pkgs/applications/audio/osmid/default.nix
@@ -1,7 +1,7 @@
-{ stdenv
+{ lib, stdenv
 , fetchFromGitHub
 , cmake
-, alsaLib
+, alsa-lib
 , libX11
 }:
 
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ cmake ];
 
-  buildInputs = [ alsaLib libX11 ];
+  buildInputs = [ alsa-lib libX11 ];
 
   installPhase = ''
     runHook preInstall
@@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
     runHook postInstall
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/llloret/osmid";
     description = "A lightweight, portable, easy to use tool to convert MIDI to OSC and OSC to MIDI";
     license = licenses.mit;
diff --git a/pkgs/applications/audio/oxefmsynth/default.nix b/pkgs/applications/audio/oxefmsynth/default.nix
new file mode 100644
index 00000000000..427029f3c86
--- /dev/null
+++ b/pkgs/applications/audio/oxefmsynth/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, lib, fetchFromGitHub, unzip, fetchzip, libX11 }:
+
+let
+
+  vst-sdk = stdenv.mkDerivation rec {
+    name = "vstsdk3610_11_06_2018_build_37";
+    src = fetchzip {
+      url = "https://web.archive.org/web/20181016150224if_/https://download.steinberg.net/sdk_downloads/${name}.zip";
+      sha256 = "0da16iwac590wphz2sm5afrfj42jrsnkr1bxcy93lj7a369ildkj";
+    };
+    installPhase = "cp -r . $out";
+  };
+
+in stdenv.mkDerivation rec {
+  pname = "oxefmsynth";
+  version = "1.3.5";
+
+  src = fetchFromGitHub {
+    owner = "oxesoft";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1rk71ls33a38wx8i22plsi7d89cqqxrfxknq5i4f9igsw1ipm4gn";
+  };
+
+  NIX_CFLAGS_COMPILE = [ "-Wno-error=narrowing" ];
+
+  buildFlags = [ "VSTSDK_PATH=${vst-sdk}/VST2_SDK" ];
+
+  buildInputs = [ libX11 ];
+
+  installPhase = ''
+    mkdir -p $out/lib/lxvst
+    install -Dm644 oxevst64.so -t $out/lib/lxvst
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/oxesoft/oxefmsynth";
+    description = "An open source VST 2.4 instrument plugin";
+    maintainers = [ maintainers.hirenashah ];
+    platforms = [ "x86_64-linux" ];
+    license = licenses.gpl3Only;
+  };
+}
diff --git a/pkgs/applications/audio/padthv1/default.nix b/pkgs/applications/audio/padthv1/default.nix
index c5d20d965b9..90e80f13ac4 100644
--- a/pkgs/applications/audio/padthv1/default.nix
+++ b/pkgs/applications/audio/padthv1/default.nix
@@ -1,19 +1,19 @@
-{ stdenv, fetchurl, pkgconfig, libjack2, alsaLib, libsndfile, liblo, lv2, qt5, fftw, mkDerivation }:
+{ lib, fetchurl, pkg-config, libjack2, alsa-lib, libsndfile, liblo, lv2, qt5, fftwFloat, mkDerivation }:
 
 mkDerivation rec {
   pname = "padthv1";
-  version = "0.9.16";
+  version = "0.9.18";
 
   src = fetchurl {
     url = "mirror://sourceforge/padthv1/${pname}-${version}.tar.gz";
-    sha256 = "1f2v60dpja0rnml60g463fjiz0f84v32yjwpvr56z79h1i6fssmv";
+    sha256 = "1karrprb3ijrbiwpr43rl3nxnzc33lnmwrd1832psgr3flnr9fp5";
   };
 
-  buildInputs = [ libjack2 alsaLib libsndfile liblo lv2 qt5.qtbase qt5.qttools fftw ];
+  buildInputs = [ libjack2 alsa-lib libsndfile liblo lv2 qt5.qtbase qt5.qttools fftwFloat ];
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "polyphonic additive synthesizer";
     homepage = "http://padthv1.sourceforge.net/";
     license = licenses.gpl2Plus;
diff --git a/pkgs/applications/audio/pamix/default.nix b/pkgs/applications/audio/pamix/default.nix
index cc5d84d9471..fb076797fb5 100644
--- a/pkgs/applications/audio/pamix/default.nix
+++ b/pkgs/applications/audio/pamix/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchFromGitHub
-, pkgconfig, cmake
+{ lib, stdenv, fetchFromGitHub
+, pkg-config, cmake
 , libpulseaudio, ncurses }:
 
 stdenv.mkDerivation rec {
@@ -17,10 +17,10 @@ stdenv.mkDerivation rec {
     substituteInPlace CMakeLists.txt --replace "/etc" "$out/etc/xdg"
   '';
 
-  nativeBuildInputs = [ cmake pkgconfig ];
+  nativeBuildInputs = [ cmake pkg-config ];
   buildInputs = [ libpulseaudio ncurses ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Pulseaudio terminal mixer";
     homepage    = "https://github.com/patroclos/PAmix";
     license     = licenses.mit;
diff --git a/pkgs/applications/audio/pamixer/default.nix b/pkgs/applications/audio/pamixer/default.nix
index 3e2192c0414..244e688fe57 100644
--- a/pkgs/applications/audio/pamixer/default.nix
+++ b/pkgs/applications/audio/pamixer/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, fetchpatch, boost, libpulseaudio }:
+{ lib, stdenv, fetchFromGitHub, fetchpatch, boost, libpulseaudio }:
 
 stdenv.mkDerivation rec {
   pname = "pamixer";
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
     install -Dm755 pamixer -t $out/bin
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Pulseaudio command line mixer";
     longDescription = ''
       Features:
diff --git a/pkgs/applications/audio/paprefs/default.nix b/pkgs/applications/audio/paprefs/default.nix
index b5ec1206ce3..64e403001a3 100644
--- a/pkgs/applications/audio/paprefs/default.nix
+++ b/pkgs/applications/audio/paprefs/default.nix
@@ -1,9 +1,9 @@
 { fetchurl
-, stdenv
+, lib, stdenv
 , meson
 , ninja
 , gettext
-, pkgconfig
+, pkg-config
 , pulseaudioFull
 , glibmm
 , gtkmm3
@@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
     meson
     ninja
     gettext
-    pkgconfig
+    pkg-config
     wrapGAppsHook
   ];
 
@@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
     gtkmm3
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "PulseAudio Preferences";
 
     longDescription = ''
diff --git a/pkgs/applications/audio/parlatype/default.nix b/pkgs/applications/audio/parlatype/default.nix
index b9babddb800..7b448cc69af 100644
--- a/pkgs/applications/audio/parlatype/default.nix
+++ b/pkgs/applications/audio/parlatype/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, pkgconfig, meson, gtk3, at-spi2-core, dbus, gst_all_1, sphinxbase, pocketsphinx, ninja, gettext, appstream-glib, python3, glib, gobject-introspection, gsettings-desktop-schemas, itstool, wrapGAppsHook, hicolor-icon-theme }:
+{ lib, stdenv, fetchFromGitHub, pkg-config, meson, gtk3, at-spi2-core, dbus, gst_all_1, sphinxbase, pocketsphinx, ninja, gettext, appstream-glib, python3, glib, gobject-introspection, gsettings-desktop-schemas, itstool, wrapGAppsHook, hicolor-icon-theme }:
 
 stdenv.mkDerivation rec {
   pname = "parlatype";
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
-    pkgconfig
+    pkg-config
     meson
     ninja
     gettext
@@ -48,13 +48,12 @@ stdenv.mkDerivation rec {
   '';
 
   doCheck = false;
-  enableParallelBuilding = true;
 
   buildPhase = ''
     export GST_PLUGIN_SYSTEM_PATH_1_0="$out/lib/gstreamer-1.0/:$GST_PLUGIN_SYSTEM_PATH_1_0"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "GNOME audio player for transcription";
     longDescription = ''
       Parlatype is a minimal audio player for manual speech transcription, written for the GNOME desktop environment.
diff --git a/pkgs/applications/audio/patchage/default.nix b/pkgs/applications/audio/patchage/default.nix
index ac679d6dd94..f37cf8c5b32 100644
--- a/pkgs/applications/audio/patchage/default.nix
+++ b/pkgs/applications/audio/patchage/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, alsaLib, boost, dbus-glib, fetchsvn, ganv, glibmm
-, gtkmm2, libjack2, pkgconfig, python2, wafHook
+{ lib, stdenv, alsa-lib, boost, dbus-glib, fetchsvn, ganv, glibmm
+, gtkmm2, libjack2, pkg-config, python2, wafHook
 }:
 
 stdenv.mkDerivation {
@@ -12,15 +12,15 @@ stdenv.mkDerivation {
   };
 
   buildInputs = [
-    alsaLib boost dbus-glib ganv glibmm gtkmm2 libjack2
-    pkgconfig python2 wafHook
+    alsa-lib boost dbus-glib ganv glibmm gtkmm2 libjack2
+    pkg-config python2 wafHook
   ];
 
   meta = {
     description = "Modular patch bay for Jack and ALSA systems";
     homepage = "http://non.tuxfamily.org";
-    license = stdenv.lib.licenses.lgpl3;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.nico202 ];
+    license = lib.licenses.lgpl3;
+    platforms = lib.platforms.linux;
+    maintainers = [ lib.maintainers.nico202 ];
   };
 }
diff --git a/pkgs/applications/audio/paulstretch/default.nix b/pkgs/applications/audio/paulstretch/default.nix
index f6cee7672f7..1d701004622 100644
--- a/pkgs/applications/audio/paulstretch/default.nix
+++ b/pkgs/applications/audio/paulstretch/default.nix
@@ -1,6 +1,6 @@
-{ stdenv, fetchFromGitHub, fetchpatch
+{ lib, stdenv, fetchFromGitHub, fetchpatch
 , audiofile, libvorbis, fltk, fftw, fftwFloat
-, minixml, pkgconfig, libmad, libjack2, portaudio, libsamplerate
+, minixml, pkg-config, libmad, libjack2, portaudio, libsamplerate
 }:
 
 stdenv.mkDerivation {
@@ -14,7 +14,7 @@ stdenv.mkDerivation {
     sha256 = "06dy03dbz1yznhsn0xvsnkpc5drzwrgxbxdx0hfpsjn2xcg0jrnc";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
 
   buildInputs = [
     audiofile
@@ -44,7 +44,7 @@ stdenv.mkDerivation {
     install -Dm555 ./paulstretch $out/bin/paulstretch
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Produces high quality extreme sound stretching";
     longDescription = ''
       This is a program for stretching the audio. It is suitable only for
diff --git a/pkgs/applications/audio/pavucontrol/default.nix b/pkgs/applications/audio/pavucontrol/default.nix
index 301e44168d3..c7f12a8df6c 100644
--- a/pkgs/applications/audio/pavucontrol/default.nix
+++ b/pkgs/applications/audio/pavucontrol/default.nix
@@ -1,5 +1,5 @@
-{ fetchurl, stdenv, pkgconfig, intltool, libpulseaudio, gtkmm3
-, libcanberra-gtk3, gnome3, wrapGAppsHook }:
+{ fetchurl, fetchpatch, lib, stdenv, pkg-config, intltool, libpulseaudio,
+gtkmm3 , libcanberra-gtk3, gnome, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   pname = "pavucontrol";
@@ -10,14 +10,23 @@ stdenv.mkDerivation rec {
     sha256 = "1qhlkl3g8d7h72xjskii3g1l7la2cavwp69909pzmbi2jyn5pi4g";
   };
 
+  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
-                  gnome3.adwaita-icon-theme ];
+                  gnome.adwaita-icon-theme ];
 
-  nativeBuildInputs = [ pkgconfig intltool wrapGAppsHook ];
+  nativeBuildInputs = [ pkg-config intltool wrapGAppsHook ];
 
   configureFlags = [ "--disable-lynx" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "PulseAudio Volume Control";
 
     longDescription = ''
@@ -28,7 +37,7 @@ stdenv.mkDerivation rec {
 
     homepage = "http://freedesktop.org/software/pulseaudio/pavucontrol/";
 
-    license = stdenv.lib.licenses.gpl2Plus;
+    license = lib.licenses.gpl2Plus;
 
     maintainers = with maintainers; [ abbradar globin ];
     platforms = platforms.linux;
diff --git a/pkgs/applications/audio/pd-plugins/cyclone/default.nix b/pkgs/applications/audio/pd-plugins/cyclone/default.nix
index 56f1ec518de..03df731aef5 100644
--- a/pkgs/applications/audio/pd-plugins/cyclone/default.nix
+++ b/pkgs/applications/audio/pd-plugins/cyclone/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, puredata }:
+{ lib, stdenv, fetchFromGitHub, puredata }:
 
 stdenv.mkDerivation rec {
   pname = "cyclone";
@@ -26,8 +26,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "A library of PureData classes, bringing some level of compatibility between Max/MSP and Pd environments";
     homepage = "http://puredata.info/downloads/cyclone";
-    license = stdenv.lib.licenses.tcltk;
-    maintainers = [ stdenv.lib.maintainers.magnetophon ];
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.tcltk;
+    maintainers = [ lib.maintainers.magnetophon ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/pd-plugins/gem/default.nix b/pkgs/applications/audio/pd-plugins/gem/default.nix
index 2c0d0a24c57..aeb58911623 100644
--- a/pkgs/applications/audio/pd-plugins/gem/default.nix
+++ b/pkgs/applications/audio/pd-plugins/gem/default.nix
@@ -1,4 +1,4 @@
-{ stdenv
+{ lib, stdenv
 , fetchFromGitHub
 , fetchpatch
 , autoreconfHook
@@ -15,27 +15,15 @@
 
 stdenv.mkDerivation rec {
   pname = "gem-unstable";
-  # The patch below applies to the latest release (v0.94), but then the build
-  # fails. I didn't track down what changed between that version and the
-  # current master that fixes the build on Nix
-  version = "2020-03-26";
+  version = "2020-09-22";
 
   src = fetchFromGitHub {
     owner = "umlaeute";
     repo = "Gem";
-    rev = "f38748d71bfca00e4d2b2f31d6c4e3759c03d599";
-    sha256 = "0bkky5fk0a836bapslrgzil272iq9y704y7hw254cfq5ffjd4qjy";
+    rev = "2edfde4f0587e72ef325e7f53681936dcc19655b";
+    sha256 = "0k5sq128wxi2qhaidspkw310pdgysxs47agv09pkjgvch2n4d5dq";
   };
 
-  patches = [
-    # Update autoconf OpenGL/GLU/GLUT detection scripts
-    # https://github.com/umlaeute/Gem/pull/251
-    (fetchpatch {
-      url = "https://github.com/umlaeute/Gem/commit/343a486c2b5c3427696f77aeabdff440e6590fc7.diff";
-      sha256 = "0gkzxv80rgg8lgp9av5qp6xng3ldhnbjz9d6r7ym784fw8yx41yj";
-    })
-  ];
-
   nativeBuildInputs = [
     autoreconfHook
     file
@@ -55,8 +43,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "Graphics Environment for Multimedia";
     homepage = "http://puredata.info/downloads/gem";
-    license = stdenv.lib.licenses.gpl2Plus;
-    maintainers = [ stdenv.lib.maintainers.raboof ];
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.gpl2Plus;
+    maintainers = [ lib.maintainers.raboof ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/pd-plugins/helmholtz/default.nix b/pkgs/applications/audio/pd-plugins/helmholtz/default.nix
index be5a385d308..feaf9ed70cf 100644
--- a/pkgs/applications/audio/pd-plugins/helmholtz/default.nix
+++ b/pkgs/applications/audio/pd-plugins/helmholtz/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, unzip, puredata }:
+{ lib, stdenv, fetchurl, unzip, puredata }:
 
 stdenv.mkDerivation {
   name = "helmholtz";
@@ -10,7 +10,8 @@ stdenv.mkDerivation {
     sha256 = "0h1fj7lmvq9j6rmw33rb8k0byxb898bi2xhcwkqalb84avhywgvs";
   };
 
-  buildInputs = [ unzip puredata ];
+  nativeBuildInputs = [ unzip ];
+  buildInputs = [ puredata ];
 
   unpackPhase = ''
     unzip $src
@@ -39,8 +40,8 @@ stdenv.mkDerivation {
   meta = {
     description = "Time domain pitch tracker for Pure Data";
     homepage = "http://www.katjaas.nl/helmholtz/helmholtz.html";
-    license = stdenv.lib.licenses.bsd3;
-    maintainers = [ stdenv.lib.maintainers.magnetophon ];
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.bsd3;
+    maintainers = [ lib.maintainers.magnetophon ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/pd-plugins/maxlib/default.nix b/pkgs/applications/audio/pd-plugins/maxlib/default.nix
index aec793c4ee8..1fc3475bc6a 100644
--- a/pkgs/applications/audio/pd-plugins/maxlib/default.nix
+++ b/pkgs/applications/audio/pd-plugins/maxlib/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, puredata }:
+{ lib, stdenv, fetchFromGitHub, puredata }:
 
 stdenv.mkDerivation rec {
   pname = "maxlib";
@@ -26,8 +26,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "A library of non-tilde externals for puredata, by Miller Puckette";
     homepage = "http://puredata.info/downloads/maxlib";
-    license = stdenv.lib.licenses.gpl2;
-    maintainers = [ stdenv.lib.maintainers.magnetophon ];
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.gpl2;
+    maintainers = [ lib.maintainers.magnetophon ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/pd-plugins/mrpeach/default.nix b/pkgs/applications/audio/pd-plugins/mrpeach/default.nix
index cefee430ad5..71f5e9438e1 100644
--- a/pkgs/applications/audio/pd-plugins/mrpeach/default.nix
+++ b/pkgs/applications/audio/pd-plugins/mrpeach/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, puredata }:
+{ lib, stdenv, fetchurl, puredata }:
 
 stdenv.mkDerivation {
   pname = "mrpeach";
@@ -55,8 +55,8 @@ stdenv.mkDerivation {
   meta = {
     description = "A collection of Pd objectclasses for OSC-messages";
     homepage = "http://puredata.info/downloads/osc";
-    license = stdenv.lib.licenses.gpl2;
-    maintainers = [ stdenv.lib.maintainers.magnetophon ];
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.gpl2;
+    maintainers = [ lib.maintainers.magnetophon ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/pd-plugins/puremapping/default.nix b/pkgs/applications/audio/pd-plugins/puremapping/default.nix
index 7a5014664d5..811b8c2ee9a 100644
--- a/pkgs/applications/audio/pd-plugins/puremapping/default.nix
+++ b/pkgs/applications/audio/pd-plugins/puremapping/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, unzip, puredata }:
+{ lib, stdenv, fetchurl, unzip, puredata }:
 
 stdenv.mkDerivation rec {
   pname = "puremapping";
@@ -10,7 +10,8 @@ stdenv.mkDerivation rec {
     sha256 = "1h7qgqd8srrxw2y1rkdw5js4k6f5vc8x6nlm2mq9mq9vjck7n1j7";
   };
 
-  buildInputs = [ unzip puredata ];
+  nativeBuildInputs = [ unzip ];
+  buildInputs = [ puredata ];
 
   unpackPhase = ''
     unzip $src
@@ -24,8 +25,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "Set of externals to facilitate the use of sensors within Pure Data and to create complex relations between input and output of a dynamic system";
     homepage = "http://www.chnry.net/ch/?090-Pure-Mapping&lang=en";
-    license = stdenv.lib.licenses.gpl1;
-    maintainers = [ stdenv.lib.maintainers.magnetophon ];
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.gpl1;
+    maintainers = [ lib.maintainers.magnetophon ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/pd-plugins/timbreid/default.nix b/pkgs/applications/audio/pd-plugins/timbreid/default.nix
index e68610a0226..7fd2adefce0 100644
--- a/pkgs/applications/audio/pd-plugins/timbreid/default.nix
+++ b/pkgs/applications/audio/pd-plugins/timbreid/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, unzip, puredata, fftw }:
+{ lib, stdenv, fetchurl, unzip, puredata, fftw }:
 
 stdenv.mkDerivation rec {
   version = "0.7.0";
@@ -9,7 +9,8 @@ stdenv.mkDerivation rec {
     sha256 = "14k2xk5zrzrw1zprdbwx45hrlc7ck8vq4drpd3l455i5r8yk4y6b";
   };
 
-  buildInputs = [ unzip puredata fftw ];
+  nativeBuildInputs = [ unzip ];
+  buildInputs = [ puredata fftw ];
 
   unpackPhase = ''
     mkdir source
@@ -38,8 +39,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "A collection of audio feature analysis externals for puredata";
     homepage = "http://williambrent.conflations.com/pages/research.html";
-    license = stdenv.lib.licenses.gpl3;
-    maintainers = [ stdenv.lib.maintainers.magnetophon ];
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.gpl3;
+    maintainers = [ lib.maintainers.magnetophon ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/pd-plugins/zexy/default.nix b/pkgs/applications/audio/pd-plugins/zexy/default.nix
index 4f826908136..67c7cd18be8 100644
--- a/pkgs/applications/audio/pd-plugins/zexy/default.nix
+++ b/pkgs/applications/audio/pd-plugins/zexy/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, autoconf, automake, puredata }:
+{ lib, stdenv, fetchurl, autoconf, automake, puredata }:
 
 stdenv.mkDerivation rec {
   pname = "zexy";
@@ -29,8 +29,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "The swiss army knife for puredata";
     homepage = "http://puredata.info/downloads/zexy";
-    license = stdenv.lib.licenses.gpl2;
-    maintainers = [ stdenv.lib.maintainers.magnetophon ];
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.gpl2;
+    maintainers = [ lib.maintainers.magnetophon ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/petrifoo/default.nix b/pkgs/applications/audio/petrifoo/default.nix
index 322eba2b952..f76720aff90 100644
--- a/pkgs/applications/audio/petrifoo/default.nix
+++ b/pkgs/applications/audio/petrifoo/default.nix
@@ -1,6 +1,6 @@
-{ stdenv, fetchurl, alsaLib, cmake, gtk2, libjack2, libgnomecanvas
+{ lib, stdenv, fetchurl, alsa-lib, cmake, gtk2, libjack2, libgnomecanvas
 , libpthreadstubs, libsamplerate, libsndfile, libtool, libxml2
-, pkgconfig, openssl }:
+, pkg-config, openssl }:
 
 stdenv.mkDerivation  rec {
   pname = "petri-foo";
@@ -11,12 +11,12 @@ stdenv.mkDerivation  rec {
     sha256 = "0b25iicgn8c42487fdw32ycfrll1pm2zjgy5djvgw6mfcaa4gizh";
   };
 
-  buildInputs =
-   [ alsaLib cmake gtk2 libjack2 libgnomecanvas libpthreadstubs
-     libsamplerate libsndfile libtool libxml2 pkgconfig openssl
-   ];
+  nativeBuildInputs = [ cmake pkg-config ];
 
-  meta = with stdenv.lib; {
+  buildInputs = [ alsa-lib gtk2 libjack2 libgnomecanvas libpthreadstubs
+                  libsamplerate libsndfile libtool libxml2 openssl ];
+
+  meta = with lib; {
     description = "MIDI controllable audio sampler";
     longDescription = "a fork of Specimen";
     homepage = "http://petri-foo.sourceforge.net";
diff --git a/pkgs/applications/audio/pianobar/default.nix b/pkgs/applications/audio/pianobar/default.nix
index 4cdf415d26b..c5ef0352503 100644
--- a/pkgs/applications/audio/pianobar/default.nix
+++ b/pkgs/applications/audio/pianobar/default.nix
@@ -1,16 +1,17 @@
-{ fetchurl, stdenv, pkgconfig, libao, json_c, libgcrypt, ffmpeg_3, curl }:
+{ fetchurl, lib, stdenv, pkg-config, libao, json_c, libgcrypt, ffmpeg, curl }:
 
 stdenv.mkDerivation rec {
-  name = "pianobar-2020.04.05";
+  pname = "pianobar";
+  version = "2020.11.28";
 
   src = fetchurl {
-    url = "http://6xq.net/projects/pianobar/${name}.tar.bz2";
-    sha256 = "1034f9ilj9xjw12d6n4vadhl5jzrx0jv8gq1w0rg9hfc55mkn5vc";
+    url = "https://6xq.net/projects/pianobar/${pname}-${version}.tar.bz2";
+    sha256 = "1znlwybfpxsjqr1jmr8j0ci8wzmpzmk2yxb0qcx9w9a8nnbgnfv5";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [
-    libao json_c libgcrypt ffmpeg_3 curl
+    libao json_c libgcrypt ffmpeg curl
   ];
 
   makeFlags = [ "PREFIX=$(out)" ];
@@ -18,7 +19,7 @@ stdenv.mkDerivation rec {
   CC = "gcc";
   CFLAGS = "-std=c99";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A console front-end for Pandora.com";
     homepage = "https://6xq.net/pianobar/";
     platforms = platforms.unix;
diff --git a/pkgs/applications/audio/pianobooster/default.nix b/pkgs/applications/audio/pianobooster/default.nix
index 4832fce1e96..2c58ecc5dcb 100644
--- a/pkgs/applications/audio/pianobooster/default.nix
+++ b/pkgs/applications/audio/pianobooster/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchFromGitHub, cmake, pkg-config, qttools
-, alsaLib, ftgl, libGLU, libjack2, qtbase, rtmidi
+{ lib, stdenv, fetchFromGitHub, cmake, pkg-config, qttools
+, alsa-lib, ftgl, libGLU, libjack2, qtbase, rtmidi, wrapQtAppsHook
 }:
 
 stdenv.mkDerivation rec {
@@ -13,15 +13,15 @@ stdenv.mkDerivation rec {
     sha256 = "03xcdnlpsij22ca3i6xj19yqzn3q2ch0d32r73v0c96nm04gvhjj";
   };
 
-  nativeBuildInputs = [ cmake pkg-config qttools ];
+  nativeBuildInputs = [ cmake pkg-config qttools wrapQtAppsHook ];
 
-  buildInputs = [ alsaLib ftgl libGLU libjack2 qtbase rtmidi ];
+  buildInputs = [ alsa-lib ftgl libGLU libjack2 qtbase rtmidi ];
 
   cmakeFlags = [
     "-DOpenGL_GL_PREFERENCE=GLVND"
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A MIDI file player that teaches you how to play the piano";
     homepage = "https://github.com/captnfab/PianoBooster";
     license = licenses.gpl3Plus;
diff --git a/pkgs/applications/audio/pianoteq/default.nix b/pkgs/applications/audio/pianoteq/default.nix
new file mode 100644
index 00000000000..9c258f69f66
--- /dev/null
+++ b/pkgs/applications/audio/pianoteq/default.nix
@@ -0,0 +1,200 @@
+{ lib, stdenv, curl, gnugrep, jq, xorg, alsa-lib, freetype, p7zip, autoPatchelfHook, writeShellScript, zlib, libjack2, makeWrapper }:
+let
+  versionForFile = v: builtins.replaceStrings ["."] [""] v;
+
+  mkPianoteq = { name, src, version, archdir, ... }:
+    stdenv.mkDerivation rec {
+      inherit src version;
+
+      pname = "pianoteq-${name}";
+
+      unpackPhase = ''
+        ${p7zip}/bin/7z x $src
+      '';
+
+      nativeBuildInputs = [
+        autoPatchelfHook
+        makeWrapper
+      ];
+
+      buildInputs = [
+        stdenv.cc.cc.lib
+        xorg.libX11      # libX11.so.6
+        xorg.libXext     # libXext.so.6
+        alsa-lib          # libasound.so.2
+        freetype         # libfreetype.so.6
+      ];
+
+      installPhase = ''
+        mkdir -p $out/bin
+        mv -t $out/bin Pianoteq*/${archdir}/*
+        for f in $out/bin/Pianoteq*; do
+          if [ -x "$f" ] && [ -f "$f" ]; then
+            wrapProgram "$f" --prefix LD_LIBRARY_PATH : ${
+              lib.makeLibraryPath (buildInputs ++ [
+                xorg.libXcursor
+                xorg.libXinerama
+                xorg.libXrandr
+                libjack2
+                zlib
+              ])
+            }
+          fi
+        done
+      '';
+
+      meta = with lib; {
+        homepage = "https://www.modartt.com/pianoteq";
+        description = "Software synthesizer that features real-time MIDI-control of digital physically modeled pianos and related instruments";
+        license = licenses.unfree;
+        platforms = [ "x86_64-linux" ]; # TODO extract binary according to each platform?
+        maintainers = [ maintainers.mausch ];
+      };
+    };
+
+  fetchWithCurlScript = { name, sha256, script, impureEnvVars ? [] }:
+    stdenv.mkDerivation {
+      inherit name;
+      builder = writeShellScript "builder.sh" ''
+        source $stdenv/setup
+
+        curlVersion=$(${curl}/bin/curl -V | head -1 | cut -d' ' -f2)
+
+        # Curl flags to handle redirects, not use EPSV, handle cookies for
+        # servers to need them during redirects, and work on SSL without a
+        # certificate (this isn't a security problem because we check the
+        # cryptographic hash of the output anyway).
+        curl=(
+            ${curl}/bin/curl
+            --location
+            --max-redirs 20
+            --retry 3
+            --disable-epsv
+            --cookie-jar cookies
+            --insecure
+            --user-agent "curl/$curlVersion Nixpkgs/${lib.trivial.release}"
+            $NIX_CURL_FLAGS
+        )
+
+        ${script}
+
+      '';
+      nativeBuildInputs = [ curl ];
+      outputHashAlgo = "sha256";
+      outputHash = sha256;
+
+      impureEnvVars = lib.fetchers.proxyImpureEnvVars ++ impureEnvVars ++ [
+        # This variable allows the user to pass additional options to curl
+        "NIX_CURL_FLAGS"
+      ];
+    };
+
+  fetchPianoteqTrial = { name, sha256 }:
+    fetchWithCurlScript {
+      inherit name sha256;
+      script = ''
+          "''${curl[@]}" --silent --request POST \
+            --cookie cookies \
+            --header "modartt-json: request" \
+            --header "origin: https://www.modartt.com" \
+            --header "content-type: application/json; charset=UTF-8" \
+            --header "accept: application/json, text/javascript, */*" \
+            --data-raw '{"file": "${name}", "get": "url"}' \
+            https://www.modartt.com/json/download -o /dev/null
+          json=$(
+            "''${curl[@]}" --silent --request POST \
+            --cookie cookies \
+            --header "modartt-json: request" \
+            --header "origin: https://www.modartt.com" \
+            --header "content-type: application/json; charset=UTF-8" \
+            --header "accept: application/json, text/javascript, */*" \
+            --data-raw '{"file": "${name}", "get": "url"}' \
+            https://www.modartt.com/json/download
+          )
+          url=$(echo $json | ${jq}/bin/jq -r .url)
+          "''${curl[@]}" --progress-bar --cookie cookies -o $out "$url"
+      '';
+    };
+
+  fetchPianoteqWithLogin = { name, sha256 }:
+    fetchWithCurlScript {
+      inherit name sha256;
+
+      impureEnvVars = [ "NIX_MODARTT_USERNAME" "NIX_MODARTT_PASSWORD" ];
+
+      script = ''
+        if [ -z "''${NIX_MODARTT_USERNAME}" -o -z "''${NIX_MODARTT_PASSWORD}" ]; then
+          echo "Error: Downloading a personal Pianoteq instance requires the nix building process (nix-daemon in multi user mode) to have the NIX_MODARTT_USERNAME and NIX_MODARTT_PASSWORD env vars set." >&2
+          exit 1
+        fi
+
+        "''${curl[@]}" -s -o /dev/null "https://www.modartt.com/user_area"
+
+        ${jq}/bin/jq -n "{connect: 1, login: \"''${NIX_MODARTT_USERNAME}\", password: \"''${NIX_MODARTT_PASSWORD}\"}" > login.json
+
+        "''${curl[@]}" --silent --request POST \
+          --cookie cookies \
+          --referer "https://www.modartt.com/user_area" \
+          --header "modartt-json: request" \
+          --header "origin: https://www.modartt.com" \
+          --header "content-type: application/json; charset=UTF-8" \
+          --header "accept: application/json, text/javascript, */*" \
+          --data @login.json \
+          https://www.modartt.com/json/session
+
+        json=$(
+          "''${curl[@]}" --silent --request POST \
+          --cookie cookies \
+          --header "modartt-json: request" \
+          --header "origin: https://www.modartt.com" \
+          --header "content-type: application/json; charset=UTF-8" \
+          --header "accept: application/json, text/javascript, */*" \
+          --data-raw '{"file": "${name}", "get": "url"}' \
+          https://www.modartt.com/json/download
+        )
+        url=$(echo $json | ${jq}/bin/jq -r .url)
+
+        "''${curl[@]}" --progress-bar --cookie cookies -o $out "$url"
+      '';
+    };
+
+in {
+  # TODO currently can't install more than one because `lame` clashes
+  stage-trial = mkPianoteq rec {
+    name = "stage-trial";
+    version = "7.4.1";
+    archdir = "x86-64bit";
+    src = fetchPianoteqTrial {
+      name = "pianoteq_stage_linux_trial_v${versionForFile version}.7z";
+      sha256 = "14mbaz6i1rxqayrjjkck9yx8iijkm4q1qz29ymkd7sz2gpk7fcpa";
+    };
+  };
+  standard-trial = mkPianoteq rec {
+    name = "standard-trial";
+    version = "7.4.1";
+    archdir = "x86-64bit";
+    src = fetchPianoteqTrial {
+      name = "pianoteq_linux_trial_v${versionForFile version}.7z";
+      sha256 = "01xh4n0h7dd3xqhm0bx0a62mqmfvxvmr5cm5r2g249c9wqg5i32a";
+    };
+  };
+  stage-6 = mkPianoteq rec {
+    name = "stage-6";
+    version = "6.7.3";
+    archdir = "amd64";
+    src = fetchPianoteqWithLogin {
+      name = "pianoteq_stage_linux_v${versionForFile version}.7z";
+      sha256 = "0jy0hkdynhwv0zhrqkby0hdphgmcc09wxmy74rhg9afm1pzl91jy";
+    };
+  };
+  stage-7 = mkPianoteq rec {
+    name = "stage-7";
+    version = "7.3.0";
+    archdir = "x86-64bit";
+    src = fetchPianoteqWithLogin {
+      name = "pianoteq_stage_linux_v${versionForFile version}.7z";
+      sha256 = "05w7sv9v38r6ljz9xai816w5z2qqwx88hcfjm241fvgbs54125hx";
+    };
+  };
+  # TODO other paid binaries, I don't own that so I don't know their hash.
+}
diff --git a/pkgs/applications/audio/picard/default.nix b/pkgs/applications/audio/picard/default.nix
index 2aeae1f1890..dc030cc708b 100644
--- a/pkgs/applications/audio/picard/default.nix
+++ b/pkgs/applications/audio/picard/default.nix
@@ -1,4 +1,9 @@
-{ stdenv, python3Packages, fetchFromGitHub, gettext, chromaprint, qt5
+{ lib
+, python3Packages
+, fetchFromGitHub
+, gettext
+, chromaprint
+, qt5
 , enablePlayback ? true
 , gst_all_1
 }:
@@ -10,55 +15,52 @@ let
   else
     pythonPackages.pyqt5
   ;
-in pythonPackages.buildPythonApplication rec {
+in
+pythonPackages.buildPythonApplication rec {
   pname = "picard";
-  version = "2.4.2";
+  version = "2.6.3";
 
   src = fetchFromGitHub {
     owner = "metabrainz";
     repo = pname;
     rev = "release-${version}";
-    sha256 = "0sbccsisk9w0gnblvhg7wk1c5ydppldjbvaa0zhl3yrid5a363ah";
+    sha256 = "sha256-bSqGgRXqHGjT+OYCEafsT/btVe+n91+L0kB8fnrywss=";
   };
 
   nativeBuildInputs = [ gettext qt5.wrapQtAppsHook qt5.qtbase ]
-    ++ stdenv.lib.optionals (pyqt5.multimediaEnabled) [
-      qt5.qtmultimedia.bin
-      gst_all_1.gstreamer
-      gst_all_1.gst-vaapi
-      gst_all_1.gst-libav
-      gst_all_1.gst-plugins-base
-      gst_all_1.gst-plugins-good
-    ]
+  ++ lib.optionals (pyqt5.multimediaEnabled) [
+    qt5.qtmultimedia.bin
+    gst_all_1.gst-libav
+    gst_all_1.gst-plugins-base
+    gst_all_1.gst-plugins-good
+    gst_all_1.gst-vaapi
+    gst_all_1.gstreamer
+  ]
   ;
 
   propagatedBuildInputs = with pythonPackages; [
-    pyqt5
-    mutagen
     chromaprint
+    python-dateutil
     discid
-    dateutil
+    fasteners
+    mutagen
+    pyqt5
   ];
 
-  prePatch = ''
-    # Pesky unicode punctuation.
-    substituteInPlace setup.cfg --replace "‘" "'"
-  '';
-
   # In order to spare double wrapping, we use:
   preFixup = ''
     makeWrapperArgs+=("''${qtWrapperArgs[@]}")
   ''
-    + stdenv.lib.optionalString (pyqt5.multimediaEnabled) ''
-      makeWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0")
-    ''
+  + lib.optionalString (pyqt5.multimediaEnabled) ''
+    makeWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0")
+  ''
   ;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://picard.musicbrainz.org/";
     description = "The official MusicBrainz tagger";
     maintainers = with maintainers; [ ehmry ];
-    license = licenses.gpl2;
+    license = licenses.gpl2Plus;
     platforms = platforms.all;
   };
 }
diff --git a/pkgs/applications/audio/picoloop/default.nix b/pkgs/applications/audio/picoloop/default.nix
new file mode 100644
index 00000000000..bd956963a46
--- /dev/null
+++ b/pkgs/applications/audio/picoloop/default.nix
@@ -0,0 +1,50 @@
+{ lib, stdenv, fetchFromGitHub, libpulseaudio, SDL2, SDL2_image, SDL2_ttf, alsa-lib, libjack2 }:
+
+stdenv.mkDerivation rec {
+  pname = "picoloop";
+  version = "0.77e";
+
+  src = fetchFromGitHub {
+    repo = pname;
+    owner = "yoyz";
+    rev = "${pname}-${version}";
+    sha256 = "0i8j8rgyha3ara6d4iis3wcimszf2csxdwrm5yq0wyhg74g7cvjd";
+  };
+
+  buildInputs = [
+    libpulseaudio
+    SDL2
+    SDL2.dev
+    SDL2_image
+    SDL2_ttf
+    alsa-lib
+    libjack2
+  ];
+
+  sourceRoot = "source/picoloop";
+
+  makeFlags = [ "-f Makefile.PatternPlayer_debian_RtAudio_sdl20" ];
+
+  NIX_CFLAGS_COMPILE = [ "-I${SDL2.dev}/include/SDL2" ];
+
+  hardeningDisable = [ "format" ];
+
+  patchPhase = ''
+    substituteInPlace SDL_GUI.cpp \
+    --replace "\"font.ttf\"" "\"$out/share/font.ttf\"" \
+    --replace "\"font.bmp\"" "\"$out/share/font.bmp\""
+  '';
+
+  installPhase = ''
+    mkdir -p $out/{bin,share}
+    cp PatternPlayer_debian_RtAudio_sdl20 $out/bin/picoloop
+    cp {font.*,LICENSE} $out/share
+  '';
+
+  meta = with lib; {
+    description = "A synth and a stepsequencer (a clone of the famous nanoloop)";
+    homepage = "https://github.com/yoyz/picoloop";
+    platforms = platforms.linux;
+    license = licenses.bsd3;
+  };
+}
diff --git a/pkgs/applications/audio/pifi/Gemfile b/pkgs/applications/audio/pifi/Gemfile
new file mode 100644
index 00000000000..da7d26e3760
--- /dev/null
+++ b/pkgs/applications/audio/pifi/Gemfile
@@ -0,0 +1,2 @@
+source 'https://rubygems.org'
+gem 'pifi'
diff --git a/pkgs/applications/audio/pifi/Gemfile.lock b/pkgs/applications/audio/pifi/Gemfile.lock
new file mode 100644
index 00000000000..ddcdb537e6a
--- /dev/null
+++ b/pkgs/applications/audio/pifi/Gemfile.lock
@@ -0,0 +1,39 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    daemons (1.3.1)
+    eventmachine (1.2.7)
+    json (2.5.1)
+    mustermann (1.1.1)
+      ruby2_keywords (~> 0.0.1)
+    optimist (3.0.1)
+    pifi (0.4.11)
+      json (~> 2.2)
+      optimist (~> 3.0)
+      ruby-mpd (~> 0.3)
+      sinatra (~> 2.0)
+      thin (~> 1.7)
+    rack (2.2.3)
+    rack-protection (2.1.0)
+      rack
+    ruby-mpd (0.3.3)
+    ruby2_keywords (0.0.4)
+    sinatra (2.1.0)
+      mustermann (~> 1.0)
+      rack (~> 2.2)
+      rack-protection (= 2.1.0)
+      tilt (~> 2.0)
+    thin (1.8.0)
+      daemons (~> 1.0, >= 1.0.9)
+      eventmachine (~> 1.0, >= 1.0.4)
+      rack (>= 1, < 3)
+    tilt (2.0.10)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  pifi
+
+BUNDLED WITH
+   2.1.4
diff --git a/pkgs/applications/audio/pifi/default.nix b/pkgs/applications/audio/pifi/default.nix
new file mode 100644
index 00000000000..856807608d7
--- /dev/null
+++ b/pkgs/applications/audio/pifi/default.nix
@@ -0,0 +1,18 @@
+{ lib, bundlerEnv, ruby }:
+
+bundlerEnv rec {
+  pname = "pifi";
+
+  version = (import ./gemset.nix).pifi.version;
+  inherit ruby;
+  # expects Gemfile, Gemfile.lock and gemset.nix in the same directory
+  gemdir = ./.;
+
+  meta = with lib; {
+    description = "MPD web client to listen to radio, written in React and Sinatra";
+    homepage = "https://github.com/rccavalcanti/pifi-radio";
+    license = with licenses; gpl3Only;
+    maintainers = with maintainers; [ kmein ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/applications/audio/pifi/gemset.nix b/pkgs/applications/audio/pifi/gemset.nix
new file mode 100644
index 00000000000..77dd8c55289
--- /dev/null
+++ b/pkgs/applications/audio/pifi/gemset.nix
@@ -0,0 +1,137 @@
+{
+  daemons = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0l5gai3vd4g7aqff0k1mp41j9zcsvm2rbwmqn115a325k9r7pf4w";
+      type = "gem";
+    };
+    version = "1.3.1";
+  };
+  eventmachine = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r";
+      type = "gem";
+    };
+    version = "1.2.7";
+  };
+  json = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0lrirj0gw420kw71bjjlqkqhqbrplla61gbv1jzgsz6bv90qr3ci";
+      type = "gem";
+    };
+    version = "2.5.1";
+  };
+  mustermann = {
+    dependencies = ["ruby2_keywords"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ccm54qgshr1lq3pr1dfh7gphkilc19dp63rw6fcx7460pjwy88a";
+      type = "gem";
+    };
+    version = "1.1.1";
+  };
+  optimist = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1vg2chy1cfmdj6c1gryl8zvjhhmb3plwgyh1jfnpq4fnfqv7asrk";
+      type = "gem";
+    };
+    version = "3.0.1";
+  };
+  pifi = {
+    dependencies = ["json" "optimist" "ruby-mpd" "sinatra" "thin"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xwjaql852m0p7himc3pak1ibc8lfxi29bbgic153wp713xc2cga";
+      type = "gem";
+    };
+    version = "0.4.11";
+  };
+  rack = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0i5vs0dph9i5jn8dfc6aqd6njcafmb20rwqngrf759c9cvmyff16";
+      type = "gem";
+    };
+    version = "2.2.3";
+  };
+  rack-protection = {
+    dependencies = ["rack"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "159a4j4kragqh0z0z8vrpilpmaisnlz3n7kgiyf16bxkwlb3qlhz";
+      type = "gem";
+    };
+    version = "2.1.0";
+  };
+  ruby-mpd = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0l80gbnma009pfcqgz4azbngkr5jn9nm46fflx5p7c4vz4kwshpc";
+      type = "gem";
+    };
+    version = "0.3.3";
+  };
+  ruby2_keywords = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15wfcqxyfgka05v2a7kpg64x57gl1y4xzvnc9lh60bqx5sf1iqrs";
+      type = "gem";
+    };
+    version = "0.0.4";
+  };
+  sinatra = {
+    dependencies = ["mustermann" "rack" "rack-protection" "tilt"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0dd53rzpkxgs697pycbhhgc9vcnxra4ly4xar8ni6aiydx2f88zk";
+      type = "gem";
+    };
+    version = "2.1.0";
+  };
+  thin = {
+    dependencies = ["daemons" "eventmachine" "rack"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0g5p3r47qxxfmfagdf8wb68pd24938cgzdfn6pmpysrn296pg5m5";
+      type = "gem";
+    };
+    version = "1.8.0";
+  };
+  tilt = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0rn8z8hda4h41a64l0zhkiwz2vxw9b1nb70gl37h1dg2k874yrlv";
+      type = "gem";
+    };
+    version = "2.0.10";
+  };
+}
diff --git a/pkgs/applications/audio/pithos/default.nix b/pkgs/applications/audio/pithos/default.nix
index 6c3ffebc8c9..01c969c3d8e 100644
--- a/pkgs/applications/audio/pithos/default.nix
+++ b/pkgs/applications/audio/pithos/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchFromGitHub, meson, ninja, pkgconfig, appstream-glib
-, wrapGAppsHook, pythonPackages, gtk3, gnome3, gobject-introspection
+{ lib, fetchFromGitHub, meson, ninja, pkg-config, appstream-glib
+, wrapGAppsHook, pythonPackages, gtk3, gnome, gobject-introspection
 , libnotify, libsecret, gst_all_1 }:
 
 pythonPackages.buildPythonApplication rec {
@@ -20,14 +20,14 @@ pythonPackages.buildPythonApplication rec {
     patchShebangs meson_post_install.py
   '';
 
-  nativeBuildInputs = [ meson ninja pkgconfig appstream-glib wrapGAppsHook ];
+  nativeBuildInputs = [ meson ninja pkg-config appstream-glib wrapGAppsHook ];
 
   propagatedBuildInputs =
-    [ gtk3 gobject-introspection libnotify libsecret gnome3.adwaita-icon-theme ] ++
+    [ gtk3 gobject-introspection libnotify libsecret gnome.adwaita-icon-theme ] ++
     (with gst_all_1; [ gstreamer gst-plugins-base gst-plugins-good gst-plugins-ugly gst-plugins-bad ]) ++
     (with pythonPackages; [ pygobject3 pylast ]);
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Pandora Internet Radio player for GNOME";
     homepage = "https://pithos.github.io/";
     license = licenses.gpl3;
diff --git a/pkgs/applications/audio/playbar2/default.nix b/pkgs/applications/audio/playbar2/default.nix
index 15385e91927..dfbfb43e625 100644
--- a/pkgs/applications/audio/playbar2/default.nix
+++ b/pkgs/applications/audio/playbar2/default.nix
@@ -1,4 +1,4 @@
-{ stdenv
+{ lib, stdenv
 , cmake
 , extra-cmake-modules
 , plasma-framework
@@ -27,7 +27,9 @@ stdenv.mkDerivation rec {
     kwindowsystem
   ];
 
-  meta = with stdenv.lib; {
+  dontWrapQtApps = true;
+
+  meta = with lib; {
     description = "Mpris2 Client for Plasma5";
     homepage = "https://github.com/audoban/PlayBar2";
     license = licenses.gpl3;
diff --git a/pkgs/applications/audio/plexamp/default.nix b/pkgs/applications/audio/plexamp/default.nix
index caa703f59ce..9921c1b7e88 100644
--- a/pkgs/applications/audio/plexamp/default.nix
+++ b/pkgs/applications/audio/plexamp/default.nix
@@ -2,13 +2,13 @@
 
 let
   pname = "plexamp";
-  version = "3.1.1";
+  version = "3.5.0";
   name = "${pname}-${version}";
 
   src = fetchurl {
     url = "https://plexamp.plex.tv/plexamp.plex.tv/desktop/Plexamp-${version}.AppImage";
-    sha256 = "11hgcysa1x9yqvha6ri4vl1zk8gf8vhcpnh3j38wg9ncd7nz5k2v";
     name="${pname}-${version}.AppImage";
+    sha512 = "NjhrtGQsIbNDmGPEDmEbaHSfvUTFb1e7yPorF/BzWTfwVoFZEJiNzP/1k+zTJ4Yfd4mG0W0GYx0jh8m/micWIg==";
   };
 
   appimageContents = appimageTools.extractType2 {
@@ -25,15 +25,18 @@ in appimageTools.wrapType2 {
     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
-    substituteInPlace $out/share/applications/plexamp.desktop \
+    substituteInPlace $out/share/applications/${pname}.desktop \
       --replace 'Exec=AppRun' 'Exec=${pname}'
   '';
 
+  passthru.updateScript = ./update-plexamp.sh;
+
   meta = with lib; {
-    description = "A beautiful Plex music player for audiophiles, curators, and hipsters.";
+    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/30";
     license = licenses.unfree;
-    maintainers = with maintainers; [ killercup ];
+    maintainers = with maintainers; [ killercup synthetica ];
     platforms = [ "x86_64-linux" ];
   };
 }
diff --git a/pkgs/applications/audio/plexamp/update-plexamp.sh b/pkgs/applications/audio/plexamp/update-plexamp.sh
new file mode 100755
index 00000000000..b6b8def1e31
--- /dev/null
+++ b/pkgs/applications/audio/plexamp/update-plexamp.sh
@@ -0,0 +1,54 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -p yq bash curl bc ripgrep
+#! nix-shell -i bash
+
+set -Eeuxo pipefail
+
+cleanup() {
+    rm -rf "$TMPDIR"
+}
+
+trap cleanup EXIT
+
+ROOT="$(dirname "$(readlink -f "$0")")"
+if [ ! -f "$ROOT/default.nix" ]; then
+  echo "ERROR: cannot find default.nix in $ROOT"
+  exit 1
+fi
+
+if [ "$(basename "$ROOT")" != plexamp ]; then
+  echo "ERROR: folder not named plexamp"
+  exit 1
+fi
+
+TMPDIR="$(mktemp -d)"
+
+VERSION_FILE="$TMPDIR/version.yml"
+VERSION_URL="https://plexamp.plex.tv/plexamp.plex.tv/desktop/latest-linux.yml"
+curl "$VERSION_URL" -o "$VERSION_FILE"
+
+VERSION="$(yq -r .version "$VERSION_FILE")"
+SHA512="$(yq -r .sha512 "$VERSION_FILE")"
+
+DEFAULT_NIX="$ROOT/default.nix"
+WORKING_NIX="$TMPDIR/default.nix"
+cp "$DEFAULT_NIX" "$WORKING_NIX"
+
+sed -i "s@version = .*;@version = \"$VERSION\";@g" "$WORKING_NIX"
+
+if diff "$DEFAULT_NIX" "$WORKING_NIX"; then
+  echo "WARNING: no changes"
+  exit 0
+fi
+
+# update sha hash (convenietly provided)
+sed -i "s@sha.* = .*;@sha512 = \"$SHA512\";@g" "$WORKING_NIX"
+
+# update the changelog ("just" increment the number)
+CHANGELOG_URL=$(rg --only-matching 'changelog = "(.+)";' --replace '$1' $WORKING_NIX)
+CHANGELOG_NUMBER=$(rg --only-matching '.*/([0-9]+)' --replace '$1' <<< $CHANGELOG_URL)
+NEXT_CHANGELOG=$(($CHANGELOG_NUMBER + 1))
+NEXT_URL=$(rg --only-matching '(.*)/[0-9]+' --replace "\$1/$NEXT_CHANGELOG" <<< $CHANGELOG_URL)
+sed -i "s@changelog = \".*\";@changelog = \"$NEXT_URL\";@" $WORKING_NIX
+
+mv $WORKING_NIX $DEFAULT_NIX
diff --git a/pkgs/applications/audio/plugin-torture/default.nix b/pkgs/applications/audio/plugin-torture/default.nix
index 3c852cf450e..e209d98ec71 100644
--- a/pkgs/applications/audio/plugin-torture/default.nix
+++ b/pkgs/applications/audio/plugin-torture/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, boost, ladspaH, lilv, lv2, pkgconfig, serd, sord, sratom }:
+{ lib, stdenv, fetchFromGitHub, boost, ladspaH, lilv, lv2, pkg-config, serd, sord, sratom }:
 
 stdenv.mkDerivation {
   pname = "plugin-torture";
@@ -11,7 +11,7 @@ stdenv.mkDerivation {
     sha256 = "1xyhvhm85d9z0kw716cjllrrzksn4s4bw34layg8hf4m5m31sp2p";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ boost ladspaH lilv lv2 serd sord sratom ];
 
   installPhase = ''
@@ -20,7 +20,7 @@ stdenv.mkDerivation {
     cp find-safe-plugins $out/bin/
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/cth103/plugin-torture";
     description = "A tool to test LADSPA and LV2 plugins";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/plujain-ramp/default.nix b/pkgs/applications/audio/plujain-ramp/default.nix
new file mode 100644
index 00000000000..56f4d6da050
--- /dev/null
+++ b/pkgs/applications/audio/plujain-ramp/default.nix
@@ -0,0 +1,27 @@
+{ lib, stdenv, fetchFromGitHub, lv2  }:
+
+stdenv.mkDerivation rec {
+  version = "v1.1.3";
+  pname = "plujain-ramp";
+
+  src = fetchFromGitHub {
+    owner = "Houston4444";
+    repo = "plujain-ramp";
+    rev = "1bc1fed211e140c7330d6035122234afe78e5257";
+    sha256 = "1k7qpr8c15d623c4zqxwdklp98amildh03cqsnqq5ia9ba8z3016";
+  };
+
+  buildInputs = [
+    lv2
+  ];
+
+  installFlags = [ "INSTALL_PATH=$(out)/lib/lv2" ];
+
+  meta = with lib; {
+    description = "A mono rhythmic tremolo LV2 Audio Plugin";
+    homepage = "https://github.com/Houston4444/plujain-ramp";
+    license = licenses.gpl2Only;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.hirenashah ];
+  };
+}
diff --git a/pkgs/applications/audio/pmidi/default.nix b/pkgs/applications/audio/pmidi/default.nix
index 0da86ca9bd1..43f38ff84ed 100644
--- a/pkgs/applications/audio/pmidi/default.nix
+++ b/pkgs/applications/audio/pmidi/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, alsaLib
+{ lib, stdenv, fetchurl, alsa-lib
 , version ? "1.7.1"
 , sourceSha256 ? "051mv6f13c8y13c1iv3279k1hhzpz4fm9sfczhgp9sim2bjdj055"
 }:
@@ -11,10 +11,10 @@ stdenv.mkDerivation {
     sha256 = sourceSha256;
   };
 
-  buildInputs = [ alsaLib ];
+  buildInputs = [ alsa-lib ];
 
-  meta = with stdenv.lib; {
-    homepage = "http://www.parabola.me.uk/alsa/pmidi.html";
+  meta = with lib; {
+    homepage = "https://www.parabola.me.uk/alsa/pmidi.html";
     description = "A straightforward command line program to play midi files through the ALSA sequencer";
     maintainers = with maintainers; [ lheckemann ];
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/polyphone/default.nix b/pkgs/applications/audio/polyphone/default.nix
index 270d51840d7..4656db7257e 100644
--- a/pkgs/applications/audio/polyphone/default.nix
+++ b/pkgs/applications/audio/polyphone/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, mkDerivation, fetchFromGitHub, qmake, pkgconfig, alsaLib, libjack2, portaudio, libogg, flac, libvorbis, rtmidi, qtsvg }:
+{ lib, mkDerivation, fetchFromGitHub, qmake, pkg-config, alsa-lib, libjack2, portaudio, libogg, flac, libvorbis, rtmidi, qtsvg }:
 
 mkDerivation rec {
   version = "2.2.0";
@@ -12,7 +12,7 @@ mkDerivation rec {
   };
 
   buildInputs = [
-    alsaLib
+    alsa-lib
     libjack2
     portaudio
     libogg
@@ -22,7 +22,7 @@ mkDerivation rec {
     qtsvg
   ];
 
-  nativeBuildInputs = [ qmake pkgconfig ];
+  nativeBuildInputs = [ qmake pkg-config ];
 
   preConfigure = ''
     cd ./sources/
@@ -39,7 +39,7 @@ mkDerivation rec {
     "INCLUDEPATH+=${libjack2}/include/jack"
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A soundfont editor for creating musical instruments";
     homepage = "https://www.polyphone-soundfonts.com/";
     license = licenses.gpl3;
diff --git a/pkgs/applications/audio/ponymix/default.nix b/pkgs/applications/audio/ponymix/default.nix
index 6c289a97384..70e7217dff7 100644
--- a/pkgs/applications/audio/ponymix/default.nix
+++ b/pkgs/applications/audio/ponymix/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, libpulseaudio, libnotify, pkgconfig }:
+{ lib, stdenv, fetchFromGitHub, libpulseaudio, libnotify, pkg-config }:
 
 stdenv.mkDerivation rec {
   pname = "ponymix";
@@ -12,11 +12,11 @@ stdenv.mkDerivation rec {
   };
 
   buildInputs = [ libpulseaudio libnotify ];
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
 
   postPatch = ''substituteInPlace Makefile --replace "\$(DESTDIR)/usr" "$out"'';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "CLI PulseAudio Volume Control";
     homepage = "https://github.com/falconindy/ponymix";
     license = licenses.mit;
diff --git a/pkgs/applications/audio/praat/default.nix b/pkgs/applications/audio/praat/default.nix
index 2fb8e30a64d..66a14fa05b2 100644
--- a/pkgs/applications/audio/praat/default.nix
+++ b/pkgs/applications/audio/praat/default.nix
@@ -1,30 +1,34 @@
-{ stdenv, fetchurl, alsaLib, gtk2, pkgconfig }:
+{ lib, stdenv, fetchFromGitHub, pkg-config, wrapGAppsHook, alsa-lib, gtk3, libpulseaudio }:
 
 stdenv.mkDerivation rec {
   pname = "praat";
-  version = "6.0.43";
+  version = "6.1.50";
 
-  src = fetchurl {
-    url = "https://github.com/praat/praat/archive/v${version}.tar.gz";
-    sha256 = "1l13bvnl7sv8v6s5z63201bhzavnj6bnqcj446akippsam13z4sf";
+  src = fetchFromGitHub {
+    owner = "praat";
+    repo = "praat";
+    rev = "v${version}";
+    sha256 = "11cw4292pml71hdnfy8y91blwyh45dyam1ywr09355zk44c5njpq";
   };
 
   configurePhase = ''
-    cp makefiles/makefile.defs.linux.alsa makefile.defs
+    cp makefiles/makefile.defs.linux.pulse makefile.defs
   '';
 
   installPhase = ''
-    mkdir -p $out/bin
-    cp praat $out/bin
+    install -Dt $out/bin praat
   '';
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ alsaLib gtk2 ];
+  nativeBuildInputs = [ pkg-config wrapGAppsHook ];
+  buildInputs = [ alsa-lib gtk3 libpulseaudio ];
 
-  meta = {
+  enableParallelBuilding = true;
+
+  meta = with lib; {
     description = "Doing phonetics by computer";
-    homepage = "http://www.fon.hum.uva.nl/praat/";
-    license = stdenv.lib.licenses.gpl2Plus; # Has some 3rd-party code in it though
-    platforms = stdenv.lib.platforms.linux;
+    homepage = "https://www.fon.hum.uva.nl/praat/";
+    license = licenses.gpl2Plus; # Has some 3rd-party code in it though
+    maintainers = with maintainers; [ orivej ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/pragha/default.nix b/pkgs/applications/audio/pragha/default.nix
new file mode 100644
index 00000000000..da5a64f708e
--- /dev/null
+++ b/pkgs/applications/audio/pragha/default.nix
@@ -0,0 +1,103 @@
+{ lib
+, intltool
+, mkDerivation
+, installShellFiles
+, pkg-config
+, fetchFromGitHub
+, dbus-glib
+, desktop-file-utils
+, hicolor-icon-theme
+, pcre
+, qtbase
+, sqlite
+, taglib
+, zlib
+, gtk3
+, libpeas
+, libcddb
+, libcdio
+, gst_all_1, withGstPlugins ? true
+, glyr, withGlyr ? true
+, liblastfmSF, withLastfm ? true
+, libcdio-paranoia, withCD ? true
+, keybinder3, withKeybinder ? false
+, libnotify, withLibnotify ? false
+, libsoup, withLibsoup ? false
+, libgudev, withGudev ? false # experimental
+, libmtp, withMtp ? false # experimental
+, xfce, withXfce4ui ? false
+, totem-pl-parser, withTotemPlParser ? false
+# , grilo, withGrilo ? false
+# , rygel, withRygel ? true
+}:
+
+assert withGlyr -> withLastfm;
+assert withLastfm -> withCD;
+
+mkDerivation rec {
+  pname = "pragha";
+  version = "1.3.99.1";
+
+  src = fetchFromGitHub {
+    owner = "pragha-music-player";
+    repo = "pragha";
+    rev = "v${version}";
+    sha256 = "sha256-C4zh2NHqP4bwKMi5s+3AfEtKqxRlzL66H8OyNonGzxE=";
+  };
+
+  nativeBuildInputs = [
+    intltool
+    pkg-config
+    xfce.xfce4-dev-tools
+    desktop-file-utils
+    installShellFiles
+  ];
+
+  buildInputs = with gst_all_1; [
+    dbus-glib
+    gstreamer
+    gst-plugins-base
+    gtk3
+    hicolor-icon-theme
+    libpeas
+    pcre
+    qtbase
+    sqlite
+    taglib
+    zlib
+  ]
+  ++ lib.optionals withGstPlugins [ gst-plugins-good gst-plugins-bad gst-plugins-ugly ]
+  ++ lib.optionals withCD [ libcddb libcdio libcdio-paranoia ]
+  ++ lib.optional withGudev libgudev
+  ++ lib.optional withKeybinder keybinder3
+  ++ lib.optional withLibnotify libnotify
+  ++ lib.optional withLastfm liblastfmSF
+  ++ lib.optional withGlyr glyr
+  ++ lib.optional withLibsoup libsoup
+  ++ lib.optional withMtp libmtp
+  ++ lib.optional withXfce4ui xfce.libxfce4ui
+  ++ lib.optional withTotemPlParser totem-pl-parser
+  # ++ lib.optional withGrilo grilo
+  # ++ lib.optional withRygel rygel
+  ;
+
+  CFLAGS = [ "-DHAVE_PARANOIA_NEW_INCLUDES" ];
+
+  NIX_CFLAGS_COMPILE = "-I${lib.getDev gst_all_1.gst-plugins-base}/include/gstreamer-1.0";
+
+  postInstall = ''
+    qtWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0")
+
+    install -m 444 data/${pname}.desktop $out/share/applications
+    install -d $out/share/pixmaps
+    installManPage data/${pname}.1
+  '';
+
+  meta = with lib; {
+    description = "A lightweight GTK+ music manager - fork of Consonance Music Manager";
+    homepage = "https://pragha-music-player.github.io/";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ mbaeten ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/applications/audio/projectm/default.nix b/pkgs/applications/audio/projectm/default.nix
index 83952c271be..6ca8d55bb24 100644
--- a/pkgs/applications/audio/projectm/default.nix
+++ b/pkgs/applications/audio/projectm/default.nix
@@ -1,8 +1,9 @@
-{ mkDerivation
+{ stdenv
+, mkDerivation
 , lib
 , fetchFromGitHub
 , autoreconfHook
-, pkgconfig
+, pkg-config
 , SDL2
 , qtdeclarative
 , libpulseaudio
@@ -12,17 +13,17 @@
 
 mkDerivation rec {
   pname = "projectm";
-  version = "3.1.7";
+  version = "3.1.12";
 
   src = fetchFromGitHub {
     owner = "projectM-visualizer";
     repo = "projectM";
     rev = "v${version}";
-    sha256 = "1wm5fym6c1yb972pmil7j9axinqqwrj68cwd2sc7ky8c5z2fsdna";
+    sha256 = "sha256-oEfOx93JyR94II5NkUCvMwqxuV7ktpOHZ8PNMLCiqDw=";
   };
 
   nativeBuildInputs = [
-    pkgconfig
+    pkg-config
     autoreconfHook
     which
   ];
@@ -39,12 +40,13 @@ mkDerivation rec {
     "--enable-sdl"
   ];
 
-  fixupPhase = ''
+  fixupPhase = lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
     # NOTE: 2019-10-05: Upstream inserts the src path buring build into ELF rpath, so must delete it out
     # upstream report: https://github.com/projectM-visualizer/projectm/issues/245
     for entry in $out/bin/* ; do
       patchelf --set-rpath "$(patchelf --print-rpath $entry | tr ':' '\n' | grep -v 'src/libprojectM' | tr '\n' ':')" "$entry"
     done
+  '' + ''
     wrapQtApp $out/bin/projectM-pulseaudio
     rm $out/bin/projectM-unittest
   '';
@@ -54,7 +56,7 @@ mkDerivation rec {
     description = "Cross-platform Milkdrop-compatible music visualizer";
     license = lib.licenses.lgpl21;
     platforms = lib.platforms.unix;
-    maintainers = with lib.maintainers; [ ajs124 ];
+    maintainers = with lib.maintainers; [ ];
     longDescription = ''
       The open-source project that reimplements the esteemed Winamp Milkdrop by Geiss in a more modern, cross-platform reusable library.
       Read an audio input and produces mesmerizing visuals, detecting tempo, and rendering advanced equations into a limitless array of user-contributed visualizations.
diff --git a/pkgs/applications/audio/pt2-clone/default.nix b/pkgs/applications/audio/pt2-clone/default.nix
index b76be35da29..9092ae0b91f 100644
--- a/pkgs/applications/audio/pt2-clone/default.nix
+++ b/pkgs/applications/audio/pt2-clone/default.nix
@@ -1,35 +1,37 @@
-{ stdenv
+{ lib, stdenv
 , fetchFromGitHub
 , cmake
 , nixosTests
-, alsaLib
+, alsa-lib
 , SDL2
 }:
 
 stdenv.mkDerivation rec {
   pname = "pt2-clone";
-  version = "1.22";
+  version = "1.31";
 
   src = fetchFromGitHub {
     owner = "8bitbubsy";
     repo = "pt2-clone";
     rev = "v${version}";
-    sha256 = "1w6lbq4366bawy975glvjizk57zhvl562xhxwzn7p5hpm2bvw09b";
+    sha256 = "sha256-hIm9HWKBTFmxU9jI41PfScZIHpZOZpjvV2jgaMX/KSg=";
   };
 
   nativeBuildInputs = [ cmake ];
-  buildInputs = [ SDL2 ] ++ stdenv.lib.optional stdenv.isLinux alsaLib;
+  buildInputs = [ SDL2 ] ++ lib.optional stdenv.isLinux alsa-lib;
 
   passthru.tests = {
     pt2-clone-opens = nixosTests.pt2-clone;
   };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A highly accurate clone of the classic ProTracker 2.3D software for Amiga";
     homepage = "https://16-bits.org/pt2.php";
     license = licenses.bsd3;
     maintainers = with maintainers; [ fgaz ];
-    platforms = platforms.all;
+    # From HOW-TO-COMPILE.txt:
+    # > This code is NOT big-endian compatible
+    platforms = platforms.littleEndian;
   };
 }
 
diff --git a/pkgs/applications/audio/ptcollab/default.nix b/pkgs/applications/audio/ptcollab/default.nix
new file mode 100644
index 00000000000..c5b9f2b804e
--- /dev/null
+++ b/pkgs/applications/audio/ptcollab/default.nix
@@ -0,0 +1,44 @@
+{ mkDerivation
+, lib
+, stdenv
+, fetchFromGitHub
+, nix-update-script
+, qmake
+, pkg-config
+, qtbase
+, qtmultimedia
+, libvorbis
+, rtmidi
+}:
+
+mkDerivation rec {
+  pname = "ptcollab";
+  version = "0.4.1";
+
+  src = fetchFromGitHub {
+    owner = "yuxshao";
+    repo = "ptcollab";
+    rev = "v${version}";
+    sha256 = "sha256-98v9it9M5FXCsOpWvO10uKYmEH15v1FEH1hH73XHa7w=";
+  };
+
+  nativeBuildInputs = [ qmake pkg-config ];
+
+  buildInputs = [ qtbase qtmultimedia libvorbis rtmidi ];
+
+  passthru = {
+    updateScript = nix-update-script {
+      attrPath = pname;
+    };
+  };
+
+  meta = with lib; {
+    description = "Experimental pxtone editor where you can collaborate with friends";
+    homepage = "https://yuxshao.github.io/ptcollab/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ OPNA2608 ];
+    platforms = platforms.all;
+    # Requires Qt5.15
+    broken = stdenv.hostPlatform.isDarwin;
+  };
+}
diff --git a/pkgs/applications/audio/puddletag/default.nix b/pkgs/applications/audio/puddletag/default.nix
index a0813fa0c80..efa1d943610 100644
--- a/pkgs/applications/audio/puddletag/default.nix
+++ b/pkgs/applications/audio/puddletag/default.nix
@@ -1,37 +1,40 @@
-{ stdenv, fetchFromGitHub, python2Packages, chromaprint }:
+{ lib, fetchFromGitHub, python3Packages, wrapQtAppsHook, chromaprint }:
 
-python2Packages.buildPythonApplication rec {
+python3Packages.buildPythonApplication rec {
   pname = "puddletag";
-  version = "1.2.0";
+  version = "2.0.1";
 
   src = fetchFromGitHub {
-    owner  = "keithgg";
-    repo   = "puddletag";
-    rev    = "v${version}";
-    sha256 = "1g6wa91awy17z5b704yi9kfynnvfm9lkrvpfvwccscr1h8s3qmiz";
+    owner = "keithgg";
+    repo = "puddletag";
+    rev = version;
+    sha256 = "sha256-9l8Pc77MX5zFkOqU00HFS8//3Bzd2OMnVV1brmWsNAQ=";
   };
 
-  setSourceRoot = ''
-    sourceRoot=$(echo */source)
-  '';
+  sourceRoot = "source/source";
 
-  disabled = python2Packages.isPy3k; # work to support python 3 has not begun
+  nativeBuildInputs = [ wrapQtAppsHook ];
 
-  propagatedBuildInputs = [ chromaprint ] ++ (with python2Packages; [
+  propagatedBuildInputs = [ chromaprint ] ++ (with python3Packages; [
     configobj
     mutagen
     pyparsing
-    pyqt4
+    pyqt5
   ]);
 
-  doCheck = false;   # there are no tests
-  dontStrip = true;  # we are not generating any binaries
+  preFixup = ''
+    makeWrapperArgs+=("''${qtWrapperArgs[@]}")
+  '';
+
+  doCheck = false; # there are no tests
+
+  dontStrip = true; # we are not generating any binaries
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "An audio tag editor similar to the Windows program, Mp3tag";
-    homepage    = "https://docs.puddletag.net";
-    license     = licenses.gpl3;
+    homepage = "https://docs.puddletag.net";
+    license = licenses.gpl3;
     maintainers = with maintainers; [ peterhoeg ];
-    platforms   = platforms.linux;
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/pulseaudio-ctl/default.nix b/pkgs/applications/audio/pulseaudio-ctl/default.nix
index 125dafc132e..9d1d6df1da5 100644
--- a/pkgs/applications/audio/pulseaudio-ctl/default.nix
+++ b/pkgs/applications/audio/pulseaudio-ctl/default.nix
@@ -1,19 +1,19 @@
-{ stdenv, fetchFromGitHub, makeWrapper
+{ lib, stdenv, fetchFromGitHub, makeWrapper
 , bc, dbus, gawk, gnused, libnotify, pulseaudio }:
 
 let
-  path = stdenv.lib.makeBinPath [ bc dbus gawk gnused libnotify pulseaudio ];
+  path = lib.makeBinPath [ bc dbus gawk gnused libnotify pulseaudio ];
   pname = "pulseaudio-ctl";
 
 in stdenv.mkDerivation rec {
   name = "${pname}-${version}";
-  version = "1.67";
+  version = "1.69";
 
   src = fetchFromGitHub {
     owner = "graysky2";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1mf5r7x6aiqmx9mz7gpckrqvvzxnr5gs2q1k4m42rjk6ldkpdb46";
+    sha256 = "sha256-5WRhVIQlSwWuyvkzrnNW0rdVet9ZzM47gISJpznM8mU=";
   };
 
   postPatch = ''
@@ -31,8 +31,8 @@ in stdenv.mkDerivation rec {
       --prefix PATH : ${path}
   '';
 
-  meta = with stdenv.lib; {
-    description = "Control pulseaudio volume from the shell or mapped to keyboard shortcuts. No need for alsa-utils.";
+  meta = with lib; {
+    description = "Control pulseaudio volume from the shell or mapped to keyboard shortcuts. No need for alsa-utils";
     homepage = "https://bbs.archlinux.org/viewtopic.php?id=124513";
     license = licenses.mit;
     maintainers = with maintainers; [ peterhoeg ];
diff --git a/pkgs/applications/audio/pulseaudio-dlna/default.nix b/pkgs/applications/audio/pulseaudio-dlna/default.nix
index 75990d593df..83de192c6b3 100644
--- a/pkgs/applications/audio/pulseaudio-dlna/default.nix
+++ b/pkgs/applications/audio/pulseaudio-dlna/default.nix
@@ -1,10 +1,10 @@
-{ fetchFromGitHub, stdenv, pythonPackages
+{ 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, vorbisTools ? null
+, vorbisSupport ? true, vorbis-tools ? null
 }:
 
 assert mp3Support -> lame != null;
@@ -12,7 +12,7 @@ assert opusSupport -> opusTools != null;
 assert faacSupport -> faac != null;
 assert flacSupport -> flac != null;
 assert soxSupport -> sox != null;
-assert vorbisSupport -> vorbisTools != null;
+assert vorbisSupport -> vorbis-tools != null;
 
 let
   zeroconf = pythonPackages.callPackage ./zeroconf.nix { };
@@ -32,19 +32,19 @@ pythonPackages.buildPythonApplication {
     dbus-python docopt requests setproctitle protobuf psutil futures
     chardet notify2 netifaces pyroute2 pygobject2 lxml setuptools ]
     ++ [ zeroconf ]
-    ++ stdenv.lib.optional mp3Support lame
-    ++ stdenv.lib.optional opusSupport opusTools
-    ++ stdenv.lib.optional faacSupport faac
-    ++ stdenv.lib.optional flacSupport flac
-    ++ stdenv.lib.optional soxSupport sox
-    ++ stdenv.lib.optional vorbisSupport vorbisTools;
+    ++ 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;
 
   # upstream has no tests
   checkPhase = ''
     $out/bin/pulseaudio-dlna --help > /dev/null
   '';
 
-  meta = with stdenv.lib; {
+  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";
     license = licenses.gpl3Plus;
diff --git a/pkgs/applications/audio/pulseaudio-dlna/zeroconf.nix b/pkgs/applications/audio/pulseaudio-dlna/zeroconf.nix
index efe39aa1600..d4f3306697d 100644
--- a/pkgs/applications/audio/pulseaudio-dlna/zeroconf.nix
+++ b/pkgs/applications/audio/pulseaudio-dlna/zeroconf.nix
@@ -1,4 +1,4 @@
-{ stdenv
+{ lib
 , buildPythonPackage
 , fetchPypi
 , ifaddr
@@ -19,9 +19,9 @@ buildPythonPackage rec {
   };
 
   propagatedBuildInputs = [ netifaces six enum-compat ifaddr ]
-    ++ stdenv.lib.optionals (pythonOlder "3.5") [ typing ];
+    ++ lib.optionals (pythonOlder "3.5") [ typing ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A pure python implementation of multicast DNS service discovery";
     homepage = "https://github.com/jstasiak/python-zeroconf";
     license = licenses.lgpl21;
diff --git a/pkgs/applications/audio/pulseaudio-modules-bt/default.nix b/pkgs/applications/audio/pulseaudio-modules-bt/default.nix
index 556dd5f1061..331bce3e8be 100644
--- a/pkgs/applications/audio/pulseaudio-modules-bt/default.nix
+++ b/pkgs/applications/audio/pulseaudio-modules-bt/default.nix
@@ -2,7 +2,7 @@
 , runCommand
 , fetchFromGitHub
 , pulseaudio
-, pkgconfig
+, pkg-config
 , ffmpeg
 , patchelf
 , fdk_aac
@@ -18,8 +18,12 @@
 let
   pulseSources = runCommand "pulseaudio-sources" {} ''
     mkdir $out
-    tar -xf ${pulseaudio.src}
-    mv pulseaudio*/* $out/
+    if [ -d ${pulseaudio.src} ]; then
+      ln -s ${pulseaudio.src}/* $out/
+    else
+      tar -xf ${pulseaudio.src}
+      mv pulseaudio*/* $out/
+    fi
   '';
 
 in stdenv.mkDerivation rec {
@@ -38,7 +42,7 @@ in stdenv.mkDerivation rec {
   ];
 
   nativeBuildInputs = [
-    pkgconfig
+    pkg-config
     patchelf
     cmake
   ];
@@ -61,7 +65,7 @@ in stdenv.mkDerivation rec {
 
     # Pulseaudio version is detected with a -rebootstrapped suffix which build system assumptions
     substituteInPlace config.h.in --replace PulseAudio_VERSION ${pulseaudio.version}
-    substituteInPlace CMakeLists.txt --replace '${"\${PulseAudio_VERSION}"}' ${pulseaudio.version}
+    substituteInPlace CMakeLists.txt --replace '${"\${PULSE_DIR}"}' ${pulseaudio.pulseDir}
 
     # Fraunhofer recommends to enable afterburner but upstream has it set to false by default
     substituteInPlace src/modules/bluetooth/a2dp/a2dp_aac.c \
@@ -72,12 +76,12 @@ in stdenv.mkDerivation rec {
     for so in $out/lib/pulse-${pulseaudio.version}/modules/*.so; do
       orig_rpath=$(patchelf --print-rpath "$so")
       patchelf \
-        --set-rpath "${ldacbt}/lib:${lib.getLib ffmpeg}/lib:$out/lib/pulse-${pulseaudio.version}/modules:$orig_rpath" \
+        --set-rpath "${ldacbt}/lib:${lib.getLib ffmpeg}/lib:$out/${pulseaudio.pulseDir}/modules:$orig_rpath" \
         "$so"
     done
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/EHfive/pulseaudio-modules-bt";
     description = "LDAC, aptX, aptX HD, AAC codecs (A2DP Audio) support for Linux PulseAudio";
     platforms = platforms.linux;
diff --git a/pkgs/applications/audio/pulseaudio-modules-bt/fix-install-path.patch b/pkgs/applications/audio/pulseaudio-modules-bt/fix-install-path.patch
index 3c498fe8af1..7cdb7de4dd1 100644
--- a/pkgs/applications/audio/pulseaudio-modules-bt/fix-install-path.patch
+++ b/pkgs/applications/audio/pulseaudio-modules-bt/fix-install-path.patch
@@ -8,4 +8,4 @@ index 8d20dbf..63fe7ba 100644
          module-bluetooth-policy
 -        LIBRARY DESTINATION ${PulseAudio_modlibexecdir})
 -
-+        LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pulse-${PulseAudio_VERSION}/modules/)
++        LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/${PULSE_DIR}/modules/)
diff --git a/pkgs/applications/audio/pulseeffects/default.nix b/pkgs/applications/audio/pulseeffects-legacy/default.nix
index a3ee0e23ec6..fad17ac71fd 100644
--- a/pkgs/applications/audio/pulseeffects/default.nix
+++ b/pkgs/applications/audio/pulseeffects-legacy/default.nix
@@ -1,8 +1,8 @@
-{ stdenv
+{ lib, stdenv
 , fetchFromGitHub
 , meson
 , ninja
-, pkgconfig
+, pkg-config
 , itstool
 , python3
 , libxml2
@@ -23,6 +23,7 @@
 , libsamplerate
 , libsndfile
 , libebur128
+, rnnoise
 , boost
 , dbus
 , fftwFloat
@@ -44,19 +45,19 @@ let
   ];
 in stdenv.mkDerivation rec {
   pname = "pulseeffects";
-  version = "4.8.0";
+  version = "4.8.4";
 
   src = fetchFromGitHub {
     owner = "wwmm";
     repo = "pulseeffects";
     rev = "v${version}";
-    sha256 = "9dQNYWBx8iAifRTZr2FRlYv4keZt5Cfahwi/w01duFg=";
+    sha256 = "19sndxvszafbd1l2033g2irpx2jrwi5bpbx8r35047wi0z7djiag";
   };
 
   nativeBuildInputs = [
     meson
     ninja
-    pkgconfig
+    pkg-config
     libxml2
     itstool
     python3
@@ -79,6 +80,7 @@ in stdenv.mkDerivation rec {
     libebur128
     libsamplerate
     libsndfile
+    rnnoise
     boost
     dbus
     fftwFloat
@@ -92,20 +94,20 @@ in stdenv.mkDerivation rec {
 
   preFixup = ''
     gappsWrapperArgs+=(
-      --set LV2_PATH "${stdenv.lib.makeSearchPath "lib/lv2" lv2Plugins}"
-      --set LADSPA_PATH "${stdenv.lib.makeSearchPath "lib/ladspa" ladspaPlugins}"
+      --set LV2_PATH "${lib.makeSearchPath "lib/lv2" lv2Plugins}"
+      --set LADSPA_PATH "${lib.makeSearchPath "lib/ladspa" ladspaPlugins}"
     )
   '';
 
   # Meson is no longer able to pick up Boost automatically.
   # https://github.com/NixOS/nixpkgs/issues/86131
-  BOOST_INCLUDEDIR = "${stdenv.lib.getDev boost}/include";
-  BOOST_LIBRARYDIR = "${stdenv.lib.getLib boost}/lib";
+  BOOST_INCLUDEDIR = "${lib.getDev boost}/include";
+  BOOST_LIBRARYDIR = "${lib.getLib boost}/lib";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Limiter, compressor, reverberation, equalizer and auto volume effects for Pulseaudio applications";
     homepage = "https://github.com/wwmm/pulseeffects";
-    license = licenses.gpl3;
+    license = licenses.gpl3Plus;
     maintainers = with maintainers; [ jtojnar ];
     platforms = platforms.linux;
     badPlatforms = [ "aarch64-linux" ];
diff --git a/pkgs/applications/audio/puredata/default.nix b/pkgs/applications/audio/puredata/default.nix
index 4b221cd1a76..ebdc0388b96 100644
--- a/pkgs/applications/audio/puredata/default.nix
+++ b/pkgs/applications/audio/puredata/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchurl, autoreconfHook, gettext, makeWrapper
-, alsaLib, libjack2, tk, fftw
+{ lib, stdenv, fetchurl, autoreconfHook, gettext, makeWrapper
+, alsa-lib, libjack2, tk, fftw
 }:
 
 stdenv.mkDerivation  rec {
@@ -13,7 +13,7 @@ stdenv.mkDerivation  rec {
 
   nativeBuildInputs = [ autoreconfHook gettext makeWrapper ];
 
-  buildInputs = [ alsaLib libjack2 fftw ];
+  buildInputs = [ alsa-lib libjack2 fftw ];
 
   configureFlags = [
     "--enable-alsa"
@@ -27,7 +27,7 @@ stdenv.mkDerivation  rec {
     wrapProgram $out/bin/pd --prefix PATH : ${tk}/bin
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = ''A real-time graphical programming environment for
                     audio, video, and graphical processing'';
     homepage = "http://puredata.info";
diff --git a/pkgs/applications/audio/puredata/wrapper.nix b/pkgs/applications/audio/puredata/wrapper.nix
index 80968e2700b..3444ef9acbd 100644
--- a/pkgs/applications/audio/puredata/wrapper.nix
+++ b/pkgs/applications/audio/puredata/wrapper.nix
@@ -7,7 +7,7 @@ in symlinkJoin {
 
   paths = [ puredata ] ++ plugins;
 
-  buildInputs = [ makeWrapper ];
+  nativeBuildInputs = [ makeWrapper ];
 
   postBuild = ''
     wrapProgram $out/bin/pd \
diff --git a/pkgs/applications/audio/qjackctl/default.nix b/pkgs/applications/audio/qjackctl/default.nix
index 87666940c15..7196829afa0 100644
--- a/pkgs/applications/audio/qjackctl/default.nix
+++ b/pkgs/applications/audio/qjackctl/default.nix
@@ -1,32 +1,44 @@
-{ stdenv, mkDerivation, fetchurl, pkgconfig, alsaLib, libjack2, dbus, qtbase, qttools, qtx11extras }:
+{ lib, mkDerivation, fetchFromGitHub
+, pkg-config, cmake, alsa-lib, libjack2, dbus, qtbase, qttools, qtx11extras
+# Enable jack session support
+, jackSession ? false
+}:
 
 mkDerivation rec {
-  version = "0.6.2";
+  version = "0.9.0";
   pname = "qjackctl";
 
   # some dependencies such as killall have to be installed additionally
 
-  src = fetchurl {
-    url = "mirror://sourceforge/qjackctl/${pname}-${version}.tar.gz";
-    sha256 = "1rjhdyp0wzhlqr4cn80rh1qhby998cpqv81j1bbb9hfsiq77viqy";
+  src = fetchFromGitHub {
+    owner = "rncbc";
+    repo = "qjackctl";
+    rev = "${pname}_${lib.replaceChars ["."] ["_"] version}";
+    sha256 = "044kgwk7pfywad4myza0s2kvfkl21zkqq5wgny7n3c43qlcgs3zr";
   };
 
   buildInputs = [
     qtbase
     qtx11extras
     qttools
-    alsaLib
+    alsa-lib
     libjack2
     dbus
   ];
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+  ];
 
-  configureFlags = [ "--enable-jack-version" ];
+  cmakeFlags = [
+    "-DCONFIG_JACK_VERSION=1"
+    "-DCONFIG_JACK_SESSION=${toString jackSession}"
+  ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A Qt application to control the JACK sound server daemon";
-    homepage = "http://qjackctl.sourceforge.net/";
+    homepage = "https://github.com/rncbc/qjackctl";
     license = licenses.gpl2Plus;
     maintainers = [ maintainers.goibhniu ];
     platforms = platforms.linux;
diff --git a/pkgs/applications/audio/qmidiarp/default.nix b/pkgs/applications/audio/qmidiarp/default.nix
index 4bbfe79a2c9..618062dc2f3 100644
--- a/pkgs/applications/audio/qmidiarp/default.nix
+++ b/pkgs/applications/audio/qmidiarp/default.nix
@@ -1,11 +1,11 @@
-{ stdenv
+{ lib, stdenv
 , fetchgit
 , automake
 , autoreconfHook
 , lv2
 , pkg-config
 , qt5
-, alsaLib
+, alsa-lib
 , libjack2
 }:
 
@@ -26,14 +26,14 @@ stdenv.mkDerivation rec {
   ];
 
   buildInputs = [
-    alsaLib
+    alsa-lib
     lv2
     libjack2
   ] ++ (with qt5; [
     qttools
   ]);
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "An advanced MIDI arpeggiator";
     longDescription = ''
       An advanced MIDI arpeggiator, programmable step sequencer and LFO for Linux.
diff --git a/pkgs/applications/audio/qmidinet/default.nix b/pkgs/applications/audio/qmidinet/default.nix
index 479a8a2bb04..51772cc135b 100644
--- a/pkgs/applications/audio/qmidinet/default.nix
+++ b/pkgs/applications/audio/qmidinet/default.nix
@@ -1,19 +1,19 @@
-{ mkDerivation, lib, fetchurl, pkgconfig, qtbase, qttools, alsaLib, libjack2 }:
+{ mkDerivation, lib, fetchurl, pkg-config, qtbase, qttools, alsa-lib, libjack2 }:
 
 mkDerivation rec {
-  version = "0.6.2";
+  version = "0.9.1";
   pname = "qmidinet";
 
   src = fetchurl {
     url = "mirror://sourceforge/qmidinet/${pname}-${version}.tar.gz";
-    sha256 = "0siqzyhwg3l9av7jbca3bqdww7xspjlpi9ya4mkj211xc3a3a1d6";
+    sha256 = "sha256-cDgF5hbjy5DzGn4Rlmb76XzRa2wURVwPu2rQRKENxQU=";
   };
 
   hardeningDisable = [ "format" ];
 
-  buildInputs = [  qtbase qttools alsaLib libjack2 ];
+  buildInputs = [  qtbase qttools alsa-lib libjack2 ];
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
 
   meta = with lib; {
     description = "A MIDI network gateway application that sends and receives MIDI data (ALSA Sequencer and/or JACK MIDI) over the network";
diff --git a/pkgs/applications/audio/qmidiroute/default.nix b/pkgs/applications/audio/qmidiroute/default.nix
index 2a83d98b6ea..35aea5bd086 100644
--- a/pkgs/applications/audio/qmidiroute/default.nix
+++ b/pkgs/applications/audio/qmidiroute/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, qt4, alsaLib }:
+{ lib, stdenv, fetchurl, pkg-config, qt4, alsa-lib }:
 
 stdenv.mkDerivation rec {
   version = "0.4.0";
@@ -9,10 +9,10 @@ stdenv.mkDerivation rec {
     sha256 = "0vmjwarsxr5540rafhmdcc62yarf0w2l05bjjl9s28zzr5m39z3n";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ qt4 alsaLib ];
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ qt4 alsa-lib ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "MIDI event processor and router";
     longDescription = ''
     qmidiroute is a versatile MIDI event processor and router for the ALSA
@@ -25,6 +25,6 @@ stdenv.mkDerivation rec {
 
     license = licenses.gpl2;
     maintainers = [ maintainers.lebastr ];
-    platforms = stdenv.lib.platforms.linux;
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/qmmp/default.nix b/pkgs/applications/audio/qmmp/default.nix
index 84ff9f787d5..460b97479c6 100644
--- a/pkgs/applications/audio/qmmp/default.nix
+++ b/pkgs/applications/audio/qmmp/default.nix
@@ -1,18 +1,18 @@
-{ stdenv, mkDerivation, fetchurl, cmake, pkgconfig, xlibsWrapper
+{ lib, mkDerivation, fetchurl, cmake, pkg-config, xlibsWrapper
 , qtbase, qttools, qtmultimedia, qtx11extras
 # transports
 , curl, libmms
 # input plugins
 , libmad, taglib, libvorbis, libogg, flac, libmpcdec, libmodplug, libsndfile
-, libcdio, cdparanoia, libcddb, faad2, ffmpeg_3, wildmidi
+, libcdio, cdparanoia, libcddb, faad2, ffmpeg, wildmidi
 # output plugins
-, alsaLib, libpulseaudio
+, alsa-lib, libpulseaudio
 # effect plugins
 , libsamplerate
 }:
 
 # Additional plugins that can be added:
-#  wavpack (http://www.wavpack.com/)
+#  wavpack (https://www.wavpack.com/)
 #  gme (Game music support)
 #  Ogg Opus support
 #  BS2B effect plugin (http://bs2b.sourceforge.net/)
@@ -29,14 +29,15 @@
 # handle that.
 
 mkDerivation rec {
-  name = "qmmp-1.4.1";
+  pname = "qmmp";
+  version = "1.4.4";
 
   src = fetchurl {
-    url = "http://qmmp.ylsoftware.com/files/${name}.tar.bz2";
-    sha256 = "0p18r2ri75vbyjzfa7bcl1dm372m6jvn9zj2p5ia2rh1g77fbm9a";
+    url = "https://qmmp.ylsoftware.com/files/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-sZRZVhCf2ceETuV4AULA0kVkuIMn3C+aYdKThqvPnVQ=";
   };
 
-  nativeBuildInputs = [ cmake pkgconfig ];
+  nativeBuildInputs = [ cmake pkg-config ];
   buildInputs =
     [ # basic requirements
       qtbase qttools qtmultimedia qtx11extras xlibsWrapper
@@ -44,21 +45,19 @@ mkDerivation rec {
       curl libmms
       # input plugins
       libmad taglib libvorbis libogg flac libmpcdec libmodplug libsndfile
-      libcdio cdparanoia libcddb faad2 ffmpeg_3 wildmidi
+      libcdio cdparanoia libcddb faad2 ffmpeg wildmidi
       # output plugins
-      alsaLib libpulseaudio
+      alsa-lib libpulseaudio
       # effect plugins
       libsamplerate
     ];
 
-  enableParallelBuilding = true;
-
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Qt-based audio player that looks like Winamp";
-    homepage = "http://qmmp.ylsoftware.com/";
-    license = licenses.gpl2;
+    homepage = "https://qmmp.ylsoftware.com/";
+    license = licenses.gpl2Plus;
     platforms = platforms.linux;
     maintainers = [ maintainers.bjornfor ];
-    repositories.svn = "http://qmmp.googlecode.com/svn/";
+    repositories.svn = "https://svn.code.sf.net/p/qmmp-dev/code";
   };
 }
diff --git a/pkgs/applications/audio/qsampler/default.nix b/pkgs/applications/audio/qsampler/default.nix
index 1f65b374838..bb40e0b3eeb 100644
--- a/pkgs/applications/audio/qsampler/default.nix
+++ b/pkgs/applications/audio/qsampler/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, autoconf, automake, libtool, pkgconfig, qttools
+{ lib, fetchurl, autoconf, automake, libtool, pkg-config, qttools
 , liblscp, libgig, qtbase, mkDerivation }:
 
 mkDerivation rec {
@@ -10,14 +10,14 @@ mkDerivation rec {
     sha256 = "1wr7k739zx2nz00b810f60g9k3y92w05nfci987hw7y2sks9rd8j";
   };
 
-  nativeBuildInputs = [ autoconf automake libtool pkgconfig qttools ];
+  nativeBuildInputs = [ autoconf automake libtool pkg-config qttools ];
   buildInputs = [ liblscp libgig qtbase ];
 
   preConfigure = "make -f Makefile.svn";
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://www.linuxsampler.org";
     description = "Graphical frontend to LinuxSampler";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/qsynth/default.nix b/pkgs/applications/audio/qsynth/default.nix
index 5da8f4cd462..6d75c32a666 100644
--- a/pkgs/applications/audio/qsynth/default.nix
+++ b/pkgs/applications/audio/qsynth/default.nix
@@ -1,23 +1,23 @@
-{ stdenv, fetchurl, alsaLib, fluidsynth, libjack2, autoconf, pkgconfig
+{ lib, fetchurl, alsa-lib, fluidsynth, libjack2, autoconf, pkg-config
 , mkDerivation, qtbase, qttools, qtx11extras
 }:
 
 mkDerivation  rec {
   pname = "qsynth";
-  version = "0.6.2";
+  version = "0.9.1";
 
   src = fetchurl {
     url = "mirror://sourceforge/qsynth/${pname}-${version}.tar.gz";
-    sha256 = "0cp6vrqrj37rv3a7qfvqrg64j7zwpfj60y5b83mlkzvmg1sgjnlv";
+    sha256 = "sha256-VNcI5QOVacHBcI6psEvhm7+cOTpwr2pMVXmk7nMXNiY=";
   };
 
-  nativeBuildInputs = [ autoconf pkgconfig ];
+  nativeBuildInputs = [ autoconf pkg-config ];
 
-  buildInputs = [ alsaLib fluidsynth libjack2 qtbase qttools qtx11extras ];
+  buildInputs = [ alsa-lib fluidsynth libjack2 qtbase qttools qtx11extras ];
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Fluidsynth GUI";
     homepage = "https://sourceforge.net/projects/qsynth";
     license = licenses.gpl2Plus;
diff --git a/pkgs/applications/audio/qtractor/default.nix b/pkgs/applications/audio/qtractor/default.nix
index 2975e6464e1..b1d0928b86a 100644
--- a/pkgs/applications/audio/qtractor/default.nix
+++ b/pkgs/applications/audio/qtractor/default.nix
@@ -1,35 +1,79 @@
-{ alsaLib, autoconf, automake, dssi, fetchurl, libjack2
-, ladspaH, ladspaPlugins, liblo, libmad, libsamplerate, libsndfile
-, libtool, libvorbis, lilv, lv2, pkgconfig, qttools, qtbase, rubberband, serd
-, sord, sratom, stdenv, suil, wrapQtAppsHook }:
+{ alsa-lib
+, aubio
+, cmake
+, dssi
+, fetchurl
+, flac
+, libjack2
+, ladspaH
+, ladspaPlugins
+, liblo
+, libmad
+, libsamplerate
+, libsndfile
+, libtool
+, libvorbis
+, lilv
+, lv2
+, mkDerivation
+, opusfile
+, pkg-config
+, qttools
+, qtbase
+, rubberband
+, serd
+, sord
+, sratom
+, lib
+, suil
+}:
 
-stdenv.mkDerivation rec {
+mkDerivation rec {
   pname = "qtractor";
-  version = "0.9.15";
+  version = "0.9.19";
 
   src = fetchurl {
     url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.gz";
-    sha256 = "0k7a6llwrzs07flr9mvzvay9ygc2x64syg8npyabsw5a4d85fwsx";
+    sha256 = "sha256-98/trRZRvNRPEA4ASS81qp2rMevpo5TIrtsU1TYMuT0=";
   };
 
   nativeBuildInputs = [
-    autoconf automake libtool pkgconfig qttools wrapQtAppsHook
+    cmake
+    libtool
+    pkg-config
+    qttools
   ];
 
-  buildInputs =
-    [ alsaLib dssi libjack2 ladspaH
-      ladspaPlugins liblo libmad libsamplerate libsndfile libtool
-      libvorbis lilv lv2 qtbase rubberband serd sord sratom
-      suil
-    ];
-
-  enableParallelBuilding = true;
+  buildInputs = [
+    alsa-lib
+    aubio
+    dssi
+    flac
+    libjack2
+    ladspaH
+    ladspaPlugins
+    liblo
+    libmad
+    libsamplerate
+    libsndfile
+    libtool
+    libvorbis
+    lilv
+    lv2
+    opusfile
+    qtbase
+    rubberband
+    serd
+    sord
+    sratom
+    suil
+  ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Audio/MIDI multi-track sequencer";
-    homepage = "http://qtractor.sourceforge.net";
+    homepage = "https://qtractor.sourceforge.io";
     license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ goibhniu ];
     platforms = platforms.linux;
-    maintainers = [ maintainers.goibhniu ];
   };
 }
diff --git a/pkgs/applications/audio/qtscrobbler/default.nix b/pkgs/applications/audio/qtscrobbler/default.nix
index 5b84989a7c4..f013c338e76 100644
--- a/pkgs/applications/audio/qtscrobbler/default.nix
+++ b/pkgs/applications/audio/qtscrobbler/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, fetchurl, withMtp ? true, libmtp, pkgconfig, which, qt4, qmake4Hook }:
+{ stdenv, lib, fetchurl, withMtp ? true, libmtp, pkg-config, which, qt4, qmake4Hook }:
 
 stdenv.mkDerivation rec {
   pname = "qtscrobbler";
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
     sha256 = "01c8e48f616ed09504833d27d92fd62f455bd645ea2d1cc2a5f4c287d641daba";
   };
 
-  nativeBuildInputs = [ qmake4Hook ] ++ lib.optionals withMtp [ pkgconfig which ];
+  nativeBuildInputs = [ qmake4Hook ] ++ lib.optionals withMtp [ pkg-config which ];
   buildInputs = [ qt4 ] ++ lib.optional withMtp libmtp;
 
   enableParallelBuilding = true;
diff --git a/pkgs/applications/audio/quadrafuzz/default.nix b/pkgs/applications/audio/quadrafuzz/default.nix
new file mode 100644
index 00000000000..1432c0b8101
--- /dev/null
+++ b/pkgs/applications/audio/quadrafuzz/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, lib, fetchFromGitHub, boost, cairo, lv2, pkg-config }:
+
+stdenv.mkDerivation rec {
+  pname = "quadrafuzz";
+  version = "0.1.1";
+
+  src = fetchFromGitHub {
+    owner = "jpcima";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1kjsf7il9krihwlrq08gk2xvil4b4q5zd87nnm103hby2w7ws7z1";
+    fetchSubmodules = true;
+  };
+
+  postPatch = ''
+    patchShebangs ./dpf/utils/generate-ttl.sh
+  '';
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [
+    boost cairo lv2
+  ];
+
+  makeFlags = [
+    "PREFIX=$(out)"
+  ];
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/lib/lv2
+    cp -r bin/quadrafuzz.lv2/ $out/lib/lv2
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/jpcima/quadrafuzz";
+    description = "Multi-band fuzz distortion plugin";
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.linux;
+    license = licenses.gpl3Plus;
+  };
+}
diff --git a/pkgs/applications/audio/quodlibet/default.nix b/pkgs/applications/audio/quodlibet/default.nix
index 704e20cc8c5..6c8ad8225f0 100644
--- a/pkgs/applications/audio/quodlibet/default.nix
+++ b/pkgs/applications/audio/quodlibet/default.nix
@@ -1,41 +1,44 @@
-{ stdenv, fetchurl, python3, wrapGAppsHook, gettext, libsoup, gnome3, gtk3, gdk-pixbuf,
-  tag ? "", xvfb_run, dbus, glibcLocales, glib, glib-networking, gobject-introspection,
+{ lib, fetchurl, python3, wrapGAppsHook, gettext, libsoup, gnome, gtk3, gdk-pixbuf, librsvg,
+  tag ? "", xvfb-run, dbus, glibcLocales, glib, glib-networking, gobject-introspection, hicolor-icon-theme,
   gst_all_1, withGstPlugins ? true,
-  xineBackend ? false, xineLib,
+  xineBackend ? false, xine-lib,
   withDbusPython ? false, withPyInotify ? false, withMusicBrainzNgs ? false, withPahoMqtt ? false,
   webkitgtk ? null,
   keybinder3 ? null, gtksourceview ? null, libmodplug ? null, kakasi ? null, libappindicator-gtk3 ? null }:
 
-let optionals = stdenv.lib.optionals; in
+let optionals = lib.optionals; in
 python3.pkgs.buildPythonApplication rec {
   pname = "quodlibet${tag}";
-  version = "4.2.1";
+  version = "4.4.0";
 
   src = fetchurl {
     url = "https://github.com/quodlibet/quodlibet/releases/download/release-${version}/quodlibet-${version}.tar.gz";
-    sha256 = "0b1rvr4hqs2bjmhayms7vxxkn3d92k9v7p1269rjhf11hpk122l7";
+    sha256 = "sha256-oDMY0nZ+SVlVF2PQqH+tl3OHr3EmCP5XJxQXaiS782c=";
   };
 
   nativeBuildInputs = [ wrapGAppsHook gettext ];
 
-  checkInputs = [ gdk-pixbuf ] ++ (with python3.pkgs; [ pytest pytest_xdist polib xvfb_run dbus.daemon glibcLocales ]);
+  checkInputs = [ gdk-pixbuf hicolor-icon-theme ] ++ (with python3.pkgs; [ pytest pytest-xdist polib xvfb-run dbus.daemon glibcLocales ]);
 
-  buildInputs = [ gnome3.adwaita-icon-theme libsoup glib glib-networking gtk3 webkitgtk gdk-pixbuf keybinder3 gtksourceview libmodplug libappindicator-gtk3 kakasi gobject-introspection ]
-    ++ (if xineBackend then [ xineLib ] else with gst_all_1;
+  buildInputs = [ gnome.adwaita-icon-theme libsoup glib glib-networking gtk3 webkitgtk gdk-pixbuf keybinder3 gtksourceview libmodplug libappindicator-gtk3 kakasi gobject-introspection ]
+    ++ (if xineBackend then [ xine-lib ] else with gst_all_1;
     [ gstreamer gst-plugins-base ] ++ optionals withGstPlugins [ gst-plugins-good gst-plugins-ugly gst-plugins-bad ]);
 
   propagatedBuildInputs = with python3.pkgs; [ pygobject3 pycairo mutagen gst-python feedparser ]
       ++ optionals withDbusPython [ dbus-python ]
       ++ optionals withPyInotify [ pyinotify ]
       ++ optionals withMusicBrainzNgs [ musicbrainzngs ]
-      ++ optionals stdenv.isDarwin [ pyobjc ]
       ++ optionals withPahoMqtt [ paho-mqtt ];
 
   LC_ALL = "en_US.UTF-8";
 
-  pytestFlags = stdenv.lib.optionals (xineBackend || !withGstPlugins) [
+  pytestFlags = lib.optionals (xineBackend || !withGstPlugins) [
     "--ignore=tests/plugin/test_replaygain.py"
   ] ++ [
+    # requires networking
+    "--ignore=tests/test_browsers_iradio.py"
+    # the default theme doesn't have the required icons
+    "--ignore=tests/plugin/test_trayicon.py"
     # upstream does actually not enforce source code linting
     "--ignore=tests/quality"
     # build failure on Arch Linux
@@ -45,7 +48,11 @@ python3.pkgs.buildPythonApplication rec {
 
   checkPhase = ''
     runHook preCheck
+    # otherwise tests can't find the app icons; instead of creating index.theme from scratch
+    # I re-used the one from hicolor-icon-theme which seems to work
+    cp "${hicolor-icon-theme}/share/icons/hicolor/index.theme" quodlibet/images/hicolor
     env XDG_DATA_DIRS="$out/share:${gtk3}/share/gsettings-schemas/${gtk3.name}:$XDG_ICON_DIRS:$XDG_DATA_DIRS" \
+      GDK_PIXBUF_MODULE_FILE=${librsvg}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache \
       HOME=$(mktemp -d) \
       xvfb-run -s '-screen 0 800x600x24' dbus-run-session \
         --config-file=${dbus.daemon}/share/dbus-1/session.conf \
@@ -53,9 +60,9 @@ python3.pkgs.buildPythonApplication rec {
     runHook postCheck
   '';
 
-  preFixup = stdenv.lib.optionalString (kakasi != null) "gappsWrapperArgs+=(--prefix PATH : ${kakasi}/bin)";
+  preFixup = lib.optionalString (kakasi != null) "gappsWrapperArgs+=(--prefix PATH : ${kakasi}/bin)";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "GTK-based audio player written in Python, using the Mutagen tagging library";
     license = licenses.gpl2Plus;
 
@@ -73,7 +80,7 @@ python3.pkgs.buildPythonApplication rec {
       & internet radio, and all major audio formats.
     '';
 
-    maintainers = with maintainers; [ coroa sauyon ];
+    maintainers = with maintainers; [ coroa pbogdan ];
     homepage = "https://quodlibet.readthedocs.io/en/latest/";
   };
 }
diff --git a/pkgs/applications/audio/r128gain/default.nix b/pkgs/applications/audio/r128gain/default.nix
index 17f6840d4e2..96053d08d00 100644
--- a/pkgs/applications/audio/r128gain/default.nix
+++ b/pkgs/applications/audio/r128gain/default.nix
@@ -1,29 +1,29 @@
 { lib
 , fetchFromGitHub
+, genericUpdater
 , substituteAll
-, ffmpeg_3
+, common-updater-scripts
+, ffmpeg
 , python3Packages
 , sox
 }:
 
 python3Packages.buildPythonApplication rec {
   pname = "r128gain";
-  version = "1.0.1";
+  version = "1.0.3";
 
   src = fetchFromGitHub {
     owner = "desbma";
     repo = "r128gain";
     rev = version;
-    sha256 = "0fnxis2g7mw8mb0cz9bws909lrndli7ml54nnzda49vc2fhbjwxr";
+    sha256 = "0w2i2szajv1vcmc96w0fczdr8xc28ijcf1gdg180f21gi6yh96sc";
   };
 
   patches = [
-    (
-      substituteAll {
-        src = ./ffmpeg-location.patch;
-        ffmpeg = ffmpeg_3;
-      }
-    )
+    (substituteAll {
+      src = ./ffmpeg-location.patch;
+      inherit ffmpeg;
+    })
   ];
 
   propagatedBuildInputs = with python3Packages; [ crcmod ffmpeg-python mutagen tqdm ];
@@ -33,6 +33,13 @@ python3Packages.buildPythonApplication rec {
   # sandbox to be disabled.
   doCheck = false;
 
+  passthru = {
+    updateScript = genericUpdater {
+      inherit pname version;
+      versionLister = "${common-updater-scripts}/bin/list-git-tags ${src.meta.homepage}";
+    };
+  };
+
   meta = with lib; {
     description = "Fast audio loudness scanner & tagger (ReplayGain v2 / R128)";
     homepage = "https://github.com/desbma/r128gain";
diff --git a/pkgs/applications/audio/r128gain/ffmpeg-location.patch b/pkgs/applications/audio/r128gain/ffmpeg-location.patch
index ff118024011..c01f115c1d6 100644
--- a/pkgs/applications/audio/r128gain/ffmpeg-location.patch
+++ b/pkgs/applications/audio/r128gain/ffmpeg-location.patch
@@ -1,5 +1,3 @@
-diff --git i/r128gain/__init__.py w/r128gain/__init__.py
-index 53fc3ef..f144e15 100755
 --- i/r128gain/__init__.py
 +++ w/r128gain/__init__.py
 @@ -78,7 +78,7 @@ def get_ffmpeg_lib_versions(ffmpeg_path=None):
@@ -14,7 +12,7 @@ index 53fc3ef..f144e15 100755
 @@ -156,7 +156,7 @@ def get_r128_loudness(audio_filepaths, *, calc_peak=True, enable_ffmpeg_threadin
                                       os.devnull,
                                       **additional_ffmpeg_args,
-                                      f="null"),
+                                      f="null").global_args("-hide_banner", "-nostats"),
 -                       cmd=ffmpeg_path or "ffmpeg")
 +                       cmd=ffmpeg_path or "@ffmpeg@/bin/ffmpeg")
  
diff --git a/pkgs/applications/audio/radiotray-ng/default.nix b/pkgs/applications/audio/radiotray-ng/default.nix
index 014906594a7..5730bcdcaab 100644
--- a/pkgs/applications/audio/radiotray-ng/default.nix
+++ b/pkgs/applications/audio/radiotray-ng/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchFromGitHub
-, cmake, pkgconfig
+{ lib, stdenv, fetchFromGitHub
+, cmake, pkg-config
 # Transport
 , curl
 # Libraries
@@ -49,7 +49,7 @@ stdenv.mkDerivation rec {
     sha256 = "1v2nsz7s0jj0wmqabzk6akcf1353rachm1lfq77hxbq9z5pw8pgb";
   };
 
-  nativeBuildInputs = [ cmake pkgconfig wrapGAppsHook makeWrapper ];
+  nativeBuildInputs = [ cmake pkg-config wrapGAppsHook makeWrapper ];
 
   buildInputs = [
     curl
@@ -80,17 +80,15 @@ stdenv.mkDerivation rec {
     "-DBUILD_TESTS=${if doCheck then "ON" else "OFF"}"
   ];
 
-  enableParallelBuilding = true;
-
   checkInputs = [ gtest ];
   doCheck = !stdenv.isAarch64; # single failure that I can't explain
 
   preFixup = ''
-    gappsWrapperArgs+=(--suffix PATH : ${stdenv.lib.makeBinPath [ dbus ]})
+    gappsWrapperArgs+=(--suffix PATH : ${lib.makeBinPath [ dbus ]})
     wrapProgram $out/bin/rt2rtng --prefix PYTHONPATH : $PYTHONPATH
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "An internet radio player for linux";
     homepage = "https://github.com/ebruck/radiotray-ng";
     license = licenses.gpl3;
diff --git a/pkgs/applications/audio/rakarrack/default.nix b/pkgs/applications/audio/rakarrack/default.nix
index 4548f9ba624..6d5d1ca860d 100644
--- a/pkgs/applications/audio/rakarrack/default.nix
+++ b/pkgs/applications/audio/rakarrack/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, alsaLib, alsaUtils, fltk, libjack2, libXft,
+{ lib, stdenv, fetchurl, alsa-lib, alsa-utils, fltk, libjack2, libXft,
 libXpm, libjpeg, libpng, libsamplerate, libsndfile, zlib }:
 
 stdenv.mkDerivation  rec {
@@ -14,10 +14,10 @@ stdenv.mkDerivation  rec {
 
   patches = [ ./fltk-path.patch ];
 
-  buildInputs = [ alsaLib alsaUtils fltk libjack2 libXft libXpm libjpeg
+  buildInputs = [ alsa-lib alsa-utils fltk libjack2 libXft libXpm libjpeg
     libpng libsamplerate libsndfile zlib ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Multi-effects processor emulating a guitar effects pedalboard";
     homepage = "http://rakarrack.sourceforge.net";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/real_time_config_quick_scan/default.nix b/pkgs/applications/audio/real_time_config_quick_scan/default.nix
index 5193d2899d3..8bc2553f521 100644
--- a/pkgs/applications/audio/real_time_config_quick_scan/default.nix
+++ b/pkgs/applications/audio/real_time_config_quick_scan/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, perlPackages, makeWrapper }:
+{ lib, stdenv, fetchFromGitHub, perlPackages, makeWrapper }:
 
 stdenv.mkDerivation rec {
   pname = "realTimeConfigQuickScan";
@@ -11,7 +11,8 @@ stdenv.mkDerivation rec {
     sha256 = "16kanzp5i353x972zjkwgi3m8z90wc58613mlfzb0n01djdnm6k5";
   };
 
-  buildInputs = [ perlPackages.perl makeWrapper ];
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ perlPackages.perl ];
 
   dontBuild = true;
 
@@ -41,7 +42,7 @@ stdenv.mkDerivation rec {
       --set PERL5LIB "$out/share/$pname:${with perlPackages; makePerlPath [ Tk ]}"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Linux configuration checker for systems to be used for real-time audio";
     homepage = "https://github.com/raboof/realtimeconfigquickscan";
     license = licenses.gpl2Plus;
diff --git a/pkgs/applications/audio/reaper/default.nix b/pkgs/applications/audio/reaper/default.nix
index e15addd78b1..773560c83ca 100644
--- a/pkgs/applications/audio/reaper/default.nix
+++ b/pkgs/applications/audio/reaper/default.nix
@@ -1,60 +1,81 @@
-{ stdenv, fetchurl, autoPatchelfHook, makeWrapper
-, alsaLib, xorg, libjack2
-, gtk3, pango, gdk-pixbuf, cairo, glib, freetype
-, libpulseaudio, xdg_utils
+{ config, lib, stdenv
+, fetchurl
+, autoPatchelfHook
+, makeWrapper
+
+, alsa-lib
+, gtk3
+, lame
+, ffmpeg
+, vlc
+, xdg-utils
+, which
+
+, jackSupport ? true, libjack2
+, pulseaudioSupport ? config.pulseaudio or true, libpulseaudio
 }:
 
 stdenv.mkDerivation rec {
   pname = "reaper";
-  version = "6.12c";
+  version = "6.29";
 
   src = fetchurl {
-    url = "https://www.reaper.fm/files/${stdenv.lib.versions.major version}.x/reaper${builtins.replaceStrings ["."] [""] version}_linux_x86_64.tar.xz";
-    sha256 = "1xnd4qvgwsz1dmgb656i611776dqcb84m1gh30i8jhpwcr9ym46w";
+    url = "https://www.reaper.fm/files/${lib.versions.major version}.x/reaper${builtins.replaceStrings ["."] [""] version}_linux_${stdenv.targetPlatform.qemuArch}.tar.xz";
+    hash = if stdenv.isx86_64 then "sha256-DOul6J2Y7szy4+Q4SeO0uG6PSuU+MELE7ky8W3mSpTQ="
+                              else "sha256-67iTi6bFlbQtyCjnPIjK8K/3aV+zaCsWBRCWmgYonM4=";
   };
 
-  nativeBuildInputs = [ autoPatchelfHook makeWrapper ];
+  nativeBuildInputs = [
+    autoPatchelfHook
+    makeWrapper
+    xdg-utils # Required for desktop integration
+    which
+  ];
 
   buildInputs = [
-    alsaLib
-
-    xorg.libX11
-    xorg.libXi
-
-    gdk-pixbuf
-    pango
-    cairo
-    glib
-    freetype
-
-    xdg_utils
+    alsa-lib
+    stdenv.cc.cc.lib # reaper and libSwell need libstdc++.so.6
+    gtk3
   ];
 
   runtimeDependencies = [
-    gtk3
-  ];
+    gtk3 # libSwell needs libgdk-3.so.0
+  ]
+  ++ lib.optional jackSupport libjack2
+  ++ lib.optional pulseaudioSupport libpulseaudio;
 
   dontBuild = true;
 
   installPhase = ''
-    XDG_DATA_HOME="$out/share" ./install-reaper.sh \
+    runHook preInstall
+
+    HOME="$out/share" XDG_DATA_HOME="$out/share" ./install-reaper.sh \
       --install $out/opt \
       --integrate-user-desktop
     rm $out/opt/REAPER/uninstall-reaper.sh
 
+    # Dynamic loading of plugin dependencies does not adhere to rpath of
+    # reaper executable that gets modified with runtimeDependencies.
+    # Patching each plugin with DT_NEEDED is cumbersome and requires
+    # hardcoding of API versions of each dependency.
+    # Setting the rpath of the plugin shared object files does not
+    # seem to have an effect for some plugins.
+    # We opt for wrapping the executable with LD_LIBRARY_PATH prefix.
     wrapProgram $out/opt/REAPER/reaper \
-      --prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ libpulseaudio libjack2 ]}"
+      --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ lame ffmpeg vlc ]}"
 
     mkdir $out/bin
     ln -s $out/opt/REAPER/reaper $out/bin/
     ln -s $out/opt/REAPER/reamote-server $out/bin/
+
+    runHook postInstall
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Digital audio workstation";
     homepage = "https://www.reaper.fm/";
     license = licenses.unfree;
-    platforms = [ "x86_64-linux" ];
-    maintainers = with maintainers; [ jfrankenau ];
+    platforms = [ "x86_64-linux" "aarch64-linux" ];
+    maintainers = with maintainers; [ jfrankenau ilian ];
   };
 }
diff --git a/pkgs/applications/audio/redoflacs/default.nix b/pkgs/applications/audio/redoflacs/default.nix
index 140b163e25c..999dc90a6e4 100644
--- a/pkgs/applications/audio/redoflacs/default.nix
+++ b/pkgs/applications/audio/redoflacs/default.nix
@@ -5,8 +5,6 @@
 , installShellFiles
 , flac
 , sox
-, withAucdtect ? false
-, aucdtect ? null
 }:
 
 stdenv.mkDerivation rec {
@@ -36,7 +34,7 @@ stdenv.mkDerivation rec {
 
   postFixup = ''
     wrapProgram $out/bin/redoflacs \
-      --prefix PATH : ${stdenv.lib.makeBinPath ([ flac sox ] ++ lib.optional withAucdtect aucdtect)}
+      --prefix PATH : ${lib.makeBinPath ([ flac sox ])}
   '';
 
   meta = with lib; {
diff --git a/pkgs/applications/audio/renoise/default.nix b/pkgs/applications/audio/renoise/default.nix
index 1cbd5b3afa2..acd1d80c86d 100644
--- a/pkgs/applications/audio/renoise/default.nix
+++ b/pkgs/applications/audio/renoise/default.nix
@@ -1,7 +1,7 @@
-{ stdenv, fetchurl, libX11, libXext, libXcursor, libXrandr, libjack2, alsaLib
+{ lib, stdenv, fetchurl, libX11, libXext, libXcursor, libXrandr, libjack2, alsa-lib
 , mpg123, releasePath ? null }:
 
-with stdenv.lib;
+with lib;
 
 # To use the full release version:
 # 1) Sign into https://backstage.renoise.com and download the release version to some stable location.
@@ -14,31 +14,29 @@ in
 
 stdenv.mkDerivation rec {
   pname = "renoise";
-  version = "3.2.1";
+  version = "3.3.2";
 
   src =
     if stdenv.hostPlatform.system == "x86_64-linux" then
         if releasePath == null then
-		    fetchurl {
-		      urls = [
-		          "https://files.renoise.com/demo/Renoise_${urlVersion version}_Demo_Linux.tar.gz"
-		          "https://web.archive.org/web/https://files.renoise.com/demo/Renoise_${urlVersion version}_Demo_Linux.tar.gz"
-		      ];
-		      sha256 = "0dhcidgnjzd4abw0xw1waj9mazp03nbvjcr2xx09l8gnfrkvny46";
-		    }
+        fetchurl {
+          urls = [
+              "https://files.renoise.com/demo/Renoise_${urlVersion version}_Demo_Linux.tar.gz"
+              "https://web.archive.org/web/https://files.renoise.com/demo/Renoise_${urlVersion version}_Demo_Linux.tar.gz"
+          ];
+          sha256 = "0d9pnrvs93d4bwbfqxwyr3lg3k6gnzmp81m95gglzwdzczxkw38k";
+        }
         else
-        	releasePath
-    else throw "Platform is not supported by Renoise";
+          releasePath
+    else throw "Platform is not supported. Use instalation native to your platform https://www.renoise.com/";
 
-  buildInputs = [ alsaLib libjack2 libX11 libXcursor libXext libXrandr ];
+  buildInputs = [ alsa-lib libjack2 libX11 libXcursor libXext libXrandr ];
 
   installPhase = ''
     cp -r Resources $out
 
     mkdir -p $out/lib/
 
-    mv $out/AudioPluginServer* $out/lib/
-
     cp renoise $out/renoise
 
     for path in ${toString buildInputs}; do
@@ -49,6 +47,16 @@ stdenv.mkDerivation rec {
 
     mkdir $out/bin
     ln -s $out/renoise $out/bin/renoise
+
+    # Desktop item
+    mkdir -p $out/share/applications
+    cp -r Installer/renoise.desktop $out/share/applications/renoise.desktop
+
+    # Desktop item icons
+    mkdir -p $out/share/icons/hicolor/{48x48,64x64,128x128}/apps
+    cp Installer/renoise-48.png $out/share/icons/hicolor/48x48/apps/renoise.png
+    cp Installer/renoise-64.png $out/share/icons/hicolor/64x64/apps/renoise.png
+    cp Installer/renoise-128.png $out/share/icons/hicolor/128x128/apps/renoise.png
   '';
 
   postFixup = ''
@@ -56,6 +64,16 @@ stdenv.mkDerivation rec {
       --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
       --set-rpath ${mpg123}/lib:$out/lib \
       $out/renoise
+
+    for path in $out/AudioPluginServer*; do
+      patchelf \
+        --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
+        --set-rpath $out/lib \
+        $path
+    done
+
+    substituteInPlace $out/share/applications/renoise.desktop \
+      --replace Exec=renoise Exec=$out/bin/renoise
   '';
 
   meta = {
diff --git a/pkgs/applications/audio/rhvoice/default.nix b/pkgs/applications/audio/rhvoice/default.nix
index a29fcf383b8..af35ad829dd 100644
--- a/pkgs/applications/audio/rhvoice/default.nix
+++ b/pkgs/applications/audio/rhvoice/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, pkgconfig, fetchFromGitHub, sconsPackages
+{ stdenv, lib, pkg-config, fetchFromGitHub, sconsPackages
 , python, glibmm, libpulseaudio, libao }:
 
 let
@@ -15,7 +15,7 @@ in stdenv.mkDerivation {
   };
 
   nativeBuildInputs = [
-    sconsPackages.scons_3_1_2 pkgconfig
+    sconsPackages.scons_3_1_2 pkg-config
   ];
 
   buildInputs = [
diff --git a/pkgs/applications/audio/rhythmbox/default.nix b/pkgs/applications/audio/rhythmbox/default.nix
index 79560451e54..4898648599c 100644
--- a/pkgs/applications/audio/rhythmbox/default.nix
+++ b/pkgs/applications/audio/rhythmbox/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig
+{ lib, stdenv, fetchurl, pkg-config, fetchFromGitLab
 , python3
 , perl
 , perlPackages
@@ -6,7 +6,10 @@
 , intltool
 , libpeas
 , libsoup
-, gnome3
+, libsecret
+, libnotify
+, libdmapsharing
+, gnome
 , totem-pl-parser
 , tdb
 , json-glib
@@ -16,18 +19,36 @@
 , gst_plugins ? with gst_all_1; [ gst-plugins-good gst-plugins-ugly ]
 }:
 let
+
+  # The API version of libdmapsharing required by rhythmbox 3.4.4 is 3.0.
+
+  # This PR would solve the issue:
+  # https://gitlab.gnome.org/GNOME/rhythmbox/-/merge_requests/12
+  # Unfortunately applying this patch produces a rhythmbox which
+  # cannot fetch data from DAAP shares.
+
+  libdmapsharing_3 = libdmapsharing.overrideAttrs (old: rec {
+    version = "2.9.41";
+    src = fetchFromGitLab {
+      domain = "gitlab.gnome.org";
+      owner = "GNOME";
+      repo = old.pname;
+      rev = "${lib.toUpper old.pname}_${lib.replaceStrings ["."] ["_"] version}";
+      sha256 = "05kvrzf0cp3mskdy6iv7zqq24qdczl800q2dn1h4bk3d9wchgm4p";
+    };
+  });
+
+in stdenv.mkDerivation rec {
   pname = "rhythmbox";
   version = "3.4.4";
-in stdenv.mkDerivation rec {
-  name = "${pname}-${version}";
 
   src = fetchurl {
-    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz";
+    url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
     sha256 = "142xcvw4l19jyr5i72nbnrihs953pvrrzcbijjn9dxmxszbv03pf";
   };
 
   nativeBuildInputs = [
-    pkgconfig
+    pkg-config
     intltool perl perlPackages.XMLParser
     itstool
     wrapGAppsHook
@@ -42,25 +63,39 @@ in stdenv.mkDerivation rec {
     gtk3
     libpeas
     totem-pl-parser
-    gnome3.adwaita-icon-theme
+    gnome.adwaita-icon-theme
 
     gst_all_1.gstreamer
     gst_all_1.gst-plugins-base
+    gst_all_1.gst-plugins-good
+    gst_all_1.gst-plugins-bad
+    gst_all_1.gst-plugins-ugly
+    gst_all_1.gst-libav
+
+    libdmapsharing_3 # necessary for daap support
+    libsecret
+    libnotify
   ] ++ gst_plugins;
 
+  configureFlags = [
+    "--enable-daap"
+    "--enable-libnotify"
+    "--with-libsecret"
+  ];
+
   enableParallelBuilding = true;
 
   passthru = {
-    updateScript = gnome3.updateScript {
+    updateScript = gnome.updateScript {
       packageName = pname;
       versionPolicy = "none";
     };
   };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://wiki.gnome.org/Apps/Rhythmbox";
     description = "A music playing application for GNOME";
-    license = licenses.gpl2;
+    license = licenses.gpl2Plus;
     platforms = platforms.linux;
     maintainers = [ maintainers.rasendubi ];
   };
diff --git a/pkgs/applications/audio/rkrlv2/default.nix b/pkgs/applications/audio/rkrlv2/default.nix
index 59979c41083..19fca6af988 100644
--- a/pkgs/applications/audio/rkrlv2/default.nix
+++ b/pkgs/applications/audio/rkrlv2/default.nix
@@ -1,26 +1,26 @@
-{ stdenv, fetchFromGitHub,
-automake, pkgconfig, lv2, fftw, cmake, xorg, libjack2, libsamplerate, libsndfile
-}:
+{ lib, stdenv, fetchFromGitHub, pkg-config, lv2, fftw, cmake, libXpm
+, libXft, libjack2, libsamplerate, libsndfile }:
 
 stdenv.mkDerivation rec {
-  repo = "rkrlv2";
-  name = "${repo}-b2.0";
+  pname = "rkrlv2";
+  version = "beta_3";
 
   src = fetchFromGitHub {
     owner = "ssj71";
-    inherit repo;
-    rev = "beta_2";
-    sha256 = "128jcilbrd1l65c01w2bazsb21x78mng0jjkhi3x9crf1n9qbh2m";
+    repo = pname;
+    rev = version;
+    sha256 = "WjpPNUEYw4aGrh57J+7kkxKFXgCJWNaWAmueFbNUJJo=";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = with xorg; [ automake lv2 fftw cmake libXpm libjack2 libsamplerate libsndfile libXft ];
+  nativeBuildInputs = [ cmake pkg-config ];
+  buildInputs = [ libXft libXpm lv2 fftw libjack2 libsamplerate libsndfile ];
 
-  meta = {
+  meta = with lib; {
     description = "Rakarrak effects ported to LV2";
     homepage = "https://github.com/ssj71/rkrlv2";
-    license = stdenv.lib.licenses.gpl3;
-    maintainers = [ stdenv.lib.maintainers.joelmo ];
-    platforms = stdenv.lib.platforms.linux;
+    license = licenses.gpl2Only;
+    maintainers = [ maintainers.joelmo ];
+    platforms = platforms.unix;
+    broken = stdenv.isAarch64; # g++: error: unrecognized command line option '-mfpmath=sse'
   };
 }
diff --git a/pkgs/applications/audio/rosegarden/default.nix b/pkgs/applications/audio/rosegarden/default.nix
index 8bda179df14..38d8a876962 100644
--- a/pkgs/applications/audio/rosegarden/default.nix
+++ b/pkgs/applications/audio/rosegarden/default.nix
@@ -1,14 +1,14 @@
-{ stdenv, fetchurl, cmake, makedepend, perl, pkgconfig, qttools, wrapQtAppsHook
-, dssi, fftwSinglePrec, ladspaH, ladspaPlugins, libjack2, alsaLib
+{ lib, stdenv, fetchurl, cmake, makedepend, perl, pkg-config, qttools, wrapQtAppsHook
+, dssi, fftwSinglePrec, ladspaH, ladspaPlugins, libjack2, alsa-lib
 , liblo, libsamplerate, libsndfile, lirc ? null, lrdf, qtbase }:
 
 stdenv.mkDerivation (rec {
-  version = "20.06";
+  version = "20.12";
   pname = "rosegarden";
 
   src = fetchurl {
     url = "mirror://sourceforge/rosegarden/${pname}-${version}.tar.bz2";
-    sha256 = "1i9x9rkqwwdrk77xl5ra8i48cjirbc7fbisnj0nnclccwaq0wk6r";
+    sha256 = "sha256-iGaEr8WFipV4I00fhFGI2xMBFPf784IIxNXs2hUTHFs=";
   };
 
   patchPhase = ''
@@ -16,7 +16,7 @@ stdenv.mkDerivation (rec {
   '';
 
   nativeBuildInputs =
-    [ cmake makedepend perl pkgconfig qttools wrapQtAppsHook ];
+    [ cmake makedepend perl pkg-config qttools wrapQtAppsHook ];
 
   buildInputs = [
     dssi
@@ -30,12 +30,10 @@ stdenv.mkDerivation (rec {
     lirc
     lrdf
     qtbase
-    alsaLib
+    alsa-lib
   ];
 
-  enableParallelBuilding = true;
-
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://www.rosegardenmusic.com/";
     description = "Music composition and editing environment";
     longDescription = ''
diff --git a/pkgs/applications/audio/rubyripper/default.nix b/pkgs/applications/audio/rubyripper/default.nix
index eb6de843180..e8a275db98d 100644
--- a/pkgs/applications/audio/rubyripper/default.nix
+++ b/pkgs/applications/audio/rubyripper/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ruby, cdparanoia, makeWrapper }:
+{ lib, stdenv, fetchurl, ruby, cdparanoia, makeWrapper }:
 stdenv.mkDerivation rec {
   version = "0.6.2";
   pname = "rubyripper";
@@ -10,14 +10,15 @@ stdenv.mkDerivation rec {
   preConfigure = "patchShebangs .";
 
   configureFlags = [ "--enable-cli" ];
-  buildInputs = [ ruby cdparanoia makeWrapper ];
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ ruby cdparanoia ];
   postInstall = ''
     wrapProgram "$out/bin/rrip_cli" \
       --prefix PATH : "${ruby}/bin" \
       --prefix PATH : "${cdparanoia}/bin"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "High quality CD audio ripper";
     platforms = platforms.linux;
     license = licenses.gpl3;
diff --git a/pkgs/applications/audio/rymcast/default.nix b/pkgs/applications/audio/rymcast/default.nix
new file mode 100644
index 00000000000..92d3151c835
--- /dev/null
+++ b/pkgs/applications/audio/rymcast/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenv, fetchzip, autoPatchelfHook, makeWrapper
+, alsa-lib, curl, gtk3, webkitgtk, zenity }:
+
+stdenv.mkDerivation rec {
+  pname = "rymcast";
+  version = "1.0.6";
+
+  src = fetchzip {
+    url = "https://www.inphonik.com/files/rymcast/rymcast-${version}-linux-x64.tar.gz";
+    hash = "sha256:0vjjhfrwdibjjgz3awbg30qxkjrzc4cya1f4pigwjh3r0vvrq0ga";
+    stripRoot = false;
+  };
+
+  nativeBuildInputs = [ autoPatchelfHook makeWrapper ];
+
+  buildInputs = [ alsa-lib curl gtk3 stdenv.cc.cc.lib webkitgtk zenity ];
+
+  installPhase = ''
+    mkdir -p "$out/bin"
+    cp RYMCast "$out/bin/"
+    wrapProgram "$out/bin/RYMCast" \
+      --set PATH "${lib.makeBinPath [ zenity ]}"
+  '';
+
+  meta = with lib; {
+    description = "Player for Mega Drive/Genesis VGM files";
+    homepage = "https://www.inphonik.com/products/rymcast-genesis-vgm-player/";
+    license = licenses.unfree;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ astsmtl ];
+  };
+}
diff --git a/pkgs/applications/audio/samplv1/default.nix b/pkgs/applications/audio/samplv1/default.nix
index 86f8f666d80..8c707051686 100644
--- a/pkgs/applications/audio/samplv1/default.nix
+++ b/pkgs/applications/audio/samplv1/default.nix
@@ -1,19 +1,22 @@
-{ stdenv, fetchurl, pkgconfig, libjack2, alsaLib, liblo, libsndfile, lv2, qt5 }:
+{ mkDerivation, lib, fetchurl, pkg-config, libjack2
+, alsa-lib, liblo, libsndfile, lv2, qtbase, qttools
+, rubberband
+}:
 
-stdenv.mkDerivation rec {
+mkDerivation rec {
   pname = "samplv1";
-  version = "0.9.13";
+  version = "0.9.20";
 
   src = fetchurl {
     url = "mirror://sourceforge/samplv1/${pname}-${version}.tar.gz";
-    sha256 = "0clsp6s5qfnh0xaxbd35vq2ppi72q9dfayrzlgl73800a8p7gh9m";
+    sha256 = "sha256-9tm72lV9i/155TVweNwO2jpPsCJkh6r82g7Z1wCI1ho=";
   };
 
-  buildInputs = [ libjack2 alsaLib liblo libsndfile lv2 qt5.qtbase qt5.qttools];
+  nativeBuildInputs = [ qttools pkg-config ];
 
-  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libjack2 alsa-lib liblo libsndfile lv2 qtbase rubberband ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "An old-school all-digital polyphonic sampler synthesizer with stereo fx";
     homepage = "http://samplv1.sourceforge.net/";
     license = licenses.gpl2Plus;
diff --git a/pkgs/applications/audio/sayonara/default.nix b/pkgs/applications/audio/sayonara/default.nix
index c4258174500..651ac20db22 100644
--- a/pkgs/applications/audio/sayonara/default.nix
+++ b/pkgs/applications/audio/sayonara/default.nix
@@ -1,48 +1,37 @@
 { mkDerivation
 , cmake
-, fetchgit
+, fetchFromGitLab
+, nix-update-script
 , gst_all_1
 , lib
 , libpulseaudio
 , ninja
 , pcre
-, pkgconfig
+, pkg-config
 , qtbase
 , qttools
 , taglib
 , zlib
+, python3
 }:
 
+let
+  py = python3.withPackages (ps: with ps; [
+    pydbus
+  ]);
+in
 mkDerivation rec {
-  pname = "sayonara-player";
-  version = "1.5.1-stable5";
+  pname = "sayonara";
+  version = "1.6.0-beta7";
 
-  src = fetchgit {
-    url = "https://git.sayonara-player.com/sayonara.git";
+  src = fetchFromGitLab {
+    owner = "luciocarreras";
+    repo = "sayonara-player";
     rev = version;
-    sha256 = "13l7r3gaszrkyf4z8rdijfzxvcnilax4ki2mcm30wqk8d4g4qdzj";
+    sha256 = "14svszfldx32vn937rszd21rgl31vb5kzs0hnrg41ygx0br61rvd";
   };
 
-  # all this can go with version 1.5.2
-  postPatch = ''
-    # if we don't delete this, sayonara will look here instead of the provided taglib
-    rm -r src/3rdParty/taglib
-
-    for f in \
-      src/DBus/DBusNotifications.cpp \
-      src/Gui/Resources/Icons/CMakeLists.txt \
-      src/Utils/Utils.cpp \
-      test/Util/FileHelperTest.cpp \
-      ; do
-
-      substituteInPlace $f --replace /usr $out
-    done
-
-    substituteInPlace src/Components/Shutdown/Shutdown.cpp \
-      --replace /usr/bin/systemctl systemctl
-  '';
-
-  nativeBuildInputs = [ cmake ninja pkgconfig qttools ];
+  nativeBuildInputs = [ cmake ninja pkg-config qttools ];
 
   buildInputs = [
     libpulseaudio
@@ -50,6 +39,7 @@ mkDerivation rec {
     qtbase
     taglib
     zlib
+    py
   ]
   ++ (with gst_all_1; [
     gstreamer
@@ -72,6 +62,12 @@ mkDerivation rec {
     qtWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0")
   '';
 
+  passthru = {
+    updateScript = nix-update-script {
+      attrPath = pname;
+    };
+  };
+
   meta = with lib; {
     description = "Sayonara music player";
     homepage = "https://sayonara-player.com/";
diff --git a/pkgs/applications/audio/sc68/default.nix b/pkgs/applications/audio/sc68/default.nix
new file mode 100644
index 00000000000..2ea9b123c08
--- /dev/null
+++ b/pkgs/applications/audio/sc68/default.nix
@@ -0,0 +1,39 @@
+{ lib, stdenv
+, fetchsvn
+, pkg-config
+, which
+, autoconf
+, automake
+, libtool
+, hexdump
+, libao
+, zlib
+, curl
+}:
+
+stdenv.mkDerivation rec {
+  pname = "sc68";
+  version = "unstable-2020-05-18";
+
+  src = fetchsvn {
+    url = "svn://svn.code.sf.net/p/sc68/code/";
+    rev = "693";
+    sha256 = "0liz5yjwiy41y160ag83zz9s5l8mk72fscxgvjv9g5qf4gwffnfa";
+  };
+
+  preConfigure = "tools/svn-bootstrap.sh";
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ pkg-config which autoconf automake libtool hexdump ];
+
+  buildInputs = [ libao zlib curl ];
+
+  meta = with lib; {
+    description = "Atari ST and Amiga music player";
+    homepage = "http://sc68.atari.org/project.html";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ OPNA2608 ];
+    platforms = platforms.all;
+  };
+}
diff --git a/pkgs/applications/audio/schismtracker/default.nix b/pkgs/applications/audio/schismtracker/default.nix
index 7f6762958a3..ba193f70194 100644
--- a/pkgs/applications/audio/schismtracker/default.nix
+++ b/pkgs/applications/audio/schismtracker/default.nix
@@ -1,29 +1,35 @@
-{ stdenv, fetchFromGitHub
+{ lib
+, stdenv
+, fetchFromGitHub
 , autoreconfHook
-, alsaLib, python, SDL }:
+, alsa-lib
+, python
+, SDL
+}:
 
 stdenv.mkDerivation rec {
   pname = "schismtracker";
-  version = "20200412";
+  version = "20210525";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = version;
-    sha256 = "1n6cgjiw3vkv7a1h1nki5syyjxjb6icknr9s049w2jrag10bxssn";
+    sha256 = "06ybkbqry7f7lmzgwb9s7ipafshl5gdj98lcjsjkcbnywj8r9b3h";
   };
 
-  configureFlags = [ "--enable-dependency-tracking" ];
+  configureFlags = [ "--enable-dependency-tracking" ]
+    ++ lib.optional stdenv.isDarwin "--disable-sdltest";
 
   nativeBuildInputs = [ autoreconfHook python ];
 
-  buildInputs = [ SDL ] ++ stdenv.lib.optional stdenv.isLinux alsaLib;
+  buildInputs = [ SDL ] ++ lib.optional stdenv.isLinux alsa-lib;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Music tracker application, free reimplementation of Impulse Tracker";
     homepage = "http://schismtracker.org/";
-    license = licenses.gpl2;
-    platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ];
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
     maintainers = with maintainers; [ ftrvxmtrx ];
   };
 }
diff --git a/pkgs/applications/audio/scream/default.nix b/pkgs/applications/audio/scream/default.nix
new file mode 100644
index 00000000000..c9eef3ff540
--- /dev/null
+++ b/pkgs/applications/audio/scream/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, lib, config, fetchFromGitHub, cmake, pkg-config
+, alsaSupport ? stdenv.isLinux, alsa-lib
+, pulseSupport ? config.pulseaudio or stdenv.isLinux, libpulseaudio
+, jackSupport ? false, libjack2
+}:
+
+stdenv.mkDerivation rec {
+  pname = "scream";
+  version = "3.7";
+
+  src = fetchFromGitHub {
+    owner = "duncanthrax";
+    repo = pname;
+    rev = version;
+    sha256 = "0d9abrw62cd08lcg4il415b7ap89iggbljvbl5jqv2y23il0pvyz";
+  };
+
+  buildInputs = lib.optional pulseSupport libpulseaudio
+    ++ lib.optional jackSupport libjack2
+    ++ lib.optional alsaSupport alsa-lib;
+  nativeBuildInputs = [ cmake pkg-config ];
+
+  cmakeFlags = [
+    "-DPULSEAUDIO_ENABLE=${if pulseSupport then "ON" else "OFF"}"
+    "-DALSA_ENABLE=${if alsaSupport then "ON" else "OFF"}"
+    "-DJACK_ENABLE=${if jackSupport then "ON" else "OFF"}"
+  ];
+
+  cmakeDir = "../Receivers/unix";
+
+  doInstallCheck = true;
+  installCheckPhase = ''
+    set +o pipefail
+
+    # Programs exit with code 1 when testing help, so grep for a string
+    $out/bin/scream -h 2>&1 | grep -q Usage:
+  '';
+
+  meta = with lib; {
+    description = "Audio receiver for the Scream virtual network sound card";
+    homepage = "https://github.com/duncanthrax/scream";
+    license = licenses.mspl;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ arcnmx ];
+  };
+}
diff --git a/pkgs/applications/audio/seq24/default.nix b/pkgs/applications/audio/seq24/default.nix
index c8347d70b1d..f586a1592f9 100644
--- a/pkgs/applications/audio/seq24/default.nix
+++ b/pkgs/applications/audio/seq24/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, alsaLib, gtkmm2, libjack2, pkgconfig }:
+{ lib, stdenv, fetchurl, alsa-lib, gtkmm2, libjack2, pkg-config }:
 
 stdenv.mkDerivation  rec {
   pname = "seq24";
@@ -11,10 +11,10 @@ stdenv.mkDerivation  rec {
 
   patches = [ ./mutex_no_nameclash.patch ];
 
-  buildInputs = [ alsaLib gtkmm2 libjack2 ];
-  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ alsa-lib gtkmm2 libjack2 ];
+  nativeBuildInputs = [ pkg-config ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Minimal loop based midi sequencer";
     homepage = "http://www.filter24.org/seq24";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/seq66/default.nix b/pkgs/applications/audio/seq66/default.nix
new file mode 100644
index 00000000000..0132b967900
--- /dev/null
+++ b/pkgs/applications/audio/seq66/default.nix
@@ -0,0 +1,37 @@
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, pkg-config, qttools, which
+, alsa-lib, libjack2, liblo, qtbase
+}:
+
+stdenv.mkDerivation rec {
+  pname = "seq66";
+  version = "0.90.5";
+
+  src = fetchFromGitHub {
+    owner = "ahlstromcj";
+    repo = pname;
+    rev = version;
+    sha256 = "1jvra1wzlycfpvffnqidk264zw6fyl4fsghkw5256ldk22aalmq9";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkg-config qttools which ];
+
+  buildInputs = [ alsa-lib libjack2 liblo qtbase ];
+
+  postPatch = ''
+    for d in libseq66/include libseq66/src libsessions/include libsessions/src seq_qt5/src seq_rtmidi/include seq_rtmidi/src Seqtool/src; do
+      substituteInPlace "$d/Makefile.am" --replace '$(git_info)' '${version}'
+    done
+  '';
+
+  enableParallelBuilding = true;
+
+  dontWrapQtApps = true;
+
+  meta = with lib; {
+    homepage = "https://github.com/ahlstromcj/seq66";
+    description = "Loop based midi sequencer with Qt GUI derived from seq24 and sequencer64";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ orivej ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/audio/setbfree/default.nix b/pkgs/applications/audio/setbfree/default.nix
index a7500f8c6a5..67851611f76 100644
--- a/pkgs/applications/audio/setbfree/default.nix
+++ b/pkgs/applications/audio/setbfree/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchzip, alsaLib, freetype, ftgl, libjack2, libX11, lv2
-, libGLU, libGL, pkgconfig, ttf_bitstream_vera
+{ lib, stdenv, fetchzip, alsa-lib, freetype, ftgl, libjack2, libX11, lv2
+, libGLU, libGL, pkg-config, ttf_bitstream_vera
 }:
 
 stdenv.mkDerivation  rec {
@@ -17,13 +17,13 @@ stdenv.mkDerivation  rec {
       -i b_synth/Makefile
   '';
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [
-    alsaLib freetype ftgl libjack2 libX11 lv2 libGLU libGL
+    alsa-lib freetype ftgl libjack2 libX11 lv2 libGLU libGL
     ttf_bitstream_vera
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A DSP tonewheel organ emulator";
     homepage = "http://setbfree.org";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/sfizz/default.nix b/pkgs/applications/audio/sfizz/default.nix
index b4ff5fc56d5..702f5c3982a 100644
--- a/pkgs/applications/audio/sfizz/default.nix
+++ b/pkgs/applications/audio/sfizz/default.nix
@@ -1,27 +1,56 @@
-{ stdenv, fetchFromGitHub , cmake, libjack2, libsndfile, pkgconfig }:
+{ lib, stdenv, fetchFromGitHub
+, libjack2, libsndfile, xorg, freetype, libxkbcommon
+, cairo, glib, gnome, flac, libogg, libvorbis, libopus
+, cmake, pkg-config
+}:
 
 stdenv.mkDerivation rec {
   pname = "sfizz";
-  version = "0.4.0";
+  version = "0.5.1";
 
   src = fetchFromGitHub {
     owner = "sfztools";
     repo = pname;
     rev = version;
-    sha256 = "0zpmvmh7n0064rxfqxb7z9rnz493k7yq7nl0vxppqnasg97jn5f3";
+    sha256 = "sha256-3RdY5+BPsdk6vctDy24w5aJsVOV9qzSgXs62Pm5UEKs=";
     fetchSubmodules = true;
   };
 
-  nativeBuildInputs = [ cmake pkgconfig ];
+  buildInputs = [
+    libjack2
+    libsndfile
+    flac
+    libogg
+    libvorbis
+    libopus
+    xorg.libX11
+    xorg.libxcb
+    xorg.libXau
+    xorg.libXdmcp
+    xorg.xcbutil
+    xorg.xcbutilcursor
+    xorg.xcbutilrenderutil
+    xorg.xcbutilkeysyms
+    xorg.xcbutilimage
+    libxkbcommon
+    cairo
+    glib
+    gnome.zenity
+    freetype
+  ];
+  nativeBuildInputs = [ cmake pkg-config ];
 
-  buildInputs = [ libjack2 libsndfile ];
+  postPatch = ''
+  substituteInPlace editor/external/vstgui4/vstgui/lib/platform/linux/x11fileselector.cpp \
+    --replace '"/usr/bin/zenity' '"${gnome.zenity}/bin/zenity'
+  '';
 
   cmakeFlags = [
     "-DCMAKE_BUILD_TYPE=Release"
     "-DSFIZZ_TESTS=ON"
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/sfztools/sfizz";
     description = "SFZ jack client and LV2 plugin";
     license = licenses.bsd2;
diff --git a/pkgs/applications/audio/sfxr/default.nix b/pkgs/applications/audio/sfxr/default.nix
index fbd0f3c5def..aed27ecdba5 100644
--- a/pkgs/applications/audio/sfxr/default.nix
+++ b/pkgs/applications/audio/sfxr/default.nix
@@ -1,6 +1,6 @@
-{ stdenv
+{ lib, stdenv
 , fetchurl
-, pkgconfig
+, pkg-config
 , desktop-file-utils
 , SDL
 , gtk3
@@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
   '';
 
   nativeBuildInputs = [
-    pkgconfig
+    pkg-config
     desktop-file-utils
   ];
 
@@ -45,7 +45,7 @@ stdenv.mkDerivation rec {
 
   makeFlags = [ "DESTDIR=$(out)" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://www.drpetter.se/project_sfxr.html";
     description = "A videogame sound effect generator";
     license = licenses.mit;
diff --git a/pkgs/applications/audio/shntool/default.nix b/pkgs/applications/audio/shntool/default.nix
index de18f3c2ce8..8b4f736ab1c 100644
--- a/pkgs/applications/audio/shntool/default.nix
+++ b/pkgs/applications/audio/shntool/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, flac }:
+{ lib, stdenv, fetchurl, flac }:
 
 stdenv.mkDerivation {
   version = "3.0.10";
@@ -14,8 +14,8 @@ stdenv.mkDerivation {
   meta = {
     description = "Multi-purpose WAVE data processing and reporting utility";
     homepage = "http://www.etree.org/shnutils/shntool/";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.all;
-    maintainers = with stdenv.lib.maintainers; [ jcumming ];
+    license = lib.licenses.gpl2Plus;
+    platforms = lib.platforms.all;
+    maintainers = with lib.maintainers; [ jcumming ];
   };
 }
diff --git a/pkgs/applications/audio/shortwave/default.nix b/pkgs/applications/audio/shortwave/default.nix
index 055694fb40f..0f4ffa14228 100644
--- a/pkgs/applications/audio/shortwave/default.nix
+++ b/pkgs/applications/audio/shortwave/default.nix
@@ -1,50 +1,55 @@
 { stdenv
+, lib
 , fetchFromGitLab
-, cargo
 , dbus
 , desktop-file-utils
 , gdk-pixbuf
 , gettext
+, gitMinimal
 , glib
 , gst_all_1
-, gtk3
-, libhandy
+, gtk4
+, libadwaita
 , meson
 , ninja
 , openssl
 , pkg-config
 , python3
-, rust
-, rustc
 , rustPlatform
 , sqlite
 , wrapGAppsHook
 }:
 
-rustPlatform.buildRustPackage rec {
+stdenv.mkDerivation rec {
   pname = "shortwave";
-  version = "1.1.1";
+  version = "2.0.1";
 
   src = fetchFromGitLab {
     domain = "gitlab.gnome.org";
     owner = "World";
     repo = "Shortwave";
     rev = version;
-    sha256 = "1vlhp2ss06j41simjrrjg38alp85jddhqyvccy6bhfzm0gzynwld";
+    sha256 = "sha256-25qPb7qlqCwYJzl4qZxAZYx5asxSlXBlc/0dGyBdk1o=";
   };
 
-  cargoSha256 = "181699rlpr5dszc18wg0kbss3gfskxaz9lpxpgsc4yfb6ip89qnk";
+  cargoDeps = rustPlatform.fetchCargoTarball {
+    inherit src;
+    name = "${pname}-${version}";
+    hash = "sha256-00dQXcSNmdZb2nSLG3q7jm4sugF9XR4LbH0OmcuHVxA=";
+  };
 
   nativeBuildInputs = [
-    cargo
     desktop-file-utils
     gettext
+    gitMinimal
     glib # for glib-compile-schemas
     meson
     ninja
     pkg-config
     python3
-    rustc
+    rustPlatform.rust.cargo
+    rustPlatform.cargoSetupHook
+    rustPlatform.rust.rustc
     wrapGAppsHook
   ];
 
@@ -52,8 +57,8 @@ rustPlatform.buildRustPackage rec {
     dbus
     gdk-pixbuf
     glib
-    gtk3
-    libhandy
+    gtk4
+    libadwaita
     openssl
     sqlite
   ] ++ (with gst_all_1; [
@@ -63,17 +68,11 @@ rustPlatform.buildRustPackage rec {
     gst-plugins-bad
   ]);
 
-  # Don't use buildRustPackage phases, only use it for rust deps setup
-  configurePhase = null;
-  buildPhase = null;
-  checkPhase = null;
-  installPhase = null;
-
   postPatch = ''
     patchShebangs build-aux/meson/postinstall.py
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://gitlab.gnome.org/World/Shortwave";
     description = "Find and listen to internet radio stations";
     longDescription = ''
diff --git a/pkgs/applications/audio/sidplayfp/default.nix b/pkgs/applications/audio/sidplayfp/default.nix
index 2ebf56fee52..b27593626ef 100644
--- a/pkgs/applications/audio/sidplayfp/default.nix
+++ b/pkgs/applications/audio/sidplayfp/default.nix
@@ -1,40 +1,54 @@
 { stdenv
 , lib
-, fetchurl
-, pkgconfig
+, fetchFromGitHub
+, nix-update-script
+, autoreconfHook
+, perl
+, pkg-config
 , libsidplayfp
 , alsaSupport ? stdenv.hostPlatform.isLinux
-, alsaLib
+, alsa-lib
 , pulseSupport ? stdenv.hostPlatform.isLinux
 , libpulseaudio
+, out123Support ? stdenv.hostPlatform.isDarwin
+, mpg123
 }:
 
-assert alsaSupport -> alsaLib != null;
-assert pulseSupport -> libpulseaudio != null;
-let
-  inherit (lib) optional;
-  inherit (lib.versions) majorMinor;
-in
 stdenv.mkDerivation rec {
   pname = "sidplayfp";
-  version = "2.0.2";
+  version = "2.2.0";
 
-  src = fetchurl {
-    url = "mirror://sourceforge/sidplay-residfp/sidplayfp/${majorMinor version}/${pname}-${version}.tar.gz";
-    sha256 = "1s2dfs9z1hwarpfzawg11wax9nh0zcqx4cafwq7iysckyg4scz4k";
+  src = fetchFromGitHub {
+    owner = "libsidplayfp";
+    repo = "sidplayfp";
+    rev = "v${version}";
+    sha256 = "sha256-hN7225lhuYyo4wPDiiEc9FaPg90pZ13mLw93V8tb/P0=";
   };
 
-  nativeBuildInputs = [ pkgconfig ]
-    ++ optional alsaSupport alsaLib
-    ++ optional pulseSupport libpulseaudio;
+  nativeBuildInputs = [ autoreconfHook perl pkg-config ];
 
-  buildInputs = [ libsidplayfp ];
+  buildInputs = [ libsidplayfp ]
+    ++ lib.optional alsaSupport alsa-lib
+    ++ lib.optional pulseSupport libpulseaudio
+    ++ lib.optional out123Support mpg123;
+
+  configureFlags = lib.optionals out123Support [
+    "--with-out123"
+  ];
+
+  enableParallelBuilding = true;
+
+  passthru = {
+    updateScript = nix-update-script {
+      attrPath = pname;
+    };
+  };
 
   meta = with lib; {
     description = "A SID player using libsidplayfp";
-    homepage = "https://sourceforge.net/projects/sidplay-residfp/";
+    homepage = "https://github.com/libsidplayfp/sidplayfp";
     license = with licenses; [ gpl2Plus ];
-    maintainers = with maintainers; [ dezgeg ];
-    platforms = with platforms; linux;
+    maintainers = with maintainers; [ dezgeg OPNA2608 ];
+    platforms = platforms.all;
   };
 }
diff --git a/pkgs/applications/audio/sisco.lv2/default.nix b/pkgs/applications/audio/sisco.lv2/default.nix
index 07215fc42f8..3ecd4665f26 100644
--- a/pkgs/applications/audio/sisco.lv2/default.nix
+++ b/pkgs/applications/audio/sisco.lv2/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, lv2, pkgconfig, libGLU, libGL, cairo, pango, libjack2 }:
+{ lib, stdenv, fetchFromGitHub, lv2, pkg-config, libGLU, libGL, cairo, pango, libjack2 }:
 
 let
   name = "sisco.lv2-${version}";
@@ -27,14 +27,14 @@ stdenv.mkDerivation rec {
   srcs = [ src robtkSrc ];
   sourceRoot = src.name;
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ lv2 pango cairo libjack2 libGLU libGL ];
 
   postUnpack = "chmod u+w -R ${robtkName}-src; mv ${robtkName}-src/* ${sourceRoot}/robtk";
   sisco_VERSION = version;
   preConfigure = "makeFlagsArray=(PREFIX=$out)";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Simple audio oscilloscope with variable time scale, triggering, cursors and numeric readout in LV2 plugin format";
     homepage = "http://x42.github.io/sisco.lv2/";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/snapcast/default.nix b/pkgs/applications/audio/snapcast/default.nix
index 5eff8f82e89..0299f66191e 100644
--- a/pkgs/applications/audio/snapcast/default.nix
+++ b/pkgs/applications/audio/snapcast/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, lib, fetchFromGitHub, cmake, pkgconfig
-, alsaLib, asio, avahi, boost170, flac, libogg, libvorbis, soxr
+{ stdenv, lib, fetchFromGitHub, cmake, pkg-config
+, alsa-lib, asio, avahi, boost17x, flac, libogg, libvorbis, soxr
 , nixosTests }:
 
 let
@@ -20,8 +20,8 @@ let
 
   aixlog = dependency {
     name    = "aixlog";
-    version = "1.2.1";
-    sha256  = "1rh4jib5g41b85bqrxkl5g74hk5ryf187y9fw0am76g59xlymfpr";
+    version = "1.5.0";
+    sha256  = "09mnkrans9zmwfxsiwgkm0rba66c11kg5zby9x3rjic34gnmw6ay";
   };
 
   popl = dependency {
@@ -34,20 +34,21 @@ in
 
 stdenv.mkDerivation rec {
   pname = "snapcast";
-  version = "0.20.0";
+  version = "0.25.0";
 
   src = fetchFromGitHub {
     owner  = "badaix";
     repo   = "snapcast";
     rev    = "v${version}";
-    sha256 = "152ic8hlyawcmj9pykb33xc6yx7il6yb9ilmsy6m9nlh40m8yxls";
+    sha256 = "064pcpr5dsv9hncqkrnxriva4xjv1vcxhvc69h1an8x8vn4dwgmf";
   };
 
-  nativeBuildInputs = [ cmake pkgconfig boost170.dev ];
+  nativeBuildInputs = [ cmake pkg-config ];
   # snapcast also supports building against tremor but as we have libogg, that's
   # not needed
   buildInputs = [
-    alsaLib asio avahi flac libogg libvorbis
+    boost17x
+    alsa-lib asio avahi flac libogg libvorbis
     aixlog popl soxr
   ];
 
@@ -64,6 +65,6 @@ stdenv.mkDerivation rec {
     description = "Synchronous multi-room audio player";
     homepage = "https://github.com/badaix/snapcast";
     maintainers = with maintainers; [ fpletz ];
-    license = licenses.gpl3;
+    license = licenses.gpl3Plus;
   };
 }
diff --git a/pkgs/applications/audio/snd/default.nix b/pkgs/applications/audio/snd/default.nix
index 76ea4efeace..4881360b82e 100644
--- a/pkgs/applications/audio/snd/default.nix
+++ b/pkgs/applications/audio/snd/default.nix
@@ -1,30 +1,30 @@
-{ stdenv, fetchurl, pkgconfig
-, gtk2, alsaLib
-, fftw, gsl
+{ lib, stdenv, fetchurl, pkg-config
+, alsa-lib, fftw, gsl, motif, xorg
 }:
 
 stdenv.mkDerivation rec {
-  name = "snd-20.3";
+  pname = "snd";
+  version = "21.1";
 
   src = fetchurl {
-    url = "mirror://sourceforge/snd/${name}.tar.gz";
-    sha256 = "016slh34gb6qqb38m8k9yg48rbhc5p12084szcwvanhh5v7fc7mk";
+    url = "mirror://sourceforge/snd/snd-${version}.tar.gz";
+    sha256 = "1jxvpgx1vqa6bwdzlzyzrjn2swjf9nfhzi9r1r96ivi0870vvjk3";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
 
-  buildInputs = [
-    gtk2 alsaLib
-    fftw gsl
-  ];
+  buildInputs = [ alsa-lib fftw gsl motif ]
+    ++ (with xorg; [ libXext libXft libXpm libXt ]);
 
-  meta = {
-    description = "Sound editor";
-    homepage = "http://ccrma.stanford.edu/software/snd";
-    platforms = stdenv.lib.platforms.linux;
-    license = stdenv.lib.licenses.free;
-    maintainers = with stdenv.lib.maintainers; [ ];
-  };
+  configureFlags = [ "--with-motif" ];
 
+  enableParallelBuilding = true;
 
+  meta = with lib; {
+    description = "Sound editor";
+    homepage = "https://ccrma.stanford.edu/software/snd/";
+    platforms = platforms.unix;
+    license = licenses.free;
+    maintainers = with maintainers; [ ];
+  };
 }
diff --git a/pkgs/applications/audio/sndpeek/default.nix b/pkgs/applications/audio/sndpeek/default.nix
index d239fda11ae..39f706d1f24 100644
--- a/pkgs/applications/audio/sndpeek/default.nix
+++ b/pkgs/applications/audio/sndpeek/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, libsndfile, freeglut, alsaLib, mesa, libGLU, libX11, libXmu
+{ lib, stdenv, fetchurl, libsndfile, freeglut, alsa-lib, mesa, libGLU, libX11, libXmu
 , libXext, libXi }:
 
 stdenv.mkDerivation rec {
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
 
   buildInputs = [
     freeglut
-    alsaLib
+    alsa-lib
     mesa
     libGLU
     libsndfile
@@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
     mv sndpeek $out/bin
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Real-time 3D animated audio display/playback";
     longDescription = ''
        sndpeek is just what it sounds (and looks) like:
diff --git a/pkgs/applications/audio/sonata/default.nix b/pkgs/applications/audio/sonata/default.nix
index 68eefadf411..9eae394488e 100644
--- a/pkgs/applications/audio/sonata/default.nix
+++ b/pkgs/applications/audio/sonata/default.nix
@@ -1,41 +1,53 @@
-{ stdenv, fetchFromGitHub, pkgconfig, gettext, intltool, wrapGAppsHook
-, python3Packages, gnome3, gtk3, gsettings-desktop-schemas, gobject-introspection }:
+{ lib, fetchFromGitHub, wrapGAppsHook, gettext
+, python3Packages, gnome, gtk3, glib, gdk-pixbuf, gsettings-desktop-schemas, gobject-introspection }:
 
 let
   inherit (python3Packages) buildPythonApplication isPy3k dbus-python pygobject3 mpd2 setuptools;
 in buildPythonApplication rec {
   pname = "sonata";
-  version = "1.7b1";
+  version = "1.7.0";
 
   src = fetchFromGitHub {
     owner = "multani";
     repo = "sonata";
     rev = "v${version}";
-    sha256 = "1npbxlrg6k154qybfd250nq2p96kxdsdkj9wwnp93gljnii3g8wh";
+    sha256 = "0rl8w7s2asff626clzfvyz987l2k4ml5dg417mqp9v8a962q0v2x";
   };
 
   disabled = !isPy3k;
 
-  nativeBuildInputs = [ pkgconfig gettext ];
+  nativeBuildInputs = [
+    gettext
+    gobject-introspection
+    wrapGAppsHook
+  ];
+
   buildInputs = [
-    intltool wrapGAppsHook
-    gnome3.adwaita-icon-theme
+    glib
+    gnome.adwaita-icon-theme
     gsettings-desktop-schemas
+    gtk3
+    gdk-pixbuf
+  ];
+
+  # The optional tagpy dependency (for editing metadata) is not yet
+  # included because it's difficult to build.
+  pythonPath = [
+    dbus-python
+    mpd2
+    pygobject3
+    setuptools
   ];
 
+  # Otherwise the setup hook for gobject-introspection is not run:
+  # https://github.com/NixOS/nixpkgs/issues/56943
+  strictDeps = false;
+
   postPatch = ''
     # Remove "Local MPD" tab which is not suitable for NixOS.
     sed -i '/localmpd/d' sonata/consts.py
   '';
 
-  propagatedBuildInputs = [
-    gobject-introspection gtk3 pygobject3 setuptools
-  ];
-
-  # The optional tagpy dependency (for editing metadata) is not yet
-  # included because it's difficult to build.
-  pythonPath = [ dbus-python pygobject3 mpd2 ];
-
   meta = {
     description = "An elegant client for the Music Player Daemon";
     longDescription = ''
@@ -62,8 +74,8 @@ in buildPythonApplication rec {
        - Available in 24 languages
     '';
     homepage = "https://www.nongnu.org/sonata/";
-    license = stdenv.lib.licenses.gpl3;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.rvl ];
+    license = lib.licenses.gpl3;
+    platforms = lib.platforms.linux;
+    maintainers = [ lib.maintainers.rvl ];
   };
 }
diff --git a/pkgs/applications/audio/songrec/default.nix b/pkgs/applications/audio/songrec/default.nix
new file mode 100644
index 00000000000..ccedb4c069e
--- /dev/null
+++ b/pkgs/applications/audio/songrec/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, rustPlatform
+, fetchFromGitHub
+, gtk3
+, openssl
+, alsa-lib
+, pkg-config
+, ffmpeg
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "songrec";
+  version = "0.1.8";
+
+  src = fetchFromGitHub {
+    owner = "marin-m";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-6siGLegNgvLdP7engwpKmhzWYqBXcMsfaXhJJ1tIqJg=";
+  };
+
+  cargoSha256 = "sha256-H4qJYcFjip71EVTGw50goj0HjKN9fmjQZqQDhaSKlaQ=";
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [ alsa-lib gtk3 openssl ffmpeg ];
+
+  postInstall = ''
+    mv packaging/rootfs/usr/share $out/share
+  '';
+
+  meta = with lib; {
+    description = "An open-source Shazam client for Linux, written in Rust";
+    homepage = "https://github.com/marin-m/SongRec";
+    license = licenses.gpl3Only;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ tcbravo ];
+  };
+}
diff --git a/pkgs/applications/audio/sonic-lineup/default.nix b/pkgs/applications/audio/sonic-lineup/default.nix
index b837eb07cf1..711444651c3 100644
--- a/pkgs/applications/audio/sonic-lineup/default.nix
+++ b/pkgs/applications/audio/sonic-lineup/default.nix
@@ -1,25 +1,25 @@
-{ stdenv, fetchurl, alsaLib, boost, bzip2, fftw, fftwFloat, libfishsound
+{ lib, stdenv, fetchurl, alsa-lib, boost, bzip2, fftw, fftwFloat, libfishsound
 , libid3tag, liblo, libmad, liboggz, libpulseaudio, libsamplerate
 , libsndfile, lrdf, opusfile, portaudio, rubberband, serd, sord, capnproto
-, wrapQtAppsHook, pkgconfig
+, wrapQtAppsHook, pkg-config
 }:
 
 stdenv.mkDerivation rec {
   pname = "sonic-lineup";
-  version = "1.0.1";
+  version = "1.1";
 
   src = fetchurl {
-    url = "https://code.soundsoftware.ac.uk/attachments/download/2610/${pname}-${version}.tar.gz";
-    sha256 = "0w4v5zr81d8fh97y820r0vj1rrbl0kwgvhfkdnyl4hiabs97b1i7";
+    url = "https://code.soundsoftware.ac.uk/attachments/download/2765/${pname}-${version}.tar.gz";
+    sha256 = "0k45k9fawcm4s5yy05x00pgww7j8m7k2cxcc7g0fn9vqy7vcbq9h";
   };
 
   buildInputs =
-    [ alsaLib boost bzip2 fftw fftwFloat libfishsound libid3tag liblo
+    [ alsa-lib boost bzip2 fftw fftwFloat libfishsound libid3tag liblo
       libmad liboggz libpulseaudio libsamplerate libsndfile lrdf opusfile
       portaudio rubberband serd sord capnproto
     ];
 
-  nativeBuildInputs = [ pkgconfig wrapQtAppsHook ];
+  nativeBuildInputs = [ pkg-config wrapQtAppsHook ];
 
   enableParallelBuilding = true;
 
@@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
     sed -i 's/sub_test_svcore_/#sub_test_svcore_/' sonic-lineup.pro
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Comparative visualisation of related audio recordings";
     homepage = "https://www.sonicvisualiser.org/sonic-lineup/";
     license = licenses.gpl2Plus;
diff --git a/pkgs/applications/audio/sonic-pi/default.nix b/pkgs/applications/audio/sonic-pi/default.nix
index d80632a08f5..c84aa039c52 100644
--- a/pkgs/applications/audio/sonic-pi/default.nix
+++ b/pkgs/applications/audio/sonic-pi/default.nix
@@ -6,10 +6,10 @@
 , ruby
 , aubio
 , cmake
-, pkgconfig
+, pkg-config
 , boost
 , bash
-, jack2Full
+, jack2
 , supercollider
 , qwt
 , osmid
@@ -35,7 +35,7 @@ mkDerivation rec {
   buildInputs = [
     bash
     cmake
-    pkgconfig
+    pkg-config
     qtbase
     qwt
     ruby
@@ -102,7 +102,7 @@ mkDerivation rec {
   dontWrapQtApps = true;
   preFixup = ''
     wrapQtApp "$out/bin/sonic-pi" \
-      --prefix PATH : ${ruby}/bin:${bash}/bin:${supercollider}/bin:${jack2Full}/bin \
+      --prefix PATH : ${ruby}/bin:${bash}/bin:${supercollider}/bin:${jack2}/bin \
       --set AUBIO_LIB "${aubio}/lib/libaubio.so"
   '';
 
diff --git a/pkgs/applications/audio/sonic-visualiser/default.nix b/pkgs/applications/audio/sonic-visualiser/default.nix
index e8b6a4d4313..43254e6c2b0 100644
--- a/pkgs/applications/audio/sonic-visualiser/default.nix
+++ b/pkgs/applications/audio/sonic-visualiser/default.nix
@@ -1,8 +1,8 @@
 # TODO add plugins having various licenses, see http://www.vamp-plugins.org/download.html
 
-{ stdenv, fetchurl, alsaLib, bzip2, fftw, libjack2, libX11, liblo
-, libmad, libogg, lrdf, librdf_raptor, librdf_rasqal, libsamplerate
-, libsndfile, pkgconfig, libpulseaudio, qtbase, qtsvg, redland
+{ lib, stdenv, fetchurl, alsa-lib, bzip2, fftw, libjack2, libX11, liblo
+, libmad, lrdf, librdf_raptor, librdf_rasqal, libsamplerate
+, libsndfile, pkg-config, libpulseaudio, qtbase, qtsvg, redland
 , rubberband, serd, sord, vamp-plugin-sdk, fftwFloat
 , capnproto, liboggz, libfishsound, libid3tag, opusfile
 , wrapQtAppsHook
@@ -10,16 +10,17 @@
 
 stdenv.mkDerivation rec {
   pname = "sonic-visualiser";
-  version = "4.0.1";
+  version = "4.2";
 
   src = fetchurl {
-    url = "https://code.soundsoftware.ac.uk/attachments/download/2607/${pname}-${version}.tar.gz";
-    sha256 = "14674adzp3chilymna236qyvci3b1zmi3wyz696wk7bcd3ndpsg6";
+    url = "https://code.soundsoftware.ac.uk/attachments/download/2755/${pname}-${version}.tar.gz";
+    sha256 = "1wsvranhvdl21ksbinbgb55qvs3g2d4i57ssj1vx2aln6m01ms9q";
   };
 
+  nativeBuildInputs = [ pkg-config wrapQtAppsHook ];
   buildInputs =
     [ libsndfile qtbase qtsvg fftw fftwFloat bzip2 lrdf rubberband
-      libsamplerate vamp-plugin-sdk alsaLib librdf_raptor librdf_rasqal redland
+      libsamplerate vamp-plugin-sdk alsa-lib librdf_raptor librdf_rasqal redland
       serd
       sord
       # optional
@@ -27,7 +28,6 @@ stdenv.mkDerivation rec {
       # portaudio
       libpulseaudio
       libmad
-      libogg # ?
       libfishsound
       liblo
       libX11
@@ -37,16 +37,14 @@ stdenv.mkDerivation rec {
       opusfile
     ];
 
-  nativeBuildInputs = [ pkgconfig wrapQtAppsHook ];
-
-  enableParallelBuilding = true;
-
   # comment out the tests
   preConfigure = ''
     sed -i 's/sub_test_svcore_/#sub_test_svcore_/' sonic-visualiser.pro
   '';
 
-  meta = with stdenv.lib; {
+  enableParallelBuilding = true;
+
+  meta = with lib; {
     description = "View and analyse contents of music audio files";
     homepage = "https://www.sonicvisualiser.org/";
     license = licenses.gpl2Plus;
diff --git a/pkgs/applications/audio/sooperlooper/default.nix b/pkgs/applications/audio/sooperlooper/default.nix
index f1c76bf0d33..1cad71ae297 100644
--- a/pkgs/applications/audio/sooperlooper/default.nix
+++ b/pkgs/applications/audio/sooperlooper/default.nix
@@ -1,7 +1,7 @@
-{ stdenv
+{ lib, stdenv
 , fetchFromGitHub
 , autoreconfHook
-, pkgconfig
+, pkg-config
 , which
 , libtool
 , liblo
@@ -14,7 +14,7 @@
 , rubberband
 , gettext
 , ncurses
-, alsaLib
+, alsa-lib
 , fftw
 }:
 
@@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
     ./autogen.sh
   '';
 
-  nativeBuildInputs = [ autoreconfHook pkgconfig which libtool ];
+  nativeBuildInputs = [ autoreconfHook pkg-config which libtool ];
 
   buildInputs = [
     liblo
@@ -47,13 +47,13 @@ stdenv.mkDerivation rec {
     rubberband
     gettext
     ncurses
-    alsaLib
+    alsa-lib
     fftw
   ];
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A live looping sampler capable of immediate loop recording, overdubbing, multiplying, reversing and more";
     longDescription = ''
       It allows for multiple simultaneous multi-channel loops limited only by your computer's available memory.
diff --git a/pkgs/applications/audio/sorcer/default.nix b/pkgs/applications/audio/sorcer/default.nix
index ad5f8fda1a9..59c7d91a3e3 100644
--- a/pkgs/applications/audio/sorcer/default.nix
+++ b/pkgs/applications/audio/sorcer/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub , boost, cairomm, cmake, libsndfile, lv2, ntk, pkgconfig, python }:
+{ lib, stdenv, fetchFromGitHub , boost, cairomm, cmake, libsndfile, lv2, ntk, pkg-config, python }:
 
 stdenv.mkDerivation rec {
   pname = "sorcer";
@@ -11,8 +11,8 @@ stdenv.mkDerivation rec {
     sha256 = "1x7pi77nal10717l02qpnhrx6d7w5nqrljkn9zx5w7gpb8fpb3vp";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ boost cairomm cmake libsndfile lv2 ntk python ];
+  nativeBuildInputs = [ cmake pkg-config ];
+  buildInputs = [ boost cairomm libsndfile lv2 ntk python ];
 
   postPatch = ''
      # Fix build with lv2 1.18: https://github.com/brummer10/guitarix/commit/c0334c72
@@ -25,10 +25,10 @@ stdenv.mkDerivation rec {
     cp -a ../presets/* "$out/lib/lv2"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://openavproductions.com/sorcer/";
     description = "A wavetable LV2 plugin synth, targeted at the electronic / dubstep genre";
-    license = licenses.gpl3;
+    license = licenses.gpl3Plus;
     maintainers = [ maintainers.magnetophon ];
     platforms = platforms.linux;
   };
diff --git a/pkgs/applications/audio/sound-juicer/default.nix b/pkgs/applications/audio/sound-juicer/default.nix
index 89653a59f43..c03b48c436b 100644
--- a/pkgs/applications/audio/sound-juicer/default.nix
+++ b/pkgs/applications/audio/sound-juicer/default.nix
@@ -1,40 +1,70 @@
-{ stdenv, fetchurl, pkgconfig, glib, gtk3, intltool, itstool, libxml2, brasero
-, libcanberra-gtk3, gnome3, gst_all_1, libmusicbrainz5, libdiscid, isocodes
-, gsettings-desktop-schemas, wrapGAppsHook }:
+{ lib
+, stdenv
+, fetchurl
+, meson
+, ninja
+, pkg-config
+, glib
+, gtk3
+, itstool
+, libxml2
+, brasero
+, libcanberra-gtk3
+, gnome
+, gst_all_1
+, libmusicbrainz5
+, libdiscid
+, isocodes
+, gsettings-desktop-schemas
+, wrapGAppsHook
+}:
 
-let
+stdenv.mkDerivation rec {
   pname = "sound-juicer";
-  version = "3.24.0";
-in stdenv.mkDerivation rec {
-  name = "${pname}-${version}";
+  version = "3.38.0";
 
   src = fetchurl {
-    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz";
-    sha256 = "19qg4xv0f9rkq34lragkmhii1llxsa87llbl28i759b0ks4f6sny";
+    url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "08d5d81rz9sj3m5paw8fwbgxmhlbr7bcjdzpmzj832qvg8smydxf";
   };
 
-  nativeBuildInputs = [ pkgconfig intltool itstool libxml2 wrapGAppsHook ];
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    itstool
+    libxml2
+    wrapGAppsHook
+  ];
+
   buildInputs = [
-    glib gtk3 brasero libcanberra-gtk3 gnome3.adwaita-icon-theme
-    gsettings-desktop-schemas libmusicbrainz5 libdiscid isocodes
-    gst_all_1.gstreamer gst_all_1.gst-plugins-base
-    gst_all_1.gst-plugins-good gst_all_1.gst-plugins-bad
+    glib
+    gtk3
+    brasero
+    libcanberra-gtk3
+    gnome.adwaita-icon-theme
+    gsettings-desktop-schemas
+    libmusicbrainz5
+    libdiscid
+    isocodes
+    gst_all_1.gstreamer
+    gst_all_1.gst-plugins-base
+    gst_all_1.gst-plugins-good
+    gst_all_1.gst-plugins-bad
     gst_all_1.gst-libav
   ];
 
-  NIX_CFLAGS_COMPILE="-Wno-error=format-nonliteral";
-
   passthru = {
-    updateScript = gnome3.updateScript {
+    updateScript = gnome.updateScript {
       packageName = pname;
     };
   };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A Gnome CD Ripper";
     homepage = "https://wiki.gnome.org/Apps/SoundJuicer";
     maintainers = [ maintainers.bdimcheff ];
-    license = licenses.gpl2;
+    license = licenses.gpl2Plus;
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/soundkonverter/default.nix b/pkgs/applications/audio/soundkonverter/default.nix
index df5806b50b9..1c1724fbce8 100644
--- a/pkgs/applications/audio/soundkonverter/default.nix
+++ b/pkgs/applications/audio/soundkonverter/default.nix
@@ -1,9 +1,9 @@
 # currently needs to be installed into an environment and needs a `kbuildsycoca5` run afterwards for plugin discovery
 {
-  mkDerivation, fetchFromGitHub, lib, makeWrapper,
-  cmake, extra-cmake-modules, pkgconfig,
+  mkDerivation, fetchFromGitHub, fetchpatch, lib, makeWrapper,
+  cmake, extra-cmake-modules, pkg-config,
   libkcddb, kconfig, kconfigwidgets, ki18n, kdelibs4support, kio, solid, kwidgetsaddons, kxmlgui,
-  qtbase, phonon, 
+  qtbase, phonon,
   taglib,
   # optional backends
   withCD ? true, cdparanoia,
@@ -43,7 +43,7 @@ let runtimeDeps = []
     ++ lib.optionals withMp3 [ lame mp3gain ]
     ++ lib.optionals withAac [  faad2 aacgain ];
 
-in 
+in
 mkDerivation rec {
   name = "soundkonverter";
   version = "3.0.1";
@@ -53,12 +53,21 @@ mkDerivation rec {
     rev = "v" + version;
     sha256 = "1g2khdsjmsi4zzynkq8chd11cbdhjzmi37r9jhpal0b730nq9x7l";
   };
-  enableParallelBuilding = true;
-  nativeBuildInputs = [ cmake extra-cmake-modules pkgconfig kdelibs4support makeWrapper ];
+  patches = [
+    # already merged into master, so it can go during the next release
+    (fetchpatch {
+      url = "https://patch-diff.githubusercontent.com/raw/dfaust/soundkonverter/pull/87.patch";
+      sha256 = "sha256-XIpD4ZMTZVcu+F27OtpRy51H+uQgpd5l22IZ6XsD64w=";
+      name = "soundkonverter_taglib.patch";
+      stripLen = 1;
+    })
+  ];
+
+  nativeBuildInputs = [ cmake extra-cmake-modules pkg-config kdelibs4support makeWrapper ];
   propagatedBuildInputs = [ libkcddb kconfig kconfigwidgets ki18n kdelibs4support kio solid kwidgetsaddons kxmlgui qtbase phonon];
   buildInputs = [ taglib ] ++ runtimeDeps;
   # encoder plugins go to ${out}/lib so they're found by kbuildsycoca5
-  cmakeFlags = [ "-DCMAKE_INSTALL_PREFIX=$out" ]; 
+  cmakeFlags = [ "-DCMAKE_INSTALL_PREFIX=$out" ];
   sourceRoot = "source/src";
   # add runt-time deps to PATH
   postInstall = ''
@@ -70,26 +79,26 @@ mkDerivation rec {
     description = "Audio file converter, CD ripper and Replay Gain tool";
     longDescription = ''
       soundKonverter is a frontend to various audio converters.
-      
+
       The key features are:
       - Audio file conversion
       - Replay Gain calculation
       - CD ripping
-      
+
       soundKonverter supports reading and writing tags and covers for many formats, so they are preserved when converting files.
-      
+
       It is extendable by plugins and supports many backends including:
-      
+
       - Audio file conversion
         Backends: faac, faad, ffmpeg, flac, lame, mplayer, neroaac, timidity, fluidsynth, vorbistools, opustools, sox, twolame,
         flake, mac, shorten, wavpack and speex
         Formats: ogg vorbis, mp3, flac, wma, aac, ac3, opus, alac, mp2, als, amr nb, amr wb, ape, speex, m4a, mp1, musepack shorten,
         tta, wavpack, ra, midi, mod, 3gp, rm, avi, mkv, ogv, mpeg, mov, mp4, flv, wmv and rv
-      
+
       - Replay Gain calculation
         Backends: aacgain, metaflac, mp3gain, vorbisgain, wvgain, mpcgain
         Formats: aac, mp3, flac, ogg vorbis, wavpack, musepack
-      
+
       - CD ripping
         Backends: cdparanoia
       '';
diff --git a/pkgs/applications/audio/soundscape-renderer/default.nix b/pkgs/applications/audio/soundscape-renderer/default.nix
index 741211bd90d..fa9860ab248 100644
--- a/pkgs/applications/audio/soundscape-renderer/default.nix
+++ b/pkgs/applications/audio/soundscape-renderer/default.nix
@@ -1,8 +1,8 @@
-{ stdenv
+{ lib, stdenv
 , fetchgit
 , autoreconfHook
 , help2man
-, pkgconfig
+, pkg-config
 , libsndfile
 , fftwFloat
 , libjack2
@@ -32,7 +32,7 @@ stdenv.mkDerivation {
 
   LC_ALL = "en_US.UTF-8";
 
-  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
   buildInputs = [ boost boost.dev ecasound libGLU libGL help2man libsndfile fftwFloat libjack2 libxml2 qt4 glibcLocales ];
 
   # 1) Fix detecting version. https://github.com/SoundScapeRenderer/ssr/pull/53
@@ -47,8 +47,8 @@ stdenv.mkDerivation {
   meta = {
     homepage = "http://spatialaudio.net/ssr/";
     description = "The SoundScape Renderer (SSR) is a tool for real-time spatial audio reproduction";
-    license = stdenv.lib.licenses.gpl3;
-    maintainers = [ stdenv.lib.maintainers.fridh ];
+    license = lib.licenses.gpl3;
+    maintainers = [ lib.maintainers.fridh ];
   };
 
 }
diff --git a/pkgs/applications/audio/soundtracker/default.nix b/pkgs/applications/audio/soundtracker/default.nix
index 1fd341765b0..251725ea6b2 100644
--- a/pkgs/applications/audio/soundtracker/default.nix
+++ b/pkgs/applications/audio/soundtracker/default.nix
@@ -1,9 +1,9 @@
-{ stdenv
+{ lib, stdenv
 , fetchurl
 , pkg-config
-, autoconf
+, autoreconfHook
 , gtk2
-, alsaLib
+, alsa-lib
 , SDL
 , jack2
 , audiofile
@@ -12,32 +12,52 @@
 
 stdenv.mkDerivation rec {
   pname = "soundtracker";
-  version = "1.0.1";
+  version = "1.0.2.1";
 
   src = fetchurl {
     # Past releases get moved to the "old releases" directory.
     # Only the latest release is at the top level.
     # Nonetheless, only the name of the file seems to affect which file is
     # downloaded, so this path should be fine both for old and current releases.
-    url = "mirror://sourceforge/soundtracker/soundtracker-${version}.tar.bz2";
-    sha256 = "0m5iiqccch6w53khpvdldz59zymw13vmwqc5ggx3sn41riwbd6ks";
+    url = "mirror://sourceforge/soundtracker/soundtracker-${version}.tar.xz";
+    sha256 = "0nh0dwz8nldc040q6n06vlazhss8ms42r2dffhjcrqj3hbrvfx82";
   };
 
+  postPatch = lib.optionalString stdenv.hostPlatform.isDarwin ''
+    # Darwin binutils don't support D option for ar
+    # ALSA macros are missing on Darwin, causing error
+    substituteInPlace configure.ac \
+      --replace ARFLAGS=crD ARFLAGS=cru \
+      --replace AM_PATH_ALSA '#AM_PATH_ALSA'
+    # Avoid X11-specific workaround code on more than just Windows
+    substituteInPlace app/keys.c \
+      --replace '!defined(_WIN32)' '!defined(_WIN32) && !defined(__APPLE__)'
+    # "The application with bundle ID (null) is running setugid(), which is not allowed."
+    sed -i -e '/seteuid/d' -e '/setegid/d' app/main.c
+  '';
+
+  configureFlags = [
+    "--with-graphics-backend=gdk"
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
+    "--disable-alsa"
+  ];
+
+  enableParallelBuilding = true;
+
   nativeBuildInputs = [
     pkg-config
-    autoconf
+    autoreconfHook
   ];
+
   buildInputs = [
     gtk2
     SDL
     jack2
     audiofile
     goocanvas
-  ] ++ stdenv.lib.optional stdenv.isLinux alsaLib;
-
-  hardeningDisable = [ "format" ];
+  ] ++ lib.optional stdenv.isLinux alsa-lib;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A music tracking tool similar in design to the DOS program FastTracker and the Amiga legend ProTracker";
     longDescription = ''
       SoundTracker is a pattern-oriented music editor (similar to the DOS
@@ -51,7 +71,5 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ fgaz ];
     platforms = platforms.all;
-    # gdk/gdkx.h not found
-    broken = stdenv.isDarwin;
   };
 }
diff --git a/pkgs/applications/audio/spectmorph/default.nix b/pkgs/applications/audio/spectmorph/default.nix
index d8209dad02d..6292d771a51 100644
--- a/pkgs/applications/audio/spectmorph/default.nix
+++ b/pkgs/applications/audio/spectmorph/default.nix
@@ -1,18 +1,20 @@
-{ stdenv, fetchurl, pkgconfig, libjack2, lv2, glib, qt5, libao, cairo, libsndfile, fftwFloat }:
+{ lib, stdenv, fetchurl, pkg-config, libjack2, lv2, glib, qt5, libao, cairo, libsndfile, fftwFloat }:
 
 stdenv.mkDerivation rec {
   pname = "spectmorph";
-  version = "0.5.1";
+  version = "0.5.2";
   src = fetchurl {
     url = "http://spectmorph.org/files/releases/${pname}-${version}.tar.bz2";
-    sha256 = "06jrfx5g9c56swxn78lix0gyrjkhi21l9wqs56knp8iqcgfi3m0s";
+    sha256 = "0yrq7mknhk096wfsx0q3b6wwa2w5la0rxa113di26rrrw136xl1f";
   };
 
   buildInputs = [  libjack2 lv2 glib qt5.qtbase libao cairo libsndfile fftwFloat ];
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
 
-  meta = with stdenv.lib; {
+  dontWrapQtApps = true;
+
+  meta = with lib; {
     description = "Allows to analyze samples of musical instruments, and to combine them (morphing) to construct hybrid sounds";
     homepage = "http://spectmorph.org";
     license = licenses.gpl3;
diff --git a/pkgs/applications/audio/spectrojack/default.nix b/pkgs/applications/audio/spectrojack/default.nix
index 35534750d0c..12bb972398e 100644
--- a/pkgs/applications/audio/spectrojack/default.nix
+++ b/pkgs/applications/audio/spectrojack/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, libjack2, fftwFloat, gtk2 }:
+{ lib, stdenv, fetchurl, pkg-config, libjack2, fftwFloat, gtk2 }:
 
 stdenv.mkDerivation rec {
   pname = "spectrojack";
@@ -8,7 +8,7 @@ stdenv.mkDerivation rec {
     url = "http://sed.free.fr/spectrojack/${pname}-${version}.tar.gz";
     sha256 = "1kiwx0kag7kq7rhg0bvckfm8r7pqmbk76ppa39cq2980jb5v8rfp";
   };
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ libjack2 fftwFloat gtk2 ];
   configurePhase= ''
     sed -i 's/.*home.*/#&/' ./Makefile
@@ -24,8 +24,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "A little spectrogram/audiogram/sonogram/whatever for JACK";
     homepage = "http://sed.free.fr/spectrojack";
-    license = stdenv.lib.licenses.publicDomain;
-    maintainers = with stdenv.lib.maintainers; [ sleexyz ];
-    platforms = with stdenv.lib.platforms; linux;
+    license = lib.licenses.publicDomain;
+    maintainers = with lib.maintainers; [ sleexyz ];
+    platforms = with lib.platforms; linux;
   };
 }
diff --git a/pkgs/applications/audio/speech-denoiser/default.nix b/pkgs/applications/audio/speech-denoiser/default.nix
index 9c18665d399..c6536c4d20f 100644
--- a/pkgs/applications/audio/speech-denoiser/default.nix
+++ b/pkgs/applications/audio/speech-denoiser/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, lv2, meson, ninja }:
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, pkg-config, lv2, meson, ninja }:
 
 let
   speech-denoiser-src = fetchFromGitHub {
@@ -24,7 +24,7 @@ stdenv.mkDerivation  {
 
   src = speech-denoiser-src;
 
-  nativeBuildInputs = [ pkgconfig meson ninja ];
+  nativeBuildInputs = [ pkg-config meson ninja ];
   buildInputs = [ lv2 rnnoise-nu ];
 
   mesonFlags = ("--prefix=${placeholder "out"}/lib/lv2");
@@ -34,7 +34,7 @@ stdenv.mkDerivation  {
       --replace "cc.find_library('rnnoise-nu',dirs: meson.current_source_dir() + '/rnnoise/.libs/',required : true)" "cc.find_library('rnnoise-nu', required : true)"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Speech denoise lv2 plugin based on RNNoise library";
     homepage = "https://github.com/lucianodato/speech-denoiser";
     license = licenses.lgpl3;
diff --git a/pkgs/applications/audio/spek/default.nix b/pkgs/applications/audio/spek/default.nix
index d6918b19231..1a73b8adea7 100644
--- a/pkgs/applications/audio/spek/default.nix
+++ b/pkgs/applications/audio/spek/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, autoreconfHook, intltool, pkgconfig, ffmpeg, wxGTK30-gtk3, wrapGAppsHook }:
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, intltool, pkg-config, ffmpeg, wxGTK30-gtk3, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   pname = "spek";
@@ -14,11 +14,11 @@ stdenv.mkDerivation rec {
   # needed for autoreconfHook
   AUTOPOINT="intltoolize --automake --copy";
 
-  nativeBuildInputs = [ autoreconfHook intltool pkgconfig wrapGAppsHook ];
+  nativeBuildInputs = [ autoreconfHook intltool pkg-config wrapGAppsHook ];
 
   buildInputs = [ ffmpeg wxGTK30-gtk3 wxGTK30-gtk3.gtk ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Analyse your audio files by showing their spectrogram";
     homepage = "http://spek.cc/";
     license = licenses.gpl3;
diff --git a/pkgs/applications/audio/split2flac/default.nix b/pkgs/applications/audio/split2flac/default.nix
index efad434e307..92f0753fd78 100644
--- a/pkgs/applications/audio/split2flac/default.nix
+++ b/pkgs/applications/audio/split2flac/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, makeWrapper
+{ lib, stdenv, fetchFromGitHub, makeWrapper
 , shntool, cuetools
 , flac, faac, mp4v2, wavpack, mac
 , imagemagick, libiconv, enca, lame, pythonPackages, vorbis-tools
@@ -9,7 +9,7 @@ let
   wrapSplit2flac =  format: ''
     makeWrapper $out/bin/.split2flac-wrapped $out/bin/split2${format} \
       --set SPLIT2FLAC_FORMAT ${format} \
-      --prefix PATH : ${stdenv.lib.makeBinPath [
+      --prefix PATH : ${lib.makeBinPath [
         shntool cuetools
         flac faac mp4v2 wavpack mac
         imagemagick libiconv enca lame pythonPackages.mutagen vorbis-tools
@@ -52,7 +52,7 @@ in stdenv.mkDerivation rec {
     ${wrapSplit2flac "wav"}
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Split flac/ape/wv/wav + cue sheet into separate tracks";
     homepage = "https://github.com/ftrvxmtrx/split2flac";
     license = licenses.mit;
diff --git a/pkgs/applications/audio/spot/default.nix b/pkgs/applications/audio/spot/default.nix
new file mode 100644
index 00000000000..2859a2e942e
--- /dev/null
+++ b/pkgs/applications/audio/spot/default.nix
@@ -0,0 +1,79 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, nix-update-script
+, meson
+, ninja
+, gettext
+, python3
+, desktop-file-utils
+, rustPlatform
+, pkg-config
+, glib
+, libhandy
+, gtk3
+, openssl
+, alsa-lib
+, libpulseaudio
+, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "spot";
+  version = "0.1.14";
+
+  src = fetchFromGitHub {
+    owner = "xou816";
+    repo = "spot";
+    rev = version;
+    sha256 = "eHhbm1amTx3ngqsP32uDEdrhrBeurMftg5SToTQGX9o=";
+  };
+
+  cargoDeps = rustPlatform.fetchCargoTarball {
+    inherit src;
+    name = "${pname}-${version}";
+    hash = "sha256-jY7pWoY9IJi5hHVRS1gQKb+Vmfc+wxHvoAwupOtXXQs=";
+  };
+
+  nativeBuildInputs = [
+    gettext
+    meson
+    ninja
+    pkg-config
+    python3 # for meson postinstall script
+    gtk3 # for gtk-update-icon-cache
+    glib # for glib-compile-schemas
+    desktop-file-utils
+    rustPlatform.rust.cargo
+    rustPlatform.cargoSetupHook
+    rustPlatform.rust.rustc
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    libhandy
+    openssl
+    alsa-lib
+    libpulseaudio
+  ];
+
+  postPatch = ''
+    chmod +x build-aux/cargo.sh
+    patchShebangs build-aux/cargo.sh build-aux/meson/postinstall.py
+  '';
+
+  passthru = {
+    updateScript = nix-update-script {
+      attrPath = pname;
+    };
+  };
+
+  meta = with lib; {
+    description = "Native Spotify client for the GNOME desktop";
+    homepage = "https://github.com/xou816/spot";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jtojnar ];
+  };
+}
diff --git a/pkgs/applications/audio/spotify-cli-linux/default.nix b/pkgs/applications/audio/spotify-cli-linux/default.nix
new file mode 100644
index 00000000000..e473d97ce56
--- /dev/null
+++ b/pkgs/applications/audio/spotify-cli-linux/default.nix
@@ -0,0 +1,29 @@
+{ lib, python3Packages, dbus }:
+python3Packages.buildPythonApplication rec {
+  pname = "spotify-cli-linux";
+  version = "1.6.0";
+
+  src = python3Packages.fetchPypi {
+    inherit pname version;
+    sha256 = "0slyc3jfrj3rwq8rv6p5aqkw487aw7a87kmf1fb6n4vnvcf08v7w";
+  };
+
+  preBuild = ''
+    substituteInPlace spotifycli/spotifycli.py \
+      --replace dbus-send ${dbus}/bin/dbus-send
+  '';
+
+  disabled = !python3Packages.isPy3k;
+  propagatedBuildInputs = with python3Packages; [ lyricwikia dbus-python ];
+
+  # upstream has no code tests, but uses its "tests" for linting and formatting checks
+  doCheck = false;
+
+  meta = with lib; {
+    homepage = "https://pwittchen.github.io/spotify-cli-linux/";
+    maintainers = [ maintainers.kmein ];
+    description = "A command line interface to Spotify on Linux.";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/audio/spotify-qt/default.nix b/pkgs/applications/audio/spotify-qt/default.nix
new file mode 100644
index 00000000000..629cc4bd116
--- /dev/null
+++ b/pkgs/applications/audio/spotify-qt/default.nix
@@ -0,0 +1,36 @@
+{ fetchFromGitHub
+, lib
+, cmake
+, mkDerivation
+, libxcb
+, qtbase
+, qtsvg
+}:
+
+mkDerivation rec {
+   pname = "spotify-qt";
+   version = "3.6";
+
+   src = fetchFromGitHub {
+      owner = "kraxarn";
+      repo = pname;
+      rev = "v${version}";
+      sha256 = "mKHyE6ZffMYYRLMpzMX53chyJyWxhTAaGvtBI3l6wkI=";
+   };
+
+   buildInputs = [ libxcb qtbase qtsvg ];
+
+   nativeBuildInputs = [ cmake ];
+
+   cmakeFlags = [ "-DCMAKE_BUILD_TYPE=Release" "-DCMAKE_INSTALL_PREFIX=" ];
+
+   installFlags = [ "DESTDIR=$(out)" ];
+
+   meta = with lib; {
+    description = "Lightweight unofficial Spotify client using Qt";
+    homepage = "https://github.com/kraxarn/spotify-qt";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ kiyengar ];
+    platforms = platforms.unix;
+   };
+}
diff --git a/pkgs/applications/audio/spotify-tui/default.nix b/pkgs/applications/audio/spotify-tui/default.nix
index dd063b2d039..783c15674a2 100644
--- a/pkgs/applications/audio/spotify-tui/default.nix
+++ b/pkgs/applications/audio/spotify-tui/default.nix
@@ -1,27 +1,34 @@
-{ stdenv, fetchFromGitHub, rustPlatform, pkgconfig, openssl, python3, libxcb, AppKit, Security }:
+{ lib, stdenv, fetchFromGitHub, rustPlatform, installShellFiles, pkg-config, openssl, python3, libxcb, AppKit, Security }:
 
 rustPlatform.buildRustPackage rec {
   pname = "spotify-tui";
-  version = "0.21.0";
+  version = "0.24.0";
 
   src = fetchFromGitHub {
     owner = "Rigellute";
     repo = "spotify-tui";
     rev = "v${version}";
-    sha256 = "0pvgq8r1bb7bdxm50hxl0n7ajplpzp1gnf6j55dn6xwck0syml9y";
+    sha256 = "1vi6b22ygi6nwydjwqirph9k18akbw81m3bci134nrbnrb30glla";
   };
 
-  cargoSha256 = "07v1qm5ky99j2lwbl00g80z0f8hfrpwgyqsm8fnda6y9s3vzzdgz";
+  cargoSha256 = "1l91xcgr3hcjaphns1hs0i8w1ynxqwx7rbgpl0i5xnyrkw0gn9lj";
 
-  nativeBuildInputs = stdenv.lib.optionals stdenv.isLinux [ pkgconfig python3 ];
+  nativeBuildInputs = [ installShellFiles ] ++ lib.optionals stdenv.isLinux [ pkg-config python3 ];
   buildInputs = [ ]
-    ++ stdenv.lib.optionals stdenv.isLinux [ openssl libxcb ]
-    ++ stdenv.lib.optionals stdenv.isDarwin [ AppKit Security ];
+    ++ lib.optionals stdenv.isLinux [ openssl libxcb ]
+    ++ lib.optionals stdenv.isDarwin [ AppKit Security ];
 
-  meta = with stdenv.lib; {
+  postInstall = ''
+    for shell in bash fish zsh; do
+      $out/bin/spt --completions $shell > spt.$shell
+      installShellCompletion spt.$shell
+    done
+  '';
+
+  meta = with lib; {
     description = "Spotify for the terminal written in Rust";
     homepage = "https://github.com/Rigellute/spotify-tui";
-    changelog = "https://github.com/Rigellute/spotify-tui/releases/tag/v${version}";
+    changelog = "https://github.com/Rigellute/spotify-tui/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ jwijenbergh ];
   };
diff --git a/pkgs/applications/audio/spotify/default.nix b/pkgs/applications/audio/spotify/default.nix
index 245d96dee01..d81ab4b3ac7 100644
--- a/pkgs/applications/audio/spotify/default.nix
+++ b/pkgs/applications/audio/spotify/default.nix
@@ -1,7 +1,7 @@
-{ fetchurl, stdenv, squashfsTools, xorg, alsaLib, makeWrapper, openssl, freetype
-, glib, pango, cairo, atk, gdk-pixbuf, gtk2, cups, nspr, nss, libpng, libnotify
-, libgcrypt, systemd, fontconfig, dbus, expat, ffmpeg_3, curl, zlib, gnome3
-, at-spi2-atk, at-spi2-core, libpulseaudio
+{ fetchurl, lib, stdenv, squashfsTools, xorg, alsa-lib, makeWrapper, wrapGAppsHook, openssl, freetype
+, glib, pango, cairo, atk, gdk-pixbuf, gtk3, cups, nspr, nss, libpng, libnotify
+, libgcrypt, systemd, fontconfig, dbus, expat, ffmpeg, curl, zlib, gnome
+, at-spi2-atk, at-spi2-core, libpulseaudio, libdrm, mesa, libxkbcommon
 }:
 
 let
@@ -10,18 +10,17 @@ 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.26.501.gbe11e53b-15";
+  version = "1.1.55.498.gf9a83c60";
   # 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 = "41";
-
+  rev = "46";
 
   deps = [
-    alsaLib
+    alsa-lib
     atk
     at-spi2-atk
     at-spi2-core
@@ -30,16 +29,19 @@ let
     curl
     dbus
     expat
-    ffmpeg_3
+    ffmpeg
     fontconfig
     freetype
     gdk-pixbuf
     glib
-    gtk2
+    gtk3
+    libdrm
     libgcrypt
     libnotify
     libpng
     libpulseaudio
+    libxkbcommon
+    mesa
     nss
     pango
     stdenv.cc.cc
@@ -64,7 +66,7 @@ let
 in
 
 stdenv.mkDerivation {
-  pname = "spotify";
+  pname = "spotify-unwrapped";
   inherit version;
 
   # fetch from snapcraft instead of the debian repository most repos fetch from.
@@ -77,10 +79,10 @@ 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 = "41bc8d20388bab39058d0709d99b1c8e324ea37af217620797356b8bc0b24aedbe801eaaa6e00a93e94e26765602e5dc27ad423ce2e777b4bec1b92daf04f81e";
+    sha512 = "dabb55d2ba41f977b6d3f03bfcf147d11785136dd1277efc62011c8371ef25cc04531266bd16608639b9b6a500c1a18a45f44ba7a43e17ab5ac139e36eff7149";
   };
 
-  buildInputs = [ squashfsTools makeWrapper ];
+  nativeBuildInputs = [ makeWrapper wrapGAppsHook squashfsTools ];
 
   dontStrip = true;
   dontPatchELF = true;
@@ -107,6 +109,9 @@ stdenv.mkDerivation {
     runHook postUnpack
   '';
 
+  # Prevent double wrapping
+  dontWrapGApps = true;
+
   installPhase =
     ''
       runHook preInstall
@@ -125,8 +130,8 @@ stdenv.mkDerivation {
       ln -s ${nspr.out}/lib/libnspr4.so $libdir/libnspr4.so
       ln -s ${nspr.out}/lib/libplc4.so $libdir/libplc4.so
 
-      ln -s ${ffmpeg_3.out}/lib/libavcodec.so* $libdir
-      ln -s ${ffmpeg_3.out}/lib/libavformat.so* $libdir
+      ln -s ${ffmpeg.out}/lib/libavcodec.so* $libdir
+      ln -s ${ffmpeg.out}/lib/libavformat.so* $libdir
 
       rpath="$out/share/spotify:$libdir"
 
@@ -134,10 +139,11 @@ stdenv.mkDerivation {
         --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
         --set-rpath $rpath $out/share/spotify/spotify
 
-      librarypath="${stdenv.lib.makeLibraryPath deps}:$libdir"
+      librarypath="${lib.makeLibraryPath deps}:$libdir"
       wrapProgram $out/share/spotify/spotify \
+        ''${gappsWrapperArgs[@]} \
         --prefix LD_LIBRARY_PATH : "$librarypath" \
-        --prefix PATH : "${gnome3.zenity}/bin"
+        --prefix PATH : "${gnome.zenity}/bin"
 
       # fix Icon line in the desktop file (#48062)
       sed -i "s:^Icon=.*:Icon=spotify-client:" "$out/share/spotify/spotify.desktop"
@@ -157,7 +163,7 @@ stdenv.mkDerivation {
       runHook postInstall
     '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://www.spotify.com/";
     description = "Play music from the Spotify music service";
     license = licenses.unfree;
diff --git a/pkgs/applications/audio/spotify/wrapper.nix b/pkgs/applications/audio/spotify/wrapper.nix
new file mode 100644
index 00000000000..418ef3cbc03
--- /dev/null
+++ b/pkgs/applications/audio/spotify/wrapper.nix
@@ -0,0 +1,31 @@
+{ symlinkJoin
+, lib
+, spotify-unwrapped
+, makeWrapper
+
+  # High-DPI support: Spotify's --force-device-scale-factor argument; not added
+  # if `null`, otherwise, should be a number.
+, deviceScaleFactor ? null
+}:
+
+symlinkJoin {
+  name = "spotify-${spotify-unwrapped.version}";
+
+  paths = [ spotify-unwrapped.out ];
+
+  nativeBuildInputs = [ makeWrapper ];
+  preferLocalBuild = true;
+  passthru.unwrapped = spotify-unwrapped;
+  postBuild = ''
+    wrapProgram $out/bin/spotify \
+        ${lib.optionalString (deviceScaleFactor != null) ''
+            --add-flags ${lib.escapeShellArg "--force-device-scale-factor=${
+                builtins.toString deviceScaleFactor
+              }"}
+        ''}
+  '';
+
+  meta = spotify-unwrapped.meta // {
+    priority = (spotify-unwrapped.meta.priority or 0) - 1;
+  };
+}
diff --git a/pkgs/applications/audio/spotifyd/default.nix b/pkgs/applications/audio/spotifyd/default.nix
index 121f9cbc960..e9de6cb3cf7 100644
--- a/pkgs/applications/audio/spotifyd/default.nix
+++ b/pkgs/applications/audio/spotifyd/default.nix
@@ -1,46 +1,47 @@
-{ stdenv, fetchFromGitHub, rustPlatform, pkgconfig, openssl
-, withALSA ? true, alsaLib ? null
-, withPulseAudio ? false, libpulseaudio ? null
-, withPortAudio ? false, portaudio ? null
+{ lib, fetchFromGitHub, rustPackages, pkg-config, openssl
+, withALSA ? true, alsa-lib
+, withPulseAudio ? false, libpulseaudio
+, withPortAudio ? false, portaudio
 , withMpris ? false
 , withKeyring ? false
-, dbus ? null
+, dbus
 }:
 
-rustPlatform.buildRustPackage rec {
+rustPackages.rustPlatform.buildRustPackage rec {
   pname = "spotifyd";
-  version = "0.2.24";
+  version = "0.3.2";
 
   src = fetchFromGitHub {
     owner = "Spotifyd";
     repo = "spotifyd";
     rev = "v${version}";
-    sha256 = "08i0zm7kgprixqjpgaxk7xid1njgj6lmi896jf9fsjqzdzlblqk8";
+    sha256 = "1a578h13iv8gqmskzlncfr42jlg5gp0zfcizv4wbd48y9hl8fh2l";
   };
 
-  cargoSha256 = "0200apqbx769ggjnjr0m72g61ikhml2xak5n1il2pvfx1yf5nw0n";
+  cargoSha256 = "07dxfc0csrnfl01p9vdrqvca9f574svlf37dk3dz8p6q08ki0n1z";
 
   cargoBuildFlags = [
     "--no-default-features"
     "--features"
-    "${stdenv.lib.optionalString withALSA "alsa_backend,"}${stdenv.lib.optionalString withPulseAudio "pulseaudio_backend,"}${stdenv.lib.optionalString withPortAudio "portaudio_backend,"}${stdenv.lib.optionalString withMpris "dbus_mpris,"}${stdenv.lib.optionalString withKeyring "dbus_keyring,"}"
+    "${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,"}"
   ];
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
 
   buildInputs = [ openssl ]
-    ++ stdenv.lib.optional withALSA alsaLib
-    ++ stdenv.lib.optional withPulseAudio libpulseaudio
-    ++ stdenv.lib.optional withPortAudio portaudio
-    ++ stdenv.lib.optional (withMpris || withKeyring) dbus;
+    ++ lib.optional withALSA alsa-lib
+    ++ lib.optional withPulseAudio libpulseaudio
+    ++ lib.optional withPortAudio portaudio
+    ++ lib.optional (withMpris || withKeyring) dbus;
 
   doCheck = false;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "An open source Spotify client running as a UNIX daemon";
     homepage = "https://github.com/Spotifyd/spotifyd";
-    license = with licenses; [ gpl3 ];
-    maintainers = with maintainers; [ anderslundstedt filalex77 marsam ];
+    changelog = "https://github.com/Spotifyd/spotifyd/raw/v${version}/CHANGELOG.md";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ anderslundstedt Br1ght0ne marsam ];
     platforms = platforms.unix;
   };
 }
diff --git a/pkgs/applications/audio/spotifywm/default.nix b/pkgs/applications/audio/spotifywm/default.nix
index a51e82f29c4..2241db126b8 100644
--- a/pkgs/applications/audio/spotifywm/default.nix
+++ b/pkgs/applications/audio/spotifywm/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, spotify, xorg, runtimeShell }:
+{ lib, stdenv, fetchFromGitHub, spotify, xorg, runtimeShell }:
 stdenv.mkDerivation {
   pname = "spotifywm-unstable";
   version = "2016-11-28";
@@ -21,7 +21,7 @@ stdenv.mkDerivation {
     install -Dm755 spotifywm $out/bin/spotifywm
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/dasJ/spotifywm";
     description = "Wrapper around Spotify that correctly sets class name before opening the window";
     license = licenses.mit;
diff --git a/pkgs/applications/audio/squeezelite/default.nix b/pkgs/applications/audio/squeezelite/default.nix
index c6a78f09005..31fe69b00de 100644
--- a/pkgs/applications/audio/squeezelite/default.nix
+++ b/pkgs/applications/audio/squeezelite/default.nix
@@ -1,16 +1,16 @@
-{ stdenv, fetchFromGitHub
-, alsaLib, flac, libmad, libvorbis, mpg123
+{ lib, stdenv, fetchFromGitHub
+, alsa-lib, flac, libmad, libvorbis, mpg123
 , dsdSupport ? true
 , faad2Support ? true, faad2
-, ffmpegSupport ? true, ffmpeg_3
+, ffmpegSupport ? true, ffmpeg
 , opusSupport ? true, opusfile
 , resampleSupport ? true, soxr
 , sslSupport ? true, openssl
 }:
 
 let
-  concatStringsSep = stdenv.lib.concatStringsSep;
-  optional = stdenv.lib.optional;
+  concatStringsSep = lib.concatStringsSep;
+  optional = lib.optional;
   opts = [ "-DLINKALL" ]
     ++ optional dsdSupport "-DDSD"
     ++ optional (!faad2Support) "-DNO_FAAD"
@@ -33,9 +33,9 @@ in stdenv.mkDerivation {
     sha256 = "024ypr1da2r079k3hgiifzd3d3wcfprhbl5zdm40zm0c7frzmr8i";
   };
 
-  buildInputs = [ alsaLib flac libmad libvorbis mpg123 ]
+  buildInputs = [ alsa-lib flac libmad libvorbis mpg123 ]
     ++ optional faad2Support faad2
-    ++ optional ffmpegSupport ffmpeg_3
+    ++ optional ffmpegSupport ffmpeg
     ++ optional opusSupport opusfile
     ++ optional resampleSupport soxr
     ++ optional sslSupport openssl;
@@ -60,7 +60,7 @@ in stdenv.mkDerivation {
     runHook postInstall
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Lightweight headless squeezebox client emulator";
     homepage = "https://github.com/ralph-irving/squeezelite";
     license = with licenses; [ gpl3 ] ++ optional dsdSupport bsd2;
diff --git a/pkgs/applications/audio/squishyball/default.nix b/pkgs/applications/audio/squishyball/default.nix
index e6dd48018e7..b44efc1534f 100644
--- a/pkgs/applications/audio/squishyball/default.nix
+++ b/pkgs/applications/audio/squishyball/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, autoreconfHook, fetchsvn, flac, libao, libvorbis, ncurses
-, opusfile, pkgconfig
+{ lib, stdenv, autoreconfHook, fetchsvn, flac, libao, libvorbis, ncurses
+, opusfile, pkg-config
 }:
 
 stdenv.mkDerivation rec {
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
     sha256 = "013vq52q9z6kpg9iyc2jnb3m2gihcjblvwpg4yj4wy1q2c05pzqp";
   };
 
-  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
 
   buildInputs = [ flac libao libvorbis ncurses opusfile ];
 
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
     cp squishyball.1 $out/share/man/man1
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A tool to perform sample comparison testing on the command line";
     longDescription = ''
        squishyball is a simple command-line utility for performing
diff --git a/pkgs/applications/audio/ssrc/default.nix b/pkgs/applications/audio/ssrc/default.nix
index 9d519e14147..3516c6e4db0 100644
--- a/pkgs/applications/audio/ssrc/default.nix
+++ b/pkgs/applications/audio/ssrc/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub }:
+{ lib, stdenv, fetchFromGitHub }:
 
 stdenv.mkDerivation rec {
   pname = "ssrc";
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
     cp ssrc ssrc_hp $out/bin
     '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A high quality audio sampling rate converter";
     longDescription = ''
       This program converts sampling rates of PCM wav files. This
diff --git a/pkgs/applications/audio/stochas/default.nix b/pkgs/applications/audio/stochas/default.nix
new file mode 100644
index 00000000000..d295689716b
--- /dev/null
+++ b/pkgs/applications/audio/stochas/default.nix
@@ -0,0 +1,33 @@
+{ lib, stdenv, fetchFromGitHub, cmake, pkg-config, libX11, libXrandr, libXinerama, libXext, libXcursor, freetype, alsa-lib, libjack2 }:
+
+stdenv.mkDerivation rec {
+  pname = "stochas";
+  version = "1.3.5";
+
+  src = fetchFromGitHub {
+    owner = "surge-synthesizer";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1z8q53qfigw6wwbvpca92b9pf9d0mv3nyb0fmszz5ikj3pcybi7m";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [ cmake pkg-config ];
+
+  buildInputs = [
+    libX11 libXrandr libXinerama libXext libXcursor freetype alsa-lib libjack2
+  ];
+
+  installPhase = ''
+    mkdir -p $out/lib/vst3
+    cp -r stochas_artefacts/Release/VST3/Stochas.vst3 $out/lib/vst3
+  '';
+
+  meta = with lib; {
+    description = "Probabilistic polyrhythmic sequencer plugin";
+    homepage = "https://stochas.org/";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ magnetophon ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/applications/audio/stone-phaser/default.nix b/pkgs/applications/audio/stone-phaser/default.nix
index d36b28df978..7d12c6cbf34 100644
--- a/pkgs/applications/audio/stone-phaser/default.nix
+++ b/pkgs/applications/audio/stone-phaser/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, xorg, cairo, lv2, libjack2, mesa, pkgconfig }:
+{ lib, stdenv, fetchFromGitHub, xorg, cairo, lv2, libjack2, mesa, pkg-config }:
 
 stdenv.mkDerivation rec {
   pname = "stone-phaser";
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
     fetchSubmodules = true;
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [
     xorg.libX11 cairo lv2 libjack2 mesa
   ];
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
 
   installFlags = [ "PREFIX=$(out)" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/jpcima/stone-phaser";
     description = "A classic analog phaser effect, made with DPF and Faust";
     maintainers = [ maintainers.magnetophon ];
diff --git a/pkgs/applications/audio/strawberry/default.nix b/pkgs/applications/audio/strawberry/default.nix
index f278b68b922..6cc55650220 100644
--- a/pkgs/applications/audio/strawberry/default.nix
+++ b/pkgs/applications/audio/strawberry/default.nix
@@ -3,8 +3,8 @@
 , lib
 , fetchFromGitHub
 , cmake
-, pkgconfig
-, alsaLib
+, pkg-config
+, alsa-lib
 , boost
 , chromaprint
 , fftw
@@ -19,33 +19,34 @@
 , protobuf
 , sqlite
 , taglib
-, libpulseaudio ? null
-, libselinux ? null
-, libsepol ? null
-, p11-kit ? null
-, utillinux ? null
+, libpulseaudio
+, libselinux
+, libsepol
+, p11-kit
+, util-linux
 , qtbase
 , qtx11extras
 , qttools
 , withGstreamer ? true
-, gst_all_1 ? null
+, glib-networking
+, gst_all_1
 , withVlc ? true
-, vlc ? null
+, libvlc
 }:
 
 mkDerivation rec {
   pname = "strawberry";
-  version = "0.7.2";
+  version = "0.9.3";
 
   src = fetchFromGitHub {
     owner = "jonaski";
     repo = pname;
     rev = version;
-    sha256 = "sha256-YUR9SDiRV/gJKx4H1cgdDnKGulTQPVP7MpHyihUEgqg=";
+    sha256 = "sha256-OOdHsii6O4okVHDhrqCNJ7WVB0VKPs8q0AhEY+IvflE=";
   };
 
   buildInputs = [
-    alsaLib
+    alsa-lib
     boost
     chromaprint
     fftw
@@ -61,37 +62,40 @@ mkDerivation rec {
     taglib
     qtbase
     qtx11extras
-  ]
-  ++ lib.optionals stdenv.isLinux [
+  ] ++ lib.optionals stdenv.isLinux [
     libpulseaudio
     libselinux
     libsepol
     p11-kit
-    utillinux
-  ]
-  ++ lib.optionals withGstreamer (with gst_all_1; [
+  ] ++ lib.optionals withGstreamer (with gst_all_1; [
+    glib-networking
     gstreamer
     gst-plugins-base
     gst-plugins-good
     gst-plugins-ugly
-  ])
-  ++ lib.optional withVlc vlc;
+  ]) ++ lib.optional withVlc libvlc;
 
-  nativeBuildInputs = [ cmake ninja pkgconfig qttools ];
-
-  cmakeFlags = [
-    "-DUSE_SYSTEM_TAGLIB=ON"
+  nativeBuildInputs = [
+    cmake
+    ninja
+    pkg-config
+    qttools
+  ] ++ lib.optionals stdenv.isLinux [
+    util-linux
   ];
 
-  postInstall = ''
-    qtWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0")
+  postInstall = lib.optionalString withGstreamer ''
+    qtWrapperArgs+=(
+      --prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0"
+      --prefix GIO_EXTRA_MODULES : "${glib-networking.out}/lib/gio/modules"
+    )
   '';
 
   meta = with lib; {
     description = "Music player and music collection organizer";
     homepage = "https://www.strawberrymusicplayer.org/";
     changelog = "https://raw.githubusercontent.com/jonaski/strawberry/${version}/Changelog";
-    license = licenses.gpl3;
+    license = licenses.gpl3Only;
     maintainers = with maintainers; [ peterhoeg ];
     # upstream says darwin should work but they lack maintainers as of 0.6.6
     platforms = platforms.linux;
diff --git a/pkgs/applications/audio/streamripper/default.nix b/pkgs/applications/audio/streamripper/default.nix
index 1411fe59b30..6fae14e2b1a 100644
--- a/pkgs/applications/audio/streamripper/default.nix
+++ b/pkgs/applications/audio/streamripper/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl , glib, pkgconfig, libogg, libvorbis, libmad }:
+{ lib, stdenv, fetchurl , glib, pkg-config, libogg, libvorbis, libmad }:
 
 stdenv.mkDerivation rec {
   pname = "streamripper";
@@ -9,10 +9,10 @@ stdenv.mkDerivation rec {
     sha256 = "0hnyv3206r0rfprn3k7k6a0j959kagsfyrmyjm3gsf3vkhp5zmy1";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ glib libogg libvorbis libmad ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://streamripper.sourceforge.net/";
     description = "Application that lets you record streaming mp3 to your hard drive";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/string-machine/default.nix b/pkgs/applications/audio/string-machine/default.nix
index 67053baa35f..a146ea8cd97 100644
--- a/pkgs/applications/audio/string-machine/default.nix
+++ b/pkgs/applications/audio/string-machine/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, boost, cairo, lv2, pkg-config }:
+{ lib, stdenv, fetchFromGitHub, boost, cairo, lv2, pkg-config }:
 
 stdenv.mkDerivation rec {
   pname = "string-machine";
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
     "PREFIX=$(out)"
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/jpcima/string-machine";
     description = "Digital model of electronic string ensemble instrument";
     maintainers = [ maintainers.magnetophon ];
diff --git a/pkgs/applications/audio/sublime-music/default.nix b/pkgs/applications/audio/sublime-music/default.nix
index 515a653d6bc..3d25ec3cdbb 100644
--- a/pkgs/applications/audio/sublime-music/default.nix
+++ b/pkgs/applications/audio/sublime-music/default.nix
@@ -1,5 +1,11 @@
-{ lib, python3Packages, gobject-introspection, gtk3, pango, wrapGAppsHook
-
+{ fetchFromGitLab
+, lib
+, python3Packages
+, gobject-introspection
+, gtk3
+, pango
+, wrapGAppsHook
+, xvfb-run
 , chromecastSupport ? false
 , serverSupport ? false
 , keyringSupport ? true
@@ -9,16 +15,19 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "sublime-music";
-  version = "0.11.0";
+  version = "0.11.12";
+  format = "pyproject";
 
-  src = python3Packages.fetchPypi {
-    inherit pname version;
-    sha256 = "1rnjc8pjfaq67mq10gy939g77azc80lxf77s9nsaxds4q5j1yrl2";
+  src = fetchFromGitLab {
+    owner = "sublime-music";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-fcEdpht+xKJRTaD3gKoRdf6O2SAPlZHZ61Jy8bdTKjs=";
   };
 
   nativeBuildInputs = [
     gobject-introspection
-    python3Packages.setuptools
+    python3Packages.poetry-core
     wrapGAppsHook
   ];
 
@@ -31,6 +40,7 @@ python3Packages.buildPythonApplication rec {
   ;
 
   propagatedBuildInputs = with python3Packages; [
+    bleach
     dataclasses-json
     deepdiff
     fuzzywuzzy
@@ -51,10 +61,30 @@ python3Packages.buildPythonApplication rec {
   # 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" ];
+
+  postInstall = ''
+    install -Dm444 sublime-music.desktop      -t $out/share/applications
+    install -Dm444 sublime-music.metainfo.xml -t $out/share/metainfo
+
+    for size in 16 22 32 48 64 72 96 128 192 512 1024; do
+        install -Dm444 logo/rendered/"$size".png \
+          $out/share/icons/hicolor/"$size"x"$size"/apps/sublime-music.png
+    done
+  '';
+
   meta = with lib; {
     description = "GTK3 Subsonic/Airsonic client";
     homepage = "https://sublimemusic.app/";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ albakham ];
+    maintainers = with maintainers; [ albakham sumnerevans ];
   };
 }
diff --git a/pkgs/applications/audio/sunvox/default.nix b/pkgs/applications/audio/sunvox/default.nix
index 48ad9bc971c..7c5c378d2fa 100644
--- a/pkgs/applications/audio/sunvox/default.nix
+++ b/pkgs/applications/audio/sunvox/default.nix
@@ -1,7 +1,7 @@
-{ stdenv, fetchurl, unzip, alsaLib, libX11, libXi, SDL2 }:
+{ lib, stdenv, fetchurl, unzip, alsa-lib, libX11, libXi, SDL2 }:
 
 let
-  libPath = stdenv.lib.makeLibraryPath [ stdenv.cc.cc alsaLib libX11 libXi SDL2 ];
+  libPath = lib.makeLibraryPath [ stdenv.cc.cc alsa-lib libX11 libXi SDL2 ];
   arch =
     if stdenv.isAarch64
     then "arm64"
@@ -13,14 +13,14 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "SunVox";
-  version = "1.9.5d";
+  version = "1.9.6c";
 
   src = fetchurl {
     url = "http://www.warmplace.ru/soft/sunvox/sunvox-${version}.zip";
-    sha256 = "15pyc3dk4dqlivgzki8sv7xpwg3bbn5xv9338g16a0dbn7s3kich";
+    sha256 = "10lqbm1grw0sqasx7i6528cishv5ksdf9zbb3ygxd8c1iwaxzhb9";
   };
 
-  buildInputs = [ unzip ];
+  nativeBuildInputs = [ unzip ];
 
   unpackPhase = "unzip $src";
 
@@ -38,7 +38,7 @@ stdenv.mkDerivation rec {
     ln -s "$bin" $out/bin/sunvox
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Small, fast and powerful modular synthesizer with pattern-based sequencer";
     license = licenses.unfreeRedistributable;
     homepage = "http://www.warmplace.ru/soft/sunvox/";
diff --git a/pkgs/applications/audio/surge/default.nix b/pkgs/applications/audio/surge/default.nix
new file mode 100644
index 00000000000..849b07d67e1
--- /dev/null
+++ b/pkgs/applications/audio/surge/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, lib, fetchurl, fetchFromGitHub, cmake, git, pkg-config, python3
+, cairo, libsndfile, libxcb, libxkbcommon, xcbutil, xcbutilcursor, xcbutilkeysyms, zenity
+, curl, rsync
+}:
+
+stdenv.mkDerivation rec {
+  pname = "surge";
+  version = "1.9.0";
+
+  src = fetchurl {
+    url = "https://github.com/surge-synthesizer/releases/releases/download/${version}/SurgeSrc_${version}.tgz";
+    sha256 = "00af4lfcipl0rn0dn4gfipx7nbk8ym1mrmji8v0ar98frsrpxg4k";
+  };
+
+  extraContent = fetchFromGitHub {
+    owner = "surge-synthesizer";
+    repo = "surge-extra-content";
+    # rev from: https://github.com/surge-synthesizer/surge/blob/release_1.8.1/cmake/stage-extra-content.cmake#L6
+    # or: https://github.com/surge-synthesizer/surge/blob/main/cmake/stage-extra-content.cmake
+    # SURGE_EXTRA_CONTENT_HASH
+    rev = "afc591cc06d9adc3dc8dc515a55c66873fa10296";
+    sha256 = "1wqv86l70nwlrb10n47rib80f47a96j9qqg8w5dv46ys1sq2nz7z";
+  };
+  nativeBuildInputs = [ cmake git pkg-config python3 ];
+  buildInputs = [ cairo libsndfile libxcb libxkbcommon xcbutil xcbutilcursor xcbutilkeysyms zenity curl rsync ];
+
+  postPatch = ''
+    substituteInPlace src/common/SurgeStorage.cpp --replace "/usr/share/Surge" "$out/share/surge"
+    substituteInPlace src/linux/UserInteractionsLinux.cpp --replace '"zenity' '"${zenity}/bin/zenity'
+    patchShebangs scripts/linux/
+    cp -r $extraContent/Skins/ resources/data/skins
+  '';
+
+
+  installPhase = ''
+    cd ..
+    cmake --build build --config Release --target install-everything-global
+  '';
+
+  doInstallCheck = true;
+  installCheckPhase = ''
+    export HOME=$(mktemp -d)
+    export SURGE_DISABLE_NETWORK_TESTS=TRUE
+    build/surge-headless
+  '';
+
+  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/pkgs/applications/audio/svox/default.nix b/pkgs/applications/audio/svox/default.nix
index 0f8e5143883..044fd176481 100644
--- a/pkgs/applications/audio/svox/default.nix
+++ b/pkgs/applications/audio/svox/default.nix
@@ -1,39 +1,26 @@
-{ stdenv, fetchgit }:
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, popt }:
 
 stdenv.mkDerivation {
   pname = "svox";
-  version = "2017-07-18";
+  version = "2018-02-14";
 
-  src = fetchgit {
-    url = "https://android.googlesource.com/platform/external/svox";
-    rev = "7e68d0e9aac1b5d2ad15e92ddaa3bceb27973fcb";
-    sha256 = "1bqj12w23nn27x64ianm2flrqvkskpvgrnly7ah8gv6k8s8chh3r";
+  # basically took the source code from android and borrowed autotool patches from debian
+  src = fetchFromGitHub {
+    owner = "naggety";
+    repo = "picotts";
+    rev = "e3ba46009ee868911fa0b53db672a55f9cc13b1c";
+    sha256 = "0k3m7vh1ak9gmxd83x29cvhzfkybgz5hnlhd9xj19l1bjyx84s8v";
   };
 
   postPatch = ''
     cd pico
   '';
 
-  buildPhase = ''
-    cd lib
-    for i in *.c; do
-      $CC -O2 -fPIC -c -o ''${i%.c}.o $i
-    done
-    $CC -shared -o libttspico.so *.o
-    cd ..
-  '';
-
-  installPhase = ''
-    install -Dm755 lib/libttspico.so $out/lib/libttspico.so
-    mkdir -p $out/include
-    cp lib/*.h $out/include
-    mkdir -p $out/share/pico/lang
-    cp lang/*.bin $out/share/pico/lang
-  '';
+  buildInputs = [ popt ];
 
-  NIX_CFLAGS_COMPILE = "-include stdint.h";
+  nativeBuildInputs = [ autoreconfHook ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Text-to-speech engine";
     homepage = "https://android.googlesource.com/platform/external/svox";
     platforms = platforms.linux;
diff --git a/pkgs/applications/audio/swh-lv2/default.nix b/pkgs/applications/audio/swh-lv2/default.nix
index 02499d54476..f2b71c1ce29 100644
--- a/pkgs/applications/audio/swh-lv2/default.nix
+++ b/pkgs/applications/audio/swh-lv2/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, fftwSinglePrec, libxslt, lv2, pkgconfig }:
+{ lib, stdenv, fetchurl, fftwSinglePrec, libxslt, lv2, pkg-config }:
 
 stdenv.mkDerivation rec {
   pname = "swh-lv2";
@@ -14,12 +14,12 @@ stdenv.mkDerivation rec {
     sed -e "s#PREFIX = /usr/local#PREFIX = $out#" -i Makefile
   '';
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ fftwSinglePrec lv2 ];
 
   installPhase = "make install-system";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://plugin.org.uk";
     description = "LV2 version of Steve Harris' SWH plugins";
     longDescription = ''
diff --git a/pkgs/applications/audio/synthv1/default.nix b/pkgs/applications/audio/synthv1/default.nix
index c7e936d28e5..eecf8caee37 100644
--- a/pkgs/applications/audio/synthv1/default.nix
+++ b/pkgs/applications/audio/synthv1/default.nix
@@ -1,19 +1,19 @@
-{ mkDerivation, stdenv, fetchurl, pkgconfig, qtbase, qttools, libjack2, alsaLib, liblo, lv2 }:
+{ mkDerivation, lib, fetchurl, pkg-config, qtbase, qttools, libjack2, alsa-lib, liblo, lv2 }:
 
 mkDerivation rec {
   pname = "synthv1";
-  version = "0.9.14";
+  version = "0.9.15";
 
   src = fetchurl {
     url = "mirror://sourceforge/synthv1/${pname}-${version}.tar.gz";
-    sha256 = "08n83krkak20924flb9azhm9hn40lyfvn29m63zs3lw3wajf0b40";
+    sha256 = "047y2l7ipzv00ly54f074v6p043xjml7vz0svc7z81bhx74vs0ix";
   };
 
-  buildInputs = [ qtbase qttools libjack2 alsaLib liblo lv2 ];
+  buildInputs = [ qtbase qttools libjack2 alsa-lib liblo lv2 ];
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "An old-school 4-oscillator subtractive polyphonic synthesizer with stereo fx";
     homepage = "https://synthv1.sourceforge.io/";
     license = licenses.gpl2Plus;
diff --git a/pkgs/applications/audio/tageditor/default.nix b/pkgs/applications/audio/tageditor/default.nix
new file mode 100644
index 00000000000..02e23084cf5
--- /dev/null
+++ b/pkgs/applications/audio/tageditor/default.nix
@@ -0,0 +1,58 @@
+{ stdenv
+, pkgs
+, fetchFromGitHub
+, pkg-config
+, cmake
+
+, cpp-utilities
+, qtutilities
+, mp4v2
+, libid3tag
+, qtbase
+, qttools
+, qtwebengine
+, qtx11extras
+, tagparser
+, wrapQtAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "tageditor";
+  version = "3.3.10";
+
+  src = fetchFromGitHub {
+    owner = "martchus";
+    repo = "tageditor";
+    rev = "v${version}";
+    sha256 = "16cmq7dyalcwc8gx1y9acngw5imjh8ydp4prxy7qpzk4fj3kpsak";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    cmake
+    wrapQtAppsHook
+  ];
+  buildInputs = [
+    mp4v2
+    libid3tag
+    pkg-config
+    qtbase
+    qttools
+    qtx11extras
+    qtwebengine
+    cpp-utilities
+    qtutilities
+    tagparser
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with pkgs.lib; {
+    homepage = "https://github.com/Martchus/tageditor";
+    description = "A tag editor with Qt GUI and command-line interface supporting MP4/M4A/AAC (iTunes), ID3, Vorbis, Opus, FLAC and Matroska";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.matthiasbeyer ];
+    platforms = platforms.linux;
+  };
+}
+
diff --git a/pkgs/applications/audio/talentedhack/default.nix b/pkgs/applications/audio/talentedhack/default.nix
index b30cf59f7b3..387fd4f5a0c 100644
--- a/pkgs/applications/audio/talentedhack/default.nix
+++ b/pkgs/applications/audio/talentedhack/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, lv2, fftwFloat, pkgconfig }:
+{ lib, stdenv, fetchFromGitHub, lv2, fftwFloat, pkg-config }:
 
 stdenv.mkDerivation rec {
   pname = "talentedhack";
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
     sha256 = "0kwvayalysmk7y49jq0k16al252md8d45z58hphzsksmyz6148bx";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
 
   buildInputs = [ lv2 fftwFloat ];
 
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
     cp *.so *.ttl $d
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/jeremysalwen/TalentedHack";
     description = "LV2 port of Autotalent pitch correction plugin";
     license = licenses.gpl3;
diff --git a/pkgs/applications/audio/tambura/default.nix b/pkgs/applications/audio/tambura/default.nix
index 96f9bb7053e..b1a6513c7f7 100644
--- a/pkgs/applications/audio/tambura/default.nix
+++ b/pkgs/applications/audio/tambura/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }:
+{ lib, stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }:
 stdenv.mkDerivation rec {
   pname = "Tambura";
   version = "1.0";
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
     cp -r ${pname}.lv2/ $out/lib/lv2
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A FAUST patch inspired by the Indian Tambura/Tanpura - a four string drone instrument, known for its unique rich harmonic timbre";
     homepage = "https://github.com/olilarkin/Tambura";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/tamgamp.lv2/default.nix b/pkgs/applications/audio/tamgamp.lv2/default.nix
index 9f51f9d022d..2907a5277ee 100644
--- a/pkgs/applications/audio/tamgamp.lv2/default.nix
+++ b/pkgs/applications/audio/tamgamp.lv2/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, pkg-config, lv2, zita-resampler }:
+{ lib, stdenv, fetchFromGitHub, pkg-config, lv2, zita-resampler }:
 
 stdenv.mkDerivation rec {
   pname = "tamgamp.lv2";
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/sadko4u/tamgamp.lv2";
     description = "Guitar amplifier simulator";
     longDescription = ''
diff --git a/pkgs/applications/audio/tap-plugins/default.nix b/pkgs/applications/audio/tap-plugins/default.nix
new file mode 100644
index 00000000000..c0b2c64822f
--- /dev/null
+++ b/pkgs/applications/audio/tap-plugins/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenv, fetchurl, ladspa-sdk, pkgs, ... }:
+
+stdenv.mkDerivation rec {
+  pname = "tap-plugins";
+  version = "1.0.1";
+
+  src = pkgs.fetchFromGitHub {
+    owner = "tomszilagyi";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0c6qhyf8smlypc36vmpr42dm3mrzk6pg9cc9r0vx22qbrd5zfpjw";
+  };
+
+  buildInputs = [ ladspa-sdk ];
+
+  preInstall = ''
+    substituteInPlace Makefile --replace /usr/local "$out"
+  '';
+
+  meta = with lib; {
+    description = "Tom's Audio Processing plugins";
+    longDescription = ''
+      A number of LADSPA plugins including: TAP AutoPanner, TAP Chorus/Flanger, TAP DeEsser,
+      TAP Dynamics (Mono & Stereo), TAP Equalizer and TAP Equalizer/BW, TAP Fractal Doubler, TAP Pink/Fractal Noise,
+      TAP Pitch Shifter, TAP Reflector, TAP Reverberator, TAP Rotary Speaker, TAP Scaling Limiter,
+      TAP Sigmoid Booster, TAP Stereo Echo, TAP Tremolo, TAP TubeWarmth, TAP Vibrato.
+    '';
+    homepage = "http://tap-plugins.sourceforge.net/ladspa.html";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.fps ];
+  };
+}
diff --git a/pkgs/applications/audio/tetraproc/default.nix b/pkgs/applications/audio/tetraproc/default.nix
index 8780e54bb7c..b5012029480 100644
--- a/pkgs/applications/audio/tetraproc/default.nix
+++ b/pkgs/applications/audio/tetraproc/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchurl, makeWrapper
-, expat, fftwFloat, fontconfig, freetype, libjack2, jack2Full, libclthreads, libclxclient
+{ lib, stdenv, fetchurl, makeWrapper
+, expat, fftwFloat, fontconfig, freetype, libjack2, jack2, libclthreads, libclxclient
 , libsndfile, libxcb, xorg
 }:
 
@@ -30,10 +30,10 @@ stdenv.mkDerivation rec {
 
   postInstall = ''
     # Make sure Jack is avalable in $PATH for tetraproc
-    wrapProgram $out/bin/tetraproc --prefix PATH : "${jack2Full}/bin"
+    wrapProgram $out/bin/tetraproc --prefix PATH : "${jack2}/bin"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Converts the A-format signals from a tetrahedral Ambisonic microphone into B-format signals ready for recording";
     homepage = "http://kokkinizita.linuxaudio.org/linuxaudio/";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/timemachine/default.nix b/pkgs/applications/audio/timemachine/default.nix
index 8be43346bc0..623714e706f 100644
--- a/pkgs/applications/audio/timemachine/default.nix
+++ b/pkgs/applications/audio/timemachine/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, autoconf, automake, pkgconfig, gtk2
+{ lib, stdenv, fetchFromGitHub, autoconf, automake, pkg-config, gtk2
 , libjack2, libsndfile
 }:
 
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
     sha256 = "16fgyw6jnscx9279dczv72092dddghwlp53rkfw469kcgvjhwx0z";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
     buildInputs = [ autoconf automake gtk2 libjack2
       libsndfile
     ];
@@ -24,9 +24,9 @@ stdenv.mkDerivation rec {
   meta = {
     description = "JACK audio recorder";
     homepage = "http://plugin.org.uk/timemachine/";
-    license = stdenv.lib.licenses.lgpl2;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.nico202 ];
+    license = lib.licenses.lgpl2;
+    platforms = lib.platforms.linux;
+    maintainers = [ lib.maintainers.nico202 ];
   };
 }
 
diff --git a/pkgs/applications/audio/tonelib-gfx/default.nix b/pkgs/applications/audio/tonelib-gfx/default.nix
new file mode 100644
index 00000000000..00be0934552
--- /dev/null
+++ b/pkgs/applications/audio/tonelib-gfx/default.nix
@@ -0,0 +1,65 @@
+{ stdenv
+, dpkg
+, lib
+, autoPatchelfHook
+, fetchurl
+, gtk3
+, glib
+, desktop-file-utils
+, alsa-lib
+, libjack2
+, harfbuzz
+, fribidi
+, pango
+, freetype
+, curl
+}:
+
+stdenv.mkDerivation rec {
+  pname = "tonelib-gfx";
+  version = "4.6.6";
+
+  src = fetchurl {
+    url = "https://www.tonelib.net/download/0509/ToneLib-GFX-amd64.deb";
+    sha256 = "sha256-wdX3SQSr0IZHsTUl+1Y0iETme3gTyryexhZ/9XHkGeo=";
+  };
+
+  buildInputs = [
+    dpkg
+    gtk3
+    glib
+    desktop-file-utils
+    alsa-lib
+    libjack2
+    harfbuzz
+    fribidi
+    pango
+    freetype
+  ];
+
+  nativeBuildInputs = [
+    autoPatchelfHook
+  ];
+
+  unpackPhase = ''
+    mkdir -p $TMP/ $out/
+    dpkg -x $src $TMP
+  '';
+
+  installPhase = ''
+    cp -R $TMP/usr/* $out/
+    mv $out/bin/ToneLib-GFX $out/bin/tonelib-gfx
+  '';
+
+  runtimeDependencies = [
+    (lib.getLib curl)
+  ];
+
+  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;
+  };
+}
diff --git a/pkgs/applications/audio/tonelib-jam/default.nix b/pkgs/applications/audio/tonelib-jam/default.nix
new file mode 100644
index 00000000000..7a5a5c7280f
--- /dev/null
+++ b/pkgs/applications/audio/tonelib-jam/default.nix
@@ -0,0 +1,65 @@
+{ stdenv
+, dpkg
+, lib
+, autoPatchelfHook
+, fetchurl
+, gtk3
+, glib
+, desktop-file-utils
+, alsa-lib
+, libjack2
+, harfbuzz
+, fribidi
+, pango
+, freetype
+, curl
+}:
+
+stdenv.mkDerivation rec {
+  pname = "tonelib-jam";
+  version = "4.6.6";
+
+  src = fetchurl {
+    url = "https://www.tonelib.net/download/0509/ToneLib-Jam-amd64.deb";
+    sha256 = "sha256-cizIQgO35CQSLme/LKQqP+WzB/jCTk+fS5Z+EtF7wnQ=";
+  };
+
+  buildInputs = [
+    dpkg
+    gtk3
+    glib
+    desktop-file-utils
+    alsa-lib
+    libjack2
+    harfbuzz
+    fribidi
+    pango
+    freetype
+  ];
+
+  nativeBuildInputs = [
+    autoPatchelfHook
+  ];
+
+  unpackPhase = ''
+    mkdir -p $TMP/ $out/
+    dpkg -x $src $TMP
+  '';
+
+  installPhase = ''
+    cp -R $TMP/usr/* $out/
+    mv $out/bin/ToneLib-Jam $out/bin/tonelib-jam
+  '';
+
+  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;
+  };
+}
diff --git a/pkgs/applications/audio/tonelib-zoom/default.nix b/pkgs/applications/audio/tonelib-zoom/default.nix
new file mode 100644
index 00000000000..2eef1f7bd60
--- /dev/null
+++ b/pkgs/applications/audio/tonelib-zoom/default.nix
@@ -0,0 +1,53 @@
+{ stdenv
+, dpkg
+, lib
+, autoPatchelfHook
+, fetchurl
+, webkitgtk
+, libjack2
+, alsa-lib
+, curl
+}:
+
+stdenv.mkDerivation rec {
+  pname = "tonelib-zoom";
+  version = "4.3.1";
+
+  src = fetchurl {
+    url = "https://www.tonelib.net/download/0129/ToneLib-Zoom-amd64.deb";
+    sha256 = "sha256-4q2vM0/q7o/FracnO2xxnr27opqfVQoN7fsqTD9Tr/c=";
+  };
+
+  buildInputs = [
+    dpkg
+    webkitgtk
+    libjack2
+    alsa-lib
+  ];
+
+  nativeBuildInputs = [
+    autoPatchelfHook
+  ];
+
+  unpackPhase = ''
+    mkdir -p $TMP/ $out/
+    dpkg -x $src $TMP
+  '';
+
+  installPhase = ''
+    cp -R $TMP/usr/* $out/
+    mv $out/bin/ToneLib-Zoom $out/bin/tonelib-zoom
+  '';
+
+  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;
+  };
+}
diff --git a/pkgs/applications/audio/tony/default.nix b/pkgs/applications/audio/tony/default.nix
index 011d8025364..15c973a46fc 100644
--- a/pkgs/applications/audio/tony/default.nix
+++ b/pkgs/applications/audio/tony/default.nix
@@ -1,21 +1,22 @@
-{ stdenv, fetchurl, pkgconfig, wrapQtAppsHook
-, alsaLib, boost, bzip2, fftw, fftwFloat, libX11, libfishsound, libid3tag
+{ lib, stdenv, fetchurl, pkg-config, wrapQtAppsHook
+, alsa-lib, boost, bzip2, fftw, fftwFloat, libX11, libfishsound, libid3tag
 , libjack2, liblo, libmad, libogg, liboggz, libpulseaudio, libsamplerate
 , libsndfile, lrdf, opusfile, qtbase, qtsvg, rubberband, serd, sord
 }:
 
 stdenv.mkDerivation rec {
-  name = "tony-2.1.1";
+  pname = "tony";
+  version = "2.1.1";
 
   src = fetchurl {
-    url = "https://code.soundsoftware.ac.uk/attachments/download/2616/${name}.tar.gz";
+    url = "https://code.soundsoftware.ac.uk/attachments/download/2616/${pname}-${version}.tar.gz";
     sha256 = "03g2bmlj08lmgvh54dyd635xccjn730g4wwlhpvsw04bffz8b7fp";
   };
 
-  nativeBuildInputs = [ pkgconfig wrapQtAppsHook ];
+  nativeBuildInputs = [ pkg-config wrapQtAppsHook ];
 
   buildInputs = [
-    alsaLib boost bzip2 fftw fftwFloat libX11 libfishsound libid3tag
+    alsa-lib boost bzip2 fftw fftwFloat libX11 libfishsound libid3tag
     libjack2 liblo libmad libogg liboggz libpulseaudio libsamplerate
     libsndfile lrdf opusfile qtbase qtsvg rubberband serd sord
   ];
@@ -27,7 +28,7 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Pitch and note annotation of unaccompanied melody";
     homepage = "https://www.sonicvisualiser.org/tony/";
     license = licenses.gpl2Plus;
diff --git a/pkgs/applications/audio/transcode/default.nix b/pkgs/applications/audio/transcode/default.nix
index c7ee3914f25..7a7ec1e4188 100644
--- a/pkgs/applications/audio/transcode/default.nix
+++ b/pkgs/applications/audio/transcode/default.nix
@@ -1,15 +1,16 @@
-{ stdenv, fetchurl, flac, lame, zlib, libjpeg, libvorbis, libtheora, libxml2
-, lzo, libdvdread, pkgconfig, x264, libmpeg2, xvidcore }:
+{ lib, stdenv, fetchurl, flac, lame, zlib, libjpeg, libvorbis, libtheora, libxml2
+, lzo, libdvdread, pkg-config, x264, libmpeg2, xvidcore }:
 
 stdenv.mkDerivation rec {
-  name = "transcode-1.1.7";
+  pname = "transcode";
+  version = "1.1.7";
   src = fetchurl {
-    url = "https://bitbucket.org/france/transcode-tcforge/downloads/${name}.tar.bz2";
+    url = "https://bitbucket.org/france/transcode-tcforge/downloads/${pname}-${version}.tar.bz2";
     sha256 = "1e4e72d8e0dd62a80b8dd90699f5ca64c9b0cb37a5c9325c184166a9654f0a92";
   };
 
   buildInputs = [ flac lame zlib libjpeg libvorbis libtheora libxml2 lzo
-                  libdvdread pkgconfig x264 libmpeg2 xvidcore ];
+                  libdvdread pkg-config x264 libmpeg2 xvidcore ];
   configureFlags = [
     "--disable-ffmpeg" "--disable-libavcodec" "--disable-libavformat"
     "--enable-lzo" "--enable-ogg" "--enable-vorbis" "--enable-theora" "--enable-libxml2"
@@ -18,7 +19,7 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Suite of command line utilities for transcoding video and audio codecs, and for converting between different container formats";
     homepage = "http://www.transcoding.org/";
     license = licenses.lgpl2Plus;
diff --git a/pkgs/applications/audio/transcribe/default.nix b/pkgs/applications/audio/transcribe/default.nix
index d9469fa4b7a..9061c38f19c 100644
--- a/pkgs/applications/audio/transcribe/default.nix
+++ b/pkgs/applications/audio/transcribe/default.nix
@@ -1,19 +1,14 @@
-{ stdenv, fetchzip, wrapGAppsHook, alsaLib, atk, cairo, gdk-pixbuf
+{ stdenv, fetchzip, lib, wrapGAppsHook, alsa-lib, atk, cairo, gdk-pixbuf
 , glib, gst_all_1,  gtk3, libSM, libX11, libpng12, pango, zlib }:
 
 stdenv.mkDerivation rec {
   pname = "transcribe";
-  version = "8.72";
+  version = "9.00";
 
-  src = if stdenv.hostPlatform.system == "i686-linux" then
+  src = if stdenv.hostPlatform.system == "x86_64-linux" then
     fetchzip {
-      url = "https://www.seventhstring.com/xscribe/downlinux32/xscsetup.tar.gz";
-      sha256 = "1h5l7ry9c9awpxfnd29b0wm973ifrhj17xl5d2fdsclw2swsickb";
-    }
-  else if stdenv.hostPlatform.system == "x86_64-linux" then
-    fetchzip {
-      url = "https://www.seventhstring.com/xscribe/downlinux64/xsc64setup.tar.gz";
-      sha256 = "1rpd3ppnx5i5yrnfbjrx7h7dk48kwl99i9lnpa75ap7nxvbiznm0";
+      url = "https://www.seventhstring.com/xscribe/downlo/xscsetup-9.00.0.tar.gz";
+      sha256 = "0mgjx0hnps3jmc2d9hkskxbmwcqf7f9jx595j5sc501br1l84sdf";
     }
   else throw "Platform not supported";
 
@@ -24,8 +19,8 @@ stdenv.mkDerivation rec {
 
   dontPatchELF = true;
 
-  libPath = with gst_all_1; stdenv.lib.makeLibraryPath [
-    stdenv.cc.cc glib gtk3 atk pango cairo gdk-pixbuf alsaLib
+  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
   ];
 
@@ -34,9 +29,7 @@ stdenv.mkDerivation rec {
     cp transcribe $out/libexec
     cp xschelp.htb readme_gtk.html $out/share/doc
     cp -r gtkicons $out/share/icons
-
     ln -s $out/share/doc/xschelp.htb $out/libexec
-
     patchelf \
       --set-interpreter $(cat ${stdenv.cc}/nix-support/dynamic-linker) \
       $out/libexec/transcribe
@@ -53,7 +46,7 @@ stdenv.mkDerivation rec {
     ln -s $out/libexec/transcribe $out/bin/
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Software to help transcribe recorded music";
     longDescription = ''
       The Transcribe! application is an assistant for people who want
@@ -67,7 +60,5 @@ stdenv.mkDerivation rec {
     homepage = "https://www.seventhstring.com/xscribe/";
     license = licenses.unfree;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ michalrus ];
-    broken = true;
   };
 }
diff --git a/pkgs/applications/audio/traverso/default.nix b/pkgs/applications/audio/traverso/default.nix
index 63ba44bec35..698a03b4a71 100644
--- a/pkgs/applications/audio/traverso/default.nix
+++ b/pkgs/applications/audio/traverso/default.nix
@@ -1,5 +1,5 @@
-{ mkDerivation, stdenv, fetchurl, cmake, pkgconfig
-, alsaLib, fftw, flac, lame, libjack2, libmad, libpulseaudio
+{ mkDerivation, lib, fetchurl, cmake, pkg-config
+, alsa-lib, fftw, flac, lame, libjack2, libmad, libpulseaudio
 , libsamplerate, libsndfile, libvorbis, portaudio, qtbase, wavpack
 }:
 mkDerivation {
@@ -11,17 +11,16 @@ mkDerivation {
     sha256 = "12f7x8kw4fw1j0xkwjrp54cy4cv1ql0zwz2ba5arclk4pf6bhl7q";
   };
 
-  nativeBuildInputs = [ cmake pkgconfig ];
-  buildInputs = [ alsaLib fftw flac.dev libjack2 lame
+  nativeBuildInputs = [ cmake pkg-config ];
+  buildInputs = [ alsa-lib fftw flac.dev libjack2 lame
                   libmad libpulseaudio libsamplerate.dev libsndfile.dev libvorbis
                   portaudio qtbase wavpack ];
 
   cmakeFlags = [ "-DWANT_PORTAUDIO=1" "-DWANT_PULSEAUDIO=1" "-DWANT_MP3_ENCODE=1" "-DWANT_LV2=0" ];
 
-  enableParallelBuilding = true;
   hardeningDisable = [ "format" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Cross-platform multitrack audio recording and audio editing suite";
     homepage = "https://traverso-daw.org/";
     license = with licenses; [ gpl2Plus lgpl21Plus ];
diff --git a/pkgs/applications/audio/tree-from-tags/default.nix b/pkgs/applications/audio/tree-from-tags/default.nix
index 3b25b4218f1..4bf4db09ac0 100644
--- a/pkgs/applications/audio/tree-from-tags/default.nix
+++ b/pkgs/applications/audio/tree-from-tags/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, bundlerEnv, ruby, fetchFromGitHub }:
+{ lib, stdenv, bundlerEnv, ruby, fetchFromGitHub }:
 let
   version = "1.1";
   gems = bundlerEnv {
@@ -28,7 +28,7 @@ EOF
     chmod +x $bin
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Create file hierarchies from media tags";
     homepage = "https://www.emacswiki.org/emacs/Bongo";
     platforms = ruby.meta.platforms;
diff --git a/pkgs/applications/audio/tree-from-tags/gemset.nix b/pkgs/applications/audio/tree-from-tags/gemset.nix
index 20e10e9d93b..f482d174ebc 100644
--- a/pkgs/applications/audio/tree-from-tags/gemset.nix
+++ b/pkgs/applications/audio/tree-from-tags/gemset.nix
@@ -7,4 +7,4 @@
     };
     version = "0.7.1";
   };
-}
\ No newline at end of file
+}
diff --git a/pkgs/applications/audio/tuijam/default.nix b/pkgs/applications/audio/tuijam/default.nix
deleted file mode 100644
index 8a08b64508d..00000000000
--- a/pkgs/applications/audio/tuijam/default.nix
+++ /dev/null
@@ -1,46 +0,0 @@
-{ buildPythonApplication
-, fetchFromGitHub
-, lib
-, python3Packages
-, youtube-dl
-}:
-
-buildPythonApplication rec {
-  pname = "tuijam";
-  version = "unstable-2020-06-05";
-
-  src = fetchFromGitHub {
-    owner = "cfangmeier";
-    repo = pname;
-    rev = "7baec6f6e80ee90da0d0363b430dd7d5695ff03b";
-    sha256 = "1l0s88jvj99jkxnczw5nfj78m8vihh29g815n4mg9jblad23mgx5";
-  };
-
-  buildInputs = [ python3Packages.Babel ];
-
-  # the package has no tests
-  doCheck = false;
-
-  propagatedBuildInputs = with python3Packages; [
-    gmusicapi
-    google_api_python_client
-    mpv
-    pydbus
-    pygobject3
-    pyyaml
-    requests
-    rsa
-    urwid
-  ];
-
-  meta = with lib; {
-    description = "A fancy TUI client for Google Play Music";
-    longDescription = ''
-      TUIJam seeks to make a simple, attractive, terminal-based interface to
-      listening to music for Google Play Music All-Access subscribers.
-    '';
-    homepage    = "https://github.com/cfangmeier/tuijam";
-    license     = licenses.mit;
-    maintainers = with maintainers; [ kalbasit ];
-  };
-}
diff --git a/pkgs/applications/audio/tunefish/default.nix b/pkgs/applications/audio/tunefish/default.nix
new file mode 100644
index 00000000000..df7564abcf0
--- /dev/null
+++ b/pkgs/applications/audio/tunefish/default.nix
@@ -0,0 +1,43 @@
+{ lib, stdenv, fetchFromGitHub, pkg-config, python3
+, alsa-lib, curl, freetype, gtk3, libGL, libX11, libXext, libXinerama, webkitgtk
+}:
+
+stdenv.mkDerivation {
+  pname = "tunefish";
+  version = "unstable-2020-08-13";
+
+  src = fetchFromGitHub {
+    owner = "jpcima";
+    repo = "tunefish";
+    rev = "b3d83cc66201619f6399500f6897fbeb1786d9ed";
+    fetchSubmodules = true;
+    sha256 = "0rjpq3s609fblzkvnc9729glcnfinmxljh0z8ldpzr245h367zxh";
+  };
+
+  nativeBuildInputs = [ pkg-config python3 ];
+  buildInputs = [ alsa-lib curl freetype gtk3 libGL libX11 libXext libXinerama webkitgtk ];
+
+  postPatch = ''
+    patchShebangs src/tunefish4/generate-lv2-ttl.py
+  '';
+
+  makeFlags = [
+    "-C" "src/tunefish4/Builds/LinuxMakefile"
+    "CONFIG=Release"
+  ];
+
+  installPhase = ''
+    mkdir -p $out/lib/lv2
+    cp -r src/tunefish4/Builds/LinuxMakefile/build/Tunefish4.lv2 $out/lib/lv2
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    homepage = "https://tunefish-synth.com/";
+    description = "Virtual analog synthesizer LV2 plugin";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ orivej ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/pkgs/applications/audio/uade123/default.nix b/pkgs/applications/audio/uade123/default.nix
index 9130461e4d7..8191fd381a4 100644
--- a/pkgs/applications/audio/uade123/default.nix
+++ b/pkgs/applications/audio/uade123/default.nix
@@ -1,25 +1,74 @@
-{ stdenv, fetchurl, which, libao, pkgconfig }:
+{ lib
+, stdenv
+, fetchFromGitLab
+, pkg-config
+, which
+, makeWrapper
+, libao
+, libbencodetools
+, sox
+, lame
+, flac
+, vorbis-tools
+}:
 
-let
-  version = "2.13";
-in stdenv.mkDerivation {
+stdenv.mkDerivation {
   pname = "uade123";
-  inherit version;
-  src = fetchurl {
-    url = "http://zakalwe.fi/uade/uade2/uade-${version}.tar.bz2";
-    sha256 = "04nn5li7xy4g5ysyjjngmv5d3ibxppkbb86m10vrvadzxdd4w69v";
+  version = "unstable-2021-05-21";
+
+  src = fetchFromGitLab {
+    owner = "uade-music-player";
+    repo = "uade";
+    rev = "7169a46e777d19957cd7ff8ac31843203e725ddc";
+    sha256 = "1dm7c924fy79y3wkb0qi71m1k6yw1x6j3whw7d0w4ka9hv6za03b";
   };
-  nativeBuildInputs = [ pkgconfig which ];
-  buildInputs = [ libao ];
+
+  postPatch = ''
+    patchShebangs .
+    substituteInPlace src/frontends/mod2ogg/mod2ogg2.sh.in \
+      --replace '-e stat' '-n stat' \
+      --replace '/usr/local' "$out"
+  '';
+
+  nativeBuildInputs = [
+    pkg-config
+    which
+    makeWrapper
+  ];
+
+  buildInputs = [
+    libao
+    libbencodetools
+    sox
+    lame
+    flac
+    vorbis-tools
+  ];
+
+  configureFlags = [
+    "--bencode-tools-prefix=${libbencodetools}"
+  ];
 
   enableParallelBuilding = true;
+
   hardeningDisable = [ "format" ];
 
-  meta = with stdenv.lib; {
+  postInstall = ''
+    wrapProgram $out/bin/mod2ogg2.sh \
+      --prefix PATH : $out/bin:${lib.makeBinPath [ sox lame flac vorbis-tools ]}
+    # This is an old script, don't break expectations by renaming it
+    ln -s $out/bin/mod2ogg2{.sh,}
+  '';
+
+  meta = with lib; {
     description = "Plays old Amiga tunes through UAE emulation and cloned m68k-assembler Eagleplayer API";
-    homepage = "http://zakalwe.fi/uade/";
-    license = licenses.gpl2;
-    maintainers = [ stdenv.lib.maintainers.gnidorah ];
-    platforms = stdenv.lib.platforms.unix;
+    homepage = "https://zakalwe.fi/uade/";
+    # It's a mix of licenses. "GPL", Public Domain, "LGPL", GPL2+, BSD, LGPL21+ and source code with unknown licenses. E.g.
+    # - hippel-coso player is "[not] under any Open Source certified license"
+    # - infogrames player is disassembled from Andi Silvas player, unknown license
+    # Let's make it easy and flag the whole package as unfree.
+    license = licenses.unfree;
+    maintainers = with maintainers; [ OPNA2608 ];
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/applications/audio/uhhyou.lv2/default.nix b/pkgs/applications/audio/uhhyou.lv2/default.nix
index 732e9d8433f..eb590c22bbf 100644
--- a/pkgs/applications/audio/uhhyou.lv2/default.nix
+++ b/pkgs/applications/audio/uhhyou.lv2/default.nix
@@ -1,4 +1,4 @@
-{ stdenv
+{ lib, stdenv
 , fetchFromGitHub
 , pkg-config
 , python3
@@ -14,14 +14,14 @@ stdenv.mkDerivation rec {
   # this is what upstream calls the package, see:
   # https://github.com/ryukau/LV2Plugins#uhhyou-plugins-lv2
   pname = "uhhyou.lv2";
-  version = "unstable-2020-07-31";
+  version = "unstable-2021-02-08";
 
   src = fetchFromGitHub {
     owner = "ryukau";
     repo =  "LV2Plugins";
-    rev = "6189be67acaeb95452f8adab73a731d94a7b6f47";
+    rev = "df67460fc344f94db4306d4ee21e4207e657bbee";
     fetchSubmodules = true;
-    sha256 = "049gigx2s89z8vf17gscs00c150lmcdwya311nbrwa18fz4bx242";
+    sha256 = "1a23av35cw26zgq93yzmmw35084hsj29cb7sb04j2silv5qisila";
   };
 
   nativeBuildInputs = [ pkg-config python3 ];
@@ -31,16 +31,16 @@ stdenv.mkDerivation rec {
   makeFlags = [ "PREFIX=$(out)" ];
 
   prePatch = ''
-    patchShebangs generate-ttl.sh
-    cp patch/NanoVG.cpp lib/DPF/dgl/src/NanoVG.cpp
+    patchShebangs generate-ttl.sh patch.sh patch/apply.sh
   '';
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Audio plugins for Linux";
     longDescription = ''
       Plugin List:
+      - CollidingCombSynth
       - CubicPadSynth
       - EnvelopedSine
       - EsPhaser
diff --git a/pkgs/applications/audio/vcv-rack/default.nix b/pkgs/applications/audio/vcv-rack/default.nix
index 2aa09ec0be8..789b97507a1 100644
--- a/pkgs/applications/audio/vcv-rack/default.nix
+++ b/pkgs/applications/audio/vcv-rack/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, makeWrapper, fetchFromBitbucket, fetchFromGitHub, pkgconfig
-, alsaLib, curl, glew, glfw, gtk2-x11, jansson, libjack2, libXext, libXi
+{ lib, stdenv, makeWrapper, fetchzip, fetchFromGitHub, pkg-config
+, alsa-lib, curl, glew, glfw, gtk2-x11, jansson, libjack2, libXext, libXi
 , libzip, rtaudio, rtmidi, speex, libsamplerate }:
 
 let
@@ -7,10 +7,8 @@ let
   # Others are downloaded with `make deps`. Due to previous issues with the
   # `glfw` submodule (see above) and because we can not access the network when
   # building in a sandbox, we fetch the dependency source manually.
-  pfft-source = fetchFromBitbucket {
-    owner = "jpommier";
-    repo = "pffft";
-    rev = "29e4f76ac53bef048938754f32231d7836401f79";
+  pfft-source = fetchzip {
+    url = "https://vcvrack.com/downloads/dep/pffft.zip";
     sha256 = "084csgqa6f1a270bhybjayrh3mpyi2jimc87qkdgsqcp8ycsx1l1";
   };
   nanovg-source = fetchFromGitHub {
@@ -38,7 +36,7 @@ let
     sha256 = "17kd0lh2x3x12bxkyhq6z8sg6vxln8m9qirf0basvcsmylr6rb64";
   };
 in
-with stdenv.lib; stdenv.mkDerivation rec {
+with lib; stdenv.mkDerivation rec {
   pname = "VCV-Rack";
   version = "1.1.6";
 
@@ -76,8 +74,8 @@ with stdenv.lib; stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  nativeBuildInputs = [ makeWrapper pkgconfig ];
-  buildInputs = [ alsaLib curl glew glfw gtk2-x11 jansson libjack2 libsamplerate libzip rtaudio rtmidi speex ];
+  nativeBuildInputs = [ makeWrapper pkg-config ];
+  buildInputs = [ alsa-lib curl glew glfw gtk2-x11 jansson libjack2 libsamplerate libzip rtaudio rtmidi speex ];
 
   buildFlags = [ "Rack" ];
 
@@ -91,7 +89,7 @@ with stdenv.lib; stdenv.mkDerivation rec {
     wrapProgram $out/bin/Rack --add-flags "-s $out/share/vcv-rack"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Open-source virtual modular synthesizer";
     homepage = "https://vcvrack.com/";
     # The source is BSD-3 licensed, some of the art is CC-BY-NC 4.0 or under a
diff --git a/pkgs/applications/audio/vgmstream/default.nix b/pkgs/applications/audio/vgmstream/default.nix
new file mode 100644
index 00000000000..a3518f23984
--- /dev/null
+++ b/pkgs/applications/audio/vgmstream/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, lib, fetchFromGitHub, cmake, pkg-config
+, mpg123, ffmpeg, libvorbis, libao, jansson
+}:
+stdenv.mkDerivation rec {
+  pname   = "vgmstream";
+  version = "r1050-3448-g77cc431b";
+
+  src = fetchFromGitHub {
+    owner  = "vgmstream";
+    repo   = "vgmstream";
+    rev    = version;
+    sha256 = "030q02c9li14by7vm00gn6v3m4dxxmfwiy9iyz3xsgzq1i7pqc1d";
+  };
+
+  nativeBuildInputs = [ cmake pkg-config ];
+
+  buildInputs = [ mpg123 ffmpeg libvorbis libao jansson ];
+
+  # There's no nice way to build the audacious plugin without a circular dependency
+  cmakeFlags = [ "-DBUILD_AUDACIOUS=OFF" ];
+
+  preConfigure = ''
+    echo "#define VERSION \"${version}\"" > cli/version.h
+  '';
+
+  meta = with lib; {
+    description = "A library for playback of various streamed audio formats used in video games";
+    homepage    = "https://vgmstream.org";
+    maintainers = with maintainers; [ zane ];
+    license     = with licenses; isc;
+    platforms   = with platforms; unix;
+  };
+}
diff --git a/pkgs/applications/audio/vimpc/default.nix b/pkgs/applications/audio/vimpc/default.nix
index bcbfa6d3874..a576898128e 100644
--- a/pkgs/applications/audio/vimpc/default.nix
+++ b/pkgs/applications/audio/vimpc/default.nix
@@ -1,5 +1,14 @@
-{ stdenv, fetchFromGitHub, autoreconfHook, mpd_clientlib, ncurses, pcre, pkgconfig
-, taglib, curl }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, autoreconfHook
+, libmpdclient
+, ncurses
+, pcre
+, pkg-config
+, taglib
+, curl
+}:
 
 stdenv.mkDerivation rec {
   version = "0.09.2";
@@ -12,15 +21,15 @@ stdenv.mkDerivation rec {
     sha256 = "0lswzkap2nm7v5h7ppb6a64cb35rajysd09nb204rxgrkij4m6nx";
   };
 
-  nativeBuildInputs = [ autoreconfHook pkgconfig ];
-  buildInputs = [ mpd_clientlib ncurses pcre taglib curl ];
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
+  buildInputs = [ libmpdclient ncurses pcre taglib curl ];
 
   postInstall = ''
     mkdir -p $out/etc
     cp doc/vimpcrc.example $out/etc
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A vi/vim inspired client for the Music Player Daemon (mpd)";
     homepage = "https://github.com/boysetsfrog/vimpc";
     license = licenses.gpl3;
diff --git a/pkgs/applications/audio/virtual-ans/default.nix b/pkgs/applications/audio/virtual-ans/default.nix
index 24e112aff2b..c1e41e41284 100644
--- a/pkgs/applications/audio/virtual-ans/default.nix
+++ b/pkgs/applications/audio/virtual-ans/default.nix
@@ -1,9 +1,9 @@
-{ stdenv
+{ lib, stdenv
 , fetchzip
 , libX11
 , libXi
 , libGL
-, alsaLib
+, alsa-lib
 , SDL2
 , autoPatchelfHook
 }:
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
     libX11
     libXi
     libGL
-    alsaLib
+    alsa-lib
     SDL2
   ];
 
@@ -46,13 +46,13 @@ stdenv.mkDerivation rec {
   startScript = if stdenv.isx86_32 then "START_LINUX_X86"
     else        if stdenv.isx86_64 then "START_LINUX_X86_64"
     #else        if stdenv.isDarwin then "START_MACOS.app" # disabled because I cannot test on Darwin
-    else abort "Unsupported platform: ${stdenv.platform.kernelArch}.";
+    else abort "Unsupported platform: ${stdenv.hostPlatform.linuxArch}.";
 
   linuxExecutable = if stdenv.isx86_32 then "pixilang_linux_x86"
     else            if stdenv.isx86_64 then "pixilang_linux_x86_64"
     else                                    "";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Photoelectronic microtonal/spectral musical instrument";
     longDescription = ''
       Virtual ANS is a software simulator of the unique Russian synthesizer ANS
diff --git a/pkgs/applications/audio/vkeybd/default.nix b/pkgs/applications/audio/vkeybd/default.nix
index 0e8f12823d1..ec639156217 100644
--- a/pkgs/applications/audio/vkeybd/default.nix
+++ b/pkgs/applications/audio/vkeybd/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, alsaLib, libX11, makeWrapper, tcl, tk }:
+{ lib, stdenv, fetchurl, alsa-lib, libX11, makeWrapper, tcl, tk }:
 
 stdenv.mkDerivation  rec {
   pname = "vkeybd";
@@ -9,7 +9,8 @@ stdenv.mkDerivation  rec {
     sha256 = "0107b5j1gf7dwp7qb4w2snj4bqiyps53d66qzl2rwj4jfpakws5a";
   };
 
-  buildInputs = [ alsaLib libX11 makeWrapper tcl tk ];
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ alsa-lib libX11 tcl tk ];
 
   configurePhase = ''
     mkdir -p $out/bin
@@ -22,7 +23,7 @@ stdenv.mkDerivation  rec {
     wrapProgram $out/bin/vkeybd --set TK_LIBRARY "${tk}/lib/${tk.libPrefix}"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Virtual MIDI keyboard";
     homepage = "https://www.alsa-project.org/~tiwai/alsa.html";
     license = licenses.gpl2Plus;
diff --git a/pkgs/applications/audio/vmpk/default.nix b/pkgs/applications/audio/vmpk/default.nix
index 62ae1d2c049..45142568f98 100644
--- a/pkgs/applications/audio/vmpk/default.nix
+++ b/pkgs/applications/audio/vmpk/default.nix
@@ -1,19 +1,27 @@
-{ stdenv, fetchurl, cmake, pkgconfig, alsaLib, libjack2, qt4 }:
+{ mkDerivation, lib, fetchurl, cmake, pkg-config
+, qttools, qtx11extras, drumstick
+, docbook-xsl-nons
+}:
 
-stdenv.mkDerivation rec {
+mkDerivation rec {
   pname = "vmpk";
-  version = "0.5.1";
+  version = "0.8.2";
 
   src = fetchurl {
     url = "mirror://sourceforge/${pname}/${version}/${pname}-${version}.tar.bz2";
-    sha256 = "11fqnxgs9hr9255d93n7lazxzjwn8jpmn23nywdksh0pb1ffvfrc";
+    sha256 = "1kv256j13adk4ib7r464gsl4vjhih820bq37ddhqfyfd07wh53a2";
   };
 
-  nativeBuildInputs = [ cmake pkgconfig ];
+  nativeBuildInputs = [ cmake pkg-config qttools docbook-xsl-nons ];
 
-  buildInputs = [ alsaLib libjack2 qt4 ];
+  buildInputs = [ drumstick qtx11extras ];
 
-  meta = with stdenv.lib; {
+  postInstall = ''
+    # vmpk drumstickLocales looks here:
+    ln -s ${drumstick}/share/drumstick $out/share/
+  '';
+
+  meta = with lib; {
     description = "Virtual MIDI Piano Keyboard";
     homepage = "http://vmpk.sourceforge.net/";
     license = licenses.gpl3Plus;
diff --git a/pkgs/applications/audio/vocal/default.nix b/pkgs/applications/audio/vocal/default.nix
index b519003a9ec..f06f950f13f 100644
--- a/pkgs/applications/audio/vocal/default.nix
+++ b/pkgs/applications/audio/vocal/default.nix
@@ -1,10 +1,12 @@
-{ stdenv
+{ lib
+, stdenv
 , fetchFromGitHub
+, fetchpatch
 , nix-update-script
 , cmake
 , ninja
 , vala
-, pkgconfig
+, pkg-config
 , pantheon
 , gtk3
 , glib
@@ -38,7 +40,7 @@ stdenv.mkDerivation rec {
     libxml2
     ninja
     vala
-    pkgconfig
+    pkg-config
     wrapGAppsHook
   ];
 
@@ -61,21 +63,30 @@ stdenv.mkDerivation rec {
     glib-networking
   ];
 
+  patches = [
+    # granite 6.0.0 removed about dialogs
+    # see: https://github.com/needle-and-thread/vocal/issues/483
+    (fetchpatch {
+      name = "remove-about.patch";
+      url = "https://raw.githubusercontent.com/archlinux/svntogit-community/03543ffdb6cd52ce1a8293f3303225b3afac2431/trunk/remove-about.patch";
+      sha256 = "sha256-yGD7BYOTmqs4h+Odh/mB3fI1HM7GDO6F+QaHpRUD5p4=";
+    })
+  ];
+
   passthru = {
     updateScript = nix-update-script {
       attrPath = pname;
     };
   };
 
-
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "The podcast client for the modern free desktop";
     longDescription = ''
       Vocal is a powerful, fast, and intuitive application that helps users find new podcasts, manage their libraries, and enjoy the best that indepedent audio and video publishing has to offer. Vocal features full support for both episode downloading and streaming, native system integration, iTunes store search and top 100 charts (with international results support), iTunes link parsing, OPML importing and exporting, and so much more. Plus, it has great smart features like automatically keeping your library clean from old files, and the ability to set custom skip intervals.
     '';
     homepage = "https://github.com/needle-and-thread/vocal";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ worldofpeace ];
+    maintainers = with maintainers; [ ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/vocproc/default.nix b/pkgs/applications/audio/vocproc/default.nix
index ddaa5b790e2..46957000507 100644
--- a/pkgs/applications/audio/vocproc/default.nix
+++ b/pkgs/applications/audio/vocproc/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchzip, pkgconfig, lvtk, lv2, fftw, lv2-cpp-tools, gtkmm2 }:
+{ lib, stdenv, fetchzip, pkg-config, lvtk, lv2, fftw, lv2-cpp-tools, gtkmm2 }:
 
 stdenv.mkDerivation rec {
   pname = "vocproc";
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
     sha256 = "07a1scyz14mg2jdbw6fpv4qg91zsw61qqii64n9qbnny9d5pn8n2";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
 
   buildInputs = [ lv2 fftw lv2-cpp-tools gtkmm2 ];
 
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
     "INSTALL_DIR=$(out)/lib/lv2"
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://hyperglitch.com/dev/VocProc";
     description = "An LV2 plugin for pitch shifting (with or without formant correction), vocoding, automatic pitch correction and harmonizing of singing voice (harmonizer)";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/vorbis-tools/default.nix b/pkgs/applications/audio/vorbis-tools/default.nix
index 2270e56e62a..865d82a7356 100644
--- a/pkgs/applications/audio/vorbis-tools/default.nix
+++ b/pkgs/applications/audio/vorbis-tools/default.nix
@@ -1,29 +1,20 @@
-{ stdenv, fetchurl, fetchzip, libogg, libvorbis, libao, pkgconfig, curl
-, speex, flac }:
+{ lib, stdenv, fetchurl, libogg, libvorbis, libao, pkg-config, curl
+, speex, flac
+, autoreconfHook }:
+
+stdenv.mkDerivation rec {
+  pname = "vorbis-tools";
+  version = "1.4.2";
 
-let
-  debPatch = fetchzip {
-    url = "mirror://debian/pool/main/v/vorbis-tools/vorbis-tools_1.4.0-11.debian.tar.xz";
-    sha256 = "0kvmd5nslyqplkdb7pnmqj47ir3y5lmaxd12wmrnqh679a8jhcyi";
-  };
-in
-stdenv.mkDerivation {
-  name = "vorbis-tools-1.4.0";
   src = fetchurl {
-    url = "http://downloads.xiph.org/releases/vorbis/vorbis-tools-1.4.0.tar.gz";
-    sha256 = "1g12bnh5ah08v529y72kfdz5lhvy75iaz7f9jskyby23m9dkk2d3";
+    url = "http://downloads.xiph.org/releases/vorbis/vorbis-tools-${version}.tar.gz";
+    sha256 = "1c7h4ivgfdyygz2hyh6nfibxlkz8kdk868a576qkkjgj5gn78xyv";
   };
 
-  postPatch = ''
-    for patch in $(ls "${debPatch}"/patches/*.{diff,patch} | grep -v debian_subdir)
-    do patch -p1 < "$patch"
-    done
-  '';
-
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
   buildInputs = [ libogg libvorbis libao curl speex flac ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Extra tools for Ogg-Vorbis audio codec";
     longDescription = ''
       A set of command-line tools to manipulate Ogg Vorbis audio
diff --git a/pkgs/applications/audio/waon/default.nix b/pkgs/applications/audio/waon/default.nix
index bc05547e641..970ab087b2c 100644
--- a/pkgs/applications/audio/waon/default.nix
+++ b/pkgs/applications/audio/waon/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchFromGitHub, fftw, gtk2, libao, libsamplerate
-, libsndfile, ncurses, pkgconfig
+{ lib, stdenv, fetchFromGitHub, fftw, gtk2, libao, libsamplerate
+, libsndfile, ncurses, pkg-config
 }:
 
 stdenv.mkDerivation rec {
@@ -13,14 +13,14 @@ stdenv.mkDerivation rec {
     sha256 = "1xmq8d2rj58xbp4rnyav95y1vnz3r9s9db7xxfa2rd0ilq0ps4y7";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ fftw gtk2 libao libsamplerate libsndfile ncurses ];
 
   installPhase = ''
     install -Dt $out/bin waon pv gwaon
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A Wave-to-Notes transcriber";
     homepage = "https://kichiki.github.io/WaoN/";
     license = licenses.gpl2;
diff --git a/pkgs/applications/audio/wavegain/default.nix b/pkgs/applications/audio/wavegain/default.nix
index d9b13f53273..f4ef7f6d8a5 100644
--- a/pkgs/applications/audio/wavegain/default.nix
+++ b/pkgs/applications/audio/wavegain/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub }:
+{ lib, stdenv, fetchFromGitHub }:
 
 stdenv.mkDerivation {
   name = "wavegain-1.3.1";
@@ -17,8 +17,8 @@ stdenv.mkDerivation {
   meta = {
     description = "ReplayGain for wave files";
     homepage = "https://github.com/MestreLion/wavegain";
-    license = stdenv.lib.licenses.lgpl21;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.robbinch ];
+    license = lib.licenses.lgpl21;
+    platforms = lib.platforms.linux;
+    maintainers = [ lib.maintainers.robbinch ];
   };
 }
diff --git a/pkgs/applications/audio/whipper/default.nix b/pkgs/applications/audio/whipper/default.nix
index 5cbc9a07b6c..d66c161664f 100644
--- a/pkgs/applications/audio/whipper/default.nix
+++ b/pkgs/applications/audio/whipper/default.nix
@@ -1,61 +1,80 @@
-{ stdenv, fetchFromGitHub, python3, cdparanoia, cdrdao, flac
-, sox, accuraterip-checksum, libsndfile, utillinux, substituteAll }:
+{ lib
+, python3
+, fetchFromGitHub
+, fetchpatch
+, libcdio-paranoia
+, cdrdao
+, libsndfile
+, flac
+, sox
+, util-linux
+}:
 
-python3.pkgs.buildPythonApplication rec {
+let
+  bins = [ libcdio-paranoia cdrdao flac sox util-linux ];
+in python3.pkgs.buildPythonApplication rec {
   pname = "whipper";
-  version = "0.9.1.dev7+g${stdenv.lib.substring 0 7 src.rev}";
+  version = "0.10.0";
 
   src = fetchFromGitHub {
     owner = "whipper-team";
     repo = "whipper";
-    rev = "9e95f0604fa30ab06445fe46e3bc93bba6092a05";
-    sha256 = "1c2qldw9vxpvdfh5wl6mfcd7zzz3v8r86ffqll311lcp2zin33dg";
+    rev = "v${version}";
+    sha256 = "00cq03cy5dyghmibsdsq5sdqv3bzkzhshsng74bpnb5lasxp3ia5";
   };
 
-  pythonPath = with python3.pkgs; [
+  patches = [
+    (fetchpatch {
+      # Use custom YAML subclass to be compatible with ruamel_yaml>=0.17
+      # https://github.com/whipper-team/whipper/pull/543
+      url = "https://github.com/whipper-team/whipper/commit/3ce5964dfe8be1e625c3e3b091360dd0bc34a384.patch";
+      sha256 = "0n9dmib884y8syvypsg88j0h71iy42n1qsrh0am8pwna63sl15ah";
+    })
+  ];
+
+  nativeBuildInputs = with python3.pkgs; [
+    setuptools-scm
+    docutils
+  ];
+
+  propagatedBuildInputs = with python3.pkgs; [
     musicbrainzngs
     mutagen
     pycdio
     pygobject3
-    requests
     ruamel_yaml
-    setuptools
-    setuptools_scm
+    discid
+    pillow
   ];
 
   buildInputs = [ libsndfile ];
 
   checkInputs = with python3.pkgs; [
     twisted
-  ];
-
-  patches = [
-    (substituteAll {
-      src = ./paths.patch;
-      inherit cdparanoia;
-    })
-  ];
+  ] ++ bins;
 
   makeWrapperArgs = [
-    "--prefix" "PATH" ":" (stdenv.lib.makeBinPath [ accuraterip-checksum cdrdao utillinux flac sox ])
+    "--prefix" "PATH" ":" (lib.makeBinPath bins)
   ];
 
   preBuild = ''
     export SETUPTOOLS_SCM_PRETEND_VERSION="${version}"
   '';
 
-  # some tests require internet access
-  # https://github.com/JoeLametta/whipper/issues/291
-  doCheck = false;
-
-  preCheck = ''
-    HOME=$TMPDIR
+  checkPhase = ''
+    runHook preCheck
+    # disable tests that require internet access
+    # https://github.com/JoeLametta/whipper/issues/291
+    substituteInPlace whipper/test/test_common_accurip.py \
+      --replace "test_AccurateRipResponse" "dont_test_AccurateRipResponse"
+    HOME=$TMPDIR ${python3.interpreter} -m unittest discover
+    runHook postCheck
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/whipper-team/whipper";
     description = "A CD ripper aiming for accuracy over speed";
-    maintainers = with maintainers; [ rycee emily ];
+    maintainers = with maintainers; [ emily ];
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
   };
diff --git a/pkgs/applications/audio/whipper/paths.patch b/pkgs/applications/audio/whipper/paths.patch
deleted file mode 100644
index 14b5384330d..00000000000
--- a/pkgs/applications/audio/whipper/paths.patch
+++ /dev/null
@@ -1,32 +0,0 @@
---- a/whipper/program/cdparanoia.py
-+++ b/whipper/program/cdparanoia.py
-@@ -280,10 +280,10 @@
- 
-         bufsize = 1024
-         if self._overread:
--            argv = ["cd-paranoia", "--stderr-progress",
-+            argv = ["@cdparanoia@/bin/cdparanoia", "--stderr-progress",
-                     "--sample-offset=%d" % self._offset, "--force-overread", ]
-         else:
--            argv = ["cd-paranoia", "--stderr-progress",
-+            argv = ["@cdparanoia@/bin/cdparanoia", "--stderr-progress",
-                     "--sample-offset=%d" % self._offset, ]
-         if self._device:
-             argv.extend(["--force-cdrom-device", self._device, ])
-@@ -560,7 +560,7 @@
- 
- def getCdParanoiaVersion():
-     getter = common.VersionGetter('cd-paranoia',
--                                  ["cd-paranoia", "-V"],
-+                                  ["@cdparanoia@/bin/cdparanoia", "-V"],
-                                   _VERSION_RE,
-                                   "%(version)s %(release)s")
- 
-@@ -585,7 +585,7 @@
-     def __init__(self, device=None):
-         # cdparanoia -A *always* writes cdparanoia.log
-         self.cwd = tempfile.mkdtemp(suffix='.whipper.cache')
--        self.command = ['cd-paranoia', '-A']
-+        self.command = ['@cdparanoia@/bin/cdparanoia', '-A']
-         if device:
-             self.command += ['-d', device]
diff --git a/pkgs/applications/audio/wolf-shaper/default.nix b/pkgs/applications/audio/wolf-shaper/default.nix
index 7d42a3c4e7b..b61ea3fc4d4 100644
--- a/pkgs/applications/audio/wolf-shaper/default.nix
+++ b/pkgs/applications/audio/wolf-shaper/default.nix
@@ -1,18 +1,18 @@
-{ stdenv, fetchFromGitHub , libjack2, lv2, xorg, liblo, libGL, libXcursor, pkgconfig }:
+{ lib, stdenv, fetchFromGitHub , libjack2, lv2, xorg, liblo, libGL, libXcursor, pkg-config }:
 
 stdenv.mkDerivation rec {
   pname = "wolf-shaper";
-  version = "0.1.7";
+  version = "0.1.8";
 
   src = fetchFromGitHub {
     owner = "pdesaulniers";
     repo = "wolf-shaper";
     rev = "v${version}";
-    sha256 = "0lllgcbnnh1m95bp29hh17x170hl7170zizjrvy892qfkn36830d";
+    sha256 = "1j9xmh1nkf45ay1c5dz2g165qvrwlanzcq6mvb3nfxar265drd9q";
     fetchSubmodules = true;
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ libjack2 lv2 xorg.libX11 liblo libGL libXcursor  ];
 
   makeFlags = [
@@ -37,7 +37,7 @@ stdenv.mkDerivation rec {
     cp -r bin/wolf-shaper        $out/bin/
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://pdesaulniers.github.io/wolf-shaper/";
     description = "Waveshaper plugin with spline-based graph editor";
     license = licenses.gpl3;
diff --git a/pkgs/applications/audio/x42-avldrums/default.nix b/pkgs/applications/audio/x42-avldrums/default.nix
index fb05a50b4e5..31ef68714f6 100644
--- a/pkgs/applications/audio/x42-avldrums/default.nix
+++ b/pkgs/applications/audio/x42-avldrums/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, pkgconfig, cairo, glib, libGLU, lv2, pango }:
+{ lib, stdenv, fetchFromGitHub, pkg-config, cairo, glib, libGLU, lv2, pango }:
 
 stdenv.mkDerivation rec {
   pname = "x42-avldrums";
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
     fetchSubmodules = true;
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ cairo glib libGLU lv2 pango ];
 
   makeFlags = [
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Drum sample player LV2 plugin dedicated to Glen MacArthur's AVLdrums";
     homepage = "https://x42-plugins.com/x42/x42-avldrums";
     maintainers = with maintainers; [ magnetophon orivej ];
diff --git a/pkgs/applications/audio/x42-gmsynth/default.nix b/pkgs/applications/audio/x42-gmsynth/default.nix
index 7a96e3fd4f2..cde67908fde 100644
--- a/pkgs/applications/audio/x42-gmsynth/default.nix
+++ b/pkgs/applications/audio/x42-gmsynth/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, pkgconfig, glib, lv2 }:
+{ lib, stdenv, fetchFromGitHub, pkg-config, glib, lv2 }:
 
 stdenv.mkDerivation rec {
   pname = "x42-gmsynth";
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
     sha256 = "08dvdj8r17sfl6l18g2b8abgls2irkbrq5vhrfai01hp2m0rlm34";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ glib lv2 ];
 
   makeFlags = [
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Chris Colins' General User soundfont player LV2 plugin";
     homepage = "https://x42-plugins.com/x42/x42-gmsynth";
     maintainers = with maintainers; [ orivej ];
diff --git a/pkgs/applications/audio/x42-plugins/default.nix b/pkgs/applications/audio/x42-plugins/default.nix
index d3726eab7ff..dba9dcc5e55 100644
--- a/pkgs/applications/audio/x42-plugins/default.nix
+++ b/pkgs/applications/audio/x42-plugins/default.nix
@@ -1,17 +1,17 @@
-{ stdenv, fetchurl, pkgconfig
+{ lib, stdenv, fetchurl, pkg-config
 , libltc, libsndfile, libsamplerate, ftgl, freefont_ttf, libjack2
 , libGLU, lv2, gtk2, cairo, pango, fftwFloat, zita-convolver }:
 
 stdenv.mkDerivation rec {
-  version = "20200714";
+  version = "20210114";
   pname = "x42-plugins";
 
   src = fetchurl {
     url = "https://gareus.org/misc/x42-plugins/${pname}-${version}.tar.xz";
-    sha256 = "1av05ykph8x67018hm9zfgh1vk0zi39mvrsxkj6bm4hkarxf0vvl";
+    sha256 = "sha256-xUiA/k5ZbI/SkY8a20FsyRwqPxxMteiFdEhFF/8e2OA=";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ libGLU ftgl freefont_ttf libjack2 libltc libsndfile libsamplerate lv2 gtk2 cairo pango fftwFloat zita-convolver ];
 
   # Don't remove this. The default fails with 'do not know how to unpack source archive'
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
     sed -i 's|/usr/include/zita-convolver.h|${zita-convolver}/include/zita-convolver.h|g' ./convoLV2/Makefile
   '';
 
-  meta = with stdenv.lib;
+  meta = with lib;
     { description = "Collection of LV2 plugins by Robin Gareus";
       homepage = "https://github.com/x42/x42-plugins";
       maintainers = with maintainers; [ magnetophon ];
diff --git a/pkgs/applications/audio/xmp/default.nix b/pkgs/applications/audio/xmp/default.nix
index d234f6b6b8c..5f99555d376 100644
--- a/pkgs/applications/audio/xmp/default.nix
+++ b/pkgs/applications/audio/xmp/default.nix
@@ -1,9 +1,10 @@
-{ stdenv, fetchurl, pkgconfig, alsaLib, libxmp }:
+{ lib, stdenv, fetchurl, pkg-config, alsa-lib, libxmp }:
 
 stdenv.mkDerivation rec {
-  name = "xmp-4.1.0";
+  pname = "xmp";
+  version = "4.1.0";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Extended module player";
     homepage    = "http://xmp.sourceforge.net/";
     license     = licenses.gpl2Plus;
@@ -11,10 +12,10 @@ stdenv.mkDerivation rec {
   };
 
   src = fetchurl {
-    url = "mirror://sourceforge/xmp/xmp/${name}.tar.gz";
+    url = "mirror://sourceforge/${pname}/${pname}/${pname}-${version}.tar.gz";
     sha256 = "17i8fc7x7yn3z1x963xp9iv108gxfakxmdgmpv3mlm438w3n3g8x";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ alsaLib libxmp ];
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ alsa-lib libxmp ];
 }
diff --git a/pkgs/applications/audio/xsynth-dssi/default.nix b/pkgs/applications/audio/xsynth-dssi/default.nix
index c0803ffa418..0802a79df04 100644
--- a/pkgs/applications/audio/xsynth-dssi/default.nix
+++ b/pkgs/applications/audio/xsynth-dssi/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchurl, alsaLib, autoconf, automake, dssi, gtk2, libjack2,
-ladspaH, ladspaPlugins, liblo, pkgconfig }:
+{ lib, stdenv, fetchurl, alsa-lib, autoconf, automake, dssi, gtk2, libjack2,
+ladspaH, ladspaPlugins, liblo, pkg-config }:
 
 stdenv.mkDerivation  rec {
   pname = "xsynth-dssi";
@@ -10,8 +10,8 @@ stdenv.mkDerivation  rec {
     sha256 = "00nwv2pqjbmxqdc6xdm0cljq6z05lv4y6bibmhz1kih9lm0lklnk";
   };
 
-  buildInputs = [ alsaLib autoconf automake dssi gtk2 libjack2 ladspaH
-    ladspaPlugins liblo pkgconfig ];
+  buildInputs = [ alsa-lib autoconf automake dssi gtk2 libjack2 ladspaH
+    ladspaPlugins liblo pkg-config ];
 
   installPhase = ''
     mkdir -p $out/bin
@@ -20,7 +20,7 @@ stdenv.mkDerivation  rec {
     cp src/.libs/* $out/lib
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Classic-analog (VCOs-VCF-VCA) style software synthesizer";
     longDescription = ''
       Xsynth-DSSI is a classic-analog (VCOs-VCF-VCA) style software
diff --git a/pkgs/applications/audio/xtuner/default.nix b/pkgs/applications/audio/xtuner/default.nix
new file mode 100644
index 00000000000..c5185217911
--- /dev/null
+++ b/pkgs/applications/audio/xtuner/default.nix
@@ -0,0 +1,39 @@
+{ lib, stdenv
+, fetchFromGitHub
+, pkg-config
+, cairo
+, libX11
+, libjack2
+, liblo
+, libsigcxx
+, zita-resampler
+, fftwFloat
+}:
+
+stdenv.mkDerivation rec {
+  pname = "xtuner";
+  version = "1.0";
+
+  src = fetchFromGitHub {
+    owner = "brummer10";
+    repo = "XTuner";
+    rev = "v${version}";
+    sha256 = "1i5chfnf3hcivwzni9z6cn9pb68qmwsx8bf4z7d29a5vig8kbhrv";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ cairo libX11 libjack2 liblo libsigcxx zita-resampler fftwFloat ];
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    homepage = "https://github.com/brummer10/XTuner";
+    description = "Tuner for Jack Audio Connection Kit";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ magnetophon ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/audio/yams/default.nix b/pkgs/applications/audio/yams/default.nix
new file mode 100644
index 00000000000..96c1ab27b72
--- /dev/null
+++ b/pkgs/applications/audio/yams/default.nix
@@ -0,0 +1,29 @@
+{ lib, fetchFromGitHub, python3Packages }:
+
+python3Packages.buildPythonPackage rec {
+  pname = "yams";
+  version = "0.7.3";
+
+  src = fetchFromGitHub {
+    owner = "Berulacks";
+    repo = "yams";
+    rev = version;
+    sha256 = "1zkhcys9i0s6jkaz24an690rvnkv1r84jxpaa84sf46abi59ijh8";
+  };
+
+  propagatedBuildInputs = with python3Packages; [
+    pyyaml
+    psutil
+    mpd2
+    requests
+  ];
+
+  doCheck = false;
+
+  meta = with lib; {
+    homepage = "https://github.com/Berulacks/yams";
+    description = "Last.FM scrobbler for MPD";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ ccellado ];
+  };
+}
diff --git a/pkgs/applications/audio/yasr/default.nix b/pkgs/applications/audio/yasr/default.nix
index fed2ee0d8f7..21313b9c059 100644
--- a/pkgs/applications/audio/yasr/default.nix
+++ b/pkgs/applications/audio/yasr/default.nix
@@ -1,4 +1,4 @@
-{stdenv,fetchurl}:
+{lib, stdenv,fetchurl}:
 
 stdenv.mkDerivation rec {
   pname = "yasr";
@@ -21,8 +21,8 @@ stdenv.mkDerivation rec {
     homepage = "http://yasr.sourceforge.net";
     description = "A general-purpose console screen reader";
     longDescription = "Yasr is a general-purpose console screen reader for GNU/Linux and other Unix-like operating systems.";
-    platforms = stdenv.lib.platforms.linux;
-    license = stdenv.lib.licenses.gpl2;
-    maintainers = with stdenv.lib.maintainers; [ jhhuh ];
+    platforms = lib.platforms.linux;
+    license = lib.licenses.gpl2;
+    maintainers = with lib.maintainers; [ jhhuh ];
   };
 }
diff --git a/pkgs/applications/audio/ympd/default.nix b/pkgs/applications/audio/ympd/default.nix
index 8f86d6e7ba9..38c05276be4 100644
--- a/pkgs/applications/audio/ympd/default.nix
+++ b/pkgs/applications/audio/ympd/default.nix
@@ -1,4 +1,11 @@
-{ stdenv, fetchFromGitHub, cmake, pkgconfig, mpd_clientlib, openssl }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, cmake
+, pkg-config
+, libmpdclient
+, openssl
+}:
 
 stdenv.mkDerivation rec {
   pname = "ympd";
@@ -11,14 +18,14 @@ stdenv.mkDerivation rec {
     sha256 = "1nvb19jd556v2h2bi7w4dcl507p3p8xvjkqfzrcsy7ccy3502brq";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ cmake mpd_clientlib openssl ];
+  nativeBuildInputs = [ cmake pkg-config ];
+  buildInputs = [ libmpdclient openssl ];
 
-  meta = {
+  meta = with lib; {
     homepage = "https://www.ympd.org";
     description = "Standalone MPD Web GUI written in C, utilizing Websockets and Bootstrap/JS";
-    maintainers = [ stdenv.lib.maintainers.siddharthist ];
-    platforms = stdenv.lib.platforms.unix;
-    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ maintainers.siddharthist ];
+    platforms = platforms.unix;
+    license = licenses.gpl2Plus;
   };
 }
diff --git a/pkgs/applications/audio/yoshimi/default.nix b/pkgs/applications/audio/yoshimi/default.nix
index 2b0a89bbaf5..dfb6a419c3d 100644
--- a/pkgs/applications/audio/yoshimi/default.nix
+++ b/pkgs/applications/audio/yoshimi/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchFromGitHub , alsaLib, boost, cairo, cmake, fftwSinglePrec, fltk, pcre
-, libjack2, libsndfile, libXdmcp, readline, lv2, libGLU, libGL, minixml, pkgconfig, zlib, xorg
+{ lib, stdenv, fetchFromGitHub , alsa-lib, boost, cairo, cmake, fftwSinglePrec, fltk, pcre
+, libjack2, libsndfile, libXdmcp, readline, lv2, libGLU, libGL, minixml, pkg-config, zlib, xorg
 }:
 
 assert stdenv ? glibc;
@@ -16,11 +16,11 @@ stdenv.mkDerivation  rec {
     sha256 = "0bgcc5fbgwpdjircq00wlii30pakf45yzligpbnf02a554hh4j01";
   };
   buildInputs = [
-    alsaLib boost cairo fftwSinglePrec fltk libjack2 libsndfile libXdmcp readline lv2 libGLU libGL
+    alsa-lib boost cairo fftwSinglePrec fltk libjack2 libsndfile libXdmcp readline lv2 libGLU libGL
     minixml zlib xorg.libpthreadstubs pcre
   ];
 
-  nativeBuildInputs = [ cmake pkgconfig ];
+  nativeBuildInputs = [ cmake pkg-config ];
 
   patchPhase = ''
     substituteInPlace src/Misc/Config.cpp --replace /usr $out
@@ -31,7 +31,7 @@ stdenv.mkDerivation  rec {
 
   cmakeFlags = [ "-DFLTK_MATH_LIBRARY=${stdenv.glibc.out}/lib/libm.so" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "High quality software synthesizer based on ZynAddSubFX";
     longDescription = ''
       Yoshimi delivers the same synthesizer capabilities as
diff --git a/pkgs/applications/audio/ytmdesktop/default.nix b/pkgs/applications/audio/ytmdesktop/default.nix
new file mode 100644
index 00000000000..be2b85199b7
--- /dev/null
+++ b/pkgs/applications/audio/ytmdesktop/default.nix
@@ -0,0 +1,36 @@
+{ lib, fetchurl, appimageTools, }:
+
+let
+  pname = "ytmdesktop";
+  version = "1.13.0";
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "https://github.com/ytmdesktop/ytmdesktop/releases/download/v${version}/YouTube-Music-Desktop-App-${version}.AppImage";
+    sha256 = "0f5l7hra3m3q9zd0ngc9dj4mh1lk0rgicvh9idpd27wr808vy28v";
+  };
+
+  appimageContents = appimageTools.extract { inherit name src; };
+in appimageTools.wrapType2 rec {
+  inherit name src;
+
+  extraInstallCommands = ''
+    mv $out/bin/{${name},${pname}}
+
+    install -m 444 \
+        -D ${appimageContents}/youtube-music-desktop-app.desktop \
+        -t $out/share/applications
+    substituteInPlace \
+        $out/share/applications/youtube-music-desktop-app.desktop \
+        --replace 'Exec=AppRun' 'Exec=${pname}'
+    cp -r ${appimageContents}/usr/share/icons $out/share
+  '';
+
+  meta = with lib; {
+    description = "A Desktop App for YouTube Music";
+    homepage = "https://ytmdesktop.app/";
+    license = licenses.cc0;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.lgcl ];
+  };
+}
diff --git a/pkgs/applications/audio/zam-plugins/default.nix b/pkgs/applications/audio/zam-plugins/default.nix
index a34773513d9..777ac79a22d 100644
--- a/pkgs/applications/audio/zam-plugins/default.nix
+++ b/pkgs/applications/audio/zam-plugins/default.nix
@@ -1,17 +1,18 @@
-{ stdenv, fetchgit , boost, libX11, libGL, liblo, libjack2, ladspaH, lv2, pkgconfig, rubberband, libsndfile, fftwFloat, libsamplerate }:
+{ lib, stdenv, fetchFromGitHub, boost, libX11, libGL, liblo, libjack2, ladspaH, lv2, pkg-config, rubberband, libsndfile, fftwFloat, libsamplerate }:
 
-stdenv.mkDerivation {
+stdenv.mkDerivation rec {
   pname = "zam-plugins";
-  version = "3.12";
+  version = "3.13";
 
-  src = fetchgit {
-    url = "https://github.com/zamaudio/zam-plugins.git";
-    deepClone = true;
-    rev = "87fdee6e87dbee75c1088e2327ea59c1ab1522e4";
-    sha256 = "0kz0xygff3ca1v9nqi0dvrzy9whbzqxrls5b7hydi808d795893n";
+  src = fetchFromGitHub {
+    owner = "zamaudio";
+    repo = pname;
+    rev = version;
+    sha256 = "02blg0iqich4vx5z1ahj6avkh83yqszdiq83p9jd5qwm0i4llqjq";
+    fetchSubmodules = true;
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ boost libX11 libGL liblo libjack2 ladspaH lv2 rubberband libsndfile fftwFloat libsamplerate ];
 
   postPatch = ''
@@ -19,12 +20,12 @@ stdenv.mkDerivation {
   '';
 
   makeFlags = [
-    "PREFIX=${placeholder ''out''}"
+    "PREFIX=${placeholder "out"}"
   ];
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://www.zamaudio.com/?p=976";
     description = "A collection of LV2/LADSPA/VST/JACK audio plugins by ZamAudio";
     license = licenses.gpl2Plus;
diff --git a/pkgs/applications/audio/zita-ajbridge/default.nix b/pkgs/applications/audio/zita-ajbridge/default.nix
index ad2ea53e9f7..873a294540d 100644
--- a/pkgs/applications/audio/zita-ajbridge/default.nix
+++ b/pkgs/applications/audio/zita-ajbridge/default.nix
@@ -1,14 +1,15 @@
-{ stdenv, fetchurl, alsaLib, libjack2, zita-alsa-pcmi, zita-resampler }:
+{ lib, stdenv, fetchurl, alsa-lib, libjack2, zita-alsa-pcmi, zita-resampler }:
 
 stdenv.mkDerivation rec {
-  name = "zita-ajbridge-0.8.4";
+  pname = "zita-ajbridge";
+  version = "0.8.4";
 
   src = fetchurl {
-    url = "https://kokkinizita.linuxaudio.org/linuxaudio/downloads/${name}.tar.bz2";
+    url = "https://kokkinizita.linuxaudio.org/linuxaudio/downloads/${pname}-${version}.tar.bz2";
     sha256 = "0g5v0l0zmqh049mhv62n8s5bpm0yrlby7mkxxhs5qwadp8v4w9mw";
   };
 
-  buildInputs = [ alsaLib libjack2 zita-alsa-pcmi zita-resampler ];
+  buildInputs = [ alsa-lib libjack2 zita-alsa-pcmi zita-resampler ];
 
   preConfigure = ''
     cd ./source/
@@ -21,7 +22,7 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Connect additional ALSA devices to JACK";
     homepage = "http://kokkinizita.linuxaudio.org/linuxaudio/index.html";
     license = licenses.gpl3Plus;
diff --git a/pkgs/applications/audio/zita-at1/default.nix b/pkgs/applications/audio/zita-at1/default.nix
index d357febd882..8a629e145c4 100644
--- a/pkgs/applications/audio/zita-at1/default.nix
+++ b/pkgs/applications/audio/zita-at1/default.nix
@@ -1,13 +1,14 @@
-{ stdenv, fetchurl
+{ lib, stdenv, fetchurl
 , cairo, fftwSinglePrec, libX11, libXft, libclthreads, libclxclient, libjack2
 , xorgproto, zita-resampler
 }:
 
 stdenv.mkDerivation rec {
-  name = "zita-at1-0.6.2";
+  pname = "zita-at1";
+  version = "0.6.2";
 
   src = fetchurl {
-    url = "https://kokkinizita.linuxaudio.org/linuxaudio/downloads/${name}.tar.bz2";
+    url = "https://kokkinizita.linuxaudio.org/linuxaudio/downloads/${pname}-${version}.tar.bz2";
     sha256 = "0mxfn61zvhlq3r1mqipyqzjbanrfdkk8x4nxbz8nlbdk0bf3vfqr";
   };
 
@@ -26,7 +27,7 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Autotuner Jack application to correct the pitch of vocal tracks";
     homepage = "https://kokkinizita.linuxaudio.org/linuxaudio/index.html";
     license = licenses.gpl3Plus;
diff --git a/pkgs/applications/audio/zita-njbridge/default.nix b/pkgs/applications/audio/zita-njbridge/default.nix
index 3a293cfc026..142f9bc4d09 100644
--- a/pkgs/applications/audio/zita-njbridge/default.nix
+++ b/pkgs/applications/audio/zita-njbridge/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, libjack2, zita-resampler }:
+{ lib, stdenv, fetchurl, libjack2, zita-resampler }:
 
 stdenv.mkDerivation rec {
   version = "0.4.4";
@@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
   ];
 
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "command line Jack clients to transmit full quality multichannel audio over a local IP network";
     homepage = "http://kokkinizita.linuxaudio.org/linuxaudio/index.html";
     license = licenses.gpl3;
diff --git a/pkgs/applications/audio/zynaddsubfx/default.nix b/pkgs/applications/audio/zynaddsubfx/default.nix
index 9a432f73d3f..986e3215b93 100644
--- a/pkgs/applications/audio/zynaddsubfx/default.nix
+++ b/pkgs/applications/audio/zynaddsubfx/default.nix
@@ -1,30 +1,117 @@
-{ stdenv, fetchurl, alsaLib, cairo, cmake, libjack2, fftw, fltk13, lash,  libjpeg
-, libXpm, minixml, ntk, pkgconfig, zlib, liblo
+{ lib
+, stdenv
+, fetchFromGitHub
+, callPackage
+
+  # Required build tools
+, cmake
+, makeWrapper
+, pkg-config
+
+  # Required dependencies
+, fftw
+, liblo
+, minixml
+, zlib
+
+  # Optional dependencies
+, alsaSupport ? true
+, alsa-lib
+, dssiSupport ? false
+, dssi
+, ladspaH
+, jackSupport ? true
+, libjack2
+, lashSupport ? false
+, lash
+, ossSupport ? true
+, portaudioSupport ? true
+, portaudio
+
+  # Optional GUI dependencies
+, guiModule ? "off"
+, cairo
+, fltk13
+, libGL
+, libjpeg
+, libX11
+, libXpm
+, ntk
+
+  # Test dependencies
+, cxxtest
 }:
 
-stdenv.mkDerivation  rec {
+assert builtins.any (g: guiModule == g) [ "fltk" "ntk" "zest" "off" ];
+
+let
+  guiName = {
+    "fltk" = "FLTK";
+    "ntk" = "NTK";
+    "zest" = "Zyn-Fusion";
+  }.${guiModule};
+  mruby-zest = callPackage ./mruby-zest { };
+in stdenv.mkDerivation rec {
   pname = "zynaddsubfx";
   version = "3.0.5";
 
-  src = fetchurl {
-    url = "mirror://sourceforge/zynaddsubfx/zynaddsubfx-${version}.tar.bz2";
-    sha256 = "0qwzg14h043rmyf9jqdylxhyfy4sl0vsr0gjql51wjhid0i34ivl";
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = version;
+    sha256 = "1vh1gszgjxwn8m32rk5222z1j2cnjax0bqpag7b47v6i36p2q4x8";
+    fetchSubmodules = true;
   };
 
-  buildInputs = [ alsaLib cairo libjack2 fftw fltk13 lash libjpeg libXpm minixml ntk zlib liblo ];
-  nativeBuildInputs = [ cmake pkgconfig ];
-
-  patchPhase = ''
+  postPatch = ''
     substituteInPlace src/Misc/Config.cpp --replace /usr $out
   '';
 
-  hardeningDisable = [ "format" ];
+  nativeBuildInputs = [ cmake makeWrapper pkg-config ];
+
+  buildInputs = [ fftw liblo minixml zlib ]
+    ++ lib.optionals alsaSupport [ alsa-lib ]
+    ++ lib.optionals dssiSupport [ dssi ladspaH ]
+    ++ lib.optionals jackSupport [ libjack2 ]
+    ++ lib.optionals lashSupport [ lash ]
+    ++ lib.optionals portaudioSupport [ portaudio ]
+    ++ lib.optionals (guiModule == "fltk") [ fltk13 libjpeg libXpm ]
+    ++ lib.optionals (guiModule == "ntk") [ ntk cairo libXpm ]
+    ++ lib.optionals (guiModule == "zest") [ libGL libX11 ];
+
+  cmakeFlags = [ "-DGuiModule=${guiModule}" ]
+    # OSS library is included in glibc.
+    # Must explicitly disable if support is not wanted.
+    ++ lib.optional (!ossSupport) "-DOssEnable=OFF"
+    # Find FLTK without requiring an OpenGL library in buildInputs
+    ++ lib.optional (guiModule == "fltk") "-DFLTK_SKIP_OPENGL=ON";
+
+  doCheck = true;
+  checkInputs = [ cxxtest ];
+
+  # When building with zest GUI, patch plugins
+  # and standalone executable to properly locate zest
+  postFixup = lib.optional (guiModule == "zest") ''
+    patchelf --set-rpath "${mruby-zest}:$(patchelf --print-rpath "$out/lib/lv2/ZynAddSubFX.lv2/ZynAddSubFX_ui.so")" \
+      "$out/lib/lv2/ZynAddSubFX.lv2/ZynAddSubFX_ui.so"
+
+    patchelf --set-rpath "${mruby-zest}:$(patchelf --print-rpath "$out/lib/vst/ZynAddSubFX.so")" \
+      "$out/lib/vst/ZynAddSubFX.so"
+
+    wrapProgram "$out/bin/zynaddsubfx" \
+      --prefix PATH : ${mruby-zest} \
+      --prefix LD_LIBRARY_PATH : ${mruby-zest}
+  '';
+
+  meta = with lib; {
+    description = "High quality software synthesizer (${guiName} GUI)";
+    homepage =
+      if guiModule == "zest"
+      then "https://zynaddsubfx.sourceforge.io/zyn-fusion.html"
+      else "https://zynaddsubfx.sourceforge.io";
 
-  meta = with stdenv.lib; {
-    description = "High quality software synthesizer";
-    homepage = "http://zynaddsubfx.sourceforge.net";
     license = licenses.gpl2;
+    maintainers = with maintainers; [ goibhniu kira-bruneau ];
     platforms = platforms.linux;
-    maintainers = [ maintainers.goibhniu maintainers.nico202 ];
   };
 }
diff --git a/pkgs/applications/audio/zynaddsubfx/mruby-zest/default.nix b/pkgs/applications/audio/zynaddsubfx/mruby-zest/default.nix
new file mode 100644
index 00000000000..9dd5b583817
--- /dev/null
+++ b/pkgs/applications/audio/zynaddsubfx/mruby-zest/default.nix
@@ -0,0 +1,109 @@
+{ lib, stdenv
+, fetchFromGitHub
+, bison
+, git
+, python2
+, rake
+, ruby
+, libGL
+, libuv
+, libX11
+}:
+
+let
+  mgem-list = fetchFromGitHub {
+    owner = "mruby";
+    repo = "mgem-list";
+    rev = "2033837203c8a141b1f9d23bb781fe0cbaefbd24";
+    sha256 = "0igf2nsx5i6g0yf7sjxxkngyriv213d0sjs3yidrflrabiywpxmm";
+  };
+
+  mruby-dir = fetchFromGitHub {
+    owner = "iij";
+    repo = "mruby-dir";
+    rev = "89dceefa1250fb1ae868d4cb52498e9e24293cd1";
+    sha256 = "0zrhiy9wmwmc9ls62iyb2z86j2ijqfn7rn4xfmrbrfxygczarsm9";
+  };
+
+  mruby-errno = fetchFromGitHub {
+    owner = "iij";
+    repo = "mruby-errno";
+    rev = "b4415207ff6ea62360619c89a1cff83259dc4db0";
+    sha256 = "12djcwjjw0fygai5kssxbfs3pzh3cpnq07h9m2h5b51jziw380xj";
+  };
+
+  mruby-file-stat = fetchFromGitHub {
+    owner = "ksss";
+    repo = "mruby-file-stat";
+    rev = "aa474589f065c71d9e39ab8ba976f3bea6f9aac2";
+    sha256 = "1clarmr67z133ivkbwla1a42wcjgj638j9w0mlv5n21mhim9rid5";
+  };
+
+  mruby-process = fetchFromGitHub {
+    owner = "iij";
+    repo = "mruby-process";
+    rev = "fe171fbe2a6cc3c2cf7d713641bddde71024f7c8";
+    sha256 = "00yrzc371f90gl5m1gbkw0qq8c394bpifssjr8p1wh5fmzhxqyml";
+  };
+
+  mruby-pack = fetchFromGitHub {
+    owner = "iij";
+    repo = "mruby-pack";
+    rev = "383a9c79e191d524a9a2b4107cc5043ecbf6190b";
+    sha256 = "003glxgxifk4ixl12sy4gn9bhwvgb79b4wga549ic79isgv81w2d";
+  };
+in
+stdenv.mkDerivation rec {
+  pname = "mruby-zest";
+  version = "3.0.5";
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = "${pname}-build";
+    rev = version;
+    sha256 = "0fxljrgamgz2rm85mclixs00b0f2yf109jc369039n1vf0l5m57d";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [ bison git python2 rake ruby ];
+  buildInputs = [ libGL libuv libX11 ];
+
+  patches = [
+    ./force-gcc-as-linker.patch
+    ./system-libuv.patch
+  ];
+
+  # Add missing dependencies of deps/mruby-dir-glob/mrbgem.rake
+  # Should be fixed in next release, see bcadb0a5490bd6d599f1a0e66ce09b46363c9dae
+  postPatch = ''
+    mkdir -p mruby/build/mrbgems
+    ln -s ${mgem-list} mruby/build/mrbgems/mgem-list
+    ln -s ${mruby-dir} mruby/build/mrbgems/mruby-dir
+    ln -s ${mruby-errno} mruby/build/mrbgems/mruby-errno
+    ln -s ${mruby-file-stat} mruby/build/mrbgems/mruby-file-stat
+    ln -s ${mruby-process} mruby/build/mrbgems/mruby-process
+    ln -s ${mruby-pack} mruby/build/mrbgems/mruby-pack
+  '';
+
+  installTargets = [ "pack" ];
+
+  postInstall = ''
+    ln -s "$out/zest" "$out/zyn-fusion"
+    cp -a package/{font,libzest.so,schema,zest} "$out"
+
+    # mruby-widget-lib/src/api.c requires MainWindow.qml as part of a
+    # sanity check, even though qml files are compiled into the binary
+    # https://github.com/mruby-zest/mruby-zest-build/tree/3.0.5/src/mruby-widget-lib/src/api.c#L99-L116
+    # https://github.com/mruby-zest/mruby-zest-build/tree/3.0.5/linux-pack.sh#L17-L18
+    mkdir -p "$out/qml"
+    touch "$out/qml/MainWindow.qml"
+  '';
+
+  meta = with lib; {
+    description = "The Zest Framework used in ZynAddSubFX's UI";
+    homepage = "https://github.com/mruby-zest";
+    license = licenses.lgpl21;
+    maintainers = with maintainers; [ kira-bruneau ];
+    platforms = platforms.all;
+  };
+}
diff --git a/pkgs/applications/audio/zynaddsubfx/mruby-zest/force-gcc-as-linker.patch b/pkgs/applications/audio/zynaddsubfx/mruby-zest/force-gcc-as-linker.patch
new file mode 100644
index 00000000000..c521d240774
--- /dev/null
+++ b/pkgs/applications/audio/zynaddsubfx/mruby-zest/force-gcc-as-linker.patch
@@ -0,0 +1,13 @@
+diff --git a/mruby/tasks/toolchains/gcc.rake b/mruby/tasks/toolchains/gcc.rake
+index f370c0ab..e5ab9f60 100644
+--- a/mruby/tasks/toolchains/gcc.rake
++++ b/mruby/tasks/toolchains/gcc.rake
+@@ -22,7 +22,7 @@ MRuby::Toolchain.new(:gcc) do |conf, _params|
+   end
+ 
+   conf.linker do |linker|
+-    linker.command = ENV['LD'] || 'gcc'
++    linker.command = 'gcc'
+     linker.flags = [ENV['LDFLAGS'] || %w()]
+     linker.libraries = %w(m)
+     linker.library_paths = []
diff --git a/pkgs/applications/audio/zynaddsubfx/mruby-zest/system-libuv.patch b/pkgs/applications/audio/zynaddsubfx/mruby-zest/system-libuv.patch
new file mode 100644
index 00000000000..b7050abc123
--- /dev/null
+++ b/pkgs/applications/audio/zynaddsubfx/mruby-zest/system-libuv.patch
@@ -0,0 +1,113 @@
+diff --git a/Makefile b/Makefile
+index f3e3be2..2398852 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,8 +1,3 @@
+-UV_DIR    = libuv-v1.9.1
+-UV_FILE   = $(UV_DIR).tar.gz
+-UV_URL    = http://dist.libuv.org/dist/v1.9.1/$(UV_FILE)
+-	 
+-
+ all:
+ 	ruby ./rebuild-fcache.rb
+ 	cd deps/nanovg/src   && $(CC) nanovg.c -c -fPIC
+@@ -10,12 +5,12 @@ all:
+ #	cd deps/pugl         && python2 ./waf configure --no-cairo --static
+ 	cd deps/pugl         && python2 ./waf configure --no-cairo --static --debug
+ 	cd deps/pugl         && python2 ./waf
+-	cd src/osc-bridge    && CFLAGS="-I ../../deps/$(UV_DIR)/include " make lib
++	cd src/osc-bridge    && make lib
+ 	cd mruby             && MRUBY_CONFIG=../build_config.rb rake
+ 	$(CC) -shared -o libzest.so `find mruby/build/host -type f | grep -e "\.o$$" | grep -v bin` ./deps/libnanovg.a \
+ 		./deps/libnanovg.a \
+ 		src/osc-bridge/libosc-bridge.a \
+-		./deps/$(UV_DIR)/.libs/libuv.a  -lm -lX11 -lGL -lpthread
++		-luv -lm -lX11 -lGL -lpthread
+ 	$(CC) test-libversion.c deps/pugl/build/libpugl-0.a -ldl -o zest -lX11 -lGL -lpthread -I deps/pugl -std=gnu99
+ 
+ osx:
+@@ -25,12 +20,12 @@ osx:
+ 	cd deps/pugl         && python2 ./waf configure --no-cairo --static
+ #	cd deps/pugl         && python2 ./waf configure --no-cairo --static --debug
+ 	cd deps/pugl         && python2 ./waf
+-	cd src/osc-bridge    && CFLAGS="-I ../../deps/$(UV_DIR)/include " make lib
++	cd src/osc-bridge    && make lib
+ 	cd mruby             && MRUBY_CONFIG=../build_config.rb rake
+ 	$(CC) -shared -o libzest.so `find mruby/build/host -type f | grep -e "\.o$$" | grep -v bin` ./deps/libnanovg.a \
+ 		./deps/libnanovg.a \
+ 		src/osc-bridge/libosc-bridge.a \
+-		./deps/$(UV_DIR)/.libs/libuv.a  -lm -framework OpenGL -lpthread
++		-luv -lm -framework OpenGL -lpthread
+ 	$(CC) test-libversion.c deps/pugl/build/libpugl-0.a -ldl -o zest -framework OpenGL -framework AppKit -lpthread -I deps/pugl -std=gnu99
+ 
+ windows:
+@@ -38,38 +33,14 @@ windows:
+ 	$(AR) rc deps/libnanovg.a deps/nanovg/src/*.o
+ 	cd deps/pugl         && CFLAGS="-mstackrealign" python2 ./waf configure --no-cairo --static --target=win32
+ 	cd deps/pugl         && python2 ./waf
+-	cd src/osc-bridge    && CFLAGS="-mstackrealign -I ../../deps/$(UV_DIR)/include " make lib
++	cd src/osc-bridge    && CFLAGS="-mstackrealign" make lib
+ 	cd mruby             && WINDOWS=1 MRUBY_CONFIG=../build_config.rb rake
+ 	$(CC) -mstackrealign -shared -o libzest.dll -static-libgcc `find mruby/build/w64 -type f | grep -e "\.o$$" | grep -v bin` \
+         ./deps/libnanovg.a \
+         src/osc-bridge/libosc-bridge.a \
+-        ./deps/libuv-win.a \
+-        -lm -lpthread -lws2_32 -lkernel32 -lpsapi -luserenv -liphlpapi -lglu32 -lgdi32 -lopengl32
++        -luv -lm -lpthread -lws2_32 -lkernel32 -lpsapi -luserenv -liphlpapi -lglu32 -lgdi32 -lopengl32
+ 	$(CC) -mstackrealign -DWIN32 test-libversion.c deps/pugl/build/libpugl-0.a -o zest.exe -lpthread -I deps/pugl -std=c99 -lws2_32 -lkernel32 -lpsapi -luserenv -liphlpapi -lglu32 -lgdi32 -lopengl32
+ 
+-
+-builddep: deps/libuv.a
+-deps/libuv.a:
+-	cd deps/$(UV_DIR)    && ./autogen.sh
+-	cd deps/$(UV_DIR)    && CFLAGS=-fPIC ./configure
+-	cd deps/$(UV_DIR)    && CFLAGS=-fPIC make
+-	cp deps/$(UV_DIR)/.libs/libuv.a deps/
+-
+-builddepwin: deps/libuv-win.a
+-deps/libuv-win.a:
+-	cd deps/$(UV_DIR)   && ./autogen.sh
+-	cd deps/$(UV_DIR)   && CFLAGS="-mstackrealign" ./configure  --host=x86_64-w64-mingw32
+-	cd deps/$(UV_DIR)   && LD=x86_64-w64-mingw32-gcc make
+-	cp deps/$(UV_DIR)/.libs/libuv.a deps/libuv-win.a
+-
+-deps/$(UV_DIR):
+-	cd deps              && wget -4 $(UV_URL) && tar xvf $(UV_FILE)
+-setup: deps/$(UV_DIR)
+-
+-setupwin:
+-	cd deps              && wget -4 $(UV_URL)
+-	cd deps              && tar xvf $(UV_FILE)
+-
+ push:
+ 	cd src/osc-bridge      && git push
+ 	cd src/mruby-qml-parse  && git push
+diff --git a/build_config.rb b/build_config.rb
+index 00f1f69..11ac15b 100644
+--- a/build_config.rb
++++ b/build_config.rb
+@@ -96,7 +96,6 @@ build_type.new(build_name) do |conf|
+   conf.cc do |cc|
+       cc.include_paths << "#{`pwd`.strip}/../deps/nanovg/src"
+       cc.include_paths << "#{`pwd`.strip}/../deps/pugl/"
+-      cc.include_paths << "#{`pwd`.strip}/../deps/libuv-v1.9.1/include/"
+       cc.include_paths << "/usr/share/mingw-w64/include/" if windows
+       cc.include_paths << "/usr/x86_64-w64-mingw32/include/" if windows
+       cc.flags << "-DLDBL_EPSILON=1e-6" if windows
+@@ -117,14 +116,14 @@ build_type.new(build_name) do |conf|
+       linker.flags_after_libraries  << "#{`pwd`.strip}/../deps/pugl/build/libpugl-0.a"
+       linker.flags_after_libraries  << "#{`pwd`.strip}/../deps/libnanovg.a"
+       if(!windows)
+-        linker.flags_after_libraries  << "#{`pwd`.strip}/../deps/libuv.a"
++        linker.flags_after_libraries  << "-luv"
+         if(ENV['OS'] != "Mac")
+           linker.libraries << 'GL'
+           linker.libraries << 'X11'
+         end
+         linker.flags_after_libraries  << "-lpthread -ldl -lm"
+       else
+-        linker.flags_after_libraries  << "#{`pwd`.strip}/../deps/libuv-win.a"
++        linker.flags_after_libraries  << "-luv"
+         linker.flags_after_libraries  << "-lws2_32 -lkernel32 -lpsapi -luserenv -liphlpapi"
+         linker.flags_after_libraries  << "-lglu32 -lgdi32 -lopengl32"
+       end