about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/audio
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2023-06-16 06:56:35 +0000
committerAlyssa Ross <hi@alyssa.is>2023-06-16 06:56:35 +0000
commit99fcaeccb89621dd492203ce1f2d551c06f228ed (patch)
tree41cb730ae07383004789779b0f6e11cb3f4642a3 /nixpkgs/pkgs/applications/audio
parent59c5f5ac8682acc13bb22bc29c7cf02f7d75f01f (diff)
parent75a5ebf473cd60148ba9aec0d219f72e5cf52519 (diff)
downloadnixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar
nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.gz
nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.bz2
nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.lz
nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.xz
nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.zst
nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.zip
Merge branch 'nixos-unstable' of https://github.com/NixOS/nixpkgs
Conflicts:
	nixpkgs/nixos/modules/config/console.nix
	nixpkgs/nixos/modules/services/mail/mailman.nix
	nixpkgs/nixos/modules/services/mail/public-inbox.nix
	nixpkgs/nixos/modules/services/mail/rss2email.nix
	nixpkgs/nixos/modules/services/networking/ssh/sshd.nix
	nixpkgs/pkgs/applications/networking/instant-messengers/dino/default.nix
	nixpkgs/pkgs/applications/networking/irc/weechat/default.nix
	nixpkgs/pkgs/applications/window-managers/sway/default.nix
	nixpkgs/pkgs/build-support/go/module.nix
	nixpkgs/pkgs/build-support/rust/build-rust-package/default.nix
	nixpkgs/pkgs/development/interpreters/python/default.nix
	nixpkgs/pkgs/development/node-packages/overrides.nix
	nixpkgs/pkgs/development/tools/b4/default.nix
	nixpkgs/pkgs/servers/dict/dictd-db.nix
	nixpkgs/pkgs/servers/mail/public-inbox/default.nix
	nixpkgs/pkgs/tools/security/pinentry/default.nix
	nixpkgs/pkgs/tools/text/unoconv/default.nix
	nixpkgs/pkgs/top-level/all-packages.nix
Diffstat (limited to 'nixpkgs/pkgs/applications/audio')
-rw-r--r--nixpkgs/pkgs/applications/audio/AMB-plugins/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/audio/a2jmidid/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/aacgain/default.nix81
-rw-r--r--nixpkgs/pkgs/applications/audio/aaxtomp3/default.nix78
-rw-r--r--nixpkgs/pkgs/applications/audio/adlplug/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/aeolus/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/audio/aeolus/stops.nix33
-rw-r--r--nixpkgs/pkgs/applications/audio/aether-lv2/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/airwave/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/audio/airwindows-lv2/default.nix10
-rw-r--r--nixpkgs/pkgs/applications/audio/alsa-scarlett-gui/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/audio/amarok/default.nix8
-rw-r--r--nixpkgs/pkgs/applications/audio/amberol/default.nix17
-rw-r--r--nixpkgs/pkgs/applications/audio/ams/default.nix3
-rw-r--r--nixpkgs/pkgs/applications/audio/apple-music-electron/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/audio/ardour/6.nix191
-rw-r--r--nixpkgs/pkgs/applications/audio/ardour/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/audio/ario/default.nix18
-rw-r--r--nixpkgs/pkgs/applications/audio/artyFX/default.nix7
-rw-r--r--nixpkgs/pkgs/applications/audio/ashuffle/default.nix9
-rw-r--r--nixpkgs/pkgs/applications/audio/asunder/default.nix18
-rw-r--r--nixpkgs/pkgs/applications/audio/audacious/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/audacious/plugins.nix8
-rw-r--r--nixpkgs/pkgs/applications/audio/audacity/default.nix93
-rw-r--r--nixpkgs/pkgs/applications/audio/audio-recorder/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/aumix/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/bambootracker/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/audio/bchoppr/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/bespokesynth/default.nix10
-rw-r--r--nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio1.nix7
-rw-r--r--nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio3.nix9
-rw-r--r--nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio4.nix58
-rw-r--r--nixpkgs/pkgs/applications/audio/blanket/default.nix13
-rw-r--r--nixpkgs/pkgs/applications/audio/bristol/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/brutefir/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/audio/butt/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/audio/buzztrax/default.nix74
-rw-r--r--nixpkgs/pkgs/applications/audio/cadence/default.nix3
-rw-r--r--nixpkgs/pkgs/applications/audio/calf/default.nix7
-rw-r--r--nixpkgs/pkgs/applications/audio/callaudiod/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/cardinal/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/audio/carla/default.nix56
-rw-r--r--nixpkgs/pkgs/applications/audio/cava/default.nix14
-rw-r--r--nixpkgs/pkgs/applications/audio/cavalier/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/audio/chuck/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/audio/cider/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/clerk/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/audio/cmt/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/cmus/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/audio/codecserver/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/cozy/default.nix9
-rw-r--r--nixpkgs/pkgs/applications/audio/cplay-ng/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/audio/crip/default.nix10
-rw-r--r--nixpkgs/pkgs/applications/audio/csound/csound-manual/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/audio/csound/csound-qt/default.nix19
-rw-r--r--nixpkgs/pkgs/applications/audio/csound/csound-qt/rtmidipath.patch10
-rw-r--r--nixpkgs/pkgs/applications/audio/csound/default.nix10
-rw-r--r--nixpkgs/pkgs/applications/audio/cyanrip/default.nix8
-rw-r--r--nixpkgs/pkgs/applications/audio/deadbeef/default.nix8
-rw-r--r--nixpkgs/pkgs/applications/audio/deadbeef/plugins/mpris2.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/dexed/default.nix109
-rw-r--r--nixpkgs/pkgs/applications/audio/dolbybcsoftwaredecode/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/audio/dragonfly-reverb/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/drumgizmo/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/eartag/default.nix80
-rw-r--r--nixpkgs/pkgs/applications/audio/easyeffects/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/audio/ebumeter/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/eflite/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/eq10q/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/espeak-ng/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/audio/espeak/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/espeak/edit.nix7
-rw-r--r--nixpkgs/pkgs/applications/audio/espeak/espeakedit-wxgtk30.patch32
-rw-r--r--nixpkgs/pkgs/applications/audio/exact-audio-copy/default.nix86
-rw-r--r--nixpkgs/pkgs/applications/audio/exaile/default.nix13
-rw-r--r--nixpkgs/pkgs/applications/audio/famistudio/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/audio/faust/faust2.nix184
-rw-r--r--nixpkgs/pkgs/applications/audio/faust/faust2sc.nix38
-rw-r--r--nixpkgs/pkgs/applications/audio/faust/faustlive.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/faustPhysicalModeling/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/fdkaac/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/fire/0001-Remove-FetchContent-usage.patch62
-rw-r--r--nixpkgs/pkgs/applications/audio/fire/default.nix119
-rw-r--r--nixpkgs/pkgs/applications/audio/flac/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/audio/flac123/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/flac2all/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/audio/flacon/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/fluidsynth/default.nix16
-rw-r--r--nixpkgs/pkgs/applications/audio/fmit/default.nix16
-rw-r--r--nixpkgs/pkgs/applications/audio/freac/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/freewheeling/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/ft2-clone/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/furnace/default.nix20
-rw-r--r--nixpkgs/pkgs/applications/audio/galaxy-buds-client/default.nix69
-rw-r--r--nixpkgs/pkgs/applications/audio/galaxy-buds-client/deps.nix223
-rw-r--r--nixpkgs/pkgs/applications/audio/game-music-emu/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/audio/gbsplay/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/giada/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/audio/gjay/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/gmpc/default.nix5
-rw-r--r--nixpkgs/pkgs/applications/audio/gnaural/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/gnome-podcasts/Cargo.lock2945
-rw-r--r--nixpkgs/pkgs/applications/audio/gnome-podcasts/default.nix15
-rw-r--r--nixpkgs/pkgs/applications/audio/go-musicfox/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/audio/goattracker/default.nix15
-rw-r--r--nixpkgs/pkgs/applications/audio/goodvibes/default.nix61
-rw-r--r--nixpkgs/pkgs/applications/audio/gpodder/default.nix9
-rw-r--r--nixpkgs/pkgs/applications/audio/grandorgue/default.nix53
-rw-r--r--nixpkgs/pkgs/applications/audio/gtkcord4/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/audio/gtkpod/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/guitarix/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/audio/gwc/default.nix5
-rw-r--r--nixpkgs/pkgs/applications/audio/gxplugins-lv2/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/headset/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/audio/helio-workstation/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/helvum/default.nix12
-rw-r--r--nixpkgs/pkgs/applications/audio/hivelytracker/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/audio/hqplayer-desktop/default.nix54
-rw-r--r--nixpkgs/pkgs/applications/audio/id3v2/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/in-formant/0001-Avoid-using-vendored-dependencies-we-have-in-nixpkgs.patch47
-rw-r--r--nixpkgs/pkgs/applications/audio/in-formant/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/audio/indicator-sound-switcher/default.nix10
-rw-r--r--nixpkgs/pkgs/applications/audio/infamousPlugins/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/audio/ingen/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/jack-rack/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/jackmix/default.nix15
-rw-r--r--nixpkgs/pkgs/applications/audio/jamesdsp/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/audio/jamin/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/jmusicbot/default.nix10
-rw-r--r--nixpkgs/pkgs/applications/audio/kapitonov-plugins-pack/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/keyfinder/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/kid3/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/klick/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/audio/klystrack/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/ladspa-sdk/default.nix20
-rw-r--r--nixpkgs/pkgs/applications/audio/ledfx/default.nix62
-rw-r--r--nixpkgs/pkgs/applications/audio/librespot/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/audio/lingot/default.nix15
-rw-r--r--nixpkgs/pkgs/applications/audio/linvstmanager/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/audio/listenbrainz-mpd/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/audio/littlegptracker/default.nix8
-rw-r--r--nixpkgs/pkgs/applications/audio/lmms/default.nix10
-rw-r--r--nixpkgs/pkgs/applications/audio/lollypop/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/audio/lsp-plugins/default.nix196
-rw-r--r--nixpkgs/pkgs/applications/audio/ltc-tools/default.nix3
-rw-r--r--nixpkgs/pkgs/applications/audio/mbrola/default.nix90
-rw-r--r--nixpkgs/pkgs/applications/audio/mellowplayer/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/meterbridge/default.nix3
-rw-r--r--nixpkgs/pkgs/applications/audio/mi2ly/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/mid2key/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/midas/generic.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/midas/m32edit.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/midas/x32edit.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/midi-visualizer/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/audio/midisheetmusic/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/mimic/default.nix5
-rw-r--r--nixpkgs/pkgs/applications/audio/minidsp/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/audio/miniplayer/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/audio/mixxx/default.nix7
-rw-r--r--nixpkgs/pkgs/applications/audio/mmlgui/default.nix8
-rw-r--r--nixpkgs/pkgs/applications/audio/mmtc/default.nix14
-rw-r--r--nixpkgs/pkgs/applications/audio/moc/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/mod-arpeggiator-lv2/default.nix3
-rw-r--r--nixpkgs/pkgs/applications/audio/monkeys-audio/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/bandcamp.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/iris.nix8
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/jellyfin.nix8
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/local.nix19
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/moped.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/mopidy.nix14
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/mopify.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/mpd.nix10
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/mpris.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/muse.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/musicbox-webclient.nix21
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/notify.nix29
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/podcast.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/scrobbler.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/somafm.nix12
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/soundcloud.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/spotify.nix31
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/subidy.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/tidal.nix36
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/tunein.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/youtube.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/ytmusic.nix41
-rw-r--r--nixpkgs/pkgs/applications/audio/mousai/default.nix60
-rw-r--r--nixpkgs/pkgs/applications/audio/mp3blaster/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/mp3gain/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/mp3val/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/mpc123/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/mpd-touch-screen-gui/default.nix63
-rw-r--r--nixpkgs/pkgs/applications/audio/mpdevil/default.nix12
-rw-r--r--nixpkgs/pkgs/applications/audio/mpg123/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/audio/mpg321/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/munt/libmt32emu.nix10
-rw-r--r--nixpkgs/pkgs/applications/audio/munt/mt32emu-qt.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/munt/mt32emu-smf2wav.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/muse/default.nix8
-rw-r--r--nixpkgs/pkgs/applications/audio/museeks/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/audio/musescore/darwin.nix11
-rw-r--r--nixpkgs/pkgs/applications/audio/musescore/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/audio/musescore/remove_qtwebengine_install_hack.patch19
-rw-r--r--nixpkgs/pkgs/applications/audio/musikcube/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/audio/musly/default.nix8
-rw-r--r--nixpkgs/pkgs/applications/audio/muso/default.nix10
-rw-r--r--nixpkgs/pkgs/applications/audio/muzika/default.nix82
-rw-r--r--nixpkgs/pkgs/applications/audio/mympd/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/audio/ncmpc/default.nix10
-rw-r--r--nixpkgs/pkgs/applications/audio/ncmpcpp/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/audio/ncpamixer/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/ncspot/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/audio/netease-cloud-music-gtk/Cargo.lock2253
-rw-r--r--nixpkgs/pkgs/applications/audio/netease-cloud-music-gtk/cargo-lock.patch2151
-rw-r--r--nixpkgs/pkgs/applications/audio/netease-cloud-music-gtk/default.nix25
-rwxr-xr-xnixpkgs/pkgs/applications/audio/netease-cloud-music-gtk/update-cargo-lock.sh20
-rw-r--r--nixpkgs/pkgs/applications/audio/netease-music-tui/Cargo.lock2778
-rw-r--r--nixpkgs/pkgs/applications/audio/netease-music-tui/cargo-lock.patch2655
-rw-r--r--nixpkgs/pkgs/applications/audio/netease-music-tui/default.nix14
-rwxr-xr-x[-rw-r--r--]nixpkgs/pkgs/applications/audio/netease-music-tui/update-cargo-lock.sh17
-rw-r--r--nixpkgs/pkgs/applications/audio/new-session-manager/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/noisetorch/default.nix15
-rw-r--r--nixpkgs/pkgs/applications/audio/nootka/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/audio/nootka/unstable.nix54
-rw-r--r--nixpkgs/pkgs/applications/audio/noson/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/audio/nova-filters/default.nix52
-rw-r--r--nixpkgs/pkgs/applications/audio/ocenaudio/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/odin2/default.nix19
-rw-r--r--nixpkgs/pkgs/applications/audio/open-stage-control/default.nix43
-rwxr-xr-xnixpkgs/pkgs/applications/audio/open-stage-control/generate-dependencies.sh18
-rw-r--r--nixpkgs/pkgs/applications/audio/open-stage-control/node-composition.nix17
-rw-r--r--nixpkgs/pkgs/applications/audio/open-stage-control/node-packages.nix8311
-rw-r--r--nixpkgs/pkgs/applications/audio/opusfile/default.nix12
-rw-r--r--nixpkgs/pkgs/applications/audio/opustags/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/osdlyrics/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/oxefmsynth/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/pamixer/default.nix19
-rw-r--r--nixpkgs/pkgs/applications/audio/parlatype/default.nix85
-rw-r--r--nixpkgs/pkgs/applications/audio/patchage/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/patchance/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/audio/paulstretch/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/pavucontrol/default.nix3
-rw-r--r--nixpkgs/pkgs/applications/audio/pbpctrl/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/audio/pd-plugins/gem/default.nix1
-rw-r--r--nixpkgs/pkgs/applications/audio/pd-plugins/puremapping/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/petrifoo/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/pianobooster/default.nix56
-rw-r--r--nixpkgs/pkgs/applications/audio/pianoteq/default.nix69
-rw-r--r--nixpkgs/pkgs/applications/audio/pianotrans/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/audio/picard/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/audio/picoloop/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/pipecontrol/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/pithos/default.nix8
-rw-r--r--nixpkgs/pkgs/applications/audio/plexamp/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/pms/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/audio/pocket-casts/default.nix67
-rw-r--r--nixpkgs/pkgs/applications/audio/polyphone/default.nix9
-rw-r--r--nixpkgs/pkgs/applications/audio/praat/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/pragha/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/proteus/default.nix52
-rw-r--r--nixpkgs/pkgs/applications/audio/psst/Cargo.lock4053
-rw-r--r--nixpkgs/pkgs/applications/audio/psst/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/audio/psst/make-build-reproducible.patch59
-rwxr-xr-xnixpkgs/pkgs/applications/audio/psst/update.sh44
-rw-r--r--nixpkgs/pkgs/applications/audio/pt2-clone/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/ptcollab/default.nix8
-rw-r--r--nixpkgs/pkgs/applications/audio/puddletag/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/audio/pulseaudio-dlna/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/pulseeffects-legacy/default.nix5
-rw-r--r--nixpkgs/pkgs/applications/audio/pyradio/default.nix15
-rw-r--r--nixpkgs/pkgs/applications/audio/qjackctl/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/qmidiarp/default.nix7
-rw-r--r--nixpkgs/pkgs/applications/audio/qmmp/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/audio/qpwgraph/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/qsynth/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/qtscrobbler/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/quodlibet/default.nix179
-rw-r--r--nixpkgs/pkgs/applications/audio/r128gain/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/radioboat/default.nix9
-rw-r--r--nixpkgs/pkgs/applications/audio/radiotray-ng/default.nix7
-rw-r--r--nixpkgs/pkgs/applications/audio/rakarrack/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/raysession/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/audio/reaper/default.nix19
-rwxr-xr-xnixpkgs/pkgs/applications/audio/reaper/updater.sh18
-rw-r--r--nixpkgs/pkgs/applications/audio/renoise/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/rhvoice/honor_nix_environment.patch8
-rw-r--r--nixpkgs/pkgs/applications/audio/rhythmbox/default.nix11
-rw-r--r--nixpkgs/pkgs/applications/audio/roomeqwizard/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/rosegarden/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/sayonara/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/sc68/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/audio/schismtracker/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/scream/default.nix13
-rw-r--r--nixpkgs/pkgs/applications/audio/setbfree/default.nix19
-rw-r--r--nixpkgs/pkgs/applications/audio/sfizz/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/shortwave/default.nix12
-rw-r--r--nixpkgs/pkgs/applications/audio/sidplayfp/default.nix8
-rw-r--r--nixpkgs/pkgs/applications/audio/sisco.lv2/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/snapcast/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/audio/snd/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/sonata/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/songrec/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/sonic-lineup/default.nix14
-rw-r--r--nixpkgs/pkgs/applications/audio/sonic-lineup/match-vamp.patch11
-rw-r--r--nixpkgs/pkgs/applications/audio/sonic-pi/default.nix14
-rwxr-xr-xnixpkgs/pkgs/applications/audio/sonic-pi/update.sh50
-rw-r--r--nixpkgs/pkgs/applications/audio/sonic-visualiser/default.nix15
-rw-r--r--nixpkgs/pkgs/applications/audio/sonixd/default.nix18
-rw-r--r--nixpkgs/pkgs/applications/audio/sonobus/default.nix83
-rw-r--r--nixpkgs/pkgs/applications/audio/sony-headphones-client/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/sony-headphones-client/gcc.patch19
-rw-r--r--nixpkgs/pkgs/applications/audio/sooperlooper/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/audio/soundconverter/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/soundscape-renderer/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/soundtracker/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/soundux/default.nix144
-rw-r--r--nixpkgs/pkgs/applications/audio/spek/default.nix13
-rw-r--r--nixpkgs/pkgs/applications/audio/spot/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/audio/spotify-cli-linux/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/spotify-player/default.nix60
-rw-r--r--nixpkgs/pkgs/applications/audio/spotify-qt/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/spotify-tui/Cargo.lock2704
-rw-r--r--nixpkgs/pkgs/applications/audio/spotify-tui/Cargo.lock.patch11
-rw-r--r--nixpkgs/pkgs/applications/audio/spotify-tui/Cargo.toml.patch12
-rw-r--r--nixpkgs/pkgs/applications/audio/spotify-tui/default.nix64
-rw-r--r--nixpkgs/pkgs/applications/audio/spotify/darwin.nix37
-rw-r--r--nixpkgs/pkgs/applications/audio/spotify/default.nix177
-rw-r--r--nixpkgs/pkgs/applications/audio/spotify/linux.nix178
-rwxr-xr-xnixpkgs/pkgs/applications/audio/spotify/update.sh3
-rw-r--r--nixpkgs/pkgs/applications/audio/spotify/wrapper.nix31
-rw-r--r--nixpkgs/pkgs/applications/audio/spotifyd/default.nix12
-rw-r--r--nixpkgs/pkgs/applications/audio/spotifywm/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/audio/sptlrx/default.nix8
-rw-r--r--nixpkgs/pkgs/applications/audio/squeezelite/default.nix39
-rwxr-xr-xnixpkgs/pkgs/applications/audio/squeezelite/update.sh19
-rw-r--r--nixpkgs/pkgs/applications/audio/ssrc/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/stochas/default.nix9
-rw-r--r--nixpkgs/pkgs/applications/audio/strawberry/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/streamripper/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/sublime-music/default.nix79
-rw-r--r--nixpkgs/pkgs/applications/audio/subtitlr/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/audio/sunvox/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/surge-XT/default.nix10
-rw-r--r--nixpkgs/pkgs/applications/audio/tageditor/default.nix14
-rw-r--r--nixpkgs/pkgs/applications/audio/tagger/default.nix67
-rw-r--r--nixpkgs/pkgs/applications/audio/tap-plugins/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/audio/tauon/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/audio/tenacity/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/audio/termusic/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/audio/tetraproc/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/tidal-hifi/default.nix8
-rw-r--r--nixpkgs/pkgs/applications/audio/tone/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/audio/tone/nuget-deps.nix55
-rw-r--r--nixpkgs/pkgs/applications/audio/tonelib-gfx/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/tonelib-jam/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/tonelib-metal/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/tonelib-noisereducer/default.nix60
-rw-r--r--nixpkgs/pkgs/applications/audio/tony/default.nix18
-rw-r--r--nixpkgs/pkgs/applications/audio/touchosc/default.nix14
-rwxr-xr-xnixpkgs/pkgs/applications/audio/touchosc/update.sh54
-rw-r--r--nixpkgs/pkgs/applications/audio/transcode/default.nix5
-rw-r--r--nixpkgs/pkgs/applications/audio/transcribe/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/audio/tuner/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/audio/uade/default.nix (renamed from nixpkgs/pkgs/applications/audio/uade123/default.nix)27
-rw-r--r--nixpkgs/pkgs/applications/audio/vcv-rack/default.nix67
-rw-r--r--nixpkgs/pkgs/applications/audio/vcv-rack/rack-minimize-vendoring.patch11
-rw-r--r--nixpkgs/pkgs/applications/audio/vgmplay-libvgm/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/vimpc/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/viper4linux-gui/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/vkeybd/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/vmpk/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/vocal/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/vocproc/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/whipper/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/audio/wolf-shaper/default.nix14
-rw-r--r--nixpkgs/pkgs/applications/audio/x42-plugins/default.nix8
-rw-r--r--nixpkgs/pkgs/applications/audio/xmp/default.nix20
-rw-r--r--nixpkgs/pkgs/applications/audio/xsynth-dssi/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/yasr/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/yesplaymusic/default.nix120
-rw-r--r--nixpkgs/pkgs/applications/audio/ympd/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/ymuse/default.nix72
-rw-r--r--nixpkgs/pkgs/applications/audio/yoshimi/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/youtube-music/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/audio/zam-plugins/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/zrythm/default.nix106
-rw-r--r--nixpkgs/pkgs/applications/audio/zynaddsubfx/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/audio/zynaddsubfx/mruby-zest/default.nix2
389 files changed, 21610 insertions, 15579 deletions
diff --git a/nixpkgs/pkgs/applications/audio/AMB-plugins/default.nix b/nixpkgs/pkgs/applications/audio/AMB-plugins/default.nix
index 8b03a97d1280..b388674fa449 100644
--- a/nixpkgs/pkgs/applications/audio/AMB-plugins/default.nix
+++ b/nixpkgs/pkgs/applications/audio/AMB-plugins/default.nix
@@ -15,6 +15,7 @@ stdenv.mkDerivation rec {
     sed -i 's@/usr/bin/install@install@g' Makefile
     sed -i 's@/bin/rm@rm@g' Makefile
     sed -i 's@/usr/lib/ladspa@$(out)/lib/ladspa@g' Makefile
+    sed -i 's@g++@$(CXX)@g' Makefile
   '';
 
   preInstall="mkdir -p $out/lib/ladspa";
diff --git a/nixpkgs/pkgs/applications/audio/a2jmidid/default.nix b/nixpkgs/pkgs/applications/audio/a2jmidid/default.nix
index eafbfec96648..08ef2d083088 100644
--- a/nixpkgs/pkgs/applications/audio/a2jmidid/default.nix
+++ b/nixpkgs/pkgs/applications/audio/a2jmidid/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchFromGitHub, fetchpatch, makeWrapper, pkg-config, alsa-lib, dbus, libjack2
+{ lib, stdenv, fetchFromGitHub, makeWrapper, pkg-config, alsa-lib, dbus, libjack2
 , python3Packages , meson, ninja }:
 
 stdenv.mkDerivation rec {
diff --git a/nixpkgs/pkgs/applications/audio/aacgain/default.nix b/nixpkgs/pkgs/applications/audio/aacgain/default.nix
index 517a53a5fecc..4d45de86f3a1 100644
--- a/nixpkgs/pkgs/applications/audio/aacgain/default.nix
+++ b/nixpkgs/pkgs/applications/audio/aacgain/default.nix
@@ -1,68 +1,45 @@
-{ lib, stdenv, fetchFromGitLab, fetchpatch }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, cmake
+, autoconf
+, automake
+, libtool
+, faad2
+, mp4v2
+}:
 
 stdenv.mkDerivation rec {
   pname = "aacgain";
-  version = "1.9.0";
+  version = "2.0.0";
 
-  src = fetchFromGitLab {
-    owner = "mulx";
-    repo = "aacgain";
-    rev = "7c29dccd878ade1301710959aeebe87a8f0828f5";
-    sha256 = "07hl432vsscqg01b6wr99qmsj4gbx0i02x4k565432y6zpfmaxm0";
+  src = fetchFromGitHub {
+    owner = "dgilman";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-9Y23Zh7q3oB4ha17Fpm1Hu2+wtQOA1llj6WDUAO2ARU=";
   };
 
-  hardeningDisable = [ "format" ];
-
-  # -Wnarrowing is enabled by default in recent GCC versions,
-  # causing compilation to fail.
-  NIX_CFLAGS_COMPILE = "-Wno-narrowing";
-
   postPatch = ''
-    (
-      cd mp4v2
-      patch -p0 < ${fetchpatch {
-        name = "fix_missing_ptr_deref.patch";
-        url = "https://aur.archlinux.org/cgit/aur.git/plain/fix_missing_ptr_deref.patch?h=aacgain-cvs&id=e1a19c920f57063e64bab75cb0d8624731f6e3d7";
-        sha256 = "1cq7r005nvmwdjb25z80grcam7jv6k57jnl2bh349mg3ajmslbq9";
-      }}
-    )
-  '';
-
-  configurePhase = ''
-    runHook preConfigure
-    cd mp4v2
-    ./configure
-
-    cd ../faad2
-    ./configure
-
-    cd ..
-    ./configure
-    runHook postConfigure
+    cp -R ${faad2.src}/* 3rdparty/faad2
+    cp -R ${mp4v2.src}/* 3rdparty/mp4v2
+    chmod -R +w 3rdparty
   '';
 
-  buildPhase = ''
-    runHook preBuild
-    cd mp4v2
-    make libmp4v2.la
-
-    cd ../faad2
-    make LDFLAGS=-static
+  nativeBuildInputs = [
+    cmake
+    autoconf
+    automake
+    libtool
+  ];
 
-    cd ..
-    make
-    runHook postBuild
-  '';
-
-  installPhase = ''
-    install -D aacgain/aacgain "$out/bin/aacgain"
-  '';
+  env.NIX_CFLAGS_COMPILE = "-Wno-error=narrowing";
 
   meta = with lib; {
     description = "ReplayGain for AAC files";
-    homepage = "https://aacgain.altosdesign.com";
-    license = licenses.gpl2;
-    platforms = platforms.linux;
+    homepage = "https://github.com/dgilman/aacgain";
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
     maintainers = [ maintainers.robbinch ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/aaxtomp3/default.nix b/nixpkgs/pkgs/applications/audio/aaxtomp3/default.nix
new file mode 100644
index 000000000000..59bd228d4751
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/aaxtomp3/default.nix
@@ -0,0 +1,78 @@
+{ bash
+, bc
+, coreutils
+, fetchFromGitHub
+, ffmpeg
+, findutils
+, gawk
+, gnugrep
+, gnused
+, jq
+, lame
+, lib
+, mediainfo
+, mp4v2
+, ncurses
+, resholve
+}:
+
+resholve.mkDerivation rec {
+  pname = "aaxtomp3";
+  version = "1.3";
+
+  src = fetchFromGitHub {
+    owner = "krumpetpirate";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-7a9ZVvobWH/gPxa3cFiPL+vlu8h1Dxtcq0trm3HzlQg=";
+  };
+
+  postPatch = ''
+    substituteInPlace AAXtoMP3 \
+      --replace 'AAXtoMP3' 'aaxtomp3'
+    substituteInPlace interactiveAAXtoMP3 \
+      --replace 'AAXtoMP3' 'aaxtomp3' \
+      --replace 'call="./aaxtomp3"' 'call="$AAXTOMP3"'
+  '';
+
+  installPhase = ''
+    install -Dm 755 AAXtoMP3 $out/bin/aaxtomp3
+    install -Dm 755 interactiveAAXtoMP3 $out/bin/interactiveaaxtomp3
+  '';
+
+  solutions.default = {
+    scripts = [
+      "bin/aaxtomp3"
+      "bin/interactiveaaxtomp3"
+    ];
+    interpreter = "${bash}/bin/bash";
+    inputs = [
+      bc
+      coreutils
+      ffmpeg
+      findutils
+      gawk
+      gnugrep
+      gnused
+      jq
+      lame
+      mediainfo
+      mp4v2
+      ncurses
+    ];
+    keep."$call" = true;
+    fix = {
+      "$AAXTOMP3" = [ "${placeholder "out"}/bin/aaxtomp3" ];
+      "$FIND" = [ "find" ];
+      "$GREP" = [ "grep" ];
+      "$SED" = [ "sed" ];
+    };
+  };
+
+  meta = with lib; {
+    description = "Convert Audible's .aax filetype to MP3, FLAC, M4A, or OPUS";
+    homepage = "https://krumpetpirate.github.io/AAXtoMP3";
+    license = licenses.wtfpl;
+    maintainers = with maintainers; [ urandom ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/adlplug/default.nix b/nixpkgs/pkgs/applications/audio/adlplug/default.nix
index a0f5b48a6323..a5d82b6e00dd 100644
--- a/nixpkgs/pkgs/applications/audio/adlplug/default.nix
+++ b/nixpkgs/pkgs/applications/audio/adlplug/default.nix
@@ -62,7 +62,7 @@ stdenv.mkDerivation rec {
     "-DADLplug_Jack=${if withJack then "ON" else "OFF"}"
   ];
 
-  NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isDarwin (toString [
+  env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isDarwin (toString [
     # "fp.h" file not found
     "-isystem ${CoreServices}/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers"
   ]);
diff --git a/nixpkgs/pkgs/applications/audio/aeolus/default.nix b/nixpkgs/pkgs/applications/audio/aeolus/default.nix
index d8ef7d2b4fa5..cca58da4f99e 100644
--- a/nixpkgs/pkgs/applications/audio/aeolus/default.nix
+++ b/nixpkgs/pkgs/applications/audio/aeolus/default.nix
@@ -1,14 +1,14 @@
 { lib, stdenv, fetchurl, libclthreads, zita-alsa-pcmi, alsa-lib, libjack2
-, libclxclient, libX11, libXft, readline
+, libclxclient, libX11, libXft, readline, aeolus-stops
 }:
 
 stdenv.mkDerivation rec {
   pname = "aeolus";
-  version = "0.9.9";
+  version = "0.10.4";
 
   src = fetchurl {
     url = "https://kokkinizita.linuxaudio.org/linuxaudio/downloads/${pname}-${version}.tar.bz2";
-    sha256 = "04y1j36y7vc93bv299vfiawbww4ym6q7avfx8vw6rmxr817zrch3";
+    sha256 = "sha256-J9xrd/N4LrvGgi89Yj4ob4ZPUAEchrXJJQ+YVJ29Qhk=";
   };
 
   buildInputs = [
@@ -16,17 +16,29 @@ stdenv.mkDerivation rec {
     libX11 libXft readline
   ];
 
-  patchPhase = ''sed "s@ldconfig.*@@" -i source/Makefile'';
+  postPatch = ''
+    sed -i source/Makefile -e /ldconfig/d
+    substituteInPlace source/main.cc --replace /etc/ "$out/etc/"
+  '';
 
   preBuild = "cd source";
 
   makeFlags = [ "DESTDIR=" "PREFIX=$(out)" ];
 
-  meta = {
+  postInstall = let cfg = ''
+    # Aeolus system wide default options
+    # Ignored if ~/.aeolusrc with local options exists
+    -u -S ${aeolus-stops}/${aeolus-stops.subdir}
+  ''; in ''
+    mkdir -p $out/etc
+    echo -n "${cfg}" > $out/etc/aeolus.conf
+  '';
+
+  meta = with lib; {
     description = "Synthetized (not sampled) pipe organ emulator";
     homepage = "http://kokkinizita.linuxaudio.org/linuxaudio/aeolus/index.html";
-    license = lib.licenses.lgpl3;
-    platforms = lib.platforms.linux;
-    maintainers = [ lib.maintainers.nico202 ];
+    license = licenses.lgpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ nico202 orivej ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/aeolus/stops.nix b/nixpkgs/pkgs/applications/audio/aeolus/stops.nix
new file mode 100644
index 000000000000..50a2013b8048
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/aeolus/stops.nix
@@ -0,0 +1,33 @@
+{ lib, stdenvNoCC, fetchurl }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "stops";
+  version = "0.4.0";
+
+  src = fetchurl {
+    url = "https://kokkinizita.linuxaudio.org/linuxaudio/downloads/${pname}-${version}.tar.bz2";
+    hash = "sha256-DnmguOAGyw9nv88ekJfbC04Qwbsw5tXEAaKeiCQR/LA=";
+  };
+
+  outputHashMode = "recursive";
+  outputHash = "sha256-gGHowq7g7MZmnhrpqG+3wNLwQCtpiBB88euIKeQIpJ0=";
+
+  subdir = "share/Aeolus/stops";
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/${subdir}
+    cp -r * $out/${subdir}
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "aeolus synthesizer instrument definitions";
+    homepage = "http://kokkinizita.linuxaudio.org/linuxaudio/aeolus/index.html";
+    license = licenses.lgpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ nico202 orivej ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/aether-lv2/default.nix b/nixpkgs/pkgs/applications/audio/aether-lv2/default.nix
index e912c7fa49a4..6710aaa87f4e 100644
--- a/nixpkgs/pkgs/applications/audio/aether-lv2/default.nix
+++ b/nixpkgs/pkgs/applications/audio/aether-lv2/default.nix
@@ -18,6 +18,12 @@ stdenv.mkDerivation rec {
     lv2 libX11 libGL libGLU mesa
   ];
 
+  env.NIX_CFLAGS_COMPILE = toString [
+    # Needed with GCC 12
+    "-Wno-error=array-bounds"
+    "-Wno-error=stringop-overflow"
+  ];
+
   installPhase = ''
     mkdir -p $out/lib/lv2
     cp -r aether.lv2 $out/lib/lv2
diff --git a/nixpkgs/pkgs/applications/audio/airwave/default.nix b/nixpkgs/pkgs/applications/audio/airwave/default.nix
index 6ed488d7d643..a57f43eea651 100644
--- a/nixpkgs/pkgs/applications/audio/airwave/default.nix
+++ b/nixpkgs/pkgs/applications/audio/airwave/default.nix
@@ -1,5 +1,16 @@
-{ lib, stdenv, multiStdenv, cmake, fetchFromGitHub, file, libX11, makeWrapper
-, qt5, requireFile, unzip, wine
+{ lib,
+  stdenv,
+  multiStdenv,
+  fetchFromGitHub,
+  requireFile,
+  unzip,
+  wine,
+  cmake,
+  makeWrapper,
+  wrapQtAppsHook,
+  file,
+  libX11,
+  qt5
 }:
 
 let
@@ -13,11 +24,11 @@ let
   };
 
   vst-sdk = stdenv.mkDerivation rec {
-    name = "vstsdk368_08_11_2017_build_121";
+    name = "vstsdk369_01_03_2018_build_132";
     src = requireFile {
       name = "${name}.zip";
       url = "http://www.steinberg.net/en/company/developers.html";
-      sha256 = "e0f235d8826d70f1ae0ae5929cd198acae1ecff74612fde5c60cbfb45c2f4a70";
+      sha256 = "0r29fv6yhm2m5yznn8m4my7fq01w1lpphax4sshagy6b1dgjlv3w";
     };
     nativeBuildInputs = [ unzip ];
     installPhase = "cp -r . $out";
@@ -42,9 +53,18 @@ multiStdenv.mkDerivation {
 
   src = airwave-src;
 
-  nativeBuildInputs = [ cmake makeWrapper ];
-
-  buildInputs = [ file libX11 qt5.qtbase wine-xembed ];
+  nativeBuildInputs = [
+    cmake
+    makeWrapper
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    file
+    libX11
+    qt5.qtbase
+    wine-xembed
+  ];
 
   postPatch = ''
     # Binaries not used directly should land in libexec/.
diff --git a/nixpkgs/pkgs/applications/audio/airwindows-lv2/default.nix b/nixpkgs/pkgs/applications/audio/airwindows-lv2/default.nix
index 90c92d8f421d..36d9ea7fb8b4 100644
--- a/nixpkgs/pkgs/applications/audio/airwindows-lv2/default.nix
+++ b/nixpkgs/pkgs/applications/audio/airwindows-lv2/default.nix
@@ -1,20 +1,18 @@
-{ lib, stdenv, fetchFromGitHub, cmake, pkg-config, lv2 }:
+{ lib, stdenv, fetchFromGitHub, meson, ninja, pkg-config, lv2 }:
 
 stdenv.mkDerivation rec {
   pname = "airwindows-lv2";
-  version = "5.0";
+  version = "18.0";
   src = fetchFromGitHub {
     owner = "hannesbraun";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-sLkcEEYez0Z3pkhMCC7raiwe/m9Tk/lFmOuybZvFqSk=";
+    sha256 = "sha256-06mfTvt0BXHUGZG2rnEbuOPIP+jD76mQZTo+m4b4lo4=";
   };
 
-  nativeBuildInputs = [ cmake pkg-config ];
+  nativeBuildInputs = [ meson ninja pkg-config ];
   buildInputs = [ lv2 ];
 
-  cmakeFlags = [ "-DCMAKE_INSTALL_PREFIX=${placeholder "out"}/lib/lv2" ];
-
   meta = with lib; {
     description = "Airwindows plugins (ported to LV2)";
     homepage = "https://github.com/hannesbraun/airwindows-lv2";
diff --git a/nixpkgs/pkgs/applications/audio/alsa-scarlett-gui/default.nix b/nixpkgs/pkgs/applications/audio/alsa-scarlett-gui/default.nix
new file mode 100644
index 000000000000..6433bdbe3d0f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/alsa-scarlett-gui/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, pkg-config
+, alsa-lib
+, gtk4
+, wrapGAppsHook4
+}:
+
+stdenv.mkDerivation rec {
+  pname = "alsa-scarlett-gui";
+  version = "unstable-2022-08-11";
+
+  src = fetchFromGitHub {
+    owner = "geoffreybennett";
+    repo = pname;
+    rev = "65c0f6aa432501355803a823be1d3f8aafe907a8";
+    sha256 = "sha256-wzBOPTs8PTHzu5RpKwKhx552E7QnDx2Zn4OFaes8Q2I=";
+  };
+
+  NIX_CFLAGS_COMPILE = [ "-Wno-error=deprecated-declarations" ];
+
+  makeFlags = [ "DESTDIR=\${out}" "PREFIX=''" ];
+  sourceRoot = "source/src";
+  nativeBuildInputs = [ pkg-config wrapGAppsHook4 ];
+  buildInputs = [ gtk4 alsa-lib ];
+
+  meta = with lib; {
+    description = "GUI for alsa controls presented by Focusrite Scarlett Gen 2/3 Mixer Driver";
+    homepage = "https://github.com/geoffreybennett/alsa-scarlett-gui";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ sebtm ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/amarok/default.nix b/nixpkgs/pkgs/applications/audio/amarok/default.nix
index 10d1bb9ca656..e48e27b5cc69 100644
--- a/nixpkgs/pkgs/applications/audio/amarok/default.nix
+++ b/nixpkgs/pkgs/applications/audio/amarok/default.nix
@@ -2,8 +2,8 @@
 , 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, gdk-pixbuf, libaio, liblastfm, libmtp, loudmouth, lzo, lz4, mysql57, pcre, snappy, taglib, taglib_extras
+, fftw, phonon, plasma-framework, threadweaver, breeze-icons
+, curl, ffmpeg, gdk-pixbuf, libaio, liblastfm, libmtp, loudmouth, lzo, lz4, mariadb-embedded, pcre, snappy, taglib, taglib_extras
 }:
 
 mkDerivation rec {
@@ -23,8 +23,8 @@ mkDerivation rec {
     qca-qt5 qjson qtquickcontrols2 qtscript qtwebengine
     karchive kcmutils kconfig kdnssd kguiaddons kinit kirigami2 knewstuff knotifyconfig ktexteditor kwindowsystem
     phonon plasma-framework threadweaver
-    curl fftw ffmpeg gdk-pixbuf libaio liblastfm libmtp loudmouth lz4 lzo mysql57.server mysql57.server.static
-    pcre snappy taglib taglib_extras
+    curl fftw ffmpeg gdk-pixbuf libaio liblastfm libmtp loudmouth lz4 lzo mariadb-embedded
+    pcre snappy taglib taglib_extras breeze-icons
   ];
 
   enableParallelBuilding = true;
diff --git a/nixpkgs/pkgs/applications/audio/amberol/default.nix b/nixpkgs/pkgs/applications/audio/amberol/default.nix
index 0c5523c0a359..f29ca37341b9 100644
--- a/nixpkgs/pkgs/applications/audio/amberol/default.nix
+++ b/nixpkgs/pkgs/applications/audio/amberol/default.nix
@@ -2,12 +2,14 @@
 , stdenv
 , fetchFromGitLab
 , rustPlatform
+, cargo
 , desktop-file-utils
 , appstream-glib
 , meson
 , ninja
 , pkg-config
 , reuse
+, rustc
 , m4
 , wrapGAppsHook4
 , glib
@@ -19,20 +21,20 @@
 
 stdenv.mkDerivation rec {
   pname = "amberol";
-  version = "0.9.0";
+  version = "0.10.3";
 
   src = fetchFromGitLab {
     domain = "gitlab.gnome.org";
     owner = "World";
     repo = pname;
     rev = version;
-    hash = "sha256-/kZYzUzycHKre6/dvZgeqXu6mrkblftV51Z7866fZVY=";
+    hash = "sha256-nAoUO0bGToNGD2W8qJmTegrETOJDdM04hI1jjiYkZXI=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     name = "${pname}-${version}";
-    hash = "sha256-1+RWL9MD6aX+zI2rtQUQCqemCephLKGEAf5xNCb+jo4=";
+    hash = "sha256-4ZoliqQ665KPDFl+1eBCE+1fZgr+FA7vesPstoRs0RU=";
   };
 
   postPatch = ''
@@ -48,11 +50,10 @@ stdenv.mkDerivation rec {
     reuse
     m4
     wrapGAppsHook4
-  ] ++ (with rustPlatform; [
-    cargoSetupHook
-    rust.cargo
-    rust.rustc
-  ]);
+    rustPlatform.cargoSetupHook
+    cargo
+    rustc
+  ];
 
   buildInputs = [
     glib
diff --git a/nixpkgs/pkgs/applications/audio/ams/default.nix b/nixpkgs/pkgs/applications/audio/ams/default.nix
index 7b209994103e..c51dced37724 100644
--- a/nixpkgs/pkgs/applications/audio/ams/default.nix
+++ b/nixpkgs/pkgs/applications/audio/ams/default.nix
@@ -1,6 +1,5 @@
 { lib, stdenv
 , fetchgit
-, automake
 , alsa-lib
 , ladspaH
 , libjack2
@@ -40,7 +39,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Realtime modular synthesizer for ALSA";
-    homepage = "http://alsamodular.sourceforge.net";
+    homepage = "https://alsamodular.sourceforge.net";
     license = licenses.gpl2;
     platforms = platforms.linux;
     maintainers = with maintainers; [ sjfloat ];
diff --git a/nixpkgs/pkgs/applications/audio/apple-music-electron/default.nix b/nixpkgs/pkgs/applications/audio/apple-music-electron/default.nix
deleted file mode 100644
index 850f644afc34..000000000000
--- a/nixpkgs/pkgs/applications/audio/apple-music-electron/default.nix
+++ /dev/null
@@ -1,32 +0,0 @@
-{ 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/nixpkgs/pkgs/applications/audio/ardour/6.nix b/nixpkgs/pkgs/applications/audio/ardour/6.nix
new file mode 100644
index 000000000000..140d20c2aad5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/ardour/6.nix
@@ -0,0 +1,191 @@
+{ lib, stdenv
+, fetchgit
+, alsa-lib
+, aubio
+, boost
+, cairomm
+, cppunit
+, curl
+, dbus
+, doxygen
+, ffmpeg
+, fftw
+, fftwSinglePrec
+, flac
+, glibc
+, glibmm
+, graphviz
+, gtkmm2
+, harvid
+, itstool
+, libarchive
+, libjack2
+, liblo
+, libogg
+, libpulseaudio
+, librdf_raptor
+, librdf_rasqal
+, libsamplerate
+, libsigcxx
+, libsndfile
+, libusb1
+, libuv
+, libwebsockets
+, libxml2
+, libxslt
+, lilv
+, lrdf
+, lv2
+, makeWrapper
+, pango
+, perl
+, pkg-config
+, python3
+, readline
+, rubberband
+, serd
+, sord
+, soundtouch
+, sratom
+, suil
+, taglib
+, vamp-plugin-sdk
+, wafHook
+, xjadeo
+, videoSupport ? true
+}:
+stdenv.mkDerivation rec {
+  pname = "ardour";
+  version = "6.9";
+
+  # We can't use `fetchFromGitea` here, as attempting to fetch release archives from git.ardour.org
+  # result in an empty archive. See https://tracker.ardour.org/view.php?id=7328 for more info.
+  src = fetchgit {
+    url = "git://git.ardour.org/ardour/ardour.git";
+    rev = version;
+    sha256 = "0vlcbd70y0an881zv87kc3akmaiz4w7whsy3yaiiqqjww35jg1mm";
+  };
+
+  patches = [
+    # AS=as in the environment causes build failure https://tracker.ardour.org/view.php?id=8096
+    ./as-flags.patch
+  ];
+
+  nativeBuildInputs = [
+    doxygen
+    graphviz # for dot
+    itstool
+    makeWrapper
+    perl
+    pkg-config
+    python3
+    wafHook
+  ];
+
+  buildInputs = [
+    alsa-lib
+    aubio
+    boost
+    cairomm
+    cppunit
+    curl
+    dbus
+    ffmpeg
+    fftw
+    fftwSinglePrec
+    flac
+    glibmm
+    gtkmm2
+    itstool
+    libarchive
+    libjack2
+    liblo
+    libogg
+    libpulseaudio
+    librdf_raptor
+    librdf_rasqal
+    libsamplerate
+    libsigcxx
+    libsndfile
+    libusb1
+    libuv
+    libwebsockets
+    libxml2
+    libxslt
+    lilv
+    lrdf
+    lv2
+    pango
+    perl
+    python3
+    readline
+    rubberband
+    serd
+    sord
+    soundtouch
+    sratom
+    suil
+    taglib
+    vamp-plugin-sdk
+  ] ++ lib.optionals videoSupport [ harvid xjadeo ];
+
+  wafConfigureFlags = [
+    "--cxx11"
+    "--docs"
+    "--freedesktop"
+    "--no-phone-home"
+    "--optimize"
+    "--ptformat"
+    "--run-tests"
+    "--test"
+  ];
+  # 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.
+  postPatch = ''
+    printf '#include "libs/ardour/ardour/revision.h"\nnamespace ARDOUR { const char* revision = "${version}"; const char* date = ""; }\n' > libs/ardour/revision.cc
+    sed 's|/usr/include/libintl.h|${glibc.dev}/include/libintl.h|' -i wscript
+    patchShebangs ./tools/
+    substituteInPlace libs/ardour/video_tools_paths.cc \
+      --replace 'ffmpeg_exe = X_("");' 'ffmpeg_exe = X_("${ffmpeg}/bin/ffmpeg");' \
+      --replace 'ffprobe_exe = X_("");' 'ffprobe_exe = X_("${ffmpeg}/bin/ffprobe");'
+  '';
+
+  postInstall = ''
+    # wscript does not install these for some reason
+    install -vDm 644 "build/gtk2_ardour/ardour.xml" \
+      -t "$out/share/mime/packages"
+    install -vDm 644 "build/gtk2_ardour/ardour6.desktop" \
+      -t "$out/share/applications"
+    for size in 16 22 32 48 256 512; do
+      install -vDm 644 "gtk2_ardour/resources/Ardour-icon_''${size}px.png" \
+        "$out/share/icons/hicolor/''${size}x''${size}/apps/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 lib; {
+    description = "Multi-track hard disk recording software";
+    longDescription = ''
+      Ardour is a digital audio workstation (DAW), You can use it to
+      record, edit and mix multi-track audio and midi. Produce your
+      own CDs. Mix video soundtracks. Experiment with new ideas about
+      music and sound.
+
+      Please consider supporting the ardour project financially:
+      https://community.ardour.org/donate
+    '';
+    homepage = "https://ardour.org/";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ goibhniu magnetophon mitchmindtree ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/ardour/default.nix b/nixpkgs/pkgs/applications/audio/ardour/default.nix
index d5afcac86cd4..376e8e418cce 100644
--- a/nixpkgs/pkgs/applications/audio/ardour/default.nix
+++ b/nixpkgs/pkgs/applications/audio/ardour/default.nix
@@ -1,5 +1,7 @@
-{ lib, stdenv
+{ lib
+, stdenv
 , fetchgit
+, fetchzip
 , alsa-lib
 , aubio
 , boost
@@ -56,13 +58,21 @@
 }:
 stdenv.mkDerivation rec {
   pname = "ardour";
-  version = "6.9";
+  version = "7.3";
 
-  # don't fetch releases from the GitHub mirror, they are broken
+  # We can't use `fetchFromGitea` here, as attempting to fetch release archives from git.ardour.org
+  # result in an empty archive. See https://tracker.ardour.org/view.php?id=7328 for more info.
   src = fetchgit {
     url = "git://git.ardour.org/ardour/ardour.git";
     rev = version;
-    sha256 = "0vlcbd70y0an881zv87kc3akmaiz4w7whsy3yaiiqqjww35jg1mm";
+    hash = "sha256-fDZGmKQ6qgENkq8NY/J67Jym+IXoOYs8DT4xyPXLcC4=";
+  };
+
+  bundledContent = fetchzip {
+    url = "https://web.archive.org/web/20221026200824/http://stuff.ardour.org/loops/ArdourBundledMedia.zip";
+    hash = "sha256-IbPQWFeyMuvCoghFl1ZwZNNcSvLNsH84rGArXnw+t7A=";
+    # archive does not contain a single folder at the root
+    stripRoot = false;
   };
 
   patches = [
@@ -70,6 +80,17 @@ stdenv.mkDerivation rec {
     ./as-flags.patch
   ];
 
+  # Ardour's wscript requires git revision and date to be available.
+  # Since they are not, let's generate the file manually.
+  postPatch = ''
+    printf '#include "libs/ardour/ardour/revision.h"\nnamespace ARDOUR { const char* revision = "${version}"; const char* date = ""; }\n' > libs/ardour/revision.cc
+    sed 's|/usr/include/libintl.h|${glibc.dev}/include/libintl.h|' -i wscript
+    patchShebangs ./tools/
+    substituteInPlace libs/ardour/video_tools_paths.cc \
+      --replace 'ffmpeg_exe = X_("");' 'ffmpeg_exe = X_("${ffmpeg}/bin/ffmpeg");' \
+      --replace 'ffprobe_exe = X_("");' 'ffprobe_exe = X_("${ffmpeg}/bin/ffprobe");'
+  '';
+
   nativeBuildInputs = [
     doxygen
     graphviz # for dot
@@ -141,31 +162,23 @@ stdenv.mkDerivation rec {
   # 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.
-  postPatch = ''
-    printf '#include "libs/ardour/ardour/revision.h"\nnamespace ARDOUR { const char* revision = "${version}"; const char* date = ""; }\n' > libs/ardour/revision.cc
-    sed 's|/usr/include/libintl.h|${glibc.dev}/include/libintl.h|' -i wscript
-    patchShebangs ./tools/
-    substituteInPlace libs/ardour/video_tools_paths.cc \
-      --replace 'ffmpeg_exe = X_("");' 'ffmpeg_exe = X_("${ffmpeg}/bin/ffmpeg");' \
-      --replace 'ffprobe_exe = X_("");' 'ffprobe_exe = X_("${ffmpeg}/bin/ffprobe");'
-  '';
-
   postInstall = ''
     # wscript does not install these for some reason
     install -vDm 644 "build/gtk2_ardour/ardour.xml" \
       -t "$out/share/mime/packages"
-    install -vDm 644 "build/gtk2_ardour/ardour6.desktop" \
+    install -vDm 644 "build/gtk2_ardour/ardour${lib.versions.major version}.desktop" \
       -t "$out/share/applications"
     for size in 16 22 32 48 256 512; do
       install -vDm 644 "gtk2_ardour/resources/Ardour-icon_''${size}px.png" \
-        "$out/share/icons/hicolor/''${size}x''${size}/apps/ardour6.png"
+        "$out/share/icons/hicolor/''${size}x''${size}/apps/ardour${lib.versions.major version}.png"
     done
     install -vDm 644 "ardour.1"* -t "$out/share/man/man1"
+
+    # install additional bundled beats, chords and progressions
+    cp -rp "${bundledContent}"/* "$out/share/ardour${lib.versions.major version}/media"
   '' + lib.optionalString videoSupport ''
     # `harvid` and `xjadeo` must be accessible in `PATH` for video to work.
-    wrapProgram "$out/bin/ardour6" \
+    wrapProgram "$out/bin/ardour${lib.versions.major version}" \
       --prefix PATH : "${lib.makeBinPath [ harvid xjadeo ]}"
   '';
 
diff --git a/nixpkgs/pkgs/applications/audio/ario/default.nix b/nixpkgs/pkgs/applications/audio/ario/default.nix
index 68b74821ec3f..5b956e8f5961 100644
--- a/nixpkgs/pkgs/applications/audio/ario/default.nix
+++ b/nixpkgs/pkgs/applications/audio/ario/default.nix
@@ -1,6 +1,7 @@
 { lib
 , stdenv
 , fetchurl
+, autoreconfHook
 , pkg-config
 , intltool
 , avahi
@@ -24,7 +25,14 @@ stdenv.mkDerivation rec {
     sha256 = "16nhfb3h5pc7flagfdz7xy0iq6kvgy6h4bfpi523i57rxvlfshhl";
   };
 
-  nativeBuildInputs = [ pkg-config gettext intltool wrapGAppsHook ];
+  nativeBuildInputs = [
+    autoreconfHook
+    pkg-config
+    gettext
+    intltool
+    wrapGAppsHook
+  ];
+
   buildInputs = [
     avahi
     curl
@@ -36,9 +44,15 @@ stdenv.mkDerivation rec {
     taglib
   ];
 
+  postInstall = lib.optionalString stdenv.isDarwin ''
+    for file in $out/lib/ario/plugins/*.dylib; do
+      ln -s $file $out/lib/ario/plugins/$(basename $file .dylib).so
+    done
+  '';
+
   meta = with lib; {
     description = "GTK client for MPD (Music player daemon)";
-    homepage = "http://ario-player.sourceforge.net/";
+    homepage = "https://ario-player.sourceforge.net/";
     license = licenses.gpl2Plus;
     maintainers = [ maintainers.garrison ];
     platforms = platforms.all;
diff --git a/nixpkgs/pkgs/applications/audio/artyFX/default.nix b/nixpkgs/pkgs/applications/audio/artyFX/default.nix
index 2bf6b2a8046f..f68c6fa5c7dc 100644
--- a/nixpkgs/pkgs/applications/audio/artyFX/default.nix
+++ b/nixpkgs/pkgs/applications/audio/artyFX/default.nix
@@ -2,14 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "artyFX";
-  # Fix build with lv2 1.18: https://github.com/openAVproductions/openAV-ArtyFX/pull/41/commits/492587461b50d140455aa3c98d915eb8673bebf0
-  version = "unstable-2020-04-28";
+  version = "1.3.1";
 
   src = fetchFromGitHub {
     owner = "openAVproductions";
     repo = "openAV-ArtyFX";
-    rev = "8c542627d936a01b1d97825e7f26a8e95633f7aa";
-    sha256 = "0wwg8ivnpyy0235bapjy4g0ij85zq355jwi6c1nkrac79p4z9ail";
+    rev = "release-${version}";
+    hash = "sha256-GD9nwXdXSJX5OvAMxEAnngkvRW+E1jrNfWXK122bsTM=";
   };
 
   nativeBuildInputs = [ cmake pkg-config ];
diff --git a/nixpkgs/pkgs/applications/audio/ashuffle/default.nix b/nixpkgs/pkgs/applications/audio/ashuffle/default.nix
index 90a2abe8adfb..0184b042888b 100644
--- a/nixpkgs/pkgs/applications/audio/ashuffle/default.nix
+++ b/nixpkgs/pkgs/applications/audio/ashuffle/default.nix
@@ -6,23 +6,26 @@
 , meson
 , ninja
 , libmpdclient
+, yaml-cpp
 }:
 
 stdenv.mkDerivation rec {
   pname = "ashuffle";
-  version = "3.12.5";
+  version = "3.13.6";
 
   src = fetchFromGitHub {
     owner = "joshkunz";
     repo = "ashuffle";
     rev = "v${version}";
-    sha256 = "sha256-dPgv6EzRxRdHkGvys601Bkg9Srd8oEjoE9jbAin74Vk=";
+    sha256 = "sha256-8XjLs4MI5MXvA6veCoTAj8tlYDe7YTggutO3F9eNyMM=";
     fetchSubmodules = true;
   };
 
   dontUseCmakeConfigure = true;
   nativeBuildInputs = [ cmake pkg-config meson ninja ];
-  buildInputs = [ libmpdclient ];
+  buildInputs = [ libmpdclient yaml-cpp ];
+
+  mesonFlags = [ "-Dunsupported_use_system_yamlcpp=true" ];
 
   meta = with lib; {
     homepage = "https://github.com/joshkunz/ashuffle";
diff --git a/nixpkgs/pkgs/applications/audio/asunder/default.nix b/nixpkgs/pkgs/applications/audio/asunder/default.nix
index c3cba87e300c..d6efada90763 100644
--- a/nixpkgs/pkgs/applications/audio/asunder/default.nix
+++ b/nixpkgs/pkgs/applications/audio/asunder/default.nix
@@ -9,8 +9,6 @@
 #, aacSupport ? false, TODO: neroAacEnc
 }:
 
-with lib;
-
 stdenv.mkDerivation rec {
   version = "2.9.7";
   pname = "asunder";
@@ -23,20 +21,20 @@ stdenv.mkDerivation rec {
   buildInputs = [ gtk2 libcddb ];
 
   runtimeDeps =
-    optional mp3Support lame ++
-    optional oggSupport vorbis-tools ++
-    optional flacSupport flac ++
-    optional opusSupport opusTools ++
-    optional wavpackSupport wavpack ++
-    optional monkeysAudioSupport monkeysAudio ++
+    lib.optional mp3Support lame ++
+    lib.optional oggSupport vorbis-tools ++
+    lib.optional flacSupport flac ++
+    lib.optional opusSupport opusTools ++
+    lib.optional wavpackSupport wavpack ++
+    lib.optional monkeysAudioSupport monkeysAudio ++
     [ cdparanoia ];
 
   postInstall = ''
     wrapProgram "$out/bin/asunder" \
-      --prefix PATH : "${makeBinPath runtimeDeps}"
+      --prefix PATH : "${lib.makeBinPath runtimeDeps}"
   '';
 
-  meta = {
+  meta = with lib; {
     description = "A graphical Audio CD ripper and encoder for Linux";
     homepage = "http://littlesvr.ca/asunder/index.php";
     license = licenses.gpl2;
diff --git a/nixpkgs/pkgs/applications/audio/audacious/default.nix b/nixpkgs/pkgs/applications/audio/audacious/default.nix
index eb404041d973..15eff9f8e8b9 100644
--- a/nixpkgs/pkgs/applications/audio/audacious/default.nix
+++ b/nixpkgs/pkgs/applications/audio/audacious/default.nix
@@ -12,11 +12,11 @@
 
 stdenv.mkDerivation rec {
   pname = "audacious";
-  version = "4.2";
+  version = "4.3.1";
 
   src = fetchurl {
     url = "http://distfiles.audacious-media-player.org/audacious-${version}.tar.bz2";
-    sha256 = "sha256-/rME5HCkgf4rPEyhycs7I+wmJUDBLQ0ebCKl62JeBLM=";
+    sha256 = "sha256-heniaEFQW1HjQu5yotBfGb74lPVnoCnrs/Pgwa20IEI=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/audio/audacious/plugins.nix b/nixpkgs/pkgs/applications/audio/audacious/plugins.nix
index 902140465334..6f5d171e2ef1 100644
--- a/nixpkgs/pkgs/applications/audio/audacious/plugins.nix
+++ b/nixpkgs/pkgs/applications/audio/audacious/plugins.nix
@@ -35,6 +35,8 @@
 , neon
 , ninja
 , pkg-config
+, opusfile
+, pipewire
 , qtbase
 , qtmultimedia
 , qtx11extras
@@ -44,11 +46,11 @@
 
 stdenv.mkDerivation rec {
   pname = "audacious-plugins";
-  version = "4.2";
+  version = "4.3.1";
 
   src = fetchurl {
     url = "http://distfiles.audacious-media-player.org/audacious-plugins-${version}.tar.bz2";
-    sha256 = "sha256-b6D2nDoQQeuHfDcQlROrSioKVqd9nowToVgc8UOaQX8=";
+    sha256 = "sha256-Leom469YOi1oTfJAsnsrKTK81lPfTbUAqF9P5dX9yKY=";
   };
 
   patches = [ ./0001-Set-plugindir-to-PREFIX-lib-audacious.patch ];
@@ -91,6 +93,8 @@ stdenv.mkDerivation rec {
     lirc
     mpg123
     neon
+    opusfile
+    pipewire
     qtbase
     qtmultimedia
     qtx11extras
diff --git a/nixpkgs/pkgs/applications/audio/audacity/default.nix b/nixpkgs/pkgs/applications/audio/audacity/default.nix
index 953e9887f5a6..1eb5171ede22 100644
--- a/nixpkgs/pkgs/applications/audio/audacity/default.nix
+++ b/nixpkgs/pkgs/applications/audio/audacity/default.nix
@@ -4,6 +4,7 @@
 , fetchpatch
 , cmake
 , makeWrapper
+, wrapGAppsHook
 , pkg-config
 , python3
 , gettext
@@ -13,6 +14,7 @@
 , libjack2
 , lv2
 , lilv
+, mpg123
 , serd
 , sord
 , sqlite
@@ -45,59 +47,38 @@
 , libsepol
 , libxkbcommon
 , util-linux
-, wxGTK
+, wavpack
+, wxGTK32
+, gtk3
 , libpng
 , libjpeg
-, AppKit ? null
-, AudioToolbox ? null
-, AudioUnit ? null
-, Carbon ? null
-, Cocoa ? null
-, CoreAudio ? null
-, CoreAudioKit ? null
-, CoreServices ? null
-, wxmac
+, AppKit
+, CoreAudioKit
 }:
 
 # 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
+# 1. detach sbsms
 
-let
-  inherit (lib) optionals;
+stdenv.mkDerivation rec {
   pname = "audacity";
-  version = "3.1.3";
-
-  wxWidgets_src = fetchFromGitHub {
-    owner = pname;
-    repo = "wxWidgets";
-    rev = "v${version}-${pname}";
-    sha256 = "sha256-KrmYYv23DHBYKIuxMYBioCQ2e4KWdgmuREnimtm0XNU=";
-    fetchSubmodules = true;
-  };
-
-  wxGTK' = wxGTK.overrideAttrs (oldAttrs: rec {
-    src = wxWidgets_src;
-  });
-
-  wxmac' = wxmac.overrideAttrs (oldAttrs: rec {
-    src = wxWidgets_src;
-  });
-in stdenv.mkDerivation rec {
-  inherit pname version;
+  version = "3.3.2";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = "Audacity-${version}";
-    sha256 = "sha256-sdI4paxIHDZgoWTCekjrkFR4JFpQC6OatcnJdVXCCZk=";
+    hash = "sha256-/DjTmanPzkShNoMFNbnQzzwEzk/a2uUYvVW9dsvl5uY=";
   };
 
   postPatch = ''
     mkdir src/private
+    substituteInPlace scripts/build/macOS/fix_bundle.py \
+      --replace "path.startswith('/usr/lib/')" "path.startswith('${builtins.storeDir}')"
   '' + lib.optionalString stdenv.isLinux ''
     substituteInPlace libraries/lib-files/FileNames.cpp \
       --replace /usr/include/linux/magic.h ${linuxHeaders}/include/linux/magic.h
+  '' + lib.optionalString (stdenv.isDarwin && lib.versionOlder stdenv.targetPlatform.darwinMinVersion "11.0") ''
+    sed -z -i "s/NSAppearanceName.*systemAppearance//" src/AudacityApp.mm
   '';
 
   nativeBuildInputs = [
@@ -105,9 +86,10 @@ in stdenv.mkDerivation rec {
     gettext
     pkg-config
     python3
-  ] ++ optionals stdenv.isLinux [
-    linuxHeaders
     makeWrapper
+    wrapGAppsHook
+  ] ++ lib.optionals stdenv.isLinux [
+    linuxHeaders
   ];
 
   buildInputs = [
@@ -115,6 +97,7 @@ in stdenv.mkDerivation rec {
     ffmpeg_4
     file
     flac
+    gtk3
     lame
     libid3tag
     libjack2
@@ -125,6 +108,7 @@ in stdenv.mkDerivation rec {
     libvorbis
     lilv
     lv2
+    mpg123
     pcre
     portmidi
     serd
@@ -136,7 +120,9 @@ in stdenv.mkDerivation rec {
     suil
     twolame
     portaudio
-  ] ++ optionals stdenv.isLinux [
+    wavpack
+    wxGTK32
+  ] ++ lib.optionals stdenv.isLinux [
     alsa-lib # for portaudio
     at-spi2-core
     dbus
@@ -149,40 +135,51 @@ in stdenv.mkDerivation rec {
     libsepol
     libuuid
     util-linux
-    wxGTK'
-    wxGTK'.gtk
-  ] ++ optionals stdenv.isDarwin [
-    wxmac'
+  ] ++ lib.optionals stdenv.isDarwin [
     AppKit
-    Cocoa
-    CoreAudioKit
-    AudioUnit AudioToolbox CoreAudio CoreServices Carbon # for portaudio
+    CoreAudioKit # for portaudio
     libpng
     libjpeg
   ];
 
   cmakeFlags = [
+    "-DAUDACITY_BUILD_LEVEL=2"
     "-DAUDACITY_REV_LONG=nixpkgs"
     "-DAUDACITY_REV_TIME=nixpkgs"
     "-DDISABLE_DYNAMIC_LOADING_FFMPEG=ON"
     "-Daudacity_conan_enabled=Off"
     "-Daudacity_use_ffmpeg=loaded"
+    "-Daudacity_has_vst3=Off"
+    "-Daudacity_has_crashreports=Off"
 
     # RPATH of binary /nix/store/.../bin/... contains a forbidden reference to /build/
     "-DCMAKE_SKIP_BUILD_RPATH=ON"
+
+    # Fix duplicate store paths
+    "-DCMAKE_INSTALL_LIBDIR=lib"
   ];
 
+  # [ 57%] Generating LightThemeAsCeeCode.h...
+  # ../../utils/image-compiler: error while loading shared libraries:
+  # lib-theme.so: cannot open shared object file: No such file or directory
+  preBuild = ''
+    export LD_LIBRARY_PATH=$PWD/Release/lib/audacity
+  '';
+
   doCheck = false; # Test fails
 
   # Replace audacity's wrapper, to:
   # - put it in the right place, it shouldn't be in "$out/audacity"
   # - Add the ffmpeg dynamic dependency
   postInstall = lib.optionalString stdenv.isLinux ''
-    rm "$out/audacity"
     wrapProgram "$out/bin/audacity" \
       --prefix LD_LIBRARY_PATH : "$out/lib/audacity":${lib.makeLibraryPath [ ffmpeg_4 ]} \
       --suffix AUDACITY_MODULES_PATH : "$out/lib/audacity/modules" \
       --suffix AUDACITY_PATH : "$out/share/audacity"
+  '' + lib.optionalString stdenv.isDarwin ''
+    mkdir -p $out/{Applications,bin}
+    mv $out/Audacity.app $out/Applications/
+    makeWrapper $out/Applications/Audacity.app/Contents/MacOS/Audacity $out/bin/audacity
   '';
 
   meta = with lib; {
@@ -198,11 +195,7 @@ in stdenv.mkDerivation rec {
       # Documentation.
       cc-by-30
     ];
-    maintainers = with maintainers; [ lheckemann veprbl ];
+    maintainers = with maintainers; [ lheckemann veprbl wegank ];
     platforms = platforms.unix;
-    # darwin-aarch due to qtbase broken for it.
-    # darwin-x86_64 due to
-    # https://logs.nix.ci/?attempt_id=5cbc4581-09b4-4148-82fe-0326411a56b3&key=nixos%2Fnixpkgs.152273.
-    broken = stdenv.isDarwin;
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/audio-recorder/default.nix b/nixpkgs/pkgs/applications/audio/audio-recorder/default.nix
index bb89cb45672b..aaf6777533ff 100644
--- a/nixpkgs/pkgs/applications/audio/audio-recorder/default.nix
+++ b/nixpkgs/pkgs/applications/audio/audio-recorder/default.nix
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
   };
 
   # https://bugs.launchpad.net/audio-recorder/+bug/1784622
-  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
+  env.NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
 
   nativeBuildInputs = [ pkg-config intltool wrapGAppsHook ];
 
diff --git a/nixpkgs/pkgs/applications/audio/aumix/default.nix b/nixpkgs/pkgs/applications/audio/aumix/default.nix
index 2603e88fcbdb..6127cb7e6929 100644
--- a/nixpkgs/pkgs/applications/audio/aumix/default.nix
+++ b/nixpkgs/pkgs/applications/audio/aumix/default.nix
@@ -28,8 +28,12 @@ stdenv.mkDerivation rec {
     })
   ];
 
+  nativeBuildInputs = lib.optionals gtkGUI [ pkg-config ];
+
   buildInputs = [ gettext ncurses ]
-    ++ lib.optionals gtkGUI [ pkg-config gtk2 ];
+    ++ lib.optionals gtkGUI [ gtk2 ];
+
+  configureFlags = lib.optionals (!gtkGUI) ["--without-gtk"];
 
   meta = with lib; {
     description = "Audio mixer for X and the console";
diff --git a/nixpkgs/pkgs/applications/audio/bambootracker/default.nix b/nixpkgs/pkgs/applications/audio/bambootracker/default.nix
index 7408f57a1a98..0cb33062bd0e 100644
--- a/nixpkgs/pkgs/applications/audio/bambootracker/default.nix
+++ b/nixpkgs/pkgs/applications/audio/bambootracker/default.nix
@@ -1,39 +1,67 @@
-{ mkDerivation
-, stdenv
+{ stdenv
 , lib
 , fetchFromGitHub
-, qmake
 , pkg-config
-, qttools
+, qmake
+, qt5compat ? null
 , qtbase
+, qttools
 , rtaudio
 , rtmidi
+, wrapQtAppsHook
 }:
 
-mkDerivation rec {
+assert lib.versionAtLeast qtbase.version "6.0" -> qt5compat != null;
+
+stdenv.mkDerivation rec {
   pname = "bambootracker";
-  version = "0.5.1";
+  version = "0.6.1";
 
   src = fetchFromGitHub {
     owner = "BambooTracker";
     repo = "BambooTracker";
     rev = "v${version}";
     fetchSubmodules = true;
-    sha256 = "sha256-AEELUJYiapF/sBWRXXuBXUHwnKp0szdIOCNVMYufv94=";
+    hash = "sha256-Ymi1tjJCgStF0Rtseelq/YuTtBs2PrbF898TlbjyYUw=";
   };
 
-  nativeBuildInputs = [ qmake qttools pkg-config ];
+  postPatch = lib.optionalString (lib.versionAtLeast qtbase.version "6.0") ''
+    # Work around lrelease finding in qmake being broken by using pre-Qt5.12 code path
+    # https://github.com/NixOS/nixpkgs/issues/214765
+    substituteInPlace BambooTracker/lang/lang.pri \
+      --replace 'equals(QT_MAJOR_VERSION, 5):lessThan(QT_MINOR_VERSION, 12)' 'if(true)'
+  '';
+
+  nativeBuildInputs = [
+    pkg-config
+    qmake
+    qttools
+    wrapQtAppsHook
+  ];
 
-  buildInputs = [ qtbase rtaudio rtmidi ];
+  buildInputs = [
+    qtbase
+    rtaudio
+    rtmidi
+  ] ++ lib.optionals (lib.versionAtLeast qtbase.version "6.0") [
+    qt5compat
+  ];
 
-  qmakeFlags = [ "CONFIG+=system_rtaudio" "CONFIG+=system_rtmidi" ];
+  qmakeFlags = [
+    "CONFIG+=system_rtaudio"
+    "CONFIG+=system_rtmidi"
+  ];
 
   postConfigure = "make qmake_all";
 
+  # Wrapping the inside of the app bundles, avoiding double-wrapping
+  dontWrapQtApps = stdenv.hostPlatform.isDarwin;
+
   postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
     mkdir -p $out/Applications
     mv $out/{bin,Applications}/BambooTracker.app
     ln -s $out/{Applications/BambooTracker.app/Contents/MacOS,bin}/BambooTracker
+    wrapQtApp $out/Applications/BambooTracker.app/Contents/MacOS/BambooTracker
   '';
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/applications/audio/bchoppr/default.nix b/nixpkgs/pkgs/applications/audio/bchoppr/default.nix
index 623aa1584521..e6aaeb129158 100644
--- a/nixpkgs/pkgs/applications/audio/bchoppr/default.nix
+++ b/nixpkgs/pkgs/applications/audio/bchoppr/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "bchoppr";
-  version = "1.10.10";
+  version = "1.12.2";
 
   src = fetchFromGitHub {
     owner = "sjaehn";
     repo = pname;
     rev = version;
-    sha256 = "sha256-LNPG/ETRmgPv8LsYVHol4p5oRCvg+dSYVEe61i8Dvz8=";
+    sha256 = "sha256-P6sbxhgnlek1IJ4i9yTe/3g/2C8oLPKXI3zbLdswvl8=";
   };
 
   nativeBuildInputs = [ pkg-config ];
diff --git a/nixpkgs/pkgs/applications/audio/bespokesynth/default.nix b/nixpkgs/pkgs/applications/audio/bespokesynth/default.nix
index 6c48c756ab24..ad19192ce70c 100644
--- a/nixpkgs/pkgs/applications/audio/bespokesynth/default.nix
+++ b/nixpkgs/pkgs/applications/audio/bespokesynth/default.nix
@@ -30,10 +30,12 @@
 , pcre
 , mount
 , gnome
+, Accelerate
 , Cocoa
 , WebKit
 , CoreServices
 , CoreAudioKit
+, IOBluetooth
   # It is not allowed to distribute binaries with the VST2 SDK plugin without a license
   # (the author of Bespoke has such a licence but not Nix). VST3 should work out of the box.
   # Read more in https://github.com/NixOS/nixpkgs/issues/145607
@@ -66,6 +68,10 @@ stdenv.mkDerivation rec {
     fetchSubmodules = true;
   };
 
+  postPatch = ''
+    sed '1i#include <memory>' -i Source/TitleBar.h # gcc12
+  '';
+
   cmakeBuildType = "Release";
 
   cmakeFlags = lib.optionals enableVST2 [ "-DBESPOKE_VST2_SDK_LOCATION=${vst-sdk}/VST2_SDK" ];
@@ -98,13 +104,15 @@ stdenv.mkDerivation rec {
     pcre
     mount
   ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
+    Accelerate
     Cocoa
     WebKit
     CoreServices
     CoreAudioKit
+    IOBluetooth
   ];
 
-  NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isDarwin (toString [
+  env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isDarwin (toString [
     # Fails to find fp.h on its own
     "-isystem ${CoreServices}/Library/Frameworks/CoreServices.framework/Versions/Current/Frameworks/CarbonCore.framework/Versions/Current/Headers/"
   ]);
diff --git a/nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio1.nix b/nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio1.nix
index a66a5e6c9dc4..d803b09c198b 100644
--- a/nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio1.nix
+++ b/nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio1.nix
@@ -27,10 +27,6 @@ stdenv.mkDerivation rec {
     libxkbfile pixman xcbutil xcbutilwm zlib
   ];
 
-  binPath = lib.makeBinPath [
-    xdg-utils zenity ffmpeg
-  ];
-
   installPhase = ''
     mkdir -p $out
     cp -r opt/bitwig-studio $out/libexec
@@ -77,7 +73,8 @@ stdenv.mkDerivation rec {
       -not -path '*/resources/*' | \
     while IFS= read -r f ; do
       wrapProgram $f \
-        --prefix PATH : "${binPath}" \
+        --suffix PATH : "${lib.makeBinPath [ ffmpeg zenity ]}" \
+        --prefix PATH : "${lib.makeBinPath [ xdg-utils ]}" \
         "''${gappsWrapperArgs[@]}" \
         --set LD_PRELOAD "${libxkbcommon.out}/lib/libxkbcommon.so" || true
     done
diff --git a/nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio3.nix b/nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio3.nix
index 6b272a408ab0..5eb94f8445e0 100644
--- a/nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio3.nix
+++ b/nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio3.nix
@@ -27,10 +27,6 @@ stdenv.mkDerivation rec {
     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 = ''
@@ -60,8 +56,9 @@ stdenv.mkDerivation rec {
       patchelf --set-interpreter "${stdenv.cc.bintools.dynamicLinker}" $f
       wrapProgram $f \
         "''${gappsWrapperArgs[@]}" \
-        --prefix PATH : "${binPath}" \
-        --suffix LD_LIBRARY_PATH : "${ldLibraryPath}"
+        --prefix LD_LIBRARY_PATH : "${ldLibraryPath}" \
+        --prefix PATH : "${lib.makeBinPath [ ffmpeg ]}" \
+        --suffix PATH : "${lib.makeBinPath [ xdg-utils ]}"
     done
 
   '';
diff --git a/nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio4.nix b/nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio4.nix
index 2ad0b6bf6aff..9d4da6407461 100644
--- a/nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio4.nix
+++ b/nixpkgs/pkgs/applications/audio/bitwig-studio/bitwig-studio4.nix
@@ -1,16 +1,34 @@
-{ stdenv, fetchurl, alsa-lib, cairo, dpkg, freetype
-, gdk-pixbuf, glib, gtk3, lib, xorg
-, libglvnd, libjack2, ffmpeg
-, libxkbcommon, xdg-utils, zlib, pulseaudio
-, wrapGAppsHook, makeWrapper }:
+{ stdenv
+, fetchurl
+, alsa-lib
+, cairo
+, dpkg
+, ffmpeg
+, freetype
+, gdk-pixbuf
+, glib
+, gtk3
+, lib
+, libglvnd
+, libjack2
+, libjpeg
+, libxkbcommon
+, makeWrapper
+, pipewire
+, pulseaudio
+, wrapGAppsHook
+, xdg-utils
+, xorg
+, zlib
+}:
 
 stdenv.mkDerivation rec {
   pname = "bitwig-studio";
-  version = "4.3.4";
+  version = "4.4.10";
 
   src = fetchurl {
     url = "https://downloads.bitwig.com/stable/${version}/${pname}-${version}.deb";
-    sha256 = "sha256-2CCxpQPZB5F5jwJCux1OqGuxCuFZus5vlCrmStmI0F8=";
+    sha256 = "sha256-gtQ1mhXk0AqGidZk5TCzSR58pD1JJoELMBmELtqyb4U=";
   };
 
   nativeBuildInputs = [ dpkg makeWrapper wrapGAppsHook ];
@@ -24,7 +42,27 @@ stdenv.mkDerivation rec {
   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
+    alsa-lib
+    cairo
+    freetype
+    gdk-pixbuf
+    glib
+    gtk3
+    libglvnd
+    libjack2
+    # libjpeg8 is required for converting jpeg's to colour palettes
+    libjpeg
+    libxcb
+    libXcursor
+    libX11
+    libXtst
+    libxkbcommon
+    pipewire
+    pulseaudio
+    stdenv.cc.cc.lib
+    xcbutil
+    xcbutilwm
+    zlib
   ];
 
   installPhase = ''
@@ -53,9 +91,11 @@ stdenv.mkDerivation rec {
       -not -path '*/resources/*' | \
     while IFS= read -r f ; do
       patchelf --set-interpreter "${stdenv.cc.bintools.dynamicLinker}" $f
+      # make xdg-open overrideable at runtime
       wrapProgram $f \
         "''${gappsWrapperArgs[@]}" \
-        --prefix PATH : "${lib.makeBinPath [ xdg-utils ffmpeg ]}" \
+        --prefix PATH : "${lib.makeBinPath [ ffmpeg ]}" \
+        --suffix PATH : "${lib.makeBinPath [ xdg-utils ]}" \
         --suffix LD_LIBRARY_PATH : "${lib.strings.makeLibraryPath buildInputs}"
     done
 
diff --git a/nixpkgs/pkgs/applications/audio/blanket/default.nix b/nixpkgs/pkgs/applications/audio/blanket/default.nix
index 6c648ed71159..5a3d9949f8c5 100644
--- a/nixpkgs/pkgs/applications/audio/blanket/default.nix
+++ b/nixpkgs/pkgs/applications/audio/blanket/default.nix
@@ -1,10 +1,9 @@
 { lib
-, stdenv
 , fetchFromGitHub
 , meson
 , ninja
 , pkg-config
-, wrapGAppsHook
+, wrapGAppsHook4
 , desktop-file-utils
 , appstream-glib
 , python3Packages
@@ -30,16 +29,15 @@ python3Packages.buildPythonApplication rec {
     meson
     ninja
     pkg-config
-    wrapGAppsHook
+    wrapGAppsHook4
     desktop-file-utils
-    appstream-glib
+    gobject-introspection
   ];
 
   buildInputs = [
     glib
     gtk4
     libadwaita
-    gobject-introspection
     gst_all_1.gstreamer
     gst_all_1.gst-plugins-base
     gst_all_1.gst-plugins-good
@@ -50,13 +48,12 @@ python3Packages.buildPythonApplication rec {
     pygobject3
   ];
 
-  # Broken with gobject-introspection setup hook
-  # https://github.com/NixOS/nixpkgs/issues/56943
-  strictDeps = false;
   format = "other";
 
   postPatch = ''
     patchShebangs build-aux/meson/postinstall.py
+    substituteInPlace build-aux/meson/postinstall.py \
+      --replace gtk-update-icon-cache gtk4-update-icon-cache
   '';
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/applications/audio/bristol/default.nix b/nixpkgs/pkgs/applications/audio/bristol/default.nix
index b96155cf688b..39227fd06522 100644
--- a/nixpkgs/pkgs/applications/audio/bristol/default.nix
+++ b/nixpkgs/pkgs/applications/audio/bristol/default.nix
@@ -23,7 +23,7 @@ stdenv.mkDerivation  rec {
   # gcc-10. Otherwise build fails as:
   #  ld: brightonCLI.o:/build/bristol-0.60.11/brighton/brightonCLI.c:139: multiple definition of
   #    `event'; brightonMixerMenu.o:/build/bristol-0.60.11/brighton/brightonMixerMenu.c:1182: first defined here
-  NIX_CFLAGS_COMPILE = "-fcommon";
+  env.NIX_CFLAGS_COMPILE = "-fcommon";
 
   preInstall = ''
     sed -e "s@\`which bristol\`@$out/bin/bristol@g" -i bin/startBristol
@@ -32,7 +32,7 @@ stdenv.mkDerivation  rec {
 
   meta = with lib; {
     description = "A range of synthesiser, electric piano and organ emulations";
-    homepage = "http://bristol.sourceforge.net";
+    homepage = "https://bristol.sourceforge.net";
     license = licenses.gpl3;
     platforms = ["x86_64-linux" "i686-linux"];
     maintainers = [ maintainers.goibhniu ];
diff --git a/nixpkgs/pkgs/applications/audio/brutefir/default.nix b/nixpkgs/pkgs/applications/audio/brutefir/default.nix
new file mode 100644
index 000000000000..2aefa8bae08e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/brutefir/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenv, fetchurl, alsa-lib, fftw, fftwFloat, flex, libjack2 }:
+
+stdenv.mkDerivation rec {
+  pname = "brutefir";
+  version = "1.0o";
+
+  src = fetchurl {
+    url = "https://torger.se/anders/files/brutefir-${version}.tar.gz";
+    sha256 = "caae4a933b53b55b29d6cb7e2803e20819f31def6d0e4e12f9a48351e6dbbe9f";
+  };
+
+  nativeBuildInputs = [ flex ];
+
+  buildInputs = [
+    alsa-lib
+    fftw
+    fftwFloat
+    libjack2
+  ];
+
+  postPatch = "substituteInPlace bfconf.c --replace /usr/local $out";
+
+  installFlags = [ "INSTALL_PREFIX=$(out)" ];
+
+  meta = with lib; {
+    homepage = "https://torger.se/anders/brutefir.html";
+    description = "A software convolution engine";
+    license = licenses.gpl2Only;
+    maintainers = with maintainers; [ auchter ];
+    platforms = [ "x86_64-linux" "i686-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/butt/default.nix b/nixpkgs/pkgs/applications/audio/butt/default.nix
new file mode 100644
index 000000000000..2c1deb452bef
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/butt/default.nix
@@ -0,0 +1,47 @@
+{ lib, stdenv, fetchurl, pkg-config, fltk13, portaudio, lame, libvorbis, libogg
+, flac, libopus, libsamplerate, fdk_aac, dbus, openssl, curl }:
+
+stdenv.mkDerivation rec {
+  pname = "butt";
+  version = "0.1.37";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.gz";
+    hash = "sha256-FI8xRCaGSMC6KEf5v87Q4syO3kVPWXYXgnL24+myRKo=";
+  };
+
+  postPatch = ''
+    # remove advertising
+    substituteInPlace src/FLTK/flgui.cpp \
+      --replace 'idata_radio_co_badge, 124, 61, 4,' 'nullptr, 0, 0, 0,'
+  '';
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [
+    fltk13
+    portaudio
+    lame
+    libvorbis
+    libogg
+    flac
+    libopus
+    libsamplerate
+    fdk_aac
+    dbus
+    openssl
+    curl
+  ];
+
+  postInstall = ''
+    cp -r usr/share $out/
+  '';
+
+  meta = {
+    description =
+      "butt (broadcast using this tool) is an easy to use, multi OS streaming tool";
+    homepage = "https://danielnoethen.de/butt/";
+    license = lib.licenses.gpl2;
+    maintainers = with lib.maintainers; [ ehmry ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/buzztrax/default.nix b/nixpkgs/pkgs/applications/audio/buzztrax/default.nix
new file mode 100644
index 000000000000..85d8fbed7671
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/buzztrax/default.nix
@@ -0,0 +1,74 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, autoreconfHook
+, gtk-doc
+, intltool
+, itstool
+, libtool
+, pkg-config
+, wrapGAppsHook
+, yelp-tools
+, clutter-gtk
+, gst_all_1
+, glib
+, gtk2
+, libgsf
+, libxml2
+, fluidsynth
+, orc
+}:
+
+stdenv.mkDerivation {
+  pname = "buzztrax";
+  version = "unstable-2022-01-26";
+
+  src = fetchFromGitHub {
+    owner = "Buzztrax";
+    repo = "buzztrax";
+    rev = "833287c6a06bddc922cd346d6f0fcec7a882aee5";
+    hash = "sha256-iI6m+zBWDDBjmeuU9Nm4aIbEKfaPe36APPktdjznQpU=";
+  };
+
+  postPatch = ''
+    touch AUTHORS
+  '';
+
+  nativeBuildInputs = [
+    autoreconfHook
+    gtk-doc
+    intltool
+    itstool
+    libtool
+    pkg-config
+    wrapGAppsHook
+    yelp-tools
+  ];
+
+  buildInputs = [
+    clutter-gtk
+    gst_all_1.gstreamer
+    gst_all_1.gst-plugins-base
+    gst_all_1.gst-plugins-good
+    glib
+    gtk2
+    libgsf
+    libxml2
+    # optional packages
+    fluidsynth
+    gst_all_1.gst-plugins-bad
+    gst_all_1.gst-plugins-ugly
+    orc
+  ];
+
+  # 'g_memdup' is deprecated: Use 'g_memdup2' instead
+  env.NIX_CFLAGS_COMPILE = "-Wno-error=deprecated-declarations";
+
+  meta = with lib; {
+    description = "Buzztrax is a modular music composer for Linux.";
+    homepage = "https://www.buzztrax.org/";
+    license = licenses.lgpl21Plus;
+    maintainers = [ maintainers.bendlas ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/cadence/default.nix b/nixpkgs/pkgs/applications/audio/cadence/default.nix
index 72f13bdb09bf..ebf72588df0d 100644
--- a/nixpkgs/pkgs/applications/audio/cadence/default.nix
+++ b/nixpkgs/pkgs/applications/audio/cadence/default.nix
@@ -1,6 +1,4 @@
 { lib
-, a2jmidid
-, coreutils
 , libjack2
 , fetchpatch
 , fetchFromGitHub
@@ -8,7 +6,6 @@
 , pkg-config
 , pulseaudioFull
 , qtbase
-, makeWrapper
 , mkDerivation
 , python3
 }:
diff --git a/nixpkgs/pkgs/applications/audio/calf/default.nix b/nixpkgs/pkgs/applications/audio/calf/default.nix
index bdcbf024e606..e4e679e78082 100644
--- a/nixpkgs/pkgs/applications/audio/calf/default.nix
+++ b/nixpkgs/pkgs/applications/audio/calf/default.nix
@@ -10,15 +10,18 @@ stdenv.mkDerivation rec {
     sha256 = "17x4hylgq4dn9qycsdacfxy64f5cv57n2qgkvsdp524gnqzw4az3";
   };
 
+  outputs = [ "out" "doc" ];
+
   enableParallelBuilding = true;
 
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [
     cairo expat fftwSinglePrec fluidsynth glib gtk2 libjack2 ladspaH
-    libglade lv2 pkg-config
+    libglade lv2
   ];
 
   meta = with lib; {
-    homepage = "http://calf-studio-gear.org";
+    homepage = "https://calf-studio-gear.org";
     description = "A set of high quality open source audio plugins for musicians";
     license = licenses.lgpl2;
     maintainers = [ maintainers.goibhniu ];
diff --git a/nixpkgs/pkgs/applications/audio/callaudiod/default.nix b/nixpkgs/pkgs/applications/audio/callaudiod/default.nix
index 562a53fe5927..0723bfe7a0f4 100644
--- a/nixpkgs/pkgs/applications/audio/callaudiod/default.nix
+++ b/nixpkgs/pkgs/applications/audio/callaudiod/default.nix
@@ -11,14 +11,14 @@
 
 stdenv.mkDerivation rec {
   pname = "callaudiod";
-  version = "0.1.4";
+  version = "0.1.9";
 
   src = fetchFromGitLab {
     domain = "gitlab.com";
     owner = "mobian1";
     repo = pname;
     rev = version;
-    sha256 = "sha256-71+9ALz55aqxXRBRwOcs9fwiQK31pJ9E72pGRmt0OkE=";
+    sha256 = "sha256-OuWn1DA+4LmN1KwouiqW3kn6CMg8jhm0FiyAgMSi1GI=";
   };
 
   strictDeps = true;
diff --git a/nixpkgs/pkgs/applications/audio/cardinal/default.nix b/nixpkgs/pkgs/applications/audio/cardinal/default.nix
index 4cef30602aee..358c1f0e7900 100644
--- a/nixpkgs/pkgs/applications/audio/cardinal/default.nix
+++ b/nixpkgs/pkgs/applications/audio/cardinal/default.nix
@@ -2,6 +2,9 @@
   stdenv
 , fetchFromGitHub
 , fetchurl
+, cmake
+, dbus
+, file
 , freetype
 , jansson
 , lib
@@ -11,32 +14,44 @@
 , libXext
 , libXrandr
 , libarchive
+, libjack2
 , liblo
 , libsamplerate
-, mesa
+, libsndfile
+, makeWrapper
 , pkg-config
 , python3
 , speexdsp
+, libglvnd
 }:
 
 stdenv.mkDerivation rec {
   pname = "cardinal";
-  version = "22.07";
+  version = "22.12";
 
   src = fetchurl {
     url =
       "https://github.com/DISTRHO/Cardinal/releases/download/${version}/cardinal+deps-${version}.tar.xz";
-    sha256 = "sha256-4PpqGfycIwJ7g7gnogPYUO1BnlW7dkwYzw/9QV3R3+g=";
+    sha256 = "sha256-fyko5cWjBNNaw8qL9uyyRxW5MFXKmOsBoR5u05AWxWY=";
   };
 
   prePatch = ''
     patchShebangs ./dpf/utils/generate-ttl.sh
   '';
 
+  dontUseCmakeConfigure = true;
   enableParallelBuilding = true;
+  strictDeps = true;
 
-  nativeBuildInputs = [ pkg-config ];
+  nativeBuildInputs = [
+    cmake
+    file
+    pkg-config
+    makeWrapper
+    python3
+  ];
   buildInputs = [
+    dbus
     freetype
     jansson
     libGL
@@ -44,23 +59,32 @@ stdenv.mkDerivation rec {
     libXcursor
     libXext
     libXrandr
-    libXrandr
     libarchive
     liblo
     libsamplerate
-    mesa
-    python3
+    libsndfile
     speexdsp
+    libglvnd
   ];
 
   hardeningDisable = [ "format" ];
   makeFlags = [ "SYSDEPS=true" "PREFIX=$(out)" ];
 
+  postInstall = ''
+    wrapProgram $out/bin/Cardinal \
+    --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libjack2 ]}
+
+    # this doesn't work and is mainly just a test tool for the developers anyway.
+    rm -f $out/bin/CardinalNative
+  '';
+
   meta = {
     description = "Plugin wrapper around VCV Rack";
     homepage = "https://github.com/DISTRHO/cardinal";
     license = lib.licenses.gpl3;
     maintainers = [ lib.maintainers.magnetophon ];
     platforms = lib.platforms.all;
+    # never built on aarch64-darwin, x86_64-darwin since first introduction in nixpkgs
+    broken = stdenv.isDarwin;
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/carla/default.nix b/nixpkgs/pkgs/applications/audio/carla/default.nix
index 291c3875cea8..fdb3ea1e7149 100644
--- a/nixpkgs/pkgs/applications/audio/carla/default.nix
+++ b/nixpkgs/pkgs/applications/audio/carla/default.nix
@@ -1,27 +1,38 @@
-{ 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 }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, alsa-lib
+, file
+, fluidsynth
+, jack2
+, liblo
+, libpulseaudio
+, libsndfile
+, pkg-config
+, python3Packages
+, which
+, gtk2 ? null
+, gtk3 ? null
+, qtbase ? null
+, withFrontend ? true
+, withGtk2 ? true
+, withGtk3 ? true
+, withQt ? true
+, wrapQtAppsHook ? null
+}:
 
-with lib;
-
-assert withFrontend -> python3Packages ? pyqt5;
 assert withQt -> qtbase != null;
 assert withQt -> wrapQtAppsHook != null;
-assert withGtk2 -> gtk2 != null;
-assert withGtk3 -> gtk3 != null;
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation (finalAttrs: {
   pname = "carla";
-  version = "2.5.0";
+  version = "2.5.5";
 
   src = fetchFromGitHub {
     owner = "falkTX";
-    repo = pname;
-    rev = "v${version}";
-    sha256 = "sha256-KcwEuiy58wjTr+RWPmpMaPgM0olzxiWp9MMYiKwmIcI=";
+    repo = finalAttrs.pname;
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-kXQ0dv4KrwvfxdP73zimof9XKpAz5E6hQrFOjLG4hKU=";
   };
 
   nativeBuildInputs = [
@@ -30,15 +41,15 @@ stdenv.mkDerivation rec {
 
   pythonPath = with python3Packages; [
     rdflib pyliblo
-  ] ++ optional withFrontend pyqt5;
+  ] ++ lib.optional withFrontend pyqt5;
 
   buildInputs = [
     file liblo alsa-lib fluidsynth jack2 libpulseaudio libsndfile
-  ] ++ optional withQt qtbase
-    ++ optional withGtk2 gtk2
-    ++ optional withGtk3 gtk3;
+  ] ++ lib.optional withQt qtbase
+    ++ lib.optional withGtk2 gtk2
+    ++ lib.optional withGtk3 gtk3;
 
-  propagatedBuildInputs = pythonPath;
+  propagatedBuildInputs = finalAttrs.pythonPath;
 
   enableParallelBuilding = true;
 
@@ -62,7 +73,6 @@ 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" \
@@ -90,4 +100,4 @@ stdenv.mkDerivation rec {
     maintainers = [ maintainers.minijackson ];
     platforms = platforms.linux;
   };
-}
+})
diff --git a/nixpkgs/pkgs/applications/audio/cava/default.nix b/nixpkgs/pkgs/applications/audio/cava/default.nix
index cc431ff46b9c..752e1d2dfcfa 100644
--- a/nixpkgs/pkgs/applications/audio/cava/default.nix
+++ b/nixpkgs/pkgs/applications/audio/cava/default.nix
@@ -1,33 +1,27 @@
 { lib, stdenv, fetchFromGitHub, autoreconfHook, alsa-lib, fftw,
-  libpulseaudio, ncurses }:
+  libpulseaudio, ncurses, iniparser }:
 
 stdenv.mkDerivation rec {
   pname = "cava";
-  version = "0.7.4";
+  version = "0.8.3";
 
   buildInputs = [
     alsa-lib
     fftw
     libpulseaudio
     ncurses
+    iniparser
   ];
 
   src = fetchFromGitHub {
     owner = "karlstav";
     repo = "cava";
     rev = version;
-    sha256 = "sha256-BlHGst34aUgQcXcuQG43VnKUTclCxfQmWRa6iCud8dc=";
+    sha256 = "sha256-6xiWhWynIbUWFIieiYIg24PgwnKuNSIEpkY+P6gyFGw=";
   };
 
   nativeBuildInputs = [ autoreconfHook ];
 
-  postConfigure = ''
-    substituteInPlace Makefile.am \
-      --replace "-L/usr/local/lib -Wl,-rpath /usr/local/lib" ""
-    substituteInPlace configure.ac \
-      --replace "/usr/share/consolefonts" "$out/share/consolefonts"
-  '';
-
   meta = with lib; {
     description = "Console-based Audio Visualizer for Alsa";
     homepage = "https://github.com/karlstav/cava";
diff --git a/nixpkgs/pkgs/applications/audio/cavalier/default.nix b/nixpkgs/pkgs/applications/audio/cavalier/default.nix
new file mode 100644
index 000000000000..17fdabc5bc0d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/cavalier/default.nix
@@ -0,0 +1,68 @@
+{ lib
+, python3
+, fetchFromGitHub
+, meson
+, ninja
+, pkg-config
+, gobject-introspection
+, glib
+, gtk4
+, librsvg
+, libadwaita
+, wrapGAppsHook4
+, appstream-glib
+, desktop-file-utils
+, cava
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "cavalier";
+  version = "2023.01.29";
+  format = "other";
+
+  src = fetchFromGitHub {
+    owner = "fsobolev";
+    repo = pname;
+    rev = version;
+    hash = "sha256-6bvi73cFQHtIyD4d4+mqje0qkmG4wkahZ2ohda5RvRQ=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    gobject-introspection
+    wrapGAppsHook4
+    appstream-glib
+    desktop-file-utils
+  ];
+
+  buildInputs = [
+    glib
+    gtk4
+    librsvg
+    libadwaita
+  ];
+
+  propagatedBuildInputs = with python3.pkgs; [
+    pygobject3
+  ];
+
+  # Prevent double wrapping
+  dontWrapGApps = true;
+
+  preFixup = ''
+    makeWrapperArgs+=(
+      "''${gappsWrapperArgs[@]}"
+      --prefix PATH ":" "${lib.makeBinPath [ cava ]}"
+    )
+  '';
+
+  meta = with lib; {
+    description = "Audio visualizer based on CAVA with customizable LibAdwaita interface";
+    homepage = "https://github.com/fsobolev/cavalier";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ zendo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/chuck/default.nix b/nixpkgs/pkgs/applications/audio/chuck/default.nix
index a6509256881b..a62337d7d55a 100644
--- a/nixpkgs/pkgs/applications/audio/chuck/default.nix
+++ b/nixpkgs/pkgs/applications/audio/chuck/default.nix
@@ -1,35 +1,27 @@
-{ stdenv, lib, fetchurl, alsa-lib, bison, flex, libsndfile, which
-, AppKit, Carbon, CoreAudio, CoreMIDI, CoreServices, Kernel
+{ stdenv, lib, fetchurl, alsa-lib, bison, flex, libsndfile, which, DarwinTools, xcbuild
+, AppKit, Carbon, CoreAudio, CoreMIDI, CoreServices, Kernel, MultitouchSupport
 }:
 
 stdenv.mkDerivation rec {
-  version = "1.4.1.0";
+  version = "1.4.2.0";
   pname = "chuck";
 
   src = fetchurl {
     url = "http://chuck.cs.princeton.edu/release/files/chuck-${version}.tgz";
-    sha256 = "sha256-dL+ZrVFeMRPFW4MxUpNvrQKjzwBqVBBf8Rd3xHMZSSg=";
+    sha256 = "sha256-hIwsC9rYgXWSTFqUufKGqoT0Gnsf4nR4KQ0iSVbj8xg=";
   };
 
-  nativeBuildInputs = [ flex bison which ];
+  nativeBuildInputs = [ flex bison which ]
+    ++ lib.optionals stdenv.isDarwin [ DarwinTools xcbuild ];
 
   buildInputs = [ libsndfile ]
     ++ lib.optional (!stdenv.isDarwin) alsa-lib
-    ++ lib.optional stdenv.isDarwin [ AppKit Carbon CoreAudio CoreMIDI CoreServices Kernel ];
+    ++ lib.optionals stdenv.isDarwin [ AppKit Carbon CoreAudio CoreMIDI CoreServices Kernel MultitouchSupport ];
 
   patches = [ ./darwin-limits.patch ];
 
-  NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin "-Wno-missing-sysroot";
-  NIX_LDFLAGS = lib.optionalString stdenv.isDarwin "-framework MultitouchSupport";
-
-  postPatch = ''
-    substituteInPlace src/core/makefile.x/makefile.osx \
-      --replace "weak_framework" "framework" \
-      --replace "MACOSX_DEPLOYMENT_TARGET=10.9" "MACOSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET"
-  '';
-
   makeFlags = [ "-C src" "DESTDIR=$(out)/bin" ];
-  buildFlags = [ (if stdenv.isDarwin then "osx" else "linux-alsa") ];
+  buildFlags = [ (if stdenv.isDarwin then "mac" else "linux-alsa") ];
 
   meta = with lib; {
     description = "Programming language for real-time sound synthesis and music creation";
diff --git a/nixpkgs/pkgs/applications/audio/cider/default.nix b/nixpkgs/pkgs/applications/audio/cider/default.nix
index bb59a6d498c5..e6bd6aafe7ad 100644
--- a/nixpkgs/pkgs/applications/audio/cider/default.nix
+++ b/nixpkgs/pkgs/applications/audio/cider/default.nix
@@ -2,11 +2,11 @@
 
 appimageTools.wrapType2 rec {
   pname = "cider";
-  version = "1.4.1.1680";
+  version = "1.6.1";
 
   src = fetchurl {
-    url = "https://github.com/ciderapp/cider-releases/releases/download/v${version}/Cider-${builtins.concatStringsSep "." (lib.take 3 (lib.splitVersion version))}-alpha.${builtins.elemAt (lib.splitVersion version) 3}.AppImage";
-    sha256 = "sha256-hEv+vfMMH+Trwa1UF5R8EtyYeyiRVLP0BrXOK2+1q8M=";
+    url = "https://github.com/ciderapp/Cider/releases/download/v${version}/Cider-${version}.AppImage";
+    sha256 = "sha256-t3kslhb6STPemdBN6fXc8jcPgNrlnGzcAUQ3HAUB7Yw=";
   };
 
   extraInstallCommands =
diff --git a/nixpkgs/pkgs/applications/audio/clerk/default.nix b/nixpkgs/pkgs/applications/audio/clerk/default.nix
index fa64cd74e71a..15b2ad85ea7e 100644
--- a/nixpkgs/pkgs/applications/audio/clerk/default.nix
+++ b/nixpkgs/pkgs/applications/audio/clerk/default.nix
@@ -51,6 +51,7 @@ stdenv.mkDerivation {
     description = "An MPD client built on top of rofi";
     homepage = "https://github.com/carnager/clerk";
     license = licenses.mit;
+    broken = true; # not compatible with current version of rofi
     maintainers = with maintainers; [ anderspapitto ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/cmt/default.nix b/nixpkgs/pkgs/applications/audio/cmt/default.nix
index 1062d897c6bd..bf7ed0ee37d4 100644
--- a/nixpkgs/pkgs/applications/audio/cmt/default.nix
+++ b/nixpkgs/pkgs/applications/audio/cmt/default.nix
@@ -5,11 +5,11 @@
 
 stdenv.mkDerivation rec {
   pname = "cmt";
-  version = "1.17";
+  version = "1.18";
 
   src = fetchurl {
     url = "http://www.ladspa.org/download/cmt_${version}.tgz";
-    sha256 = "07xd0xmwpa0j12813jpf87fr9hwzihii5l35mp8ady7xxfmxfmpb";
+    sha256 = "sha256-qC+GNt4fSto4ahmaAXqc13Wkm0nnFrEejdP3I8k99so=";
   };
 
   buildInputs = [ ladspaH ];
diff --git a/nixpkgs/pkgs/applications/audio/cmus/default.nix b/nixpkgs/pkgs/applications/audio/cmus/default.nix
index 3a4cae32a1fd..a3f859ca0ea4 100644
--- a/nixpkgs/pkgs/applications/audio/cmus/default.nix
+++ b/nixpkgs/pkgs/applications/audio/cmus/default.nix
@@ -20,7 +20,7 @@
 , cddbSupport ? true, libcddb ? null
 , cdioSupport ? true, libcdio ? null, libcdio-paranoia ? null
 , cueSupport ? true, libcue ? null
-, discidSupport ? (!stdenv.isDarwin), libdiscid ? null
+, discidSupport ? false, libdiscid ? null
 , ffmpegSupport ? true, ffmpeg ? null
 , flacSupport ? true, flac ? null
 , madSupport ? true, libmad ? null
@@ -39,8 +39,6 @@
 #, vtxSupport ? true, libayemu ? null
 }:
 
-with lib;
-
 assert samplerateSupport -> jackSupport;
 
 # vorbis and tremor are mutually exclusive
@@ -90,39 +88,32 @@ let
 
     #(mkFlag vtxSupport    "CONFIG_VTX=y"     libayemu)
   ];
-
-  clangGCC = runCommand "clang-gcc" {} ''
-    #! ${stdenv.shell}
-    mkdir -p $out/bin
-    ln -s ${stdenv.cc}/bin/clang $out/bin/gcc
-    ln -s ${stdenv.cc}/bin/clang++ $out/bin/g++
-  '';
-
 in
 
 stdenv.mkDerivation rec {
   pname = "cmus";
-  version = "2.9.1";
+  version = "2.10.0";
 
   src = fetchFromGitHub {
     owner  = "cmus";
     repo   = "cmus";
     rev    = "v${version}";
-    sha256 = "sha256-HEiEnEWf/MzhPO19VKTLYzhylpEvyzy1Jxs6EW2NU34=";
+    sha256 = "sha256-Ha0bIh3SYMhA28YXQ//Loaz9J1lTJAzjTx8eK3AqUjM=";
   };
 
   patches = [ ./option-debugging.patch ];
 
-  configurePhase = "./configure " + concatStringsSep " " ([
-    "prefix=$out"
-    "CONFIG_WAV=y"
-  ] ++ concatMap (a: a.flags) opts);
-
   nativeBuildInputs = [ pkg-config ];
   buildInputs = [ ncurses ]
-    ++ lib.optional stdenv.cc.isClang clangGCC
     ++ lib.optionals stdenv.isDarwin [ libiconv CoreAudio AudioUnit VideoToolbox ]
-    ++ flatten (concatMap (a: a.deps) opts);
+    ++ lib.flatten (lib.concatMap (a: a.deps) opts);
+
+  prefixKey = "prefix=";
+
+  configureFlags = [
+    "CONFIG_WAV=y"
+    "HOSTCC=${stdenv.cc.targetPrefix}cc"
+  ] ++ lib.concatMap (a: a.flags) opts;
 
   makeFlags = [ "LD=$(CC)" ];
 
diff --git a/nixpkgs/pkgs/applications/audio/codecserver/default.nix b/nixpkgs/pkgs/applications/audio/codecserver/default.nix
index 8a5c3d842d4d..d1bcf82115ef 100644
--- a/nixpkgs/pkgs/applications/audio/codecserver/default.nix
+++ b/nixpkgs/pkgs/applications/audio/codecserver/default.nix
@@ -24,6 +24,12 @@ stdenv.mkDerivation rec {
 
   propagatedBuildInputs = [ protobuf ];
 
+  postFixup = ''
+    substituteInPlace "$out"/lib/pkgconfig/codecserver.pc \
+      --replace '=''${prefix}//' '=/' \
+      --replace '=''${exec_prefix}//' '=/'
+  '';
+
   meta = with lib; {
     homepage = "https://github.com/jketterl/codecserver";
     description = "Modular audio codec server";
diff --git a/nixpkgs/pkgs/applications/audio/cozy/default.nix b/nixpkgs/pkgs/applications/audio/cozy/default.nix
index 9fe86550f0da..8f7461683be1 100644
--- a/nixpkgs/pkgs/applications/audio/cozy/default.nix
+++ b/nixpkgs/pkgs/applications/audio/cozy/default.nix
@@ -22,18 +22,13 @@ python3Packages.buildPythonApplication rec {
   format = "other"; # no setup.py
 
   pname = "cozy";
-  version = "1.2.0";
-
-  # Temporary fix
-  # See https://github.com/NixOS/nixpkgs/issues/57029
-  # and https://github.com/NixOS/nixpkgs/issues/56943
-  strictDeps = false;
+  version = "1.2.1";
 
   src = fetchFromGitHub {
     owner = "geigi";
     repo = pname;
     rev = version;
-    sha256 = "0igqf9b77i13sxlk4ziw549h379hmz1slrb3vvf8irk94gxabsaw";
+    hash = "sha256-cRqfLFLvje8lxUZ4S83UAFyYUX0vj1ZgLG0Y6gpCfmI=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/audio/cplay-ng/default.nix b/nixpkgs/pkgs/applications/audio/cplay-ng/default.nix
new file mode 100644
index 000000000000..d4eb815bd14c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/cplay-ng/default.nix
@@ -0,0 +1,48 @@
+{ lib
+, python3
+, fetchFromGitHub
+, makeWrapper
+, mpv
+, pulseaudio
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "cplay-ng";
+  version = "5.2.0";
+
+  src = fetchFromGitHub {
+    owner = "xi";
+    repo = "cplay-ng";
+    rev = version;
+    hash = "sha256-M9WpB59AWSaGMnGrO37Fc+7O6pVBc2BDAv/BGlPmo8E=";
+  };
+
+  nativeBuildInputs = [
+    makeWrapper
+  ];
+
+  postInstall = ''
+    wrapProgram $out/bin/cplay-ng \
+      --prefix PATH : ${lib.makeBinPath [ mpv pulseaudio ]}
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/xi/cplay-ng";
+    description = "Simple curses audio player";
+    longDescription = ''
+      cplay is a minimalist music player with a textual user interface written
+      in Python. It aims to provide a power-user-friendly interface with simple
+      filelist and playlist control.
+
+      Instead of building an elaborate database of your music library, cplay
+      allows you to quickly browse the filesystem and enqueue files,
+      directories, and playlists.
+
+      The original cplay was started by Ulf Betlehem in 1998 and is no longer
+      maintained. This is a rewrite that aims to stay true to the original
+      design while evolving with a shifting environment.
+    '';
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ fgaz ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/crip/default.nix b/nixpkgs/pkgs/applications/audio/crip/default.nix
index d635dce83f4e..f837ad6603e3 100644
--- a/nixpkgs/pkgs/applications/audio/crip/default.nix
+++ b/nixpkgs/pkgs/applications/audio/crip/default.nix
@@ -16,8 +16,6 @@
 , which
 }:
 
-with lib;
-
 stdenv.mkDerivation rec {
   pname = "crip";
   version = "3.9";
@@ -29,7 +27,7 @@ stdenv.mkDerivation rec {
   buildInputs = [ perlPackages.perl perlPackages.CDDB_get ];
   nativeBuildInputs = [ makeWrapper ];
 
-  toolDeps = makeBinPath [
+  toolDeps = lib.makeBinPath [
     cdparanoia
     coreutils
     eject
@@ -46,7 +44,7 @@ stdenv.mkDerivation rec {
   installPhase = ''
     mkdir -p $out/bin/
 
-    for script in ${escapeShellArgs scripts}; do
+    for script in ${lib.escapeShellArgs scripts}; do
       cp $script $out/bin/
 
       substituteInPlace $out/bin/$script \
@@ -61,8 +59,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 = lib.licenses.gpl1;
+    license = lib.licenses.gpl1Only;
     platforms = lib.platforms.linux;
-    maintainers = [ maintainers.endgame ];
+    maintainers = [ lib.maintainers.endgame ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/csound/csound-manual/default.nix b/nixpkgs/pkgs/applications/audio/csound/csound-manual/default.nix
index ecd6685e2171..ffb4821d767d 100644
--- a/nixpkgs/pkgs/applications/audio/csound/csound-manual/default.nix
+++ b/nixpkgs/pkgs/applications/audio/csound/csound-manual/default.nix
@@ -1,18 +1,21 @@
-{
-  lib, stdenv, fetchFromGitHub, docbook_xsl,
-  docbook_xml_dtd_45, python, pygments,
-  libxslt
+{ lib
+, stdenv
+, fetchFromGitHub
+, docbook_xsl
+, docbook_xml_dtd_45
+, python3
+, libxslt
 }:
 
-stdenv.mkDerivation {
+stdenv.mkDerivation rec {
   pname = "csound-manual";
-  version = "unstable-2019-02-22";
+  version = "6.18.0";
 
   src = fetchFromGitHub {
     owner = "csound";
     repo = "manual";
-    rev = "3b0bdc83f9245261b4b85a57c3ed636d5d924a4f";
-    sha256 = "074byjhaxraapyg54dxgg7hi1d4978aa9c1rmyi50p970nsxnacn";
+    rev = version;
+    sha256 = "sha256-W8MghqUBr3V7LPgNwU6Ugw16wdK3G37zAPuasMlZ2+I=";
   };
 
   prePatch = ''
@@ -21,9 +24,7 @@ stdenv.mkDerivation {
                 "${docbook_xml_dtd_45}/xml/dtd/docbook/docbookx.dtd"
   '';
 
-  nativeBuildInputs = [ libxslt.bin ];
-
-  buildInputs = [ docbook_xsl python pygments ];
+  nativeBuildInputs = [ libxslt.bin docbook_xsl python3 python3.pkgs.pygments ];
 
   buildPhase = ''
     make XSL_BASE_PATH=${docbook_xsl}/share/xml/docbook-xsl html-dist
@@ -34,11 +35,11 @@ stdenv.mkDerivation {
     cp -r ./html $out/share/doc/csound
   '';
 
-  meta = {
+  meta = with lib; {
     description = "The Csound Canonical Reference Manual";
     homepage = "https://github.com/csound/manual";
-    license = lib.licenses.fdl12Plus;
-    maintainers = [ lib.maintainers.hlolli ];
+    license = licenses.fdl12Plus;
+    maintainers = with maintainers; [ hlolli ];
     platforms = lib.platforms.all;
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/csound/csound-qt/default.nix b/nixpkgs/pkgs/applications/audio/csound/csound-qt/default.nix
index 953a919d0c70..e48b45aec3e4 100644
--- a/nixpkgs/pkgs/applications/audio/csound/csound-qt/default.nix
+++ b/nixpkgs/pkgs/applications/audio/csound/csound-qt/default.nix
@@ -1,28 +1,23 @@
 { lib, stdenv, csound, desktop-file-utils,
   fetchFromGitHub, python, python-qt, qmake,
-  qtwebengine, qtxmlpatterns, rtmidi, fetchpatch }:
+  qtwebengine, qtxmlpatterns, rtmidi, wrapQtAppsHook }:
 
 stdenv.mkDerivation rec {
   pname = "csound-qt";
-  version = "0.9.6-beta3";
+  version = "1.1.1";
 
   src = fetchFromGitHub {
     owner = "CsoundQt";
     repo = "CsoundQt";
-    rev = version;
-    sha256 = "007jhkh0k6qk52r77i067999dwdiimazix6ggp2hvyc4pj6n5dip";
+    rev = "v${version}";
+    hash = "sha256-PdylVOnunbB36dbZX/wzd9A8CJPDv/xH5HPLAUkRu28=";
   };
 
   patches = [
-    (fetchpatch {
-      name = "examplepath.patch";
-      url = "https://github.com/CsoundQt/CsoundQt/commit/09f2d515bff638cbcacb450979d66e273a59fdec.diff";
-      sha256 = "0y23kf8m1mh9mklsvf908b2b8m2w2rji8qvws44paf1kpwnwdmgm";
-    })
     ./rtmidipath.patch
   ];
 
-  nativeBuildInputs = [ qmake qtwebengine qtxmlpatterns ];
+  nativeBuildInputs = [ qmake qtwebengine qtxmlpatterns wrapQtAppsHook ];
 
   buildInputs = [ csound desktop-file-utils rtmidi ];
 
@@ -35,13 +30,11 @@ stdenv.mkDerivation rec {
                  "PYTHONQT_LIB_DIR=${python-qt}/lib"
                  "LIBS+=-L${python-qt}/lib"
                  "INCLUDEPATH+=${python-qt}/include/PythonQt"
-                 "INCLUDEPATH+=${python}/include/python2.7"
+                 "INCLUDEPATH+=${python}/include/python${python.pythonVersion}"
                  "INSTALL_DIR=${placeholder "out"}"
                  "SHARE_DIR=${placeholder "out"}/share"
                  ];
 
-  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/";
diff --git a/nixpkgs/pkgs/applications/audio/csound/csound-qt/rtmidipath.patch b/nixpkgs/pkgs/applications/audio/csound/csound-qt/rtmidipath.patch
index 4cbab8a128fc..4e22295d43ff 100644
--- a/nixpkgs/pkgs/applications/audio/csound/csound-qt/rtmidipath.patch
+++ b/nixpkgs/pkgs/applications/audio/csound/csound-qt/rtmidipath.patch
@@ -1,8 +1,8 @@
-diff --git a/src/src.pri b/src/src.pri
-index e5e0c896..9a9fa513 100644
---- a/src/src.pri
-+++ b/src/src.pri
-@@ -155,9 +155,9 @@ pythonqt {
+diff --git a/src/src.pri b/src/src.pri

+index e5e0c896..9a9fa513 100644

+--- a/src/src.pri

++++ b/src/src.pri

+@@ -155,9 +155,9 @@ pythonqt {

          "src/pyqcsobject.cpp"

  }

  rtmidi {

diff --git a/nixpkgs/pkgs/applications/audio/csound/default.nix b/nixpkgs/pkgs/applications/audio/csound/default.nix
index 4da3efbffe47..ccaacf189fae 100644
--- a/nixpkgs/pkgs/applications/audio/csound/default.nix
+++ b/nixpkgs/pkgs/applications/audio/csound/default.nix
@@ -3,6 +3,7 @@
 , AudioUnit
 , CoreAudio
 , CoreMIDI
+, portaudio
 , alsa-lib ? null
 , libpulseaudio ? null
 , libjack2 ? null
@@ -18,7 +19,7 @@
 
 stdenv.mkDerivation rec {
   pname = "csound";
-  version = "6.17.0";
+  version = "6.18.1";
 
   hardeningDisable = [ "format" ];
 
@@ -26,17 +27,18 @@ stdenv.mkDerivation rec {
     owner = "csound";
     repo = "csound";
     rev = version;
-    sha256 = "sha256-O19jm3JxHg4TcQzWQZu1uFjfYN2FR41fCRq5YGnTGD0=";
+    sha256 = "sha256-O7s92N54+zIl07eIdK/puoSve/qJ3O01fTh0TP+VdZA=";
   };
 
   cmakeFlags = [ "-DBUILD_CSOUND_AC=0" ] # fails to find Score.hpp
     ++ lib.optional stdenv.isDarwin "-DCS_FRAMEWORK_DEST=${placeholder "out"}/lib"
-    ++ lib.optional (libjack2 != null) "-DJACK_HEADER=${libjack2}/include/jack/jack.h";
+    # Ignore gettext in CMAKE_PREFIX_PATH on cross to prevent find_program picking up the wrong gettext
+    ++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform) "-DCMAKE_IGNORE_PATH=${lib.getBin gettext}/bin";
 
   nativeBuildInputs = [ cmake flex bison gettext ];
   buildInputs = [ libsndfile libsamplerate boost ]
     ++ lib.optionals stdenv.isDarwin [
-      Accelerate AudioUnit CoreAudio CoreMIDI
+      Accelerate AudioUnit CoreAudio CoreMIDI portaudio
     ] ++ lib.optionals stdenv.isLinux (builtins.filter (optional: optional != null) [
       alsa-lib libpulseaudio libjack2
       liblo ladspa-sdk fluidsynth eigen
diff --git a/nixpkgs/pkgs/applications/audio/cyanrip/default.nix b/nixpkgs/pkgs/applications/audio/cyanrip/default.nix
index 4f3a5a08af2e..1828858b3cdb 100644
--- a/nixpkgs/pkgs/applications/audio/cyanrip/default.nix
+++ b/nixpkgs/pkgs/applications/audio/cyanrip/default.nix
@@ -4,7 +4,7 @@
 , meson
 , ninja
 , pkg-config
-, ffmpeg
+, ffmpeg-headless
 , libcdio
 , libcdio-paranoia
 , libmusicbrainz5
@@ -12,17 +12,17 @@
 }:
 stdenv.mkDerivation rec {
   pname = "cyanrip";
-  version = "0.8.1";
+  version = "0.9.0";
 
   src = fetchFromGitHub {
     owner = "cyanreg";
     repo = pname;
     rev = "v${version}";
-    sha256 = "17bi2xhjv3f3i870whkyqckvjlg32wqkspash87zi0jw7m7jm229";
+    sha256 = "sha256-gH/rWTRYX10Q2Y9oSaMu0bOy3SMbcSNmH3dkXHFAw90";
   };
 
   nativeBuildInputs = [ meson ninja pkg-config ];
-  buildInputs = [ ffmpeg libcdio libcdio-paranoia libmusicbrainz5 curl ];
+  buildInputs = [ ffmpeg-headless libcdio libcdio-paranoia libmusicbrainz5 curl ];
 
   meta = with lib; {
     homepage = "https://github.com/cyanreg/cyanrip";
diff --git a/nixpkgs/pkgs/applications/audio/deadbeef/default.nix b/nixpkgs/pkgs/applications/audio/deadbeef/default.nix
index b4e348a39779..34b4b7ab1883 100644
--- a/nixpkgs/pkgs/applications/audio/deadbeef/default.nix
+++ b/nixpkgs/pkgs/applications/audio/deadbeef/default.nix
@@ -28,6 +28,7 @@
 # output plugins
 , alsaSupport ? true, alsa-lib
 , pulseSupport ? config.pulseaudio or true, libpulseaudio
+, pipewireSupport ? true, pipewire
 # effect plugins
 , resamplerSupport ? true, libsamplerate
 , overloadSupport ? true, zlib
@@ -40,7 +41,7 @@ assert gtk2Support || gtk3Support;
 let
   inherit (lib) optionals;
 
-  version = "1.9.1";
+  version = "1.9.5";
 in clangStdenv.mkDerivation {
   pname = "deadbeef";
   inherit version;
@@ -50,7 +51,7 @@ in clangStdenv.mkDerivation {
     repo = "deadbeef";
     fetchSubmodules = true;
     rev = version;
-    sha256 = "sha256-e3bAGpkRPIqVWl0nvSZ61JpIQZw24mqE9218SWHBCFo=";
+    hash = "sha256-dSSIaJxHYUVOmuJN2t5UZSC3ZP5732/qVXSZAuWYr0Q=";
   };
 
   buildInputs = [
@@ -92,6 +93,8 @@ in clangStdenv.mkDerivation {
     alsa-lib
   ] ++ optionals pulseSupport [
     libpulseaudio
+  ] ++ optionals pipewireSupport [
+    pipewire
   ] ++ optionals resamplerSupport [
     libsamplerate
   ] ++ optionals overloadSupport [
@@ -121,6 +124,7 @@ in clangStdenv.mkDerivation {
   meta = with lib; {
     description = "Ultimate Music Player for GNU/Linux";
     homepage = "http://deadbeef.sourceforge.net/";
+    downloadPage = "https://github.com/DeaDBeeF-Player/deadbeef";
     license = licenses.gpl2;
     platforms = [ "x86_64-linux" "i686-linux" ];
     maintainers = [ maintainers.abbradar ];
diff --git a/nixpkgs/pkgs/applications/audio/deadbeef/plugins/mpris2.nix b/nixpkgs/pkgs/applications/audio/deadbeef/plugins/mpris2.nix
index d0b0d0a86567..a6d6409f9f86 100644
--- a/nixpkgs/pkgs/applications/audio/deadbeef/plugins/mpris2.nix
+++ b/nixpkgs/pkgs/applications/audio/deadbeef/plugins/mpris2.nix
@@ -9,7 +9,7 @@
 
 let
   pname = "deadbeef-mpris2-plugin";
-  version = "1.14";
+  version = "1.16";
 in stdenv.mkDerivation {
   inherit pname version;
 
@@ -17,7 +17,7 @@ in stdenv.mkDerivation {
     owner = "DeaDBeeF-Player";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-w7ccIhcPjbjs18kb3ZdM9JtSail9ik3uyAc40T8lHho=";
+    hash = "sha256-f6iHgwLdzQJJEquyuUQGWFfOfpjH/Hxh9IqQ5HkYrog=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/audio/dexed/default.nix b/nixpkgs/pkgs/applications/audio/dexed/default.nix
new file mode 100644
index 000000000000..d7e8b0fd2380
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/dexed/default.nix
@@ -0,0 +1,109 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, pkg-config
+, libX11
+, libXrandr
+, libXinerama
+, libXext
+, libXcursor
+, freetype
+, alsa-lib
+, libjack2
+, Accelerate
+, Cocoa
+, WebKit
+, MetalKit
+, simd
+, DiscRecording
+, CoreAudioKit
+}:
+
+stdenv.mkDerivation rec {
+  pname = "dexed";
+  version = "unstable-2022-07-09";
+
+  src = fetchFromGitHub {
+    owner = "asb2m10";
+    repo = "dexed";
+    rev = "2c036316bcd512818aa9cc8129767ad9e0ec7132";
+    fetchSubmodules = true;
+    sha256 = "sha256-6buvA72YRlGjHWLPEZMr45lYYG6ZY+IWmylcHruX27g=";
+  };
+
+  postPatch = ''
+    # needs special setup on Linux, dunno if it can work on Darwin
+    # https://github.com/NixOS/nixpkgs/issues/19098
+    sed -i -e '/juce::juce_recommended_lto_flags/d' Source/CMakeLists.txt
+  '';
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+  ];
+
+  buildInputs = lib.optionals stdenv.hostPlatform.isLinux [
+    libX11
+    libXext
+    libXcursor
+    libXinerama
+    libXrandr
+    freetype
+    alsa-lib
+    libjack2
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
+    Accelerate
+    Cocoa
+    WebKit
+    MetalKit
+    simd
+    DiscRecording
+    CoreAudioKit
+  ];
+
+  # JUCE insists on only dlopen'ing these
+  NIX_LDFLAGS = lib.optionalString stdenv.hostPlatform.isLinux (toString [
+    "-lX11"
+    "-lXext"
+    "-lXcursor"
+    "-lXinerama"
+    "-lXrandr"
+    "-ljack"
+  ]);
+
+  installPhase = let
+    vst3Dir = if stdenv.hostPlatform.isDarwin then "$out/Library/Audio/Plug-Ins/VST3" else "$out/lib/vst3";
+    # this one's a guess, don't know where ppl have agreed to put them yet
+    clapDir = if stdenv.hostPlatform.isDarwin then "$out/Library/Audio/Plug-Ins/CLAP" else "$out/lib/clap";
+    auDir = "$out/Library/Audio/Plug-Ins/Components";
+  in ''
+    runHook preInstall
+
+  '' + (if stdenv.hostPlatform.isDarwin then ''
+    mkdir -p $out/{Applications,bin}
+    mv Source/Dexed_artefacts/Release/Standalone/Dexed.app $out/Applications/
+    ln -s $out/{Applications/Dexed.app/Contents/MacOS,bin}/Dexed
+  '' else ''
+    install -Dm755 {Source/Dexed_artefacts/Release/Standalone,$out/bin}/Dexed
+  '') + ''
+    mkdir -p ${vst3Dir} ${clapDir}
+    mv Source/Dexed_artefacts/Release/VST3/* ${vst3Dir}
+    mv Source/Dexed_artefacts/Release/CLAP/* ${clapDir}
+  '' + lib.optionalString stdenv.hostPlatform.isDarwin ''
+    mkdir -p ${auDir}
+    mv Source/Dexed_artefacts/Release/AU/* ${auDir}
+  '' + ''
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "DX7 FM multi platform/multi format plugin";
+    mainProgram = "Dexed";
+    homepage = "https://asb2m10.github.io/dexed";
+    license = licenses.gpl3Only;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ OPNA2608 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/dolbybcsoftwaredecode/default.nix b/nixpkgs/pkgs/applications/audio/dolbybcsoftwaredecode/default.nix
new file mode 100644
index 000000000000..5d5c057d724b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/dolbybcsoftwaredecode/default.nix
@@ -0,0 +1,31 @@
+{ lib, fetchurl, stdenv, unzip, fpc }:
+
+stdenv.mkDerivation rec {
+  pname = "dolbybcsoftwaredecode";
+  version = "april-2018";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/dolbybcsoftwaredecode/April-2018/SourceCode.zip";
+    sha256 = "sha256-uLcsRIpwmJlstlGV8I4+/30+D9GDpUt7DOIP/GkXWp4=";
+  };
+
+  nativeBuildInputs = [ unzip fpc ];
+  buildPhase = ''
+    fpc DolbyBi64.PP
+  '';
+  installPhase = ''
+    mkdir -p $out/bin
+    cp DolbyBi64 $out/bin/
+  '';
+
+  meta = with lib; {
+    description = "A Dolby B & C software decoder";
+    homepage = "https://sourceforge.net/projects/dolbybcsoftwaredecode/";
+    maintainers = with maintainers; [ lorenz ];
+
+    # Project is has source code available, but has no explicit license.
+    # I asked upstream to assign a license, so maybe this can be free
+    # in the future, but for now let's play it safe and make it unfree.
+    license = lib.licenses.unfree;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/dragonfly-reverb/default.nix b/nixpkgs/pkgs/applications/audio/dragonfly-reverb/default.nix
index 4c62e6a8b6ad..59494587157c 100644
--- a/nixpkgs/pkgs/applications/audio/dragonfly-reverb/default.nix
+++ b/nixpkgs/pkgs/applications/audio/dragonfly-reverb/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "dragonfly-reverb";
-  version = "3.2.6";
+  version = "3.2.10";
 
   src = fetchFromGitHub {
     owner = "michaelwillis";
     repo = "dragonfly-reverb";
     rev = version;
-    sha256 = "sha256-hTapy/wXt1rRZVdkx2RDW8LS/DcY30p+WaAWgemGqVo=";
+    sha256 = "sha256-YXJ4U5J8Za+DlXvp6QduvCHIVC2eRJ3+I/KPihCaIoY=";
     fetchSubmodules = true;
   };
 
diff --git a/nixpkgs/pkgs/applications/audio/drumgizmo/default.nix b/nixpkgs/pkgs/applications/audio/drumgizmo/default.nix
index 71841a616a35..d6f468dbc563 100644
--- a/nixpkgs/pkgs/applications/audio/drumgizmo/default.nix
+++ b/nixpkgs/pkgs/applications/audio/drumgizmo/default.nix
@@ -3,12 +3,12 @@
 }:
 
 stdenv.mkDerivation rec {
-  version = "0.9.19";
+  version = "0.9.20";
   pname = "drumgizmo";
 
   src = fetchurl {
     url = "https://www.drumgizmo.org/releases/${pname}-${version}/${pname}-${version}.tar.gz";
-    sha256 = "18x28vhif0c97xz02k22xwqxxig6fi6j0356mlz2vf7vb25z69kl";
+    sha256 = "sha256-AF8gQLiB29j963uI84TyNHIC0qwEWOCqmZIUWGq8V2o=";
   };
 
   configureFlags = [ "--enable-lv2" ];
diff --git a/nixpkgs/pkgs/applications/audio/eartag/default.nix b/nixpkgs/pkgs/applications/audio/eartag/default.nix
new file mode 100644
index 000000000000..ee76e8ecb282
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/eartag/default.nix
@@ -0,0 +1,80 @@
+{ stdenv
+, lib
+, fetchFromGitLab
+, meson
+, ninja
+, pkg-config
+, wrapGAppsHook4
+, libadwaita
+, gettext
+, glib
+, gobject-introspection
+, desktop-file-utils
+, appstream-glib
+, gtk4
+, librsvg
+, python3Packages
+}:
+
+python3Packages.buildPythonApplication rec {
+  pname = "eartag";
+  version = "0.4.0";
+  format = "other";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.gnome.org";
+    owner = "knuxify";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-4Kk/+iQNRqba5W/AdPlZ17Siwyy+WQuRYCb7M68S71I=";
+  };
+
+  postPatch = ''
+    chmod +x ./build-aux/meson/postinstall.py
+    patchShebangs ./build-aux/meson/postinstall.py
+    substituteInPlace ./build-aux/meson/postinstall.py \
+      --replace "gtk-update-icon-cache" "gtk4-update-icon-cache"
+  '';
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    glib
+    desktop-file-utils
+    appstream-glib
+    pkg-config
+    gettext
+    gobject-introspection
+    wrapGAppsHook4
+  ] ++ lib.optional stdenv.isDarwin gtk4; # for gtk4-update-icon-cache
+
+  buildInputs = [
+    librsvg
+    libadwaita
+  ];
+
+  propagatedBuildInputs = with python3Packages; [
+    pygobject3
+    eyeD3
+    pillow
+    mutagen
+    pytaglib
+    python-magic
+    pyacoustid
+  ];
+
+  dontWrapGApps = true;
+  preFixup = ''
+    makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
+  '';
+
+  meta = with lib; {
+    homepage = "https://gitlab.gnome.org/knuxify/eartag";
+    description = "Simple music tag editor";
+    # This seems to be using ICU license but we're flagging it to MIT license
+    # since ICU license is a modified version of MIT and to prevent it from
+    # being incorrectly identified as unfree software.
+    license = licenses.mit;
+    maintainers = with maintainers; [ foo-dogsquared ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/easyeffects/default.nix b/nixpkgs/pkgs/applications/audio/easyeffects/default.nix
index aa3162df9187..b9dd321f2963 100644
--- a/nixpkgs/pkgs/applications/audio/easyeffects/default.nix
+++ b/nixpkgs/pkgs/applications/audio/easyeffects/default.nix
@@ -3,9 +3,11 @@
 , desktop-file-utils
 , fetchFromGitHub
 , calf
+, fftw
 , fftwFloat
-, fmt_8
+, fmt_9
 , glib
+, gsl
 , gtk4
 , itstool
 , libadwaita
@@ -23,7 +25,6 @@
 , nlohmann_json
 , pipewire
 , pkg-config
-, python3
 , rnnoise
 , rubberband
 , speexdsp
@@ -35,13 +36,13 @@
 
 stdenv.mkDerivation rec {
   pname = "easyeffects";
-  version = "6.2.8";
+  version = "7.0.4";
 
   src = fetchFromGitHub {
     owner = "wwmm";
     repo = "easyeffects";
     rev = "v${version}";
-    sha256 = "sha256-iADECt0m74Irm3JEQgZVLCr6Z2SKATAh9SvPwzd7HCo=";
+    hash = "sha256-JaqwzCWVnvFzzGHnmzYwe3occ9iw7s9xCH54eVKEuOs=";
   };
 
   nativeBuildInputs = [
@@ -50,14 +51,15 @@ stdenv.mkDerivation rec {
     meson
     ninja
     pkg-config
-    python3
     wrapGAppsHook4
   ];
 
   buildInputs = [
+    fftw
     fftwFloat
-    fmt_8
+    fmt_9
     glib
+    gsl
     gtk4
     libadwaita
     libbs2b
@@ -76,11 +78,6 @@ stdenv.mkDerivation rec {
     zita-convolver
   ];
 
-  postPatch = ''
-    chmod +x meson_post_install.py
-    patchShebangs meson_post_install.py
-  '';
-
   preFixup =
     let
       lv2Plugins = [
@@ -106,8 +103,7 @@ stdenv.mkDerivation rec {
     description = "Audio effects for PipeWire applications.";
     homepage = "https://github.com/wwmm/easyeffects";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ jtojnar ];
+    maintainers = with maintainers; [ ];
     platforms = platforms.linux;
-    badPlatforms = [ "aarch64-linux" ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/ebumeter/default.nix b/nixpkgs/pkgs/applications/audio/ebumeter/default.nix
index 9ebcbec001d0..9c00f3dfcb5e 100644
--- a/nixpkgs/pkgs/applications/audio/ebumeter/default.nix
+++ b/nixpkgs/pkgs/applications/audio/ebumeter/default.nix
@@ -4,11 +4,11 @@
 
 stdenv.mkDerivation rec {
   pname = "ebumeter";
-  version = "0.4.2";
+  version = "0.5.1";
 
   src = fetchurl {
-    url = "https://kokkinizita.linuxaudio.org/linuxaudio/downloads/${pname}-${version}.tar.bz2";
-    sha256 = "1wm9j1phmpicrp7jdsvdbc3mghdd92l61yl9qbps0brq2ljjyd5s";
+    url = "https://kokkinizita.linuxaudio.org/linuxaudio/downloads/${pname}-${version}.tar.xz";
+    hash = "sha256-U2ZpNfvy+X1RdA9Q4gvFYzAxlgc6kYjJpQ/0sEX0A4I=";
   };
 
   buildInputs = [
diff --git a/nixpkgs/pkgs/applications/audio/eflite/default.nix b/nixpkgs/pkgs/applications/audio/eflite/default.nix
index 0c48c582c4fc..776698a06d0d 100644
--- a/nixpkgs/pkgs/applications/audio/eflite/default.nix
+++ b/nixpkgs/pkgs/applications/audio/eflite/default.nix
@@ -36,7 +36,7 @@ stdenv.mkDerivation rec {
   CFLAGS = lib.optionalString debug " -DDEBUG=2";
 
   meta = {
-    homepage = "http://eflite.sourceforge.net";
+    homepage = "https://eflite.sourceforge.net";
     description = "Speech server for screen readers";
     longDescription = ''
       EFlite is a speech server for Emacspeak and other screen
diff --git a/nixpkgs/pkgs/applications/audio/eq10q/default.nix b/nixpkgs/pkgs/applications/audio/eq10q/default.nix
index ba0715eb1dfb..84c8333d1857 100644
--- a/nixpkgs/pkgs/applications/audio/eq10q/default.nix
+++ b/nixpkgs/pkgs/applications/audio/eq10q/default.nix
@@ -44,7 +44,7 @@ stdenv.mkDerivation rec {
       64 bits floating point internal audio processing.
       Nice GUI with powerful metering for every plugin.
     '';
-    homepage = "http://eq10q.sourceforge.net/";
+    homepage = "https://eq10q.sourceforge.net/";
     license = lib.licenses.gpl3;
     maintainers = [ lib.maintainers.magnetophon ];
     platforms = lib.platforms.linux;
diff --git a/nixpkgs/pkgs/applications/audio/espeak-ng/default.nix b/nixpkgs/pkgs/applications/audio/espeak-ng/default.nix
index 6458d7188ae1..d53c0ac1caff 100644
--- a/nixpkgs/pkgs/applications/audio/espeak-ng/default.nix
+++ b/nixpkgs/pkgs/applications/audio/espeak-ng/default.nix
@@ -1,18 +1,33 @@
-{ stdenv, lib, fetchFromGitHub, autoconf, automake, which, libtool, pkg-config
-, ronn, substituteAll
-, mbrolaSupport ? true, mbrola
-, pcaudiolibSupport ? true, pcaudiolib
-, sonicSupport ? true, sonic }:
+{ stdenv
+, lib
+, fetchFromGitHub
+, autoconf
+, automake
+, which
+, libtool
+, pkg-config
+, ronn
+, substituteAll
+, buildPackages
+, mbrolaSupport ? true
+, mbrola
+, pcaudiolibSupport ? true
+, pcaudiolib
+, sonicSupport ? true
+, sonic
+, alsa-plugins
+, makeWrapper
+}:
 
 stdenv.mkDerivation rec {
   pname = "espeak-ng";
-  version = "1.50";
+  version = "1.51.1";
 
   src = fetchFromGitHub {
     owner = "espeak-ng";
     repo = "espeak-ng";
     rev = version;
-    sha256 = "0jkqhf2h94vbqq7mg7mmm23bq372fa7mdk941my18c3vkldcir1b";
+    hash = "sha256-aAJ+k+kkOS6k835mEW7BvgAIYGhUHxf7Q4P5cKO8XTk=";
   };
 
   patches = lib.optionals mbrolaSupport [
@@ -23,11 +38,11 @@ stdenv.mkDerivation rec {
     })
   ];
 
-  nativeBuildInputs = [ autoconf automake which libtool pkg-config ronn ];
+  nativeBuildInputs = [ autoconf automake which libtool pkg-config ronn makeWrapper ];
 
   buildInputs = lib.optional mbrolaSupport mbrola
-             ++ lib.optional pcaudiolibSupport pcaudiolib
-             ++ lib.optional sonicSupport sonic;
+    ++ lib.optional pcaudiolibSupport pcaudiolib
+    ++ lib.optional sonicSupport sonic;
 
   preConfigure = "./autogen.sh";
 
@@ -35,14 +50,18 @@ stdenv.mkDerivation rec {
     "--with-mbrola=${if mbrolaSupport then "yes" else "no"}"
   ];
 
-  # Current release lacks dependencies on local espeak-ng:
-  #  cd dictsource && ESPEAK_DATA_PATH=/build/espeak-ng LD_LIBRARY_PATH=../src: ../src/espeak-ng --compile=yue && cd ..
-  #  bash: line 1: ../src/espeak-ng: No such file or directory
-  # Should be fixed in next release: https://github.com/espeak-ng/espeak-ng/pull/1029
-  enableParallelBuilding = false;
+  # ref https://github.com/void-linux/void-packages/blob/3cf863f894b67b3c93e23ac7830ca46b697d308a/srcpkgs/espeak-ng/template#L29-L31
+  postConfigure = lib.optionalString (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
+    substituteInPlace Makefile \
+      --replace 'ESPEAK_DATA_PATH=$(CURDIR) src/espeak-ng' 'ESPEAK_DATA_PATH=$(CURDIR) ${lib.getExe buildPackages.espeak-ng}' \
+      --replace 'espeak-ng-data/%_dict: src/espeak-ng' 'espeak-ng-data/%_dict: ${lib.getExe buildPackages.espeak-ng}' \
+      --replace '../src/espeak-ng --compile' "${lib.getExe buildPackages.espeak-ng} --compile"
+  '';
 
   postInstall = lib.optionalString stdenv.isLinux ''
     patchelf --set-rpath "$(patchelf --print-rpath $out/bin/espeak-ng)" $out/bin/speak-ng
+    wrapProgram $out/bin/espeak-ng \
+      --set ALSA_PLUGIN_DIR ${alsa-plugins}/lib/alsa-lib
   '';
 
   passthru = {
diff --git a/nixpkgs/pkgs/applications/audio/espeak/default.nix b/nixpkgs/pkgs/applications/audio/espeak/default.nix
index e5579175bbb7..7164cb5fd3e0 100644
--- a/nixpkgs/pkgs/applications/audio/espeak/default.nix
+++ b/nixpkgs/pkgs/applications/audio/espeak/default.nix
@@ -19,9 +19,9 @@ stdenv.mkDerivation rec {
   prePatch = ''
     sed -e s,/bin/ln,ln,g -i src/Makefile
     sed -e 's,^CXXFLAGS=-O2,CXXFLAGS=-O2 -D PATH_ESPEAK_DATA=\\\"$(DATADIR)\\\",' -i src/Makefile
-  '' + (if portaudio.api_version == 19 then ''
+  '' + (lib.optionalString (portaudio.api_version == 19) ''
     cp src/portaudio19.h src/portaudio.h
-  '' else "");
+  '');
 
   configurePhase = ''
     cd src
@@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Compact open source software speech synthesizer";
-    homepage = "http://espeak.sourceforge.net/";
+    homepage = "https://espeak.sourceforge.net/";
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
   };
diff --git a/nixpkgs/pkgs/applications/audio/espeak/edit.nix b/nixpkgs/pkgs/applications/audio/espeak/edit.nix
index 2240a8561164..6c4da056c848 100644
--- a/nixpkgs/pkgs/applications/audio/espeak/edit.nix
+++ b/nixpkgs/pkgs/applications/audio/espeak/edit.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, pkg-config, unzip, portaudio, wxGTK, sox }:
+{ lib, stdenv, fetchurl, pkg-config, unzip, portaudio, wxGTK32, sox }:
 
 stdenv.mkDerivation rec {
   pname = "espeakedit";
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [ pkg-config unzip ];
-  buildInputs = [ portaudio wxGTK ];
+  buildInputs = [ portaudio wxGTK32 ];
 
   # TODO:
   # Uhm, seems like espeakedit still wants espeak-data/ in $HOME, even thought
@@ -27,6 +27,7 @@ stdenv.mkDerivation rec {
     ./espeakedit-configurable-sox-path.patch
     ./espeakedit-configurable-path-espeak-data.patch
     ./espeakedit-gcc6.patch
+    ./espeakedit-wxgtk30.patch
   ];
 
   postPatch = ''
@@ -54,7 +55,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Phoneme editor for espeak";
-    homepage = "http://espeak.sourceforge.net/";
+    homepage = "https://espeak.sourceforge.net/";
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
   };
diff --git a/nixpkgs/pkgs/applications/audio/espeak/espeakedit-wxgtk30.patch b/nixpkgs/pkgs/applications/audio/espeak/espeakedit-wxgtk30.patch
new file mode 100644
index 000000000000..04e578824986
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/espeak/espeakedit-wxgtk30.patch
@@ -0,0 +1,32 @@
+diff -uNr a/src/espeakedit.cpp b/src/espeakedit.cpp
+--- a/src/espeakedit.cpp
++++ b/src/espeakedit.cpp
+@@ -123,7 +126,7 @@ bool MyApp::OnInit(void)
+ {//=====================
+ 
+ int j;
+-wxChar *p;
++const wxChar *p;
+ char param[120];
+ 
+ 
+diff -uNr a/src/spect.cpp b/src/spect.cpp
+--- a/src/spect.cpp
++++ b/src/spect.cpp
+@@ -1,6 +1,7 @@
+ /***************************************************************************
+  *   Copyright (C) 2005 to 2007 by Jonathan Duddington                     *
+  *   email: jonsd@users.sourceforge.net                                    *
++ *   Copyright (C) 2013 by Reece H. Dunn                                   *
+  *                                                                         *
+  *   This program is free software; you can redistribute it and/or modify  *
+  *   it under the terms of the GNU General Public License as published by  *
+@@ -92,6 +93,8 @@ float SpectTilt(int value, int freq)
+ 
+ 
+ SpectFrame::SpectFrame(SpectFrame *copy)
++	: FONT_SMALL(8,wxSWISS,wxNORMAL,wxNORMAL)
++	, FONT_MEDIUM(9,wxSWISS,wxNORMAL,wxNORMAL)
+ {//=====================================
+ 
+ 	int  ix;
diff --git a/nixpkgs/pkgs/applications/audio/exact-audio-copy/default.nix b/nixpkgs/pkgs/applications/audio/exact-audio-copy/default.nix
new file mode 100644
index 000000000000..bd5e55bc2106
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/exact-audio-copy/default.nix
@@ -0,0 +1,86 @@
+{ lib
+, stdenv
+, fetchurl
+, makeDesktopItem
+, imagemagick
+, p7zip
+, wine
+, writeShellScriptBin
+, symlinkJoin
+, use64 ? false
+}:
+
+let
+  pname = "exact-audio-copy";
+  version = "1.6.0";
+
+  eac_exe = fetchurl {
+    url = "http://www.exactaudiocopy.de/eac-${lib.versions.majorMinor version}.exe";
+    sha256 = "8291d33104ebab2619ba8d85744083e241330a286f5bd7d54c7b0eb08f2b84c1";
+  };
+
+  cygwin_dll = fetchurl {
+    url = "https://cygwin.com/snapshots/x86/cygwin1-20220301.dll.xz";
+    sha256 = "0zxn0r5q69fhciy0mrplhxj1hxwy3sq4k1wdy6n6kyassm4zyz1x";
+  };
+
+  patched_eac = stdenv.mkDerivation {
+    pname = "patched_eac";
+    inherit version;
+
+    nativeBuildInputs = [
+      imagemagick
+      p7zip
+    ];
+
+    buildCommand = ''
+      mkdir -p $out
+      _tmp=$(mktemp -d)
+      cd $_tmp
+      7z x -aoa ${eac_exe}
+      chmod -R 755 .
+      cp ${cygwin_dll} cygwin1.dll.xz
+      xz --decompress cygwin1.dll.xz
+      mv cygwin1.dll CDRDAO/
+      cp -r * $out
+      7z x EAC.exe
+      convert .rsrc/1033/ICON/29.ico -thumbnail 128x128 -alpha on -background none -flatten "$out/eac.ico.128.png"
+    '';
+  };
+
+  wrapper = writeShellScriptBin pname ''
+    export WINEPREFIX="''${EXACT_AUDIO_COPY_HOME:-"''${XDG_DATA_HOME:-"''${HOME}/.local/share"}/exact-audio-copy"}/wine"
+    export WINEARCH=${if use64 then "win64" else "win32"}
+    export WINEDLLOVERRIDES="mscoree=" # disable mono
+    export WINEDEBUG=-all
+    if [ ! -d "$WINEPREFIX" ] ; then
+      mkdir -p "$WINEPREFIX"
+      ${wine}/bin/wineboot -u
+    fi
+
+    exec ${wine}/bin/wine ${patched_eac}/EAC.exe "$@"
+  '';
+
+  desktopItem = makeDesktopItem {
+    name = pname;
+    exec = pname;
+    comment = "Audio Grabber for CDs";
+    desktopName = "Exact Audio Copy";
+    categories = [ "Audio" "AudioVideo" ];
+    icon = "${patched_eac}/eac.ico.128.png";
+  };
+in
+symlinkJoin {
+  name = "${pname}-${version}";
+
+  paths = [ wrapper desktopItem ];
+
+  meta = with lib; {
+    description = "A precise CD audio grabber for creating perfect quality rips using CD and DVD drives";
+    homepage = "https://www.exactaudiocopy.de/";
+    changelog = "https://www.exactaudiocopy.de/en/index.php/resources/whats-new/whats-new/";
+    license = licenses.unfree;
+    maintainers = [ maintainers.brendanreis ];
+    platforms = wine.meta.platforms;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/exaile/default.nix b/nixpkgs/pkgs/applications/audio/exaile/default.nix
index 5ac4e1cbf4b9..c6000c86c639 100644
--- a/nixpkgs/pkgs/applications/audio/exaile/default.nix
+++ b/nixpkgs/pkgs/applications/audio/exaile/default.nix
@@ -23,20 +23,14 @@
 
 stdenv.mkDerivation rec {
   pname = "exaile";
-  version = "4.1.1";
+  version = "4.1.2";
 
   src = fetchFromGitHub {
     owner = "exaile";
     repo = pname;
     rev = version;
-    sha256 = "0s29lm0i4slgaw5l5s9a2zx0b83xac43rnil5cvyi210dxm5s048";
+    sha256 = "sha256-GZyCuPy57NhGwgbLMrRKW5xmc1Udon7WtsrD4upviuQ=";
   };
-  patches = [
-    (fetchpatch {
-      url = "https://github.com/exaile/exaile/pull/751.patch";
-      sha256 = "sha256-jCJh85Z3HQcyS4ntQP5HwYJgM7WNHcWzjf0BdNJitsM=";
-    })
-  ];
 
   nativeBuildInputs = [
     gobject-introspection
@@ -75,8 +69,7 @@ stdenv.mkDerivation rec {
   ++ lib.optional podcastSupport python3.pkgs.feedparser
   ++ lib.optional wikipediaSupport webkitgtk;
 
-  checkInputs = with python3.pkgs; [
-    mox3
+  nativeCheckInputs = with python3.pkgs; [
     pytest
   ];
 
diff --git a/nixpkgs/pkgs/applications/audio/famistudio/default.nix b/nixpkgs/pkgs/applications/audio/famistudio/default.nix
index 002ddd78abb8..81a2646ad74a 100644
--- a/nixpkgs/pkgs/applications/audio/famistudio/default.nix
+++ b/nixpkgs/pkgs/applications/audio/famistudio/default.nix
@@ -3,27 +3,31 @@
 , fetchzip
 , autoPatchelfHook
 , makeWrapper
-, alsa-lib
-, gtk-sharp-2_0
-, glib
-, gtk2
 , mono
 , openal
+, libGL
 }:
 
 stdenv.mkDerivation rec {
   pname = "famistudio";
-  version = "3.3.1";
+  version = "4.0.6";
 
   src = fetchzip {
     url = "https://github.com/BleuBleu/FamiStudio/releases/download/${version}/FamiStudio${lib.strings.concatStrings (lib.splitVersion version)}-LinuxAMD64.zip";
     stripRoot = false;
-    sha256 = "sha256-Bgry+cRsmC+aBff6EaeHoGBygpiZS5SmgICPU32zO+c=";
+    sha256 = "sha256-Se9EIQTjZQM5qqzlEB4hGVRHDFdu6GecNGpw9gYMbW4=";
   };
 
-  nativeBuildInputs = [ autoPatchelfHook makeWrapper ];
+  nativeBuildInputs = [
+    autoPatchelfHook
+    makeWrapper
+  ];
 
-  buildInputs = [ alsa-lib gtk-sharp-2_0 glib gtk2 mono openal ];
+  buildInputs = [
+    mono
+    openal
+    libGL
+  ];
 
   dontConfigure = true;
   dontBuild = true;
@@ -36,16 +40,11 @@ stdenv.mkDerivation rec {
 
     makeWrapper ${mono}/bin/mono $out/bin/famistudio \
       --add-flags $out/lib/famistudio/FamiStudio.exe \
-      --prefix MONO_GAC_PREFIX : ${gtk-sharp-2_0} \
-      --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ glib gtk2 gtk-sharp-2_0 ]}
+      --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libGL ]}
 
-    # Fails to find openal32.dll on its own, needs abit of help
+    # Bundled openal lib freezes the application
     rm $out/lib/famistudio/libopenal32.so
-    cat <<EOF >$out/lib/famistudio/OpenTK.dll.config
-    <configuration>
-      <dllmap dll="openal32.dll" target="${openal}/lib/libopenal.so"/>
-    </configuration>
-    EOF
+    ln -s ${openal}/lib/libopenal.so $out/lib/famistudio/libopenal32.so
 
     runHook postInstall
   '';
diff --git a/nixpkgs/pkgs/applications/audio/faust/faust2.nix b/nixpkgs/pkgs/applications/audio/faust/faust2.nix
index 32bcbee2e6cd..4ecf879460cd 100644
--- a/nixpkgs/pkgs/applications/audio/faust/faust2.nix
+++ b/nixpkgs/pkgs/applications/audio/faust/faust2.nix
@@ -1,4 +1,5 @@
-{ lib, stdenv
+{ lib
+, stdenv
 , coreutils
 , fetchFromGitHub
 , makeWrapper
@@ -14,19 +15,21 @@
 , p11-kit
 , vim
 , which
+, ncurses
+, fetchpatch
 }:
 
 with lib.strings;
 
 let
 
-  version = "2.41.1";
+  version = "2.59.6";
 
   src = fetchFromGitHub {
     owner = "grame-cncm";
     repo = "faust";
     rev = version;
-    sha256 = "sha256-x0nBWyILrNJijs7CIvRrgYG6vgB3UlxLj9i7E4cHr9I=";
+    sha256 = "sha256-m6dimBxI9C3KDhUxbJAn2Pf9z+LRahjrzD34W/bf1XA=";
     fetchSubmodules = true;
   };
 
@@ -34,84 +37,101 @@ let
     homepage = "https://faust.grame.fr/";
     downloadPage = "https://github.com/grame-cncm/faust/";
     license = licenses.gpl2;
-    platforms = platforms.linux;
+    platforms = platforms.unix;
     maintainers = with maintainers; [ magnetophon pmahoney ];
   };
 
-  faust = stdenv.mkDerivation {
+  faust =
+    let ncurses_static = ncurses.override { enableStatic = true; };
+    in stdenv.mkDerivation {
 
-    pname = "faust";
-    inherit version;
+      pname = "faust";
+      inherit version;
 
-    inherit src;
+      inherit src;
 
-    nativeBuildInputs = [ makeWrapper pkg-config 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
+        ncurses_static
+      ];
+
+      patches = [
+        # make preset management thread safe
+        # needed for magnetophonDSP.VoiceOfFaust
+        # see: https://github.com/grame-cncm/faust/issues/899
+        (fetchpatch {
+          url = "https://github.com/grame-cncm/faust/commit/a1c3a515abbcafea0a6e4e2ec7ecb0f092de5349.patch";
+          hash = "sha256-1Ndm+CgxvGEbS6TKGggeu9hW7N3pC+d1kluT2vhGzL8=";
+        })
+      ];
+
+      passthru = { inherit wrap wrapWithBuildEnv faust2ApplBase; };
+
+      preConfigure = ''
+        cd build
+        sed -i 's@LIBNCURSES_PATH ?= .*@LIBNCURSES_PATH ?= ${ncurses_static}/lib/libncurses.a@'  Make.llvm.static
+        substituteInPlace Make.llvm.static \
+          --replace 'mkdir -p $@ && cd $@ && ar -x ../../$<' 'mkdir -p $@ && cd $@ && ar -x ../source/build/lib/libfaust.a && cd ../source/build/'
+        substituteInPlace Make.llvm.static \
+          --replace 'rm -rf $(TMP)' ' '
+      '';
 
+      cmakeFlags = [ "-C../backends/all.cmake" "-C../targets/all.cmake" ];
 
-    passthru = {
-      inherit wrap wrapWithBuildEnv;
-    };
-
+      postInstall = ''
+        # syntax error when eval'd directly
+        pattern="faust2!(*@(atomsnippets|graph|graphviewer|md|plot|sig|sigviewer|svg))"
+        (shopt -s extglob; rm "$out"/bin/$pattern)
+      '';
 
-    preConfigure = ''
-      cd build
-    '';
-
-    cmakeFlags = [
-      "-C../backends/all.cmake"
-      "-C../targets/all.cmake"
-    ];
-
-    postInstall = ''
-      # syntax error when eval'd directly
-      pattern="faust2!(*@(atomsnippets|graph|graphviewer|md|plot|sig|sigviewer|svg))"
-      (shopt -s extglob; rm "$out"/bin/$pattern)
-    '';
-
-    postFixup = ''
-      # The 'faustoptflags' is 'source'd into other faust scripts and
-      # not used as an executable, so patch 'uname' usage directly
-      # rather than use makeWrapper.
-      substituteInPlace "$out"/bin/faustoptflags \
-        --replace uname "${coreutils}/bin/uname"
-
-      # wrapper for scripts that don't need faust.wrap*
-      for script in "$out"/bin/faust2*; do
-        wrapProgram "$script" \
-          --prefix PATH : "$out"/bin
-      done
-    '';
-
-    meta = meta // {
-      description = "A functional programming language for realtime audio signal processing";
-      longDescription = ''
-        FAUST (Functional Audio Stream) is a functional programming
-        language specifically designed for real-time signal processing
-        and synthesis. FAUST targets high-performance signal processing
-        applications and audio plug-ins for a variety of platforms and
-        standards.
-        The Faust compiler translates DSP specifications into very
-        efficient C++ code. Thanks to the notion of architecture,
-        FAUST programs can be easily deployed on a large variety of
-        audio platforms and plugin formats (jack, alsa, ladspa, maxmsp,
-        puredata, csound, supercollider, pure, vst, coreaudio) without
-        any change to the FAUST code.
-
-        This package has just the compiler, libraries, and headers.
-        Install faust2* for specific faust2appl scripts.
+      postFixup = ''
+        # The 'faustoptflags' is 'source'd into other faust scripts and
+        # not used as an executable, so patch 'uname' usage directly
+        # rather than use makeWrapper.
+        substituteInPlace "$out"/bin/faustoptflags \
+          --replace uname "${coreutils}/bin/uname"
+
+        # wrapper for scripts that don't need faust.wrap*
+        for script in "$out"/bin/faust2*; do
+          wrapProgram "$script" \
+            --prefix PATH : "$out"/bin
+        done
       '';
-    };
 
-  };
+      meta = meta // {
+        description =
+          "A functional programming language for realtime audio signal processing";
+        longDescription = ''
+          FAUST (Functional Audio Stream) is a functional programming
+          language specifically designed for real-time signal processing
+          and synthesis. FAUST targets high-performance signal processing
+          applications and audio plug-ins for a variety of platforms and
+          standards.
+          The Faust compiler translates DSP specifications into very
+          efficient C++ code. Thanks to the notion of architecture,
+          FAUST programs can be easily deployed on a large variety of
+          audio platforms and plugin formats (jack, alsa, ladspa, maxmsp,
+          puredata, csound, supercollider, pure, vst, coreaudio) without
+          any change to the FAUST code.
+
+          This package has just the compiler, libraries, and headers.
+          Install faust2* for specific faust2appl scripts.
+        '';
+      };
+
+    };
 
   # Default values for faust2appl.
   faust2ApplBase =
-    { baseName
-    , dir ? "tools/faust2appls"
-    , scripts ? [ baseName ]
-    , ...
-    }@args:
+    { baseName, dir ? "tools/faust2appls", scripts ? [ baseName ], ... }@args:
 
     args // {
       name = "${baseName}-${version}";
@@ -141,7 +161,8 @@ let
       '';
 
       meta = meta // {
-        description = "The ${baseName} script, part of faust functional programming language for realtime audio signal processing";
+        description =
+          "The ${baseName} script, part of faust functional programming language for realtime audio signal processing";
       };
     };
 
@@ -161,11 +182,7 @@ let
   #
   # The build input 'faust' is automatically added to the
   # propagatedBuildInputs.
-  wrapWithBuildEnv =
-    { baseName
-    , propagatedBuildInputs ? [ ]
-    , ...
-    }@args:
+  wrapWithBuildEnv = { baseName, propagatedBuildInputs ? [ ], ... }@args:
 
     stdenv.mkDerivation ((faust2ApplBase args) // {
 
@@ -205,26 +222,25 @@ let
   # simply need to be wrapped with some dependencies on PATH.
   #
   # The build input 'faust' is automatically added to the PATH.
-  wrap =
-    { baseName
-    , runtimeInputs ? [ ]
-    , ...
-    }@args:
+  wrap = { baseName, runtimeInputs ? [ ], ... }@args:
 
     let
 
-      runtimePath = concatStringsSep ":" (map (p: "${p}/bin") ([ faust ] ++ runtimeInputs));
+      runtimePath =
+        concatStringsSep ":" (map (p: "${p}/bin") ([ faust ] ++ runtimeInputs));
 
-    in stdenv.mkDerivation ((faust2ApplBase args) // {
+    in
+      stdenv.mkDerivation ((faust2ApplBase args) // {
 
-      nativeBuildInputs = [ makeWrapper ];
+        nativeBuildInputs = [ makeWrapper ];
 
-      postFixup = ''
+        postFixup = ''
         for script in "$out"/bin/*; do
           wrapProgram "$script" --prefix PATH : "${runtimePath}"
         done
       '';
 
-    });
+      });
 
-in faust
+in
+faust
diff --git a/nixpkgs/pkgs/applications/audio/faust/faust2sc.nix b/nixpkgs/pkgs/applications/audio/faust/faust2sc.nix
new file mode 100644
index 000000000000..02844773d422
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/faust/faust2sc.nix
@@ -0,0 +1,38 @@
+{ faust
+, baseName ? "faust2sc"
+, supercollider
+, makeWrapper
+, python3
+, stdenv
+}@args:
+let
+  faustDefaults = faust.faust2ApplBase
+    (args // {
+      baseName = "${baseName}.py";
+    });
+in
+stdenv.mkDerivation (faustDefaults // {
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  propagatedBuildInputs = [ python3 faust supercollider ];
+
+  postInstall = ''
+    mv "$out/bin/${baseName}.py" "$out"/bin/${baseName}
+  '';
+
+  postFixup = ''
+    # export parts of the build environment
+    mkdir "$out"/include
+    # until pr #887 is merged and released in faust we need to link the header folders
+    ln -s "${supercollider}"/include/SuperCollider/plugin_interface "$out"/include/plugin_interface
+    ln -s "${supercollider}"/include/SuperCollider/common "$out"/include/common
+    ln -s "${supercollider}"/include/SuperCollider/server "$out"/include/server
+    wrapProgram "$out"/bin/${baseName} \
+      --append-flags "--import-dir ${faust}/share/faust" \
+      --append-flags "--architecture-dir ${faust}/share/faust" \
+      --append-flags "--architecture-dir ${faust}/include" \
+      --append-flags "-p $out" \
+      --prefix PATH : "$PATH"
+  '';
+})
diff --git a/nixpkgs/pkgs/applications/audio/faust/faustlive.nix b/nixpkgs/pkgs/applications/audio/faust/faustlive.nix
index 4ee5ab82e6e4..b393041eeb12 100644
--- a/nixpkgs/pkgs/applications/audio/faust/faustlive.nix
+++ b/nixpkgs/pkgs/applications/audio/faust/faustlive.nix
@@ -5,12 +5,12 @@
 
 stdenv.mkDerivation rec {
   pname = "faustlive";
-  version = "2.5.11";
+  version = "2.5.13";
   src = fetchFromGitHub {
     owner = "grame-cncm";
     repo = "faustlive";
     rev = version;
-    sha256 = "sha256-ldn6st3/iIABjEfAwodOnPrI97DygWbnYmvMktlOgrk=";
+    sha256 = "sha256-Tgb9UYj8mI4JsxA/PaTokm2NzQ14P8cOdKK8KCcnSIQ=";
     fetchSubmodules = true;
   };
 
diff --git a/nixpkgs/pkgs/applications/audio/faustPhysicalModeling/default.nix b/nixpkgs/pkgs/applications/audio/faustPhysicalModeling/default.nix
index 5fd4eb2fb7d3..8eb1f9a4fbe5 100644
--- a/nixpkgs/pkgs/applications/audio/faustPhysicalModeling/default.nix
+++ b/nixpkgs/pkgs/applications/audio/faustPhysicalModeling/default.nix
@@ -1,13 +1,13 @@
 { stdenv, lib, fetchFromGitHub, faust2jaqt, faust2lv2 }:
 stdenv.mkDerivation rec {
   pname = "faustPhysicalModeling";
-  version = "2.41.1";
+  version = "2.59.6";
 
   src = fetchFromGitHub {
     owner = "grame-cncm";
     repo = "faust";
     rev = version;
-    sha256 = "sha256-I5No9J7TLOf++B+lx1RfGY8LBoDAApq/EV8016wH9Hc=";
+    sha256 = "sha256-Z/hAq6JlhlWBzWlodwQW/k9AkozVeMXmbVhkicNZ5os=";
   };
 
   buildInputs = [ faust2jaqt faust2lv2 ];
diff --git a/nixpkgs/pkgs/applications/audio/fdkaac/default.nix b/nixpkgs/pkgs/applications/audio/fdkaac/default.nix
index 7aef140da651..2350bde0bd6a 100644
--- a/nixpkgs/pkgs/applications/audio/fdkaac/default.nix
+++ b/nixpkgs/pkgs/applications/audio/fdkaac/default.nix
@@ -1,14 +1,14 @@
-{ lib, stdenv, autoreconfHook, fetchFromGitHub, fdk_aac }:
+{ lib, stdenv, autoreconfHook, fetchFromGitHub, fetchpatch, fdk_aac }:
 
 stdenv.mkDerivation rec {
   pname = "fdkaac";
-  version = "1.0.3";
+  version = "1.0.5";
 
   src = fetchFromGitHub {
     owner = "nu774";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-7a8JlQtMGuMWgU/HePd31/EvtBNc2tBMz8V8NQivuNo=";
+    sha256 = "sha256-GYvI9T5Bv2OcK0hMAQE7/tE6ajDyqkaak66b3Hc0Fls=";
   };
 
   nativeBuildInputs = [ autoreconfHook ];
diff --git a/nixpkgs/pkgs/applications/audio/fire/0001-Remove-FetchContent-usage.patch b/nixpkgs/pkgs/applications/audio/fire/0001-Remove-FetchContent-usage.patch
new file mode 100644
index 000000000000..35f4c8252e5e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/fire/0001-Remove-FetchContent-usage.patch
@@ -0,0 +1,62 @@
+From fbf2ddd872db6a3640bc7d693356b99be9dd70f5 Mon Sep 17 00:00:00 2001
+From: OPNA2608 <christoph.neidahl@gmail.com>
+Date: Thu, 18 Aug 2022 20:12:07 +0200
+Subject: [PATCH] Remove FetchContent usage
+
+---
+ CMakeLists.txt | 27 +++++----------------------
+ 1 file changed, 5 insertions(+), 22 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 84c66a7..5234903 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -30,20 +30,9 @@ project(Fire VERSION 0.9.9)
+ # or
+ # add_subdirectory(JUCE)                    # If you've put JUCE in a subdirectory called JUCE
+ 
+-include(FetchContent)
+-FetchContent_Declare(
+-        JUCE
+-        GIT_REPOSITORY https://github.com/juce-framework/JUCE.git
+-        GIT_TAG 7.0.1
+-)
+-FetchContent_MakeAvailable(JUCE)
+-
+-FetchContent_Declare(
+-        readerwriterqueue
+-        GIT_REPOSITORY https://github.com/cameron314/readerwriterqueue
+-        GIT_TAG v1.0.6
+-)
+-FetchContent_MakeAvailable(readerwriterqueue)
++add_subdirectory(JUCE EXCLUDE_FROM_ALL)
++
++add_subdirectory(readerwriterqueue EXCLUDE_FROM_ALL)
+ 
+ # If you are building a VST2 or AAX plugin, CMake needs to be told where to find these SDKs on your
+ # system. This setup should be done before calling `juce_add_plugin`.
+@@ -172,13 +161,7 @@ set(TestFiles
+         test/CatchMain.cpp
+         test/PluginTest.cpp)
+ 
+-# Download the tagged version of Catch2
+-Include(FetchContent)
+-FetchContent_Declare(
+-        Catch2
+-        GIT_REPOSITORY https://github.com/catchorg/Catch2.git
+-        GIT_TAG v2.13.7)
+-FetchContent_MakeAvailable(Catch2)
++add_subdirectory(Catch2 EXCLUDE_FROM_ALL)
+ 
+ # Setup the test executable, again C++ 20 please
+ add_executable(Tests ${TestFiles})
+@@ -199,4 +182,4 @@ source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR}/test PREFIX "" FILES ${TestFiles})
+ # We have to manually provide the source directory here for now
+ # https://github.com/catchorg/Catch2/issues/2026
+ include(${Catch2_SOURCE_DIR}/contrib/Catch.cmake)
+-catch_discover_tests(Tests)
+\ No newline at end of file
++catch_discover_tests(Tests)
+-- 
+2.36.0
+
diff --git a/nixpkgs/pkgs/applications/audio/fire/default.nix b/nixpkgs/pkgs/applications/audio/fire/default.nix
new file mode 100644
index 000000000000..c1ccad191602
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/fire/default.nix
@@ -0,0 +1,119 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, pkg-config
+, catch2
+, libX11
+, libXrandr
+, libXinerama
+, libXext
+, libXcursor
+, freetype
+, alsa-lib
+, Accelerate
+, Cocoa
+, WebKit
+, CoreServices
+, DiscRecording
+, CoreAudioKit
+, MetalKit
+, simd
+}:
+
+let
+  # FetchContent replacement, check CMakeLists.txt for requested versions (Nixpkgs' Catch2 works)
+  readerwriterqueue = fetchFromGitHub {
+    owner = "cameron314";
+    repo = "readerwriterqueue";
+    rev = "v1.0.6";
+    sha256 = "sha256-g7NX7Ucl5GWw3u6TiUOITjhv7492ByTzACtWR0Ph2Jc=";
+  };
+in
+stdenv.mkDerivation rec {
+  pname = "fire";
+  version = "1.0.0.3";
+
+  src = fetchFromGitHub {
+    owner = "jerryuhoo";
+    repo = "Fire";
+    rev = "v${version}";
+    fetchSubmodules = true;
+    sha256 = "sha256-X3pzTrNd0G6BouCDkr3dukQTFDzZ7qblIYxFQActKGE=";
+  };
+
+  patches = [
+    ./0001-Remove-FetchContent-usage.patch
+  ];
+
+  postPatch = ''
+    # 1. Remove hardcoded LTO flags: needs extra setup on Linux,
+    #    possibly broken on Darwin
+    #    https://github.com/NixOS/nixpkgs/issues/19098
+    # 2. Disable automatic copying of built plugins during buildPhase, it defaults
+    #    into user home and we want to have building & installing separated.
+    sed -i \
+      -e '/juce::juce_recommended_lto_flags/d' \
+      -e 's/COPY_PLUGIN_AFTER_BUILD TRUE/COPY_PLUGIN_AFTER_BUILD FALSE/g' \
+      CMakeLists.txt
+  '';
+
+  preConfigure = ''
+    ln -s ${readerwriterqueue} readerwriterqueue
+    ln -s ${catch2.src} Catch2
+  '';
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+  ];
+
+  buildInputs = lib.optionals stdenv.hostPlatform.isLinux [
+    libX11
+    libXrandr
+    libXinerama
+    libXext
+    libXcursor
+    freetype
+    alsa-lib
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
+    Accelerate
+    Cocoa
+    WebKit
+    CoreServices
+    DiscRecording
+    CoreAudioKit
+    MetalKit
+    simd
+  ];
+
+  installPhase = let
+    vst3Dir = "${placeholder "out"}/${if stdenv.hostPlatform.isDarwin then "Library/Audio/Plug-Ins/VST3" else "lib/vst3"}";
+    auDir = "${placeholder "out"}/Library/Audio/Plug-Ins/Components";
+  in ''
+    runHook preInstall
+
+    mkdir -p ${vst3Dir}
+    # Exact path of the build artefact depends on used CMAKE_BUILD_TYPE
+    cp -R Fire_artefacts/*/VST3/* ${vst3Dir}/
+  '' + lib.optionalString stdenv.hostPlatform.isDarwin ''
+    mkdir -p ${auDir}
+    cp -R Fire_artefacts/*/AU/* ${auDir}/
+  '' + ''
+
+    runHook postInstall
+  '';
+
+  # Fails to find fp.h on its own
+  env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isDarwin "-isystem ${CoreServices}/Library/Frameworks/CoreServices.framework/Versions/Current/Frameworks/CarbonCore.framework/Versions/Current/Headers/";
+
+  doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
+
+  meta = with lib; {
+    description = "Multi-band distortion plugin by Wings";
+    homepage = "https://github.com/jerryuhoo/Fire";
+    license = licenses.agpl3Only; # Not clarified if Only or Plus
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ OPNA2608 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/flac/default.nix b/nixpkgs/pkgs/applications/audio/flac/default.nix
index 621804840bf0..be987fccd66e 100644
--- a/nixpkgs/pkgs/applications/audio/flac/default.nix
+++ b/nixpkgs/pkgs/applications/audio/flac/default.nix
@@ -1,24 +1,51 @@
-{ lib, stdenv, fetchurl, fetchpatch, libogg }:
+{ lib
+, stdenv
+, fetchurl
+, cmake
+, pkg-config
+, doxygen
+, graphviz
+, libogg
+}:
 
 stdenv.mkDerivation rec {
   pname = "flac";
-  version = "1.3.4";
+  version = "1.4.2";
 
   src = fetchurl {
     url = "http://downloads.xiph.org/releases/flac/${pname}-${version}.tar.xz";
-    sha256 = "0dz7am8kbc97a6afml1h4yp085274prg8j7csryds8m3fmz61w4g";
+    # Official checksum is published at https://github.com/xiph/flac/releases/tag/${version}
+    sha256 = "sha256-4yLVih9I0j2d049DJnKGX2955zpvnMWl9X/KqD61qOQ=";
   };
 
-  buildInputs = [ libogg ];
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    doxygen
+    graphviz
+  ];
 
-  #doCheck = true; # takes lots of time
+  buildInputs = [
+    libogg
+  ];
+
+  cmakeFlags = lib.optionals (!stdenv.hostPlatform.isStatic) [
+    "-DBUILD_SHARED_LIBS=ON"
+  ];
+
+  CFLAGS = [ "-O3" "-funroll-loops" ];
+  CXXFLAGS = [ "-O3" ];
+
+  # doCheck = true; # takes lots of time
 
   outputs = [ "bin" "dev" "out" "man" "doc" ];
 
   meta = with lib; {
     homepage = "https://xiph.org/flac/";
     description = "Library and tools for encoding and decoding the FLAC lossless audio file format";
+    changelog = "https://xiph.org/flac/changelog.html";
     platforms = platforms.all;
     license = licenses.bsd3;
+    maintainers = with maintainers; [ ruuda ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/flac123/default.nix b/nixpkgs/pkgs/applications/audio/flac123/default.nix
index 09c7b44d92dd..5da071805cad 100644
--- a/nixpkgs/pkgs/applications/audio/flac123/default.nix
+++ b/nixpkgs/pkgs/applications/audio/flac123/default.nix
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
   buildInputs = [ flac libao libogg popt ];
 
   meta = with lib; {
-    homepage = "http://flac-tools.sourceforge.net/";
+    homepage = "https://flac-tools.sourceforge.net/";
     description = "A command-line program for playing FLAC audio files";
     license = licenses.gpl2Plus;
     platforms = platforms.all;
diff --git a/nixpkgs/pkgs/applications/audio/flac2all/default.nix b/nixpkgs/pkgs/applications/audio/flac2all/default.nix
new file mode 100644
index 000000000000..4a6132d39af3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/flac2all/default.nix
@@ -0,0 +1,45 @@
+{ python3Packages, fetchPypi, lib, flac, lame, opusTools, vorbis-tools, ffmpeg }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "flac2all";
+  version = "5.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "OBjlr7cbSx2WOIfZUNwHy5Hpb2Fmh3vmZdc70JiWsiI=";
+  };
+
+  # Not sure why this is needed, but setup.py expects this to be set
+  postPatch = ''
+    echo ${version} > ./flac2all_pkg/version
+  '';
+
+  propagatedBuildInputs = [
+    python3Packages.pyzmq
+  ];
+
+  postInstall = ''
+    wrapProgram $out/bin/flac2all \
+      --set PATH ${lib.makeBinPath [
+        # Hard requirements
+        flac
+        lame
+        # Optional deps depending on encoding types
+        opusTools
+        vorbis-tools
+        ffmpeg
+      ]}
+  '';
+
+  # Has no standard tests, so we verify a few imports instead.
+  doCheck = false;
+  pythonImportsCheck = [ "flac2all_pkg.vorbis" "flac2all_pkg.mp3" ];
+
+  meta = with lib; {
+    description = "Multi process, clustered, FLAC to multi codec audio converter with tagging support";
+    homepage = "https://github.com/ZivaVatra/flac2all";
+    license = licenses.gpl3;
+    # TODO: This has only been tested on Linux, but may work on Mac too.
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/flacon/default.nix b/nixpkgs/pkgs/applications/audio/flacon/default.nix
index 782792086ed1..7bf9d7fb918f 100644
--- a/nixpkgs/pkgs/applications/audio/flacon/default.nix
+++ b/nixpkgs/pkgs/applications/audio/flacon/default.nix
@@ -4,13 +4,13 @@
 
 stdenv.mkDerivation rec {
   pname = "flacon";
-  version = "9.1.0";
+  version = "11.1.0";
 
   src = fetchFromGitHub {
     owner = "flacon";
     repo = "flacon";
     rev = "v${version}";
-    sha256 = "sha256-gchFd3yL0ni0PJ4+mWwR8XCKPpyQOajtO+/A7fnwoeE=";
+    sha256 = "sha256-nAJKTRkx8d53v1tPnu5ARrRoESKh4jUOCcD54bhE8TU=";
   };
 
   nativeBuildInputs = [ cmake pkg-config wrapQtAppsHook ];
diff --git a/nixpkgs/pkgs/applications/audio/fluidsynth/default.nix b/nixpkgs/pkgs/applications/audio/fluidsynth/default.nix
index 45b25ec3d8af..41ee34847a84 100644
--- a/nixpkgs/pkgs/applications/audio/fluidsynth/default.nix
+++ b/nixpkgs/pkgs/applications/audio/fluidsynth/default.nix
@@ -1,26 +1,32 @@
 { stdenv, lib, fetchFromGitHub, buildPackages, pkg-config, cmake
 , alsa-lib, glib, libjack2, libsndfile, libpulseaudio
-, AudioUnit, CoreAudio, CoreMIDI, CoreServices
+, AppKit, AudioUnit, CoreAudio, CoreMIDI, CoreServices
 }:
 
 stdenv.mkDerivation rec {
   pname = "fluidsynth";
-  version = "2.2.8";
+  version = "2.3.2";
 
   src = fetchFromGitHub {
     owner = "FluidSynth";
     repo = "fluidsynth";
     rev = "v${version}";
-    sha256 = "sha256-zJMe2skFeXhrAx9vBcTXWJLfivI/iXyc0JFlNKpBETQ=";
+    sha256 = "sha256-BSJu3jB7b5G2ThXBUHUNnBGl55EXe3nIzdBdgfOWDSM=";
   };
 
+  outputs = [ "out" "dev" "man" ];
+
   nativeBuildInputs = [ buildPackages.stdenv.cc pkg-config cmake ];
 
   buildInputs = [ glib libsndfile libjack2 ]
     ++ lib.optionals stdenv.isLinux [ alsa-lib libpulseaudio ]
-    ++ lib.optionals stdenv.isDarwin [ AudioUnit CoreAudio CoreMIDI CoreServices ];
+    ++ lib.optionals stdenv.isDarwin [ AppKit AudioUnit CoreAudio CoreMIDI CoreServices ];
 
-  cmakeFlags = [ "-Denable-framework=off" ];
+  cmakeFlags = [
+    "-Denable-framework=off"
+    # set CMAKE_INSTALL_NAME_DIR to correct value on darwin
+    "-DCMAKE_INSTALL_LIBDIR=lib"
+  ];
 
   meta = with lib; {
     description = "Real-time software synthesizer based on the SoundFont 2 specifications";
diff --git a/nixpkgs/pkgs/applications/audio/fmit/default.nix b/nixpkgs/pkgs/applications/audio/fmit/default.nix
index 7e376c89d36a..7fcfeb32fd3a 100644
--- a/nixpkgs/pkgs/applications/audio/fmit/default.nix
+++ b/nixpkgs/pkgs/applications/audio/fmit/default.nix
@@ -7,8 +7,6 @@ assert alsaSupport -> alsa-lib != null;
 assert jackSupport -> libjack2 != null;
 assert portaudioSupport -> portaudio != null;
 
-with lib;
-
 mkDerivation rec {
   pname = "fmit";
   version = "1.2.14";
@@ -22,9 +20,9 @@ mkDerivation rec {
 
   nativeBuildInputs = [ qmake itstool wrapQtAppsHook ];
   buildInputs = [ fftw qtbase qtmultimedia ]
-    ++ optionals alsaSupport [ alsa-lib ]
-    ++ optionals jackSupport [ libjack2 ]
-    ++ optionals portaudioSupport [ portaudio ];
+    ++ lib.optionals alsaSupport [ alsa-lib ]
+    ++ lib.optionals jackSupport [ libjack2 ]
+    ++ lib.optionals portaudioSupport [ portaudio ];
 
   postPatch = ''
     substituteInPlace fmit.pro --replace '$$FMITVERSIONGITPRO' '${version}'
@@ -32,13 +30,13 @@ mkDerivation rec {
 
   preConfigure = ''
     qmakeFlags="$qmakeFlags \
-      CONFIG+=${optionalString alsaSupport "acs_alsa"} \
-      CONFIG+=${optionalString jackSupport "acs_jack"} \
-      CONFIG+=${optionalString portaudioSupport "acs_portaudio"} \
+      CONFIG+=${lib.optionalString alsaSupport "acs_alsa"} \
+      CONFIG+=${lib.optionalString jackSupport "acs_jack"} \
+      CONFIG+=${lib.optionalString portaudioSupport "acs_portaudio"} \
       PREFIXSHORTCUT=$out"
   '';
 
-  meta = {
+  meta = with lib; {
     description = "Free Musical Instrument Tuner";
     longDescription = ''
       FMIT is a graphical utility for tuning musical instruments, with error
diff --git a/nixpkgs/pkgs/applications/audio/freac/default.nix b/nixpkgs/pkgs/applications/audio/freac/default.nix
index ef4a6bc21afc..226a26b6c138 100644
--- a/nixpkgs/pkgs/applications/audio/freac/default.nix
+++ b/nixpkgs/pkgs/applications/audio/freac/default.nix
@@ -9,13 +9,13 @@
 
 stdenv.mkDerivation rec {
   pname = "freac";
-  version = "1.1.6";
+  version = "1.1.7";
 
   src = fetchFromGitHub {
     owner = "enzo1982";
     repo = "freac";
     rev = "v${version}";
-    sha256 = "sha256-PDFc/RhxIe6M3lfVHE1QmJnu5Sy+q/yrXrXPV/8X51o=";
+    sha256 = "sha256-bHoRxxhSM7ipRkiBG7hEa1Iw8Z3tOHQ/atngC/3X1a4=";
   };
 
   buildInputs = [
diff --git a/nixpkgs/pkgs/applications/audio/freewheeling/default.nix b/nixpkgs/pkgs/applications/audio/freewheeling/default.nix
index b7afb0d57a03..531352d0ed94 100644
--- a/nixpkgs/pkgs/applications/audio/freewheeling/default.nix
+++ b/nixpkgs/pkgs/applications/audio/freewheeling/default.nix
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
       configureFlags = oldAttrs.configureFlags ++ [ "--enable-openssl-compatibility" ];
     }))
   ];
-  NIX_CFLAGS_COMPILE = toString
+  env.NIX_CFLAGS_COMPILE = toString
     (makeSDLFlags [ SDL SDL_ttf SDL_gfx ] ++ [ "-I${libxml2.dev}/include/libxml2" ]);
 
   hardeningDisable = [ "format" ];
@@ -44,7 +44,7 @@ stdenv.mkDerivation rec {
         software, released under the GNU GPL license.
     '' ;
 
-    homepage = "http://freewheeling.sourceforge.net";
+    homepage = "https://freewheeling.sourceforge.net";
     license = lib.licenses.gpl2;
     maintainers = [ lib.maintainers.sepi ];
     platforms = lib.platforms.linux;
diff --git a/nixpkgs/pkgs/applications/audio/ft2-clone/default.nix b/nixpkgs/pkgs/applications/audio/ft2-clone/default.nix
index f6a1ef821b5d..845e7f248a73 100644
--- a/nixpkgs/pkgs/applications/audio/ft2-clone/default.nix
+++ b/nixpkgs/pkgs/applications/audio/ft2-clone/default.nix
@@ -13,13 +13,13 @@
 
 stdenv.mkDerivation rec {
   pname = "ft2-clone";
-  version = "1.56";
+  version = "1.67";
 
   src = fetchFromGitHub {
     owner = "8bitbubsy";
     repo = "ft2-clone";
     rev = "v${version}";
-    sha256 = "sha256-kSnsep6abE07Q1EpGEeX8e/2APc60TxR2MhLZxqW9WY=";
+    sha256 = "sha256-v/yGHWd/hhE2jDdAQhyQbZOuHSS0FSG4WlVe8Oc6tMc=";
   };
 
   # Adapt the linux-only CMakeLists to darwin (more reliable than make-macos.sh)
diff --git a/nixpkgs/pkgs/applications/audio/furnace/default.nix b/nixpkgs/pkgs/applications/audio/furnace/default.nix
index cbd15248fee6..d916e68292e2 100644
--- a/nixpkgs/pkgs/applications/audio/furnace/default.nix
+++ b/nixpkgs/pkgs/applications/audio/furnace/default.nix
@@ -10,6 +10,7 @@
 , fftw
 , fmt_8
 , libsndfile
+, libX11
 , rtmidi
 , SDL2
 , zlib
@@ -21,16 +22,23 @@
 
 stdenv.mkDerivation rec {
   pname = "furnace";
-  version = "0.6pre1";
+  version = "0.6pre5";
 
   src = fetchFromGitHub {
     owner = "tildearrow";
     repo = "furnace";
     rev = "v${version}";
     fetchSubmodules = true;
-    sha256 = "sha256-7MrzSC8PYQ4X8fyX1hB8mOoSCtLpY+o1x42v9HLdoao=";
+    sha256 = "sha256-6KiG7nfQUdPW+EkBW3PPM141kOmolAgrrqhEGH/Azg4=";
   };
 
+  postPatch = lib.optionalString stdenv.hostPlatform.isLinux ''
+    # To offer scaling detection on X11, furnace checks if libX11.so is available via dlopen and uses some of its functions
+    # But it's being linked against a versioned libX11.so.VERSION via SDL, so the unversioned one is not on the rpath
+    substituteInPlace src/gui/scaling.cpp \
+      --replace 'libX11.so' '${lib.getLib libX11}/lib/libX11.so'
+  '';
+
   nativeBuildInputs = [
     cmake
     pkg-config
@@ -63,6 +71,12 @@ stdenv.mkDerivation rec {
     "-DWARNINGS_ARE_ERRORS=ON"
   ];
 
+  env.NIX_CFLAGS_COMPILE = toString (lib.optionals (stdenv.cc.isGNU && lib.versionAtLeast stdenv.cc.version "12") [
+    # Needed with GCC 12 but breaks on darwin (with clang) or aarch64 (old gcc)
+    "-Wno-error=mismatched-new-delete"
+    "-Wno-error=use-after-free"
+  ]);
+
   postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
     # Normal CMake install phase on Darwin only installs the binary, the user is expected to use CPack to build a
     # bundle. That adds alot of overhead for not much benefit (CPack is currently abit broken, and needs impure access
@@ -81,7 +95,6 @@ stdenv.mkDerivation rec {
 
   passthru = {
     updateScript = gitUpdater {
-      inherit pname version;
       rev-prefix = "v";
     };
     tests.version = testers.testVersion {
@@ -92,6 +105,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     description = "Multi-system chiptune tracker compatible with DefleMask modules";
     homepage = "https://github.com/tildearrow/furnace";
+    changelog = "https://github.com/tildearrow/furnace/releases/tag/v${version}";
     license = with licenses; [ gpl2Plus ];
     maintainers = with maintainers; [ OPNA2608 ];
     platforms = platforms.all;
diff --git a/nixpkgs/pkgs/applications/audio/galaxy-buds-client/default.nix b/nixpkgs/pkgs/applications/audio/galaxy-buds-client/default.nix
new file mode 100644
index 000000000000..f3a0ba8c6e93
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/galaxy-buds-client/default.nix
@@ -0,0 +1,69 @@
+{ lib
+, stdenv
+, buildDotnetModule
+, fetchFromGitHub
+, autoPatchelfHook
+, fontconfig
+, xorg
+, libglvnd
+, makeDesktopItem
+, copyDesktopItems
+, graphicsmagick
+}:
+
+buildDotnetModule rec {
+  pname = "galaxy-buds-client";
+  version = "4.5.2";
+
+  src = fetchFromGitHub {
+    owner = "ThePBone";
+    repo = "GalaxyBudsClient";
+    rev = version;
+    hash = "sha256-bnJ1xvqos+JP0KF8Z7mX8/8IozcaRCgaRL3cSO3V120=";
+  };
+
+  projectFile = [ "GalaxyBudsClient/GalaxyBudsClient.csproj" ];
+  nugetDeps = ./deps.nix;
+  dotnetFlags = [ "-p:Runtimeidentifier=linux-x64" ];
+
+  nativeBuildInputs = [
+    autoPatchelfHook
+    copyDesktopItems
+    graphicsmagick
+  ];
+
+  buildInputs = [ stdenv.cc.cc.lib fontconfig ];
+
+  runtimeDeps = [
+    libglvnd
+    xorg.libSM
+    xorg.libICE
+    xorg.libX11
+  ];
+
+  postFixup = ''
+    mkdir -p $out/share/icons/hicolor/256x256/apps/
+    gm convert $src/GalaxyBudsClient/Resources/icon_white.ico $out/share/icons/hicolor/256x256/apps/${meta.mainProgram}.png
+  '';
+
+  desktopItems = makeDesktopItem {
+    name = meta.mainProgram;
+    exec = meta.mainProgram;
+    icon = meta.mainProgram;
+    desktopName = meta.mainProgram;
+    genericName = "Galaxy Buds Client";
+    comment = meta.description;
+    type = "Application";
+    categories = [ "Settings" ];
+    startupNotify = true;
+  };
+
+  meta = with lib; {
+    mainProgram = "GalaxyBudsClient";
+    description = "Unofficial Galaxy Buds Manager for Windows and Linux";
+    homepage = "https://github.com/ThePBone/GalaxyBudsClient";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.icy-thought ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/galaxy-buds-client/deps.nix b/nixpkgs/pkgs/applications/audio/galaxy-buds-client/deps.nix
new file mode 100644
index 000000000000..d45dd12b8b20
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/galaxy-buds-client/deps.nix
@@ -0,0 +1,223 @@
+# This file was automatically generated by passthru.fetch-deps.
+# Please dont edit it manually, your changes might get overwritten!
+
+{ fetchNuGet }: [
+  (fetchNuGet { pname = "Avalonia"; version = "0.10.14"; sha256 = "0nn3xgkf7v47dwpnsxjg0b25ifqa4mbq02ja5rvnlc3q2k6k0fxv"; })
+  (fetchNuGet { pname = "Avalonia.Angle.Windows.Natives"; version = "2.1.0.2020091801"; sha256 = "04jm83cz7vkhhr6n2c9hya2k8i2462xbf6np4bidk55as0jdq43a"; })
+  (fetchNuGet { pname = "Avalonia.Controls.DataGrid"; version = "0.10.14"; sha256 = "0diw3l2nblapvvhnpl28fcgmqg845rlp8cszcvzhd8g6mcm54r7i"; })
+  (fetchNuGet { pname = "Avalonia.Desktop"; version = "0.10.14"; sha256 = "0r0p1g80pj06d8i7mq0kj00bpnsdlrxkh31r9166c779in34y946"; })
+  (fetchNuGet { pname = "Avalonia.Diagnostics"; version = "0.10.14"; sha256 = "133w2s2jrjj8731s7xq06c8b4zwn00lb7cn8c1iypqaa82krvkq2"; })
+  (fetchNuGet { pname = "Avalonia.FreeDesktop"; version = "0.10.14"; sha256 = "06v18kmq10z5gmdqpnvn3aws2ir14gnnz0gvkbj7f68bfggzcg3s"; })
+  (fetchNuGet { pname = "Avalonia.Markup.Xaml.Loader"; version = "0.10.14"; sha256 = "1qmggiigsn2rkqr0fhrfvyx138dvazihj64r1s4azq014530r0pk"; })
+  (fetchNuGet { pname = "Avalonia.Native"; version = "0.10.14"; sha256 = "1h0h20cq6hds2mljn1457s42n6pcq821l1d6da2ijncmhk6rdwnl"; })
+  (fetchNuGet { pname = "Avalonia.Remote.Protocol"; version = "0.10.14"; sha256 = "1hnski71ynqqlddfnbhall4fx3ndh04774kzykzparm8nd9aqaam"; })
+  (fetchNuGet { pname = "Avalonia.Skia"; version = "0.10.13"; sha256 = "0k5y0w164m03q278m4wr7zzf3vfq9nb0am9vmmprivpn1xwwa7ml"; })
+  (fetchNuGet { pname = "Avalonia.Skia"; version = "0.10.14"; sha256 = "1cvyg94avqdscniszshx5r3vfvx0cnna262sp89ad4bianmd4qkj"; })
+  (fetchNuGet { pname = "Avalonia.Svg.Skia"; version = "0.10.13"; sha256 = "1msrsxzya1l0grfxk17yizfvy2vg4i7hyw1aw54s8gf7x3gpzn86"; })
+  (fetchNuGet { pname = "Avalonia.Win32"; version = "0.10.14"; sha256 = "1c1jdxsnqrzwrcalrvc7x34x1zxc5qcpfxx4fkqca99ngw4b0blj"; })
+  (fetchNuGet { pname = "Avalonia.X11"; version = "0.10.14"; sha256 = "182nza6rqndxlwi089r06ladfc6j8vsgqzd7xq21s91zbcbcidar"; })
+  (fetchNuGet { pname = "Avalonia.Xaml.Behaviors"; version = "0.10.13"; sha256 = "0cs42z2vz679mdic7fbxzjs53xm2lp37wcnh843nz86qvma5280k"; })
+  (fetchNuGet { pname = "Avalonia.Xaml.Interactions"; version = "0.10.13"; sha256 = "0s5fcsy2hs2wphd5cs4dnk4aw8zs5bbzisg0ba5akqpzwpps8fs1"; })
+  (fetchNuGet { pname = "Avalonia.Xaml.Interactivity"; version = "0.10.13"; sha256 = "19kxbgs0nbiw9zq1f9fsawnw0sl5c880z2dfidnjp99vvfda9rzs"; })
+  (fetchNuGet { pname = "Castle.Core"; version = "4.4.0"; sha256 = "0rpcbmyhckvlvp6vbzpj03c1gqz56ixc6f15vgmxmyf1g40c24pf"; })
+  (fetchNuGet { pname = "Config.Net"; version = "4.15.0"; sha256 = "0hsyma0r8hssz2h7bx38rr8ajx28x5ya2h4k665cbd65z3cs1di1"; })
+  (fetchNuGet { pname = "Config.Net.Json"; version = "4.15.0"; sha256 = "1q6v4pj76h0hhn26ln4kc8vg75jm8jnlp1ssnrqzwxy88yf82z4h"; })
+  (fetchNuGet { pname = "CS-Script.Core"; version = "1.4.2-preview"; sha256 = "0djliiixl3ncc1b29s9knal1ascg359na0pacsm73p98ad1f7pzh"; })
+  (fetchNuGet { pname = "Fizzler"; version = "1.2.0"; sha256 = "1b8kvqli5wql53ab9fwyg78h572z4f286s8rjb9xxmsyav1hsyll"; })
+  (fetchNuGet { pname = "HarfBuzzSharp"; version = "2.8.2-preview.178"; sha256 = "1p5nwzl7jpypsd6df7hgcf47r977anjlyv21wacmalsj6lvdgnvn"; })
+  (fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.Linux"; version = "2.8.2-preview.178"; sha256 = "1402ylkxbgcnagcarqlfvg4gppy2pqs3bmin4n5mphva1g7bqb2p"; })
+  (fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.macOS"; version = "2.8.2-preview.178"; sha256 = "0p8miaclnbfpacc1jaqxwfg0yfx9byagi4j4k91d9621vd19i8b2"; })
+  (fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.WebAssembly"; version = "2.8.2-preview.178"; sha256 = "1n9jay9sji04xly6n8bzz4591fgy8i65p21a8mv5ip9lsyj1c320"; })
+  (fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.Win32"; version = "2.8.2-preview.178"; sha256 = "1r5syii96wv8q558cvsqw3lr10cdw6677lyiy82p6i3if51v3mr7"; })
+  (fetchNuGet { pname = "InputSimulatorCore"; version = "1.0.5"; sha256 = "1vfqhqjcrpzahhvv5kyh6pk6j5c06wd0b2831y31fbxpdkxhbs2p"; })
+  (fetchNuGet { pname = "JetBrains.Annotations"; version = "10.3.0"; sha256 = "1grdx28ga9fp4hwwpwv354rizm8anfq4lp045q4ss41gvhggr3z8"; })
+  (fetchNuGet { pname = "libsodium"; version = "1.0.18"; sha256 = "15qzl5k31yaaapqlijr336lh4lzz1qqxlimgxy8fdyig8jdmgszn"; })
+  (fetchNuGet { pname = "Microsoft.AspNet.WebApi.Client"; version = "5.2.7"; sha256 = "1j0wbdmycj5xbk06p32f7xrddc40sbj3yca4d7ywg611yk26mvi1"; })
+  (fetchNuGet { pname = "Microsoft.CodeAnalysis.Analyzers"; version = "2.9.6"; sha256 = "18mr1f0wpq0fir8vjnq0a8pz50zpnblr7sabff0yqx37c975934a"; })
+  (fetchNuGet { pname = "Microsoft.CodeAnalysis.Analyzers"; version = "3.0.0"; sha256 = "0bbl0jpqywqmzz2gagld1p2gvdfldjfjmm25hil9wj2nq1zc4di8"; })
+  (fetchNuGet { pname = "Microsoft.CodeAnalysis.Common"; version = "3.4.0"; sha256 = "12rn6gl4viycwk3pz5hp5df63g66zvba4hnkwr3f0876jj5ivmsw"; })
+  (fetchNuGet { pname = "Microsoft.CodeAnalysis.Common"; version = "3.6.0"; sha256 = "0i8x90700jr30j580mpawj6d90fngrb2zpkjjbn7f8r2p1mz75y7"; })
+  (fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp"; version = "3.4.0"; sha256 = "0rhylcwa95bxawcgixk64knv7p7xrykdjcabmx3gknk8hvj1ai9y"; })
+  (fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp"; version = "3.6.0"; sha256 = "0c44qp7lfpja6cq5nk7851qrswm2z1k2pnvsw43j9ybf10a27jrn"; })
+  (fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp.Scripting"; version = "3.4.0"; sha256 = "1h2f0z9xnw987x8bydka1sd42ijqjx973md6v1gvpy1qc6ad244g"; })
+  (fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp.Scripting"; version = "3.6.0"; sha256 = "0qbd995ip41x5mzyspl3asgj9w3fq3c6qsd0sj719aimqm1p57cd"; })
+  (fetchNuGet { pname = "Microsoft.CodeAnalysis.Scripting.Common"; version = "3.4.0"; sha256 = "195gqnpwqkg2wlvk8x6yzm7byrxfq9bki20xmhf6lzfsdw3z4mf2"; })
+  (fetchNuGet { pname = "Microsoft.CodeAnalysis.Scripting.Common"; version = "3.6.0"; sha256 = "1gz5ik2vwjdsyl5im7b37j1s2a1vsmmgkhxwm93897cx6q1bpjyg"; })
+  (fetchNuGet { pname = "Microsoft.CSharp"; version = "4.3.0"; sha256 = "0gw297dgkh0al1zxvgvncqs0j15lsna9l1wpqas4rflmys440xvb"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.DependencyModel"; version = "3.1.6"; sha256 = "13m2na8a5mglbbjjp0dxb8ifkf23grkyk1g8585mr7v6cbj098ac"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.0.1"; sha256 = "01al6cfxp68dscl15z7rxfw9zvhm64dncsw09a1vmdkacsa2v6lr"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.1.0"; sha256 = "08vh1r12g6ykjygq5d3vq09zylgb84l63k49jc4v8faw9g93iqqm"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "2.0.0"; sha256 = "1fk2fk2639i7nzy58m9dvpdnzql4vb8yl8vr19r2fp8lmj9w2jr0"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "3.1.0"; sha256 = "1gc1x8f95wk8yhgznkwsg80adk1lc65v9n5rx4yaa4bc5dva0z3j"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "5.0.0"; sha256 = "0mwpwdflidzgzfx2dlpkvvnkgkr2ayaf0s80737h4wa35gaj11rc"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.Targets"; version = "1.0.1"; sha256 = "0ppdkwy6s9p7x9jix3v4402wb171cdiibq7js7i13nxpdky7074p"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.Targets"; version = "1.1.0"; sha256 = "193xwf33fbm0ni3idxzbr5fdq3i2dlfgihsac9jj7whj0gd902nh"; })
+  (fetchNuGet { pname = "Microsoft.Win32.Primitives"; version = "4.3.0"; sha256 = "0j0c1wj4ndj21zsgivsc24whiya605603kxrbiw6wkfdync464wq"; })
+  (fetchNuGet { pname = "Microsoft.Win32.Registry"; version = "5.0.0"; sha256 = "102hvhq2gmlcbq8y2cb7hdr2dnmjzfp2k3asr1ycwrfacwyaak7n"; })
+  (fetchNuGet { pname = "Microsoft.Win32.SystemEvents"; version = "4.5.0"; sha256 = "0fnkv3ky12227zqg4zshx4kw2mvysq2ppxjibfw02cc3iprv4njq"; })
+  (fetchNuGet { pname = "Microsoft.Win32.SystemEvents"; version = "4.7.0"; sha256 = "0pjll2a62hc576hd4wgyasva0lp733yllmk54n37svz5ac7nfz0q"; })
+  (fetchNuGet { pname = "NetSparkle.New"; version = "2.0.0-preview20210114001"; sha256 = "170czxvhh285rymajc28qk34lrg09nvl6ib5ldws8fwy917w4w2s"; })
+  (fetchNuGet { pname = "NETStandard.Library"; version = "1.6.1"; sha256 = "1z70wvsx2d847a2cjfii7b83pjfs34q05gb037fdjikv5kbagml8"; })
+  (fetchNuGet { pname = "Newtonsoft.Json"; version = "10.0.1"; sha256 = "15ncqic3p2rzs8q8ppi0irl2miq75kilw4lh8yfgjq96id0ds3hv"; })
+  (fetchNuGet { pname = "Newtonsoft.Json"; version = "12.0.3"; sha256 = "17dzl305d835mzign8r15vkmav2hq8l6g7942dfjpnzr17wwl89x"; })
+  (fetchNuGet { pname = "Newtonsoft.Json.Bson"; version = "1.0.1"; sha256 = "1r1hvj5gjl466bya2bfl5aaj8rbwyf5x1msg710wf3k2llbci1xa"; })
+  (fetchNuGet { pname = "NSec.Cryptography"; version = "20.2.0"; sha256 = "19slji51v8s8i4836nqqg7qb3i3p4ahqahz0fbb3gwpp67pn6izx"; })
+  (fetchNuGet { pname = "Portable.BouncyCastle"; version = "1.8.9"; sha256 = "1w6kcaifklym8fwlgs7dncjpkflcyf2vyrb5i0i0lxwglyygzpqb"; })
+  (fetchNuGet { pname = "runtime.any.System.Collections"; version = "4.3.0"; sha256 = "0bv5qgm6vr47ynxqbnkc7i797fdi8gbjjxii173syrx14nmrkwg0"; })
+  (fetchNuGet { pname = "runtime.any.System.Diagnostics.Tools"; version = "4.3.0"; sha256 = "1wl76vk12zhdh66vmagni66h5xbhgqq7zkdpgw21jhxhvlbcl8pk"; })
+  (fetchNuGet { pname = "runtime.any.System.Diagnostics.Tracing"; version = "4.3.0"; sha256 = "00j6nv2xgmd3bi347k00m7wr542wjlig53rmj28pmw7ddcn97jbn"; })
+  (fetchNuGet { pname = "runtime.any.System.Globalization"; version = "4.3.0"; sha256 = "1daqf33hssad94lamzg01y49xwndy2q97i2lrb7mgn28656qia1x"; })
+  (fetchNuGet { pname = "runtime.any.System.Globalization.Calendars"; version = "4.3.0"; sha256 = "1ghhhk5psqxcg6w88sxkqrc35bxcz27zbqm2y5p5298pv3v7g201"; })
+  (fetchNuGet { pname = "runtime.any.System.IO"; version = "4.3.0"; sha256 = "0l8xz8zn46w4d10bcn3l4yyn4vhb3lrj2zw8llvz7jk14k4zps5x"; })
+  (fetchNuGet { pname = "runtime.any.System.Reflection"; version = "4.3.0"; sha256 = "02c9h3y35pylc0zfq3wcsvc5nqci95nrkq0mszifc0sjx7xrzkly"; })
+  (fetchNuGet { pname = "runtime.any.System.Reflection.Extensions"; version = "4.3.0"; sha256 = "0zyri97dfc5vyaz9ba65hjj1zbcrzaffhsdlpxc9bh09wy22fq33"; })
+  (fetchNuGet { pname = "runtime.any.System.Reflection.Primitives"; version = "4.3.0"; sha256 = "0x1mm8c6iy8rlxm8w9vqw7gb7s1ljadrn049fmf70cyh42vdfhrf"; })
+  (fetchNuGet { pname = "runtime.any.System.Resources.ResourceManager"; version = "4.3.0"; sha256 = "03kickal0iiby82wa5flar18kyv82s9s6d4xhk5h4bi5kfcyfjzl"; })
+  (fetchNuGet { pname = "runtime.any.System.Runtime"; version = "4.3.0"; sha256 = "1cqh1sv3h5j7ixyb7axxbdkqx6cxy00p4np4j91kpm492rf4s25b"; })
+  (fetchNuGet { pname = "runtime.any.System.Runtime.Handles"; version = "4.3.0"; sha256 = "0bh5bi25nk9w9xi8z23ws45q5yia6k7dg3i4axhfqlnj145l011x"; })
+  (fetchNuGet { pname = "runtime.any.System.Runtime.InteropServices"; version = "4.3.0"; sha256 = "0c3g3g3jmhlhw4klrc86ka9fjbl7i59ds1fadsb2l8nqf8z3kb19"; })
+  (fetchNuGet { pname = "runtime.any.System.Text.Encoding"; version = "4.3.0"; sha256 = "0aqqi1v4wx51h51mk956y783wzags13wa7mgqyclacmsmpv02ps3"; })
+  (fetchNuGet { pname = "runtime.any.System.Text.Encoding.Extensions"; version = "4.3.0"; sha256 = "0lqhgqi0i8194ryqq6v2gqx0fb86db2gqknbm0aq31wb378j7ip8"; })
+  (fetchNuGet { pname = "runtime.any.System.Threading.Tasks"; version = "4.3.0"; sha256 = "03mnvkhskbzxddz4hm113zsch1jyzh2cs450dk3rgfjp8crlw1va"; })
+  (fetchNuGet { pname = "runtime.any.System.Threading.Timer"; version = "4.3.0"; sha256 = "0aw4phrhwqz9m61r79vyfl5la64bjxj8l34qnrcwb28v49fg2086"; })
+  (fetchNuGet { pname = "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "16rnxzpk5dpbbl1x354yrlsbvwylrq456xzpsha1n9y3glnhyx9d"; })
+  (fetchNuGet { pname = "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0hkg03sgm2wyq8nqk6dbm9jh5vcq57ry42lkqdmfklrw89lsmr59"; })
+  (fetchNuGet { pname = "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0c2p354hjx58xhhz7wv6div8xpi90sc6ibdm40qin21bvi7ymcaa"; })
+  (fetchNuGet { pname = "runtime.native.System"; version = "4.3.0"; sha256 = "15hgf6zaq9b8br2wi1i3x0zvmk410nlmsmva9p0bbg73v6hml5k4"; })
+  (fetchNuGet { pname = "runtime.native.System.IO.Compression"; version = "4.3.0"; sha256 = "1vvivbqsk6y4hzcid27pqpm5bsi6sc50hvqwbcx8aap5ifrxfs8d"; })
+  (fetchNuGet { pname = "runtime.native.System.Net.Http"; version = "4.3.0"; sha256 = "1n6rgz5132lcibbch1qlf0g9jk60r0kqv087hxc0lisy50zpm7kk"; })
+  (fetchNuGet { pname = "runtime.native.System.Security.Cryptography.Apple"; version = "4.3.0"; sha256 = "1b61p6gw1m02cc1ry996fl49liiwky6181dzr873g9ds92zl326q"; })
+  (fetchNuGet { pname = "runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "18pzfdlwsg2nb1jjjjzyb5qlgy6xjxzmhnfaijq5s2jw3cm3ab97"; })
+  (fetchNuGet { pname = "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0qyynf9nz5i7pc26cwhgi8j62ps27sqmf78ijcfgzab50z9g8ay3"; })
+  (fetchNuGet { pname = "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "1klrs545awhayryma6l7g2pvnp9xy4z0r1i40r80zb45q3i9nbyf"; })
+  (fetchNuGet { pname = "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple"; version = "4.3.0"; sha256 = "10yc8jdrwgcl44b4g93f1ds76b176bajd3zqi2faf5rvh1vy9smi"; })
+  (fetchNuGet { pname = "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0zcxjv5pckplvkg0r6mw3asggm7aqzbdjimhvsasb0cgm59x09l3"; })
+  (fetchNuGet { pname = "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0vhynn79ih7hw7cwjazn87rm9z9fj0rvxgzlab36jybgcpcgphsn"; })
+  (fetchNuGet { pname = "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "160p68l2c7cqmyqjwxydcvgw7lvl1cr0znkw8fp24d1by9mqc8p3"; })
+  (fetchNuGet { pname = "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "15zrc8fgd8zx28hdghcj5f5i34wf3l6bq5177075m2bc2j34jrqy"; })
+  (fetchNuGet { pname = "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "1p4dgxax6p7rlgj4q73k73rslcnz4wdcv8q2flg1s8ygwcm58ld5"; })
+  (fetchNuGet { pname = "runtime.unix.Microsoft.Win32.Primitives"; version = "4.3.0"; sha256 = "0y61k9zbxhdi0glg154v30kkq7f8646nif8lnnxbvkjpakggd5id"; })
+  (fetchNuGet { pname = "runtime.unix.System.Console"; version = "4.3.0"; sha256 = "1pfpkvc6x2if8zbdzg9rnc5fx51yllprl8zkm5npni2k50lisy80"; })
+  (fetchNuGet { pname = "runtime.unix.System.Diagnostics.Debug"; version = "4.3.0"; sha256 = "1lps7fbnw34bnh3lm31gs5c0g0dh7548wfmb8zz62v0zqz71msj5"; })
+  (fetchNuGet { pname = "runtime.unix.System.IO.FileSystem"; version = "4.3.0"; sha256 = "14nbkhvs7sji5r1saj2x8daz82rnf9kx28d3v2qss34qbr32dzix"; })
+  (fetchNuGet { pname = "runtime.unix.System.Net.Primitives"; version = "4.3.0"; sha256 = "0bdnglg59pzx9394sy4ic66kmxhqp8q8bvmykdxcbs5mm0ipwwm4"; })
+  (fetchNuGet { pname = "runtime.unix.System.Net.Sockets"; version = "4.3.0"; sha256 = "03npdxzy8gfv035bv1b9rz7c7hv0rxl5904wjz51if491mw0xy12"; })
+  (fetchNuGet { pname = "runtime.unix.System.Private.Uri"; version = "4.3.0"; sha256 = "1jx02q6kiwlvfksq1q9qr17fj78y5v6mwsszav4qcz9z25d5g6vk"; })
+  (fetchNuGet { pname = "runtime.unix.System.Runtime.Extensions"; version = "4.3.0"; sha256 = "0pnxxmm8whx38dp6yvwgmh22smknxmqs5n513fc7m4wxvs1bvi4p"; })
+  (fetchNuGet { pname = "Sentry"; version = "3.17.0"; sha256 = "0gqldkxmvb0g4zsam102vk9yahdhydfzd765aq3fa8r1b8nz865d"; })
+  (fetchNuGet { pname = "Sentry.Serilog"; version = "3.17.0"; sha256 = "1igf78dcz6c9bampb4vwdj798vqlk6m042j3cpfx469fxk9fkgcy"; })
+  (fetchNuGet { pname = "Serilog"; version = "2.10.0"; sha256 = "08bih205i632ywryn3zxkhb15dwgyaxbhmm1z3b5nmby9fb25k7v"; })
+  (fetchNuGet { pname = "Serilog"; version = "2.11.0-dev-01367"; sha256 = "1z9ddq1ym94dm8rx1x6m3mqzc424hvqfvn1zpcgm71q1p20psvx0"; })
+  (fetchNuGet { pname = "Serilog.Sinks.Console"; version = "4.0.1-dev-00876"; sha256 = "1s9m75hvaw4dilmgp3sdh7xb15v2mq2h252n9x76nvmw56ipsdnz"; })
+  (fetchNuGet { pname = "Serilog.Sinks.Debug"; version = "2.0.0"; sha256 = "1i7j870l47gan3gpnnlzkccn5lbm7518cnkp25a3g5gp9l0dbwpw"; })
+  (fetchNuGet { pname = "Serilog.Sinks.File"; version = "5.0.0"; sha256 = "097rngmgcrdfy7jy8j7dq3xaq2qky8ijwg0ws6bfv5lx0f3vvb0q"; })
+  (fetchNuGet { pname = "Serilog.Sinks.Trace"; version = "3.0.0"; sha256 = "10byjmh2s0c13lmnzfw24qmr11kry9hg9y5fib3556y7759qwbqv"; })
+  (fetchNuGet { pname = "ShimSkiaSharp"; version = "0.5.13"; sha256 = "0gzsiv85g0i8jmjl0nplvljqrgc4y42ds1q0f1x1hdqbnn7vsav2"; })
+  (fetchNuGet { pname = "SkiaSharp"; version = "2.88.0-preview.178"; sha256 = "062g14s6b2bixanpwihj3asm3jwvfw15mhvzqv6901afrlgzx4nk"; })
+  (fetchNuGet { pname = "SkiaSharp.HarfBuzz"; version = "2.88.0-preview.178"; sha256 = "1gwk81iq6zipab3dhpwydrqm2mqz67hpx7asvhna3mx0phrp2zqd"; })
+  (fetchNuGet { pname = "SkiaSharp.NativeAssets.Linux"; version = "2.88.0-preview.178"; sha256 = "07kga1j51l3l302nvf537zg5clf6rflinjy0xd6i06cmhpkf3ksw"; })
+  (fetchNuGet { pname = "SkiaSharp.NativeAssets.macOS"; version = "2.88.0-preview.178"; sha256 = "14p95nxccs6yq4rn2h9zbb60k0232k6349zdpy31jcfr6gc99cgi"; })
+  (fetchNuGet { pname = "SkiaSharp.NativeAssets.WebAssembly"; version = "2.88.0-preview.178"; sha256 = "09jmcg5k1vpsal8jfs90mwv0isf2y5wq3h4hd77rv6vffn5ic4sm"; })
+  (fetchNuGet { pname = "SkiaSharp.NativeAssets.Win32"; version = "2.88.0-preview.178"; sha256 = "0ficil702lv3fvwpngbqh5l85i05l5jafzyh4jprzshr2qbnd8nl"; })
+  (fetchNuGet { pname = "Svg.Custom"; version = "0.5.13"; sha256 = "1a6rwgwwqg98dhk5hdb38iffa39khcrvfwskl6i5j3xgvgzzq2lx"; })
+  (fetchNuGet { pname = "Svg.Model"; version = "0.5.13"; sha256 = "0rxm79asyx1dji8x7q1z47mzy6zh8qbgw7py6xfkfj89cai6x4p8"; })
+  (fetchNuGet { pname = "Svg.Skia"; version = "0.5.13"; sha256 = "1f00mzx7gzfhy42yldi3jzaivsl3byspak22rji86iq0vczz28zg"; })
+  (fetchNuGet { pname = "System.AppContext"; version = "4.3.0"; sha256 = "1649qvy3dar900z3g817h17nl8jp4ka5vcfmsr05kh0fshn7j3ya"; })
+  (fetchNuGet { pname = "System.Buffers"; version = "4.3.0"; sha256 = "0fgns20ispwrfqll4q1zc1waqcmylb3zc50ys9x8zlwxh9pmd9jy"; })
+  (fetchNuGet { pname = "System.Collections"; version = "4.3.0"; sha256 = "19r4y64dqyrq6k4706dnyhhw7fs24kpp3awak7whzss39dakpxk9"; })
+  (fetchNuGet { pname = "System.Collections.Concurrent"; version = "4.3.0"; sha256 = "0wi10md9aq33jrkh2c24wr2n9hrpyamsdhsxdcnf43b7y86kkii8"; })
+  (fetchNuGet { pname = "System.Collections.Immutable"; version = "1.5.0"; sha256 = "1d5gjn5afnrf461jlxzawcvihz195gayqpcfbv6dd7pxa9ialn06"; })
+  (fetchNuGet { pname = "System.Collections.NonGeneric"; version = "4.3.0"; sha256 = "07q3k0hf3mrcjzwj8fwk6gv3n51cb513w4mgkfxzm3i37sc9kz7k"; })
+  (fetchNuGet { pname = "System.Collections.Specialized"; version = "4.3.0"; sha256 = "1sdwkma4f6j85m3dpb53v9vcgd0zyc9jb33f8g63byvijcj39n20"; })
+  (fetchNuGet { pname = "System.ComponentModel"; version = "4.3.0"; sha256 = "0986b10ww3nshy30x9sjyzm0jx339dkjxjj3401r3q0f6fx2wkcb"; })
+  (fetchNuGet { pname = "System.ComponentModel.Annotations"; version = "4.5.0"; sha256 = "1jj6f6g87k0iwsgmg3xmnn67a14mq88np0l1ys5zkxhkvbc8976p"; })
+  (fetchNuGet { pname = "System.ComponentModel.Primitives"; version = "4.3.0"; sha256 = "1svfmcmgs0w0z9xdw2f2ps05rdxmkxxhf0l17xk9l1l8xfahkqr0"; })
+  (fetchNuGet { pname = "System.ComponentModel.TypeConverter"; version = "4.3.0"; sha256 = "17ng0p7v3nbrg3kycz10aqrrlw4lz9hzhws09pfh8gkwicyy481x"; })
+  (fetchNuGet { pname = "System.Configuration.ConfigurationManager"; version = "4.7.0"; sha256 = "0pav0n21ghf2ax6fiwjbng29f27wkb4a2ddma0cqx04s97yyk25d"; })
+  (fetchNuGet { pname = "System.Console"; version = "4.3.0"; sha256 = "1flr7a9x920mr5cjsqmsy9wgnv3lvd0h1g521pdr1lkb2qycy7ay"; })
+  (fetchNuGet { pname = "System.Diagnostics.Debug"; version = "4.3.0"; sha256 = "00yjlf19wjydyr6cfviaph3vsjzg3d5nvnya26i2fvfg53sknh3y"; })
+  (fetchNuGet { pname = "System.Diagnostics.DiagnosticSource"; version = "4.3.0"; sha256 = "0z6m3pbiy0qw6rn3n209rrzf9x1k4002zh90vwcrsym09ipm2liq"; })
+  (fetchNuGet { pname = "System.Diagnostics.Tools"; version = "4.3.0"; sha256 = "0in3pic3s2ddyibi8cvgl102zmvp9r9mchh82ns9f0ms4basylw1"; })
+  (fetchNuGet { pname = "System.Diagnostics.TraceSource"; version = "4.3.0"; sha256 = "1kyw4d7dpjczhw6634nrmg7yyyzq72k75x38y0l0nwhigdlp1766"; })
+  (fetchNuGet { pname = "System.Diagnostics.Tracing"; version = "4.3.0"; sha256 = "1m3bx6c2s958qligl67q7grkwfz3w53hpy7nc97mh6f7j5k168c4"; })
+  (fetchNuGet { pname = "System.Drawing.Common"; version = "4.5.0"; sha256 = "0knqa0zsm91nfr34br8gx5kjqq4v81zdhqkacvs2hzc8nqk0ddhc"; })
+  (fetchNuGet { pname = "System.Drawing.Common"; version = "4.7.0"; sha256 = "0yfw7cpl54mgfcylvlpvrl0c8r1b0zca6p7r3rcwkvqy23xqcyhg"; })
+  (fetchNuGet { pname = "System.Dynamic.Runtime"; version = "4.3.0"; sha256 = "1d951hrvrpndk7insiag80qxjbf2y0y39y8h5hnq9612ws661glk"; })
+  (fetchNuGet { pname = "System.Globalization"; version = "4.3.0"; sha256 = "1cp68vv683n6ic2zqh2s1fn4c2sd87g5hpp6l4d4nj4536jz98ki"; })
+  (fetchNuGet { pname = "System.Globalization.Calendars"; version = "4.3.0"; sha256 = "1xwl230bkakzzkrggy1l1lxmm3xlhk4bq2pkv790j5lm8g887lxq"; })
+  (fetchNuGet { pname = "System.Globalization.Extensions"; version = "4.3.0"; sha256 = "02a5zfxavhv3jd437bsncbhd2fp1zv4gxzakp1an9l6kdq1mcqls"; })
+  (fetchNuGet { pname = "System.IO"; version = "4.3.0"; sha256 = "05l9qdrzhm4s5dixmx68kxwif4l99ll5gqmh7rqgw554fx0agv5f"; })
+  (fetchNuGet { pname = "System.IO.Compression"; version = "4.3.0"; sha256 = "084zc82yi6yllgda0zkgl2ys48sypiswbiwrv7irb3r0ai1fp4vz"; })
+  (fetchNuGet { pname = "System.IO.Compression.ZipFile"; version = "4.3.0"; sha256 = "1yxy5pq4dnsm9hlkg9ysh5f6bf3fahqqb6p8668ndy5c0lk7w2ar"; })
+  (fetchNuGet { pname = "System.IO.FileSystem"; version = "4.3.0"; sha256 = "0z2dfrbra9i6y16mm9v1v6k47f0fm617vlb7s5iybjjsz6g1ilmw"; })
+  (fetchNuGet { pname = "System.IO.FileSystem.Primitives"; version = "4.3.0"; sha256 = "0j6ndgglcf4brg2lz4wzsh1av1gh8xrzdsn9f0yznskhqn1xzj9c"; })
+  (fetchNuGet { pname = "System.Linq"; version = "4.3.0"; sha256 = "1w0gmba695rbr80l1k2h4mrwzbzsyfl2z4klmpbsvsg5pm4a56s7"; })
+  (fetchNuGet { pname = "System.Linq.Expressions"; version = "4.3.0"; sha256 = "0ky2nrcvh70rqq88m9a5yqabsl4fyd17bpr63iy2mbivjs2nyypv"; })
+  (fetchNuGet { pname = "System.Memory"; version = "4.5.3"; sha256 = "0naqahm3wljxb5a911d37mwjqjdxv9l0b49p5dmfyijvni2ppy8a"; })
+  (fetchNuGet { pname = "System.Net.Http"; version = "4.3.0"; sha256 = "1i4gc757xqrzflbk7kc5ksn20kwwfjhw9w7pgdkn19y3cgnl302j"; })
+  (fetchNuGet { pname = "System.Net.NameResolution"; version = "4.3.0"; sha256 = "15r75pwc0rm3vvwsn8rvm2krf929mjfwliv0mpicjnii24470rkq"; })
+  (fetchNuGet { pname = "System.Net.Primitives"; version = "4.3.0"; sha256 = "0c87k50rmdgmxx7df2khd9qj7q35j9rzdmm2572cc55dygmdk3ii"; })
+  (fetchNuGet { pname = "System.Net.Sockets"; version = "4.3.0"; sha256 = "1ssa65k6chcgi6mfmzrznvqaxk8jp0gvl77xhf1hbzakjnpxspla"; })
+  (fetchNuGet { pname = "System.Numerics.Vectors"; version = "4.5.0"; sha256 = "1kzrj37yzawf1b19jq0253rcs8hsq1l2q8g69d7ipnhzb0h97m59"; })
+  (fetchNuGet { pname = "System.ObjectModel"; version = "4.3.0"; sha256 = "191p63zy5rpqx7dnrb3h7prvgixmk168fhvvkkvhlazncf8r3nc2"; })
+  (fetchNuGet { pname = "System.Private.Uri"; version = "4.3.0"; sha256 = "04r1lkdnsznin0fj4ya1zikxiqr0h6r6a1ww2dsm60gqhdrf0mvx"; })
+  (fetchNuGet { pname = "System.Reactive"; version = "5.0.0"; sha256 = "1lafmpnadhiwxyd543kraxa3jfdpm6ipblxrjlibym9b1ykpr5ik"; })
+  (fetchNuGet { pname = "System.Reflection"; version = "4.3.0"; sha256 = "0xl55k0mw8cd8ra6dxzh974nxif58s3k1rjv1vbd7gjbjr39j11m"; })
+  (fetchNuGet { pname = "System.Reflection.Emit"; version = "4.3.0"; sha256 = "11f8y3qfysfcrscjpjym9msk7lsfxkk4fmz9qq95kn3jd0769f74"; })
+  (fetchNuGet { pname = "System.Reflection.Emit"; version = "4.7.0"; sha256 = "121l1z2ypwg02yz84dy6gr82phpys0njk7yask3sihgy214w43qp"; })
+  (fetchNuGet { pname = "System.Reflection.Emit.ILGeneration"; version = "4.3.0"; sha256 = "0w1n67glpv8241vnpz1kl14sy7zlnw414aqwj4hcx5nd86f6994q"; })
+  (fetchNuGet { pname = "System.Reflection.Emit.Lightweight"; version = "4.3.0"; sha256 = "0ql7lcakycrvzgi9kxz1b3lljd990az1x6c4jsiwcacrvimpib5c"; })
+  (fetchNuGet { pname = "System.Reflection.Extensions"; version = "4.3.0"; sha256 = "02bly8bdc98gs22lqsfx9xicblszr2yan7v2mmw3g7hy6miq5hwq"; })
+  (fetchNuGet { pname = "System.Reflection.Metadata"; version = "1.6.0"; sha256 = "1wdbavrrkajy7qbdblpbpbalbdl48q3h34cchz24gvdgyrlf15r4"; })
+  (fetchNuGet { pname = "System.Reflection.Primitives"; version = "4.3.0"; sha256 = "04xqa33bld78yv5r93a8n76shvc8wwcdgr1qvvjh959g3rc31276"; })
+  (fetchNuGet { pname = "System.Reflection.TypeExtensions"; version = "4.3.0"; sha256 = "0y2ssg08d817p0vdag98vn238gyrrynjdj4181hdg780sif3ykp1"; })
+  (fetchNuGet { pname = "System.Resources.ResourceManager"; version = "4.3.0"; sha256 = "0sjqlzsryb0mg4y4xzf35xi523s4is4hz9q4qgdvlvgivl7qxn49"; })
+  (fetchNuGet { pname = "System.Runtime"; version = "4.1.0"; sha256 = "02hdkgk13rvsd6r9yafbwzss8kr55wnj8d5c7xjnp8gqrwc8sn0m"; })
+  (fetchNuGet { pname = "System.Runtime"; version = "4.3.0"; sha256 = "066ixvgbf2c929kgknshcxqj6539ax7b9m570cp8n179cpfkapz7"; })
+  (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "4.5.2"; sha256 = "1vz4275fjij8inf31np78hw50al8nqkngk04p3xv5n4fcmf1grgi"; })
+  (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "4.6.0"; sha256 = "0xmzi2gpbmgyfr75p24rqqsba3cmrqgmcv45lsqp5amgrdwd0f0m"; })
+  (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "4.7.0"; sha256 = "16r6sn4czfjk8qhnz7bnqlyiaaszr0ihinb7mq9zzr1wba257r54"; })
+  (fetchNuGet { pname = "System.Runtime.Extensions"; version = "4.3.0"; sha256 = "1ykp3dnhwvm48nap8q23893hagf665k0kn3cbgsqpwzbijdcgc60"; })
+  (fetchNuGet { pname = "System.Runtime.Handles"; version = "4.3.0"; sha256 = "0sw2gfj2xr7sw9qjn0j3l9yw07x73lcs97p8xfc9w1x9h5g5m7i8"; })
+  (fetchNuGet { pname = "System.Runtime.InteropServices"; version = "4.3.0"; sha256 = "00hywrn4g7hva1b2qri2s6rabzwgxnbpw9zfxmz28z09cpwwgh7j"; })
+  (fetchNuGet { pname = "System.Runtime.InteropServices.RuntimeInformation"; version = "4.3.0"; sha256 = "0q18r1sh4vn7bvqgd6dmqlw5v28flbpj349mkdish2vjyvmnb2ii"; })
+  (fetchNuGet { pname = "System.Runtime.Loader"; version = "4.3.0"; sha256 = "07fgipa93g1xxgf7193a6vw677mpzgr0z0cfswbvqqb364cva8dk"; })
+  (fetchNuGet { pname = "System.Runtime.Numerics"; version = "4.3.0"; sha256 = "19rav39sr5dky7afygh309qamqqmi9kcwvz3i0c5700v0c5cg61z"; })
+  (fetchNuGet { pname = "System.Runtime.Serialization.Formatters"; version = "4.3.0"; sha256 = "114j35n8gcvn3sqv9ar36r1jjq0y1yws9r0yk8i6wm4aq7n9rs0m"; })
+  (fetchNuGet { pname = "System.Runtime.Serialization.Primitives"; version = "4.3.0"; sha256 = "01vv2p8h4hsz217xxs0rixvb7f2xzbh6wv1gzbfykcbfrza6dvnf"; })
+  (fetchNuGet { pname = "System.Security.AccessControl"; version = "4.7.0"; sha256 = "0n0k0w44flkd8j0xw7g3g3vhw7dijfm51f75xkm1qxnbh4y45mpz"; })
+  (fetchNuGet { pname = "System.Security.AccessControl"; version = "5.0.0"; sha256 = "17n3lrrl6vahkqmhlpn3w20afgz09n7i6rv0r3qypngwi7wqdr5r"; })
+  (fetchNuGet { pname = "System.Security.Claims"; version = "4.3.0"; sha256 = "0jvfn7j22l3mm28qjy3rcw287y9h65ha4m940waaxah07jnbzrhn"; })
+  (fetchNuGet { pname = "System.Security.Cryptography.Algorithms"; version = "4.3.0"; sha256 = "03sq183pfl5kp7gkvq77myv7kbpdnq3y0xj7vi4q1kaw54sny0ml"; })
+  (fetchNuGet { pname = "System.Security.Cryptography.Cng"; version = "4.3.0"; sha256 = "1k468aswafdgf56ab6yrn7649kfqx2wm9aslywjam1hdmk5yypmv"; })
+  (fetchNuGet { pname = "System.Security.Cryptography.Csp"; version = "4.3.0"; sha256 = "1x5wcrddf2s3hb8j78cry7yalca4lb5vfnkrysagbn6r9x6xvrx1"; })
+  (fetchNuGet { pname = "System.Security.Cryptography.Encoding"; version = "4.3.0"; sha256 = "1jr6w70igqn07k5zs1ph6xja97hxnb3mqbspdrff6cvssgrixs32"; })
+  (fetchNuGet { pname = "System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0givpvvj8yc7gv4lhb6s1prq6p2c4147204a0wib89inqzd87gqc"; })
+  (fetchNuGet { pname = "System.Security.Cryptography.Primitives"; version = "4.3.0"; sha256 = "0pyzncsv48zwly3lw4f2dayqswcfvdwq2nz0dgwmi7fj3pn64wby"; })
+  (fetchNuGet { pname = "System.Security.Cryptography.ProtectedData"; version = "4.7.0"; sha256 = "1s1sh8k10s0apa09c5m2lkavi3ys90y657whg2smb3y8mpkfr5vm"; })
+  (fetchNuGet { pname = "System.Security.Cryptography.X509Certificates"; version = "4.3.0"; sha256 = "0valjcz5wksbvijylxijjxb1mp38mdhv03r533vnx1q3ikzdav9h"; })
+  (fetchNuGet { pname = "System.Security.Permissions"; version = "4.7.0"; sha256 = "13f366sj36jwbvld957gk2q64k2xbj48r8b0k9avrri2nlq1fs04"; })
+  (fetchNuGet { pname = "System.Security.Principal"; version = "4.3.0"; sha256 = "12cm2zws06z4lfc4dn31iqv7072zyi4m910d4r6wm8yx85arsfxf"; })
+  (fetchNuGet { pname = "System.Security.Principal.Windows"; version = "4.3.0"; sha256 = "00a0a7c40i3v4cb20s2cmh9csb5jv2l0frvnlzyfxh848xalpdwr"; })
+  (fetchNuGet { pname = "System.Security.Principal.Windows"; version = "4.7.0"; sha256 = "1a56ls5a9sr3ya0nr086sdpa9qv0abv31dd6fp27maqa9zclqq5d"; })
+  (fetchNuGet { pname = "System.Security.Principal.Windows"; version = "5.0.0"; sha256 = "1mpk7xj76lxgz97a5yg93wi8lj0l8p157a5d50mmjy3gbz1904q8"; })
+  (fetchNuGet { pname = "System.Text.Encoding"; version = "4.3.0"; sha256 = "1f04lkir4iladpp51sdgmis9dj4y8v08cka0mbmsy0frc9a4gjqr"; })
+  (fetchNuGet { pname = "System.Text.Encoding.CodePages"; version = "5.0.0"; sha256 = "1bn2pzaaq4wx9ixirr8151vm5hynn3lmrljcgjx9yghmm4k677k0"; })
+  (fetchNuGet { pname = "System.Text.Encoding.Extensions"; version = "4.3.0"; sha256 = "11q1y8hh5hrp5a3kw25cb6l00v5l5dvirkz8jr3sq00h1xgcgrxy"; })
+  (fetchNuGet { pname = "System.Text.Json"; version = "4.7.0"; sha256 = "0fp3xrysccm5dkaac4yb51d793vywxks978kkl5x4db9gw29rfdr"; })
+  (fetchNuGet { pname = "System.Text.Json"; version = "4.7.2"; sha256 = "10xj1pw2dgd42anikvj9qm23ccssrcp7dpznpj4j7xjp1ikhy3y4"; })
+  (fetchNuGet { pname = "System.Text.RegularExpressions"; version = "4.3.0"; sha256 = "1bgq51k7fwld0njylfn7qc5fmwrk2137gdq7djqdsw347paa9c2l"; })
+  (fetchNuGet { pname = "System.Threading"; version = "4.3.0"; sha256 = "0rw9wfamvhayp5zh3j7p1yfmx9b5khbf4q50d8k5rk993rskfd34"; })
+  (fetchNuGet { pname = "System.Threading.Tasks"; version = "4.3.0"; sha256 = "134z3v9abw3a6jsw17xl3f6hqjpak5l682k2vz39spj4kmydg6k7"; })
+  (fetchNuGet { pname = "System.Threading.Tasks.Extensions"; version = "4.3.0"; sha256 = "1xxcx2xh8jin360yjwm4x4cf5y3a2bwpn2ygkfkwkicz7zk50s2z"; })
+  (fetchNuGet { pname = "System.Threading.Tasks.Extensions"; version = "4.5.3"; sha256 = "0g7r6hm572ax8v28axrdxz1gnsblg6kszq17g51pj14a5rn2af7i"; })
+  (fetchNuGet { pname = "System.Threading.ThreadPool"; version = "4.3.0"; sha256 = "027s1f4sbx0y1xqw2irqn6x161lzj8qwvnh2gn78ciiczdv10vf1"; })
+  (fetchNuGet { pname = "System.Threading.Timer"; version = "4.3.0"; sha256 = "1nx773nsx6z5whv8kaa1wjh037id2f1cxhb69pvgv12hd2b6qs56"; })
+  (fetchNuGet { pname = "System.ValueTuple"; version = "4.5.0"; sha256 = "00k8ja51d0f9wrq4vv5z2jhq8hy31kac2rg0rv06prylcybzl8cy"; })
+  (fetchNuGet { pname = "System.Windows.Extensions"; version = "4.7.0"; sha256 = "11dmyx3j0jafjx5r9mkj1v4w2a4rzrdn8fgwm2d1g7fs1ayqcvy9"; })
+  (fetchNuGet { pname = "System.Xml.ReaderWriter"; version = "4.3.0"; sha256 = "0c47yllxifzmh8gq6rq6l36zzvw4kjvlszkqa9wq3fr59n0hl3s1"; })
+  (fetchNuGet { pname = "System.Xml.XDocument"; version = "4.3.0"; sha256 = "08h8fm4l77n0nd4i4fk2386y809bfbwqb7ih9d7564ifcxr5ssxd"; })
+  (fetchNuGet { pname = "System.Xml.XmlDocument"; version = "4.3.0"; sha256 = "0bmz1l06dihx52jxjr22dyv5mxv6pj4852lx68grjm7bivhrbfwi"; })
+  (fetchNuGet { pname = "Tmds.DBus"; version = "0.9.1"; sha256 = "095vinsbb9pbphbhh7x7rxvs8a3b9w1nnz7gxn9bw5is01qnhgdm"; })
+  (fetchNuGet { pname = "Trinet.Core.IO.Ntfs"; version = "4.1.1"; sha256 = "0a30xjmxjr6l8fdjivy70zsxk9p6qlgjs3g8h1q26jn40hpjbswr"; })
+]
diff --git a/nixpkgs/pkgs/applications/audio/game-music-emu/default.nix b/nixpkgs/pkgs/applications/audio/game-music-emu/default.nix
deleted file mode 100644
index 55f12fd3c64a..000000000000
--- a/nixpkgs/pkgs/applications/audio/game-music-emu/default.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ lib, stdenv, fetchurl, cmake }:
-
-stdenv.mkDerivation rec {
-  version = "0.6.3";
-  pname = "game-music-emu";
-
-  src = fetchurl {
-    url = "https://bitbucket.org/mpyne/game-music-emu/downloads/${pname}-${version}.tar.xz";
-    sha256 = "07857vdkak306d9s5g6fhmjyxk7vijzjhkmqb15s7ihfxx9lx8xb";
-  };
-  cmakeFlags = lib.optionals stdenv.isDarwin [ "-DENABLE_UBSAN=OFF" ];
-  nativeBuildInputs = [ cmake ];
-
-  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 = with maintainers; [ luc65r ];
-  };
-}
diff --git a/nixpkgs/pkgs/applications/audio/gbsplay/default.nix b/nixpkgs/pkgs/applications/audio/gbsplay/default.nix
index 59253af2ad68..1e6bbdb4dd71 100644
--- a/nixpkgs/pkgs/applications/audio/gbsplay/default.nix
+++ b/nixpkgs/pkgs/applications/audio/gbsplay/default.nix
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Gameboy sound player";
-    license = licenses.gpl1;
+    license = licenses.gpl1Plus;
     platforms = [ "i686-linux" "x86_64-linux" ];
     maintainers = with maintainers; [ ];
   };
diff --git a/nixpkgs/pkgs/applications/audio/giada/default.nix b/nixpkgs/pkgs/applications/audio/giada/default.nix
index 15eccc46943f..86cb565fa820 100644
--- a/nixpkgs/pkgs/applications/audio/giada/default.nix
+++ b/nixpkgs/pkgs/applications/audio/giada/default.nix
@@ -1,36 +1,50 @@
 { lib
 , stdenv
 , fetchFromGitHub
+, fetchpatch
 , cmake
 , pkg-config
 , fltk
+, fmt
 , rtmidi
 , libsamplerate
+, libmpg123
 , libsndfile
 , jack2
 , alsa-lib
 , libpulseaudio
 , libXpm
+, libXrandr
 , flac
 , libogg
 , libvorbis
 , libopus
+, nlohmann_json
 }:
 
 stdenv.mkDerivation rec {
   pname = "giada";
-  version = "unstable-2021-09-24";
+  version = "0.24.0";
 
   src = fetchFromGitHub {
     owner = "monocasual";
     repo = pname;
-    # Using master with https://github.com/monocasual/giada/pull/509 till a new release is done.
-    rev = "f117a8b8eef08d904ef1ab22c45f0e1fad6b8a56";
-    sha256 = "01hb981lrsyk870zs8xph5fm0z7bbffpkxgw04hq487r804mkx9j";
+    rev = "v${version}";
+    sha256 = "sha256-pKzc+RRW3o5vYaiGqW9/VjYZZJvr6cg1kdjP9qRkHwM=";
     fetchSubmodules = true;
   };
 
-  NIX_CFLAGS_COMPILE = [
+  patches = [
+    # Remove when updating to the next release, this PR is already merged
+    # Fix fmt type error: https://github.com/monocasual/giada/pull/635
+    (fetchpatch {
+      name = "fix-fmt-type-error.patch";
+      url = "https://github.com/monocasual/giada/commit/032af4334f6d2bb7e77a49e7aef5b4c4d696df9a.patch";
+      hash = "sha256-QuxETvBWzA1v2ifyNzlNMGfQ6XhYQF03sGZA9rBx1xU=";
+    })
+  ];
+
+  env.NIX_CFLAGS_COMPILE = toString [
     "-w"
     "-Wno-error"
   ];
@@ -48,8 +62,11 @@ stdenv.mkDerivation rec {
   buildInputs = [
     rtmidi
     fltk
+    fmt
+    libmpg123
     libsndfile
     libsamplerate
+    nlohmann_json
     alsa-lib
     libXpm
     libpulseaudio
@@ -58,20 +75,9 @@ stdenv.mkDerivation rec {
     libogg
     libvorbis
     libopus
+    libXrandr
   ];
 
-  postPatch = ''
-    local fixup_list=(
-      src/core/kernelMidi.cpp
-      src/gui/elems/config/tabMidi.cpp
-      src/utils/ver.cpp
-    )
-    for f in "''${fixup_list[@]}"; do
-      substituteInPlace "$f" \
-        --replace "<RtMidi.h>" "<${rtmidi.src}/RtMidi.h>"
-    done
-  '';
-
   meta = with lib; {
     description = "A free, minimal, hardcore audio tool for DJs, live performers and electronic musicians";
     homepage = "https://giadamusic.com/";
diff --git a/nixpkgs/pkgs/applications/audio/gjay/default.nix b/nixpkgs/pkgs/applications/audio/gjay/default.nix
index 4bd9c6dcd8f8..29d676598203 100644
--- a/nixpkgs/pkgs/applications/audio/gjay/default.nix
+++ b/nixpkgs/pkgs/applications/audio/gjay/default.nix
@@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Generates playlists such that each song sounds good following the previous song";
-    homepage = "http://gjay.sourceforge.net/";
+    homepage = "https://gjay.sourceforge.net/";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ pSub ];
     platforms = with platforms; linux;
diff --git a/nixpkgs/pkgs/applications/audio/gmpc/default.nix b/nixpkgs/pkgs/applications/audio/gmpc/default.nix
index 4c93fad511ae..33930dfb7d2d 100644
--- a/nixpkgs/pkgs/applications/audio/gmpc/default.nix
+++ b/nixpkgs/pkgs/applications/audio/gmpc/default.nix
@@ -24,9 +24,10 @@ stdenv.mkDerivation rec {
   version = "11.8.16";
 
   libmpd = stdenv.mkDerivation {
-    name = "libmpd-11.8.17";
+    pname = "libmpd";
+    version = "11.8.17";
     src = fetchurl {
-      url = "http://download.sarine.nl/Programs/gmpc/11.8/libmpd-11.8.17.tar.gz";
+      url = "https://download.sarine.nl/Programs/gmpc/${lib.versions.majorMinor version}/libmpd-${version}.tar.gz";
       sha256 = "10vspwsgr8pwf3qp2bviw6b2l8prgdiswgv7qiqiyr0h1mmk487y";
     };
     patches = [ ./libmpd-11.8.17-remove-strndup.patch ];
diff --git a/nixpkgs/pkgs/applications/audio/gnaural/default.nix b/nixpkgs/pkgs/applications/audio/gnaural/default.nix
index 1cdea4629bbc..e7753ef28e6b 100644
--- a/nixpkgs/pkgs/applications/audio/gnaural/default.nix
+++ b/nixpkgs/pkgs/applications/audio/gnaural/default.nix
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
   # Workaround build failure on -fno-common toolchains:
   #   ld: src/net/../gnauralnet.h:233: multiple definition of `GN_ScheduleFingerprint';
   #     src/net/../../src/gnauralnet.h:233: first defined here
-  NIX_CFLAGS_COMPILE = "-fcommon";
+  env.NIX_CFLAGS_COMPILE = "-fcommon";
 
   postInstall = ''
     mkdir -p $out/share/applications
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Programmable auditory binaural-beat synthesizer";
-    homepage = "http://gnaural.sourceforge.net/";
+    homepage = "https://gnaural.sourceforge.net/";
     maintainers = with maintainers; [ ehmry ];
     license = with licenses; [ gpl2Only ];
   };
diff --git a/nixpkgs/pkgs/applications/audio/gnome-podcasts/Cargo.lock b/nixpkgs/pkgs/applications/audio/gnome-podcasts/Cargo.lock
new file mode 100644
index 000000000000..0c91dab0bd1d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/gnome-podcasts/Cargo.lock
@@ -0,0 +1,2945 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "aho-corasick"
+version = "0.7.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "ammonia"
+version = "3.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2e445c26125ff80316eaea16e812d717b147b82a68682bd4730f74d4845c8b35"
+dependencies = [
+ "html5ever",
+ "lazy_static",
+ "maplit",
+ "markup5ever_rcdom",
+ "matches",
+ "tendril",
+ "url",
+]
+
+[[package]]
+name = "ansi_term"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "anyhow"
+version = "1.0.52"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "84450d0b4a8bd1ba4144ce8ce718fbc5d071358b1e5384bace6536b3d1f2d5b3"
+
+[[package]]
+name = "atk"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a83b21d2aa75e464db56225e1bda2dd5993311ba1095acaa8fa03d1ae67026ba"
+dependencies = [
+ "atk-sys",
+ "bitflags",
+ "glib 0.14.8",
+ "libc",
+]
+
+[[package]]
+name = "atk-sys"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "badcf670157c84bb8b1cf6b5f70b650fed78da2033c9eed84c4e49b11cbe83ea"
+dependencies = [
+ "glib-sys 0.14.0",
+ "gobject-sys 0.14.0",
+ "libc",
+ "system-deps 3.2.0",
+]
+
+[[package]]
+name = "atom_syndication"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "21fb6a0b39c6517edafe46f8137e53c51742425a4dae1c73ee12264a37ad7541"
+dependencies = [
+ "chrono",
+ "derive_builder 0.10.2",
+ "diligent-date-parser",
+ "never",
+ "quick-xml",
+]
+
+[[package]]
+name = "atty"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
+dependencies = [
+ "hermit-abi",
+ "libc",
+ "winapi",
+]
+
+[[package]]
+name = "autocfg"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
+
+[[package]]
+name = "base64"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd"
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "bumpalo"
+version = "3.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f1e260c3a9040a7c19a12468758f4c16f31a81a1fe087482be9570ec864bb6c"
+
+[[package]]
+name = "byteorder"
+version = "1.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
+
+[[package]]
+name = "bytes"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8"
+
+[[package]]
+name = "cairo-rs"
+version = "0.14.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33b5725979db0c586d98abad2193cdb612dd40ef95cd26bd99851bf93b3cb482"
+dependencies = [
+ "bitflags",
+ "cairo-sys-rs",
+ "glib 0.14.8",
+ "libc",
+ "thiserror",
+]
+
+[[package]]
+name = "cairo-sys-rs"
+version = "0.14.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b448b876970834fda82ba3aeaccadbd760206b75388fc5c1b02f1e343b697570"
+dependencies = [
+ "glib-sys 0.14.0",
+ "libc",
+ "system-deps 3.2.0",
+]
+
+[[package]]
+name = "cc"
+version = "1.0.72"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee"
+
+[[package]]
+name = "cfg-expr"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b412e83326147c2bb881f8b40edfbf9905b9b8abaebd0e47ca190ba62fda8f0e"
+dependencies = [
+ "smallvec",
+]
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "chrono"
+version = "0.4.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73"
+dependencies = [
+ "libc",
+ "num-integer",
+ "num-traits",
+ "time",
+ "winapi",
+]
+
+[[package]]
+name = "core-foundation"
+version = "0.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6888e10551bb93e424d8df1d07f1a8b4fceb0001a3a4b048bfc47554946f47b3"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "core-foundation-sys"
+version = "0.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc"
+
+[[package]]
+name = "crossbeam-channel"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4"
+dependencies = [
+ "cfg-if",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-deque"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e"
+dependencies = [
+ "cfg-if",
+ "crossbeam-epoch",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-epoch"
+version = "0.9.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ec02e091aa634e2c3ada4a392989e7c3116673ef0ac5b72232439094d73b7fd"
+dependencies = [
+ "cfg-if",
+ "crossbeam-utils",
+ "lazy_static",
+ "memoffset",
+ "scopeguard",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db"
+dependencies = [
+ "cfg-if",
+ "lazy_static",
+]
+
+[[package]]
+name = "ctor"
+version = "0.1.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ccc0a48a9b826acdf4028595adc9db92caea352f7af011a3034acd172a52a0aa"
+dependencies = [
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "darling"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d706e75d87e35569db781a9b5e2416cff1236a47ed380831f959382ccd5f858"
+dependencies = [
+ "darling_core 0.10.2",
+ "darling_macro 0.10.2",
+]
+
+[[package]]
+name = "darling"
+version = "0.12.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f2c43f534ea4b0b049015d00269734195e6d3f0f6635cb692251aca6f9f8b3c"
+dependencies = [
+ "darling_core 0.12.4",
+ "darling_macro 0.12.4",
+]
+
+[[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 0.9.3",
+ "syn",
+]
+
+[[package]]
+name = "darling_core"
+version = "0.12.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e91455b86830a1c21799d94524df0845183fa55bafd9aa137b01c7d1065fa36"
+dependencies = [
+ "fnv",
+ "ident_case",
+ "proc-macro2",
+ "quote",
+ "strsim 0.10.0",
+ "syn",
+]
+
+[[package]]
+name = "darling_macro"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72"
+dependencies = [
+ "darling_core 0.10.2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "darling_macro"
+version = "0.12.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29b5acf0dea37a7f66f7b25d2c5e93fd46f8f6968b1a5d7a3e02e97768afc95a"
+dependencies = [
+ "darling_core 0.12.4",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "dbus"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "48b5f0f36f1eebe901b0e6bee369a77ed3396334bf3f09abd46454a576f71819"
+dependencies = [
+ "libc",
+ "libdbus-sys",
+]
+
+[[package]]
+name = "derive_builder"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2658621297f2cf68762a6f7dc0bb7e1ff2cfd6583daef8ee0fed6f7ec468ec0"
+dependencies = [
+ "darling 0.10.2",
+ "derive_builder_core 0.9.0",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "derive_builder"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d13202debe11181040ae9063d739fa32cfcaaebe2275fe387703460ae2365b30"
+dependencies = [
+ "derive_builder_macro",
+]
+
+[[package]]
+name = "derive_builder_core"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2791ea3e372c8495c0bc2033991d76b512cd799d07491fbd6890124db9458bef"
+dependencies = [
+ "darling 0.10.2",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "derive_builder_core"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "66e616858f6187ed828df7c64a6d71720d83767a7f19740b2d1b6fe6327b36e5"
+dependencies = [
+ "darling 0.12.4",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "derive_builder_macro"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "58a94ace95092c5acb1e97a7e846b310cfbd499652f72297da7493f618a98d73"
+dependencies = [
+ "derive_builder_core 0.10.2",
+ "syn",
+]
+
+[[package]]
+name = "diesel"
+version = "1.4.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b28135ecf6b7d446b43e27e225622a038cc4e2930a1022f51cdb97ada19b8e4d"
+dependencies = [
+ "byteorder",
+ "chrono",
+ "diesel_derives",
+ "libsqlite3-sys",
+ "r2d2",
+]
+
+[[package]]
+name = "diesel_derives"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "45f5098f628d02a7a0f68ddba586fb61e80edec3bdc1be3b921f4ceec60858d3"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "diesel_migrations"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf3cde8413353dc7f5d72fa8ce0b99a560a359d2c5ef1e5817ca731cd9008f4c"
+dependencies = [
+ "migrations_internals",
+ "migrations_macros",
+]
+
+[[package]]
+name = "diff"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e25ea47919b1560c4e3b7fe0aaab9becf5b84a10325ddf7db0f0ba5e1026499"
+
+[[package]]
+name = "diligent-date-parser"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c2d0fd95c7c02e2d6c588c6c5628466fff9bdde4b8c6196465e087b08e792720"
+dependencies = [
+ "chrono",
+]
+
+[[package]]
+name = "dirs"
+version = "3.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "30baa043103c9d0c2a57cf537cc2f35623889dc0d405e6c3cccfadbc81c71309"
+dependencies = [
+ "dirs-sys",
+]
+
+[[package]]
+name = "dirs-sys"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03d86534ed367a67548dc68113a0f5db55432fdfbb6e6f9d77704397d95d5780"
+dependencies = [
+ "libc",
+ "redox_users",
+ "winapi",
+]
+
+[[package]]
+name = "either"
+version = "1.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
+
+[[package]]
+name = "encoding_rs"
+version = "0.8.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7896dc8abb250ffdda33912550faa54c88ec8b998dec0b2c55ab224921ce11df"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "env_logger"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36"
+dependencies = [
+ "atty",
+ "humantime",
+ "log",
+ "regex",
+ "termcolor",
+]
+
+[[package]]
+name = "field-offset"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e1c54951450cbd39f3dbcf1005ac413b49487dabf18a720ad2383eccfeffb92"
+dependencies = [
+ "memoffset",
+ "rustc_version",
+]
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "foreign-types"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
+dependencies = [
+ "foreign-types-shared",
+]
+
+[[package]]
+name = "foreign-types-shared"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
+
+[[package]]
+name = "form_urlencoded"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191"
+dependencies = [
+ "matches",
+ "percent-encoding",
+]
+
+[[package]]
+name = "fragile"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "69a039c3498dc930fe810151a34ba0c1c70b02b8625035592e74432f678591f2"
+
+[[package]]
+name = "fuchsia-cprng"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
+
+[[package]]
+name = "futf"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c9c1ce3fa9336301af935ab852c437817d14cd33690446569392e65170aac3b"
+dependencies = [
+ "mac",
+ "new_debug_unreachable",
+]
+
+[[package]]
+name = "futures"
+version = "0.3.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28560757fe2bb34e79f907794bb6b22ae8b0e5c669b638a1132f2592b19035b4"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-io",
+ "futures-sink",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-channel"
+version = "0.3.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba3dda0b6588335f360afc675d0564c17a77a2bda81ca178a4b6081bd86c7f0b"
+dependencies = [
+ "futures-core",
+ "futures-sink",
+]
+
+[[package]]
+name = "futures-core"
+version = "0.3.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d0c8ff0461b82559810cdccfde3215c3f373807f5e5232b71479bff7bb2583d7"
+
+[[package]]
+name = "futures-executor"
+version = "0.3.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29d6d2ff5bb10fb95c85b8ce46538a2e5f5e7fdc755623a7d4529ab8a4ed9d2a"
+dependencies = [
+ "futures-core",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-io"
+version = "0.3.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1f9d34af5a1aac6fb380f735fe510746c38067c5bf16c7fd250280503c971b2"
+
+[[package]]
+name = "futures-macro"
+version = "0.3.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6dbd947adfffb0efc70599b3ddcf7b5597bb5fa9e245eb99f62b3a5f7bb8bd3c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "futures-sink"
+version = "0.3.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3055baccb68d74ff6480350f8d6eb8fcfa3aa11bdc1a1ae3afdd0514617d508"
+
+[[package]]
+name = "futures-task"
+version = "0.3.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ee7c6485c30167ce4dfb83ac568a849fe53274c831081476ee13e0dce1aad72"
+
+[[package]]
+name = "futures-util"
+version = "0.3.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9b5cf40b47a271f77a8b1bec03ca09044d99d2372c0de244e66430761127164"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-macro",
+ "futures-sink",
+ "futures-task",
+ "memchr",
+ "pin-project-lite",
+ "pin-utils",
+ "slab",
+]
+
+[[package]]
+name = "gdk"
+version = "0.14.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9d749dcfc00d8de0d7c3a289e04a04293eb5ba3d8a4e64d64911d481fa9933b"
+dependencies = [
+ "bitflags",
+ "cairo-rs",
+ "gdk-pixbuf",
+ "gdk-sys",
+ "gio",
+ "glib 0.14.8",
+ "libc",
+ "pango",
+]
+
+[[package]]
+name = "gdk-pixbuf"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "534192cb8f01daeb8fab2c8d4baa8f9aae5b7a39130525779f5c2608e235b10f"
+dependencies = [
+ "gdk-pixbuf-sys",
+ "gio",
+ "glib 0.14.8",
+ "libc",
+]
+
+[[package]]
+name = "gdk-pixbuf-sys"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f097c0704201fbc8f69c1762dc58c6947c8bb188b8ed0bc7e65259f1894fe590"
+dependencies = [
+ "gio-sys",
+ "glib-sys 0.14.0",
+ "gobject-sys 0.14.0",
+ "libc",
+ "system-deps 3.2.0",
+]
+
+[[package]]
+name = "gdk-sys"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e091b3d3d6696949ac3b3fb3c62090e5bfd7bd6850bef5c3c5ea701de1b1f1e"
+dependencies = [
+ "cairo-sys-rs",
+ "gdk-pixbuf-sys",
+ "gio-sys",
+ "glib-sys 0.14.0",
+ "gobject-sys 0.14.0",
+ "libc",
+ "pango-sys",
+ "pkg-config",
+ "system-deps 3.2.0",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.1.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi 0.9.0+wasi-snapshot-preview1",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi 0.10.2+wasi-snapshot-preview1",
+]
+
+[[package]]
+name = "gettext-rs"
+version = "0.4.2"
+source = "git+https://github.com/danigm/gettext-rs?branch=no-gettext#61938b9f5f1d3bdc31f9839f53fabe5ccf136a78"
+dependencies = [
+ "gettext-sys",
+ "locale_config",
+]
+
+[[package]]
+name = "gettext-sys"
+version = "0.19.9"
+source = "git+https://github.com/danigm/gettext-rs?branch=no-gettext#61938b9f5f1d3bdc31f9839f53fabe5ccf136a78"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "gio"
+version = "0.14.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "711c3632b3ebd095578a9c091418d10fed492da9443f58ebc8f45efbeb215cb0"
+dependencies = [
+ "bitflags",
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "gio-sys",
+ "glib 0.14.8",
+ "libc",
+ "once_cell",
+ "thiserror",
+]
+
+[[package]]
+name = "gio-sys"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0a41df66e57fcc287c4bcf74fc26b884f31901ea9792ec75607289b456f48fa"
+dependencies = [
+ "glib-sys 0.14.0",
+ "gobject-sys 0.14.0",
+ "libc",
+ "system-deps 3.2.0",
+ "winapi",
+]
+
+[[package]]
+name = "glib"
+version = "0.10.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c685013b7515e668f1b57a165b009d4d28cb139a8a989bbd699c10dad29d0c5"
+dependencies = [
+ "bitflags",
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-task",
+ "futures-util",
+ "glib-macros 0.10.1",
+ "glib-sys 0.10.1",
+ "gobject-sys 0.10.0",
+ "libc",
+ "once_cell",
+]
+
+[[package]]
+name = "glib"
+version = "0.14.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c515f1e62bf151ef6635f528d05b02c11506de986e43b34a5c920ef0b3796a4"
+dependencies = [
+ "bitflags",
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-task",
+ "glib-macros 0.14.1",
+ "glib-sys 0.14.0",
+ "gobject-sys 0.14.0",
+ "libc",
+ "once_cell",
+ "smallvec",
+]
+
+[[package]]
+name = "glib-macros"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "41486a26d1366a8032b160b59065a59fb528530a46a49f627e7048fb8c064039"
+dependencies = [
+ "anyhow",
+ "heck",
+ "itertools 0.9.0",
+ "proc-macro-crate 0.1.5",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "glib-macros"
+version = "0.14.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2aad66361f66796bfc73f530c51ef123970eb895ffba991a234fcf7bea89e518"
+dependencies = [
+ "anyhow",
+ "heck",
+ "proc-macro-crate 1.1.0",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "glib-sys"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7e9b997a66e9a23d073f2b1abb4dbfc3925e0b8952f67efd8d9b6e168e4cdc1"
+dependencies = [
+ "libc",
+ "system-deps 1.3.2",
+]
+
+[[package]]
+name = "glib-sys"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c1d60554a212445e2a858e42a0e48cece1bd57b311a19a9468f70376cf554ae"
+dependencies = [
+ "libc",
+ "system-deps 3.2.0",
+]
+
+[[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.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "952133b60c318a62bf82ee75b93acc7e84028a093e06b9e27981c2b6fe68218c"
+dependencies = [
+ "glib-sys 0.10.1",
+ "libc",
+ "system-deps 1.3.2",
+]
+
+[[package]]
+name = "gobject-sys"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa92cae29759dae34ab5921d73fff5ad54b3d794ab842c117e36cafc7994c3f5"
+dependencies = [
+ "glib-sys 0.14.0",
+ "libc",
+ "system-deps 3.2.0",
+]
+
+[[package]]
+name = "gstreamer"
+version = "0.17.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c6a255f142048ba2c4a4dce39106db1965abe355d23f4b5335edea43a553faa4"
+dependencies = [
+ "bitflags",
+ "cfg-if",
+ "futures-channel",
+ "futures-core",
+ "futures-util",
+ "glib 0.14.8",
+ "gstreamer-sys",
+ "libc",
+ "muldiv",
+ "num-integer",
+ "num-rational",
+ "once_cell",
+ "paste",
+ "pretty-hex",
+ "thiserror",
+]
+
+[[package]]
+name = "gstreamer-base"
+version = "0.17.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c0c1d8c62eb5d08fb80173609f2eea71d385393363146e4e78107facbd67715"
+dependencies = [
+ "bitflags",
+ "cfg-if",
+ "glib 0.14.8",
+ "gstreamer",
+ "gstreamer-base-sys",
+ "libc",
+]
+
+[[package]]
+name = "gstreamer-base-sys"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28169a7b58edb93ad8ac766f0fa12dcd36a2af4257a97ee10194c7103baf3e27"
+dependencies = [
+ "glib-sys 0.14.0",
+ "gobject-sys 0.14.0",
+ "gstreamer-sys",
+ "libc",
+ "system-deps 3.2.0",
+]
+
+[[package]]
+name = "gstreamer-player"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c503dba6f79b5cd8a4be5329119892c196db013ce66fce16079a7df8ce819a3a"
+dependencies = [
+ "bitflags",
+ "glib 0.14.8",
+ "gstreamer",
+ "gstreamer-player-sys",
+ "gstreamer-video",
+ "libc",
+ "once_cell",
+]
+
+[[package]]
+name = "gstreamer-player-sys"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3e50bed2a120574750ea1370163df21b50762d0b4967f569fdc58232f4c930d5"
+dependencies = [
+ "glib-sys 0.14.0",
+ "gobject-sys 0.14.0",
+ "gstreamer-sys",
+ "gstreamer-video-sys",
+ "libc",
+ "system-deps 3.2.0",
+]
+
+[[package]]
+name = "gstreamer-sys"
+version = "0.17.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a81704feeb3e8599913bdd1e738455c2991a01ff4a1780cb62200993e454cc3e"
+dependencies = [
+ "glib-sys 0.14.0",
+ "gobject-sys 0.14.0",
+ "libc",
+ "system-deps 3.2.0",
+]
+
+[[package]]
+name = "gstreamer-video"
+version = "0.17.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3447ee95c8e79daec0b163260cf6a3de9bc19ff47a01b533787f900074a3476"
+dependencies = [
+ "bitflags",
+ "cfg-if",
+ "futures-channel",
+ "glib 0.14.8",
+ "gstreamer",
+ "gstreamer-base",
+ "gstreamer-video-sys",
+ "libc",
+ "once_cell",
+]
+
+[[package]]
+name = "gstreamer-video-sys"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b81608f4182bdddd5bd33aaaa341d5544eda12b067a3dab75b1b7d2de01a3ba7"
+dependencies = [
+ "glib-sys 0.14.0",
+ "gobject-sys 0.14.0",
+ "gstreamer-base-sys",
+ "gstreamer-sys",
+ "libc",
+ "system-deps 3.2.0",
+]
+
+[[package]]
+name = "gtk"
+version = "0.14.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2eb51122dd3317e9327ec1e4faa151d1fa0d95664cd8fb8dcfacf4d4d29ac70c"
+dependencies = [
+ "atk",
+ "bitflags",
+ "cairo-rs",
+ "field-offset",
+ "futures-channel",
+ "gdk",
+ "gdk-pixbuf",
+ "gio",
+ "glib 0.14.8",
+ "gtk-sys",
+ "gtk3-macros",
+ "libc",
+ "once_cell",
+ "pango",
+ "pkg-config",
+]
+
+[[package]]
+name = "gtk-sys"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c14c8d3da0545785a7c5a120345b3abb534010fb8ae0f2ef3f47c027fba303e"
+dependencies = [
+ "atk-sys",
+ "cairo-sys-rs",
+ "gdk-pixbuf-sys",
+ "gdk-sys",
+ "gio-sys",
+ "glib-sys 0.14.0",
+ "gobject-sys 0.14.0",
+ "libc",
+ "pango-sys",
+ "system-deps 3.2.0",
+]
+
+[[package]]
+name = "gtk3-macros"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "21de1da96dc117443fb03c2e270b2d34b7de98d0a79a19bbb689476173745b79"
+dependencies = [
+ "anyhow",
+ "heck",
+ "proc-macro-crate 1.1.0",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "h2"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f072413d126e57991455e0a922b31e4c8ba7c2ffbebf6b78b4f8521397d65cd"
+dependencies = [
+ "bytes",
+ "fnv",
+ "futures-core",
+ "futures-sink",
+ "futures-util",
+ "http",
+ "indexmap",
+ "slab",
+ "tokio",
+ "tokio-util",
+ "tracing",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"
+
+[[package]]
+name = "heck"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
+dependencies = [
+ "unicode-segmentation",
+]
+
+[[package]]
+name = "hermit-abi"
+version = "0.1.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "html2text"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a26379dcb715e237b96102a12b505c553e2bffa74bae2e54658748d298660ef1"
+dependencies = [
+ "html5ever",
+ "markup5ever_rcdom",
+ "unicode-width",
+]
+
+[[package]]
+name = "html5ever"
+version = "0.25.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aafcf38a1a36118242d29b92e1b08ef84e67e4a5ed06e0a80be20e6a32bfed6b"
+dependencies = [
+ "log",
+ "mac",
+ "markup5ever",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "http"
+version = "0.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "31f4c6746584866f0feabcc69893c5b51beef3831656a968ed7ae254cdc4fd03"
+dependencies = [
+ "bytes",
+ "fnv",
+ "itoa 1.0.1",
+]
+
+[[package]]
+name = "http-body"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1ff4f84919677303da5f147645dbea6b1881f368d03ac84e1dc09031ebd7b2c6"
+dependencies = [
+ "bytes",
+ "http",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "httparse"
+version = "1.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "acd94fdbe1d4ff688b67b04eee2e17bd50995534a61539e45adfefb45e5e5503"
+
+[[package]]
+name = "httpdate"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421"
+
+[[package]]
+name = "humansize"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "02296996cb8796d7c6e3bc2d9211b7802812d36999a51bb754123ead7d37d026"
+
+[[package]]
+name = "humantime"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f"
+dependencies = [
+ "quick-error",
+]
+
+[[package]]
+name = "hyper"
+version = "0.14.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7ec3e62bdc98a2f0393a5048e4c30ef659440ea6e0e572965103e72bd836f55"
+dependencies = [
+ "bytes",
+ "futures-channel",
+ "futures-core",
+ "futures-util",
+ "h2",
+ "http",
+ "http-body",
+ "httparse",
+ "httpdate",
+ "itoa 0.4.8",
+ "pin-project-lite",
+ "socket2",
+ "tokio",
+ "tower-service",
+ "tracing",
+ "want",
+]
+
+[[package]]
+name = "hyper-tls"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
+dependencies = [
+ "bytes",
+ "hyper",
+ "native-tls",
+ "tokio",
+ "tokio-native-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.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8"
+dependencies = [
+ "matches",
+ "unicode-bidi",
+ "unicode-normalization",
+]
+
+[[package]]
+name = "indexmap"
+version = "1.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5"
+dependencies = [
+ "autocfg",
+ "hashbrown",
+]
+
+[[package]]
+name = "instant"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "ipnet"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68f2d64f2edebec4ce84ad108148e67e1064789bee435edc5b60ad398714a3a9"
+
+[[package]]
+name = "itertools"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itertools"
+version = "0.10.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itoa"
+version = "0.4.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4"
+
+[[package]]
+name = "itoa"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35"
+
+[[package]]
+name = "js-sys"
+version = "0.3.55"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7cc9ffccd38c451a86bf13657df244e9c3f37493cce8e5e21e940963777acc84"
+dependencies = [
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "lazy_static"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+
+[[package]]
+name = "libc"
+version = "0.2.112"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b03d17f364a3a042d5e5d46b053bbbf82c92c9430c592dd4c064dc6ee997125"
+
+[[package]]
+name = "libdbus-sys"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c185b5b7ad900923ef3a8ff594083d4d9b5aea80bb4f32b8342363138c0d456b"
+dependencies = [
+ "pkg-config",
+]
+
+[[package]]
+name = "libhandy"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5bcf9c79ec810a62f442ffd568d2de233983dc91c160abee4949b67a647024ed"
+dependencies = [
+ "bitflags",
+ "gdk",
+ "gdk-pixbuf",
+ "gio",
+ "glib 0.14.8",
+ "gtk",
+ "lazy_static",
+ "libc",
+ "libhandy-sys",
+ "pango",
+]
+
+[[package]]
+name = "libhandy-sys"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1938b93a8f29417992c452b7f43e7eff8a9f8d25b7f0bc923ae9d75b50a9cde3"
+dependencies = [
+ "gdk-pixbuf-sys",
+ "gdk-sys",
+ "gio-sys",
+ "glib-sys 0.14.0",
+ "gobject-sys 0.14.0",
+ "gtk-sys",
+ "libc",
+ "pango-sys",
+ "pkg-config",
+ "system-deps 3.2.0",
+]
+
+[[package]]
+name = "libsqlite3-sys"
+version = "0.22.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "290b64917f8b0cb885d9de0f9959fe1f775d7fa12f1da2db9001c1c8ab60f89d"
+dependencies = [
+ "pkg-config",
+ "vcpkg",
+]
+
+[[package]]
+name = "locale_config"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73ac19ebe45489e5d53b4346d8b90bb3dd03275c5fdf2ce22a982516d86b535c"
+dependencies = [
+ "lazy_static",
+ "regex",
+ "winapi",
+]
+
+[[package]]
+name = "lock_api"
+version = "0.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712a4d093c9976e24e7dbca41db895dabcbac38eb5f4045393d17a95bdfb1109"
+dependencies = [
+ "scopeguard",
+]
+
+[[package]]
+name = "log"
+version = "0.4.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "mac"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
+
+[[package]]
+name = "maplit"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d"
+
+[[package]]
+name = "markup5ever"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a24f40fb03852d1cdd84330cddcaf98e9ec08a7b7768e952fad3b4cf048ec8fd"
+dependencies = [
+ "log",
+ "phf",
+ "phf_codegen",
+ "string_cache",
+ "string_cache_codegen",
+ "tendril",
+]
+
+[[package]]
+name = "markup5ever_rcdom"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f015da43bcd8d4f144559a3423f4591d69b8ce0652c905374da7205df336ae2b"
+dependencies = [
+ "html5ever",
+ "markup5ever",
+ "tendril",
+ "xml5ever",
+]
+
+[[package]]
+name = "matches"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f"
+
+[[package]]
+name = "memchr"
+version = "2.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a"
+
+[[package]]
+name = "memoffset"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "migrations_internals"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b4fc84e4af020b837029e017966f86a1c2d5e83e64b589963d5047525995860"
+dependencies = [
+ "diesel",
+]
+
+[[package]]
+name = "migrations_macros"
+version = "1.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9753f12909fd8d923f75ae5c3258cae1ed3c8ec052e1b38c93c21a6d157f789c"
+dependencies = [
+ "migrations_internals",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[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 = "mio"
+version = "0.7.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc"
+dependencies = [
+ "libc",
+ "log",
+ "miow",
+ "ntapi",
+ "winapi",
+]
+
+[[package]]
+name = "miow"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "mpris-player"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4f6badd6ebe31be46eb2e2975cf3b34b183bace5f8a8db1d609fefc4d46fbb07"
+dependencies = [
+ "dbus",
+ "glib 0.10.3",
+]
+
+[[package]]
+name = "muldiv"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b5136edda114182728ccdedb9f5eda882781f35fa6e80cc360af12a8932507f3"
+
+[[package]]
+name = "native-tls"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "48ba9f7719b5a0f42f338907614285fb5fd70e53858141f69898a1fb7203b24d"
+dependencies = [
+ "lazy_static",
+ "libc",
+ "log",
+ "openssl",
+ "openssl-probe",
+ "openssl-sys",
+ "schannel",
+ "security-framework",
+ "security-framework-sys",
+ "tempfile",
+]
+
+[[package]]
+name = "never"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c96aba5aa877601bb3f6dd6a63a969e1f82e60646e81e71b14496995e9853c91"
+
+[[package]]
+name = "new_debug_unreachable"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54"
+
+[[package]]
+name = "ntapi"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "num-integer"
+version = "0.1.44"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db"
+dependencies = [
+ "autocfg",
+ "num-traits",
+]
+
+[[package]]
+name = "num-rational"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d41702bd167c2df5520b384281bc111a4b5efcf7fbc4c9c222c815b07e0a6a6a"
+dependencies = [
+ "autocfg",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "num_cpus"
+version = "1.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1"
+dependencies = [
+ "hermit-abi",
+ "libc",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da32515d9f6e6e489d7bc9d84c71b060db7247dc035bbe44eac88cf87486d8d5"
+
+[[package]]
+name = "open"
+version = "2.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "176ee4b630d174d2da8241336763bb459281dddc0f4d87f72c3b1efc9a6109b7"
+dependencies = [
+ "pathdiff",
+ "winapi",
+]
+
+[[package]]
+name = "openssl"
+version = "0.10.38"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c7ae222234c30df141154f159066c5093ff73b63204dcda7121eb082fc56a95"
+dependencies = [
+ "bitflags",
+ "cfg-if",
+ "foreign-types",
+ "libc",
+ "once_cell",
+ "openssl-sys",
+]
+
+[[package]]
+name = "openssl-probe"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a"
+
+[[package]]
+name = "openssl-sys"
+version = "0.9.72"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e46109c383602735fa0a2e48dd2b7c892b048e1bf69e5c3b1d804b7d9c203cb"
+dependencies = [
+ "autocfg",
+ "cc",
+ "libc",
+ "pkg-config",
+ "vcpkg",
+]
+
+[[package]]
+name = "output_vt100"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53cdc5b785b7a58c5aad8216b3dfa114df64b0b06ae6e1501cef91df2fbdf8f9"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "pango"
+version = "0.14.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "546fd59801e5ca735af82839007edd226fe7d3bb06433ec48072be4439c28581"
+dependencies = [
+ "bitflags",
+ "glib 0.14.8",
+ "libc",
+ "once_cell",
+ "pango-sys",
+]
+
+[[package]]
+name = "pango-sys"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2367099ca5e761546ba1d501955079f097caa186bb53ce0f718dca99ac1942fe"
+dependencies = [
+ "glib-sys 0.14.0",
+ "gobject-sys 0.14.0",
+ "libc",
+ "system-deps 3.2.0",
+]
+
+[[package]]
+name = "parking_lot"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99"
+dependencies = [
+ "instant",
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216"
+dependencies = [
+ "cfg-if",
+ "instant",
+ "libc",
+ "redox_syscall",
+ "smallvec",
+ "winapi",
+]
+
+[[package]]
+name = "paste"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0744126afe1a6dd7f394cb50a716dbe086cb06e255e53d8d0185d82828358fb5"
+
+[[package]]
+name = "pathdiff"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd"
+
+[[package]]
+name = "percent-encoding"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
+
+[[package]]
+name = "pest"
+version = "2.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53"
+dependencies = [
+ "ucd-trie",
+]
+
+[[package]]
+name = "phf"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12"
+dependencies = [
+ "phf_shared",
+]
+
+[[package]]
+name = "phf_codegen"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815"
+dependencies = [
+ "phf_generator",
+ "phf_shared",
+]
+
+[[package]]
+name = "phf_generator"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526"
+dependencies = [
+ "phf_shared",
+ "rand 0.7.3",
+]
+
+[[package]]
+name = "phf_shared"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7"
+dependencies = [
+ "siphasher",
+]
+
+[[package]]
+name = "pin-project-lite"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e280fbe77cc62c91527259e9442153f4688736748d24660126286329742b4c6c"
+
+[[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.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe"
+
+[[package]]
+name = "podcasts-data"
+version = "0.1.0"
+dependencies = [
+ "ammonia",
+ "anyhow",
+ "base64",
+ "chrono",
+ "crossbeam-channel",
+ "derive_builder 0.9.0",
+ "diesel",
+ "diesel_migrations",
+ "futures",
+ "glob",
+ "http",
+ "hyper",
+ "hyper-tls",
+ "lazy_static",
+ "log",
+ "maplit",
+ "mime_guess",
+ "native-tls",
+ "num_cpus",
+ "pretty_assertions",
+ "rand 0.8.4",
+ "rayon",
+ "reqwest",
+ "rfc822_sanitizer",
+ "rss",
+ "tempdir",
+ "thiserror",
+ "tokio",
+ "url",
+ "xdg",
+ "xml-rs",
+]
+
+[[package]]
+name = "podcasts-gtk"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "chrono",
+ "crossbeam-channel",
+ "fragile",
+ "gdk",
+ "gdk-pixbuf",
+ "gettext-rs",
+ "gio",
+ "glib 0.14.8",
+ "gstreamer",
+ "gstreamer-player",
+ "gtk",
+ "html2text",
+ "html5ever",
+ "humansize",
+ "lazy_static",
+ "libhandy",
+ "log",
+ "markup5ever_rcdom",
+ "mpris-player",
+ "open",
+ "podcasts-data",
+ "pretty_assertions",
+ "pretty_env_logger",
+ "rayon",
+ "regex",
+ "reqwest",
+ "serde_json",
+ "tokio",
+ "url",
+]
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872"
+
+[[package]]
+name = "precomputed-hash"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c"
+
+[[package]]
+name = "pretty-hex"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc5c99d529f0d30937f6f4b8a86d988047327bb88d04d2c4afc356de74722131"
+
+[[package]]
+name = "pretty_assertions"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0cfe1b2403f172ba0f234e500906ee0a3e493fb81092dac23ebefe129301cc"
+dependencies = [
+ "ansi_term",
+ "ctor",
+ "diff",
+ "output_vt100",
+]
+
+[[package]]
+name = "pretty_env_logger"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "926d36b9553851b8b0005f1275891b392ee4d2d833852c417ed025477350fb9d"
+dependencies = [
+ "env_logger",
+ "log",
+]
+
+[[package]]
+name = "proc-macro-crate"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
+dependencies = [
+ "toml",
+]
+
+[[package]]
+name = "proc-macro-crate"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1ebace6889caf889b4d3f76becee12e90353f2b8c7d875534a71e5742f8f6f83"
+dependencies = [
+ "thiserror",
+ "toml",
+]
+
+[[package]]
+name = "proc-macro-error"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
+dependencies = [
+ "proc-macro-error-attr",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro-error-attr"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.36"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029"
+dependencies = [
+ "unicode-xid",
+]
+
+[[package]]
+name = "quick-error"
+version = "1.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
+
+[[package]]
+name = "quick-xml"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8533f14c8382aaad0d592c812ac3b826162128b65662331e1127b45c3d18536b"
+dependencies = [
+ "encoding_rs",
+ "memchr",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "47aa80447ce4daf1717500037052af176af5d38cc3e571d9ec1c7353fc10c87d"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "r2d2"
+version = "0.8.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "545c5bc2b880973c9c10e4067418407a0ccaa3091781d1671d46eb35107cb26f"
+dependencies = [
+ "log",
+ "parking_lot",
+ "scheduled-thread-pool",
+]
+
+[[package]]
+name = "rand"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293"
+dependencies = [
+ "fuchsia-cprng",
+ "libc",
+ "rand_core 0.3.1",
+ "rdrand",
+ "winapi",
+]
+
+[[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",
+ "rand_pcg",
+]
+
+[[package]]
+name = "rand"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8"
+dependencies = [
+ "libc",
+ "rand_chacha 0.3.1",
+ "rand_core 0.6.3",
+ "rand_hc 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",
+ "rand_core 0.5.1",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core 0.6.3",
+]
+
+[[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",
+]
+
+[[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.16",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
+dependencies = [
+ "getrandom 0.2.3",
+]
+
+[[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.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7"
+dependencies = [
+ "rand_core 0.6.3",
+]
+
+[[package]]
+name = "rand_pcg"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429"
+dependencies = [
+ "rand_core 0.5.1",
+]
+
+[[package]]
+name = "rayon"
+version = "1.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90"
+dependencies = [
+ "autocfg",
+ "crossbeam-deque",
+ "either",
+ "rayon-core",
+]
+
+[[package]]
+name = "rayon-core"
+version = "1.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e"
+dependencies = [
+ "crossbeam-channel",
+ "crossbeam-deque",
+ "crossbeam-utils",
+ "lazy_static",
+ "num_cpus",
+]
+
+[[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",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.2.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff"
+dependencies = [
+ "bitflags",
+]
+
+[[package]]
+name = "redox_users"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64"
+dependencies = [
+ "getrandom 0.2.3",
+ "redox_syscall",
+]
+
+[[package]]
+name = "regex"
+version = "1.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.6.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b"
+
+[[package]]
+name = "remove_dir_all"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "reqwest"
+version = "0.11.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c4e0a76dc12a116108933f6301b95e83634e0c47b0afbed6abbaa0601e99258"
+dependencies = [
+ "base64",
+ "bytes",
+ "encoding_rs",
+ "futures-core",
+ "futures-util",
+ "http",
+ "http-body",
+ "hyper",
+ "hyper-tls",
+ "ipnet",
+ "js-sys",
+ "lazy_static",
+ "log",
+ "mime",
+ "native-tls",
+ "percent-encoding",
+ "pin-project-lite",
+ "serde",
+ "serde_json",
+ "serde_urlencoded",
+ "tokio",
+ "tokio-native-tls",
+ "url",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+ "winreg",
+]
+
+[[package]]
+name = "rfc822_sanitizer"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3ae57cb2820842d1ba94ba719453fffc6f8ab953059e133a04e2bf4016b3c4f9"
+dependencies = [
+ "chrono",
+ "lazy_static",
+ "regex",
+]
+
+[[package]]
+name = "rss"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "36e19e299f301be17927a7c05b8fa1c621e3227e6c3a0da65492701642901ff7"
+dependencies = [
+ "atom_syndication",
+ "derive_builder 0.10.2",
+ "never",
+ "quick-xml",
+]
+
+[[package]]
+name = "rustc_version"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee"
+dependencies = [
+ "semver",
+]
+
+[[package]]
+name = "ryu"
+version = "1.0.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f"
+
+[[package]]
+name = "schannel"
+version = "0.1.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75"
+dependencies = [
+ "lazy_static",
+ "winapi",
+]
+
+[[package]]
+name = "scheduled-thread-pool"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc6f74fd1204073fa02d5d5d68bec8021be4c38690b61264b2fdb48083d0e7d7"
+dependencies = [
+ "parking_lot",
+]
+
+[[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.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "525bc1abfda2e1998d152c45cf13e696f76d0a4972310b22fac1658b05df7c87"
+dependencies = [
+ "bitflags",
+ "core-foundation",
+ "core-foundation-sys",
+ "libc",
+ "security-framework-sys",
+]
+
+[[package]]
+name = "security-framework-sys"
+version = "2.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9dd14d83160b528b7bfd66439110573efcfbe281b17fc2ca9f39f550d619c7e"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "semver"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6"
+dependencies = [
+ "semver-parser",
+]
+
+[[package]]
+name = "semver-parser"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7"
+dependencies = [
+ "pest",
+]
+
+[[package]]
+name = "serde"
+version = "1.0.133"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97565067517b60e2d1ea8b268e59ce036de907ac523ad83a0475da04e818989a"
+
+[[package]]
+name = "serde_json"
+version = "1.0.74"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ee2bb9cd061c5865d345bb02ca49fcef1391741b672b54a0bf7b679badec3142"
+dependencies = [
+ "itoa 1.0.1",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_urlencoded"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edfa57a7f8d9c1d260a549e7224100f6c43d43f9103e06dd8b4095a9b2b43ce9"
+dependencies = [
+ "form_urlencoded",
+ "itoa 0.4.8",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "siphasher"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "533494a8f9b724d33625ab53c6c4800f7cc445895924a8ef649222dcb76e938b"
+
+[[package]]
+name = "slab"
+version = "0.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5"
+
+[[package]]
+name = "smallvec"
+version = "1.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309"
+
+[[package]]
+name = "socket2"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5dc90fe6c7be1a323296982db1836d1ea9e47b6839496dde9a541bc496df3516"
+dependencies = [
+ "libc",
+ "winapi",
+]
+
+[[package]]
+name = "string_cache"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "923f0f39b6267d37d23ce71ae7235602134b250ace715dd2c90421998ddac0c6"
+dependencies = [
+ "lazy_static",
+ "new_debug_unreachable",
+ "parking_lot",
+ "phf_shared",
+ "precomputed-hash",
+ "serde",
+]
+
+[[package]]
+name = "string_cache_codegen"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f24c8e5e19d22a726626f1a5e16fe15b132dcf21d10177fa5a45ce7962996b97"
+dependencies = [
+ "phf_generator",
+ "phf_shared",
+ "proc-macro2",
+ "quote",
+]
+
+[[package]]
+name = "strsim"
+version = "0.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c"
+
+[[package]]
+name = "strsim"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+
+[[package]]
+name = "strum"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b"
+
+[[package]]
+name = "strum"
+version = "0.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aaf86bbcfd1fa9670b7a129f64fc0c9fcbbfe4f1bc4210e9e98fe71ffc12cde2"
+
+[[package]]
+name = "strum_macros"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c"
+dependencies = [
+ "heck",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "strum_macros"
+version = "0.21.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d06aaeeee809dbc59eb4556183dd927df67db1540de5be8d3ec0b6636358a5ec"
+dependencies = [
+ "heck",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "syn"
+version = "1.0.84"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ecb2e6da8ee5eb9a61068762a32fa9619cc591ceb055b3687f4cd4051ec2e06b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-xid",
+]
+
+[[package]]
+name = "system-deps"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b"
+dependencies = [
+ "heck",
+ "pkg-config",
+ "strum 0.18.0",
+ "strum_macros 0.18.0",
+ "thiserror",
+ "toml",
+ "version-compare 0.0.10",
+]
+
+[[package]]
+name = "system-deps"
+version = "3.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "480c269f870722b3b08d2f13053ce0c2ab722839f472863c3e2d61ff3a1c2fa6"
+dependencies = [
+ "anyhow",
+ "cfg-expr",
+ "heck",
+ "itertools 0.10.3",
+ "pkg-config",
+ "strum 0.21.0",
+ "strum_macros 0.21.1",
+ "thiserror",
+ "toml",
+ "version-compare 0.0.11",
+]
+
+[[package]]
+name = "tempdir"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8"
+dependencies = [
+ "rand 0.4.6",
+ "remove_dir_all",
+]
+
+[[package]]
+name = "tempfile"
+version = "3.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "rand 0.8.4",
+ "redox_syscall",
+ "remove_dir_all",
+ "winapi",
+]
+
+[[package]]
+name = "tendril"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9ef557cb397a4f0a5a3a628f06515f78563f2209e64d47055d9dc6052bf5e33"
+dependencies = [
+ "futf",
+ "mac",
+ "utf-8",
+]
+
+[[package]]
+name = "termcolor"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "time"
+version = "0.1.43"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438"
+dependencies = [
+ "libc",
+ "winapi",
+]
+
+[[package]]
+name = "tinyvec"
+version = "1.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2"
+dependencies = [
+ "tinyvec_macros",
+]
+
+[[package]]
+name = "tinyvec_macros"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
+
+[[package]]
+name = "tokio"
+version = "1.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbbf1c778ec206785635ce8ad57fe52b3009ae9e0c9f574a728f3049d3e55838"
+dependencies = [
+ "bytes",
+ "libc",
+ "memchr",
+ "mio",
+ "num_cpus",
+ "pin-project-lite",
+ "tokio-macros",
+ "winapi",
+]
+
+[[package]]
+name = "tokio-macros"
+version = "1.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b557f72f448c511a979e2564e55d74e6c4432fc96ff4f6241bc6bded342643b7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "tokio-native-tls"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b"
+dependencies = [
+ "native-tls",
+ "tokio",
+]
+
+[[package]]
+name = "tokio-util"
+version = "0.6.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e99e1983e5d376cd8eb4b66604d2e99e79f5bd988c3055891dcd8c9e2604cc0"
+dependencies = [
+ "bytes",
+ "futures-core",
+ "futures-sink",
+ "log",
+ "pin-project-lite",
+ "tokio",
+]
+
+[[package]]
+name = "toml"
+version = "0.5.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa"
+dependencies = [
+ "serde",
+]
+
+[[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.29"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "375a639232caf30edfc78e8d89b2d4c375515393e7af7e16f01cd96917fb2105"
+dependencies = [
+ "cfg-if",
+ "pin-project-lite",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f4ed65637b8390770814083d20756f87bfa2c21bf2f110babdc5438351746e4"
+dependencies = [
+ "lazy_static",
+]
+
+[[package]]
+name = "try-lock"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642"
+
+[[package]]
+name = "ucd-trie"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c"
+
+[[package]]
+name = "unicase"
+version = "2.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6"
+dependencies = [
+ "version_check",
+]
+
+[[package]]
+name = "unicode-bidi"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f"
+
+[[package]]
+name = "unicode-normalization"
+version = "0.1.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9"
+dependencies = [
+ "tinyvec",
+]
+
+[[package]]
+name = "unicode-segmentation"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b"
+
+[[package]]
+name = "unicode-width"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
+
+[[package]]
+name = "unicode-xid"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
+
+[[package]]
+name = "url"
+version = "2.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c"
+dependencies = [
+ "form_urlencoded",
+ "idna",
+ "matches",
+ "percent-encoding",
+]
+
+[[package]]
+name = "utf-8"
+version = "0.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
+
+[[package]]
+name = "vcpkg"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
+
+[[package]]
+name = "version-compare"
+version = "0.0.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1"
+
+[[package]]
+name = "version-compare"
+version = "0.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b"
+
+[[package]]
+name = "version_check"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+
+[[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.78"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "632f73e236b219150ea279196e54e610f5dbafa5d61786303d4da54f84e47fce"
+dependencies = [
+ "cfg-if",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.78"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a317bf8f9fba2476b4b2c85ef4c4af8ff39c3c7f0cdfeed4f82c34a880aa837b"
+dependencies = [
+ "bumpalo",
+ "lazy_static",
+ "log",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-futures"
+version = "0.4.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e8d7523cb1f2a4c96c1317ca690031b714a51cc14e05f712446691f413f5d39"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.78"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d56146e7c495528bf6587663bea13a8eb588d39b36b679d83972e1a2dbbdacf9"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.78"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7803e0eea25835f8abdc585cd3021b3deb11543c6fe226dcd30b228857c5c5ab"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.78"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0237232789cf037d5480773fe568aac745bfe2afbc11a863e97901780a6b47cc"
+
+[[package]]
+name = "web-sys"
+version = "0.3.55"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38eb105f1c59d9eaa6b5cdc92b859d85b926e82cb2e0945cd0c9259faa6fe9fb"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-util"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+dependencies = [
+ "winapi",
+]
+
+[[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",
+]
+
+[[package]]
+name = "xdg"
+version = "2.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3a23fe958c70412687039c86f578938b4a0bb50ec788e96bce4d6ab00ddd5803"
+dependencies = [
+ "dirs",
+]
+
+[[package]]
+name = "xml-rs"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3"
+
+[[package]]
+name = "xml5ever"
+version = "0.16.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9234163818fd8e2418fcde330655e757900d4236acd8cc70fef345ef91f6d865"
+dependencies = [
+ "log",
+ "mac",
+ "markup5ever",
+ "time",
+]
diff --git a/nixpkgs/pkgs/applications/audio/gnome-podcasts/default.nix b/nixpkgs/pkgs/applications/audio/gnome-podcasts/default.nix
index ec927bdc5b03..b5889bcf63c8 100644
--- a/nixpkgs/pkgs/applications/audio/gnome-podcasts/default.nix
+++ b/nixpkgs/pkgs/applications/audio/gnome-podcasts/default.nix
@@ -3,11 +3,13 @@
 , rustPlatform
 , fetchFromGitLab
 , fetchpatch
+, cargo
 , meson
 , ninja
 , gettext
 , python3
 , pkg-config
+, rustc
 , glib
 , libhandy
 , gtk3
@@ -42,10 +44,11 @@ stdenv.mkDerivation rec {
     })
   ];
 
-  cargoDeps = rustPlatform.fetchCargoTarball {
-    inherit src;
-    name = "${pname}-${version}";
-    sha256 = "0y34b5rnr75h7dxbx93mafrmwsh187wq5js7fmkb1m1yyybj1v1x";
+  cargoDeps = rustPlatform.importCargoLock {
+    lockFile = ./Cargo.lock;
+    outputHashes = {
+      "gettext-rs-0.4.2" = "sha256-wyZ1bf0oFcQo8gEi2GEalRUoKMoJYHysu79qcfjd4Ng=";
+    };
   };
 
   nativeBuildInputs = [
@@ -54,9 +57,9 @@ stdenv.mkDerivation rec {
     pkg-config
     gettext
     python3
-    rustPlatform.rust.cargo
+    cargo
     rustPlatform.cargoSetupHook
-    rustPlatform.rust.rustc
+    rustc
     wrapGAppsHook
     glib
   ];
diff --git a/nixpkgs/pkgs/applications/audio/go-musicfox/default.nix b/nixpkgs/pkgs/applications/audio/go-musicfox/default.nix
new file mode 100644
index 000000000000..208b2154b14d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/go-musicfox/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+, pkg-config
+, alsa-lib
+, flac
+, nix-update-script
+}:
+
+buildGoModule rec {
+  pname = "go-musicfox";
+  version = "4.1.2";
+
+  src = fetchFromGitHub {
+    owner = "go-musicfox";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-ushJZKZPIUo6IO33E9A/CneLHHrE6MtdwpCYR4ivHmo=";
+  };
+
+  deleteVendor = true;
+
+  vendorHash = "sha256-xzLUWqzDVT+Htw/BHygOJM16uQvWXopyxxHBZQKcOQ8=";
+
+  subPackages = [ "cmd/musicfox.go" ];
+
+  ldflags = [
+    "-s"
+    "-w"
+    "-X github.com/go-musicfox/go-musicfox/pkg/constants.AppVersion=${version}"
+  ];
+
+  nativeBuildInputs = [
+    pkg-config
+  ];
+
+  buildInputs = [
+    alsa-lib
+    flac
+  ];
+
+  passthru.updateScript = nix-update-script { };
+
+  meta = with lib; {
+    description = "Terminal netease cloud music client written in Go";
+    homepage = "https://github.com/anhoder/go-musicfox";
+    license = licenses.mit;
+    mainProgram = "musicfox";
+    maintainers = with maintainers; [ zendo Ruixi-rebirth aleksana ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/goattracker/default.nix b/nixpkgs/pkgs/applications/audio/goattracker/default.nix
index 1fb848ae1eda..b85aa4c0df76 100644
--- a/nixpkgs/pkgs/applications/audio/goattracker/default.nix
+++ b/nixpkgs/pkgs/applications/audio/goattracker/default.nix
@@ -8,12 +8,11 @@
 , isStereo ? false
 }:
 
-with lib;
 let
-  pname = "goattracker" + optionalString isStereo "-stereo";
+  pname = "goattracker" + lib.optionalString isStereo "-stereo";
   desktopItem = makeDesktopItem {
     name = pname;
-    desktopName = "GoatTracker 2" + optionalString isStereo " Stereo";
+    desktopName = "GoatTracker 2" + lib.optionalString isStereo " Stereo";
     genericName = "Music Tracker";
     exec = if isStereo
       then "gt2stereo"
@@ -30,7 +29,7 @@ in stdenv.mkDerivation rec {
     else "2.76"; # normal
 
   src = fetchurl {
-    url = "mirror://sourceforge/goattracker2/GoatTracker_${version}${optionalString isStereo "_Stereo"}.zip";
+    url = "mirror://sourceforge/goattracker2/GoatTracker_${version}${lib.optionalString isStereo "_Stereo"}.zip";
     sha256 = if isStereo
       then "1hiig2d152sv9kazwz33i56x1c54h5sh21ipkqnp6qlnwj8x1ksy"  # stereo
       else "0d7a3han4jw4bwiba3j87racswaajgl3pj4sb5lawdqdxicv3dn1"; # normal
@@ -63,11 +62,11 @@ in stdenv.mkDerivation rec {
 
   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";
+      + lib.optionalString isStereo " - Stereo version";
     homepage = "https://cadaver.github.io/tools.html";
     downloadPage = "https://sourceforge.net/projects/goattracker2/";
-    license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ fgaz ];
-    platforms = platforms.all;
+    license = lib.licenses.gpl2Plus;
+    maintainers = with lib.maintainers; [ fgaz ];
+    platforms = lib.platforms.all;
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/goodvibes/default.nix b/nixpkgs/pkgs/applications/audio/goodvibes/default.nix
new file mode 100644
index 000000000000..f51daf7081c2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/goodvibes/default.nix
@@ -0,0 +1,61 @@
+{ lib
+, stdenv
+, fetchFromGitLab
+, meson
+, ninja
+, pkg-config
+, glib
+, gtk3
+, libsoup
+, keybinder3
+, gst_all_1
+, wrapGAppsHook
+, appstream-glib
+, desktop-file-utils
+}:
+
+stdenv.mkDerivation rec {
+  pname = "goodvibes";
+  version = "0.7.6";
+
+  src = fetchFromGitLab {
+    owner = pname;
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-w0nmTYcq2DBHSjQ23zWxT6optyH+lRAMRa210F7XEvE=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    wrapGAppsHook
+    appstream-glib
+    desktop-file-utils
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    libsoup
+    keybinder3
+  ] ++ (with gst_all_1; [
+    gstreamer
+    gst-plugins-base
+    gst-plugins-good
+    gst-plugins-bad
+    gst-plugins-ugly
+  ]);
+
+  postPatch = ''
+    patchShebangs scripts
+  '';
+
+  meta = with lib; {
+    description = "A lightweight internet radio player";
+    homepage = "https://gitlab.com/goodvibes/goodvibes";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ zendo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/gpodder/default.nix b/nixpkgs/pkgs/applications/audio/gpodder/default.nix
index 6db530a2c233..d79aa713f086 100644
--- a/nixpkgs/pkgs/applications/audio/gpodder/default.nix
+++ b/nixpkgs/pkgs/applications/audio/gpodder/default.nix
@@ -27,21 +27,16 @@ python3Packages.buildPythonApplication rec {
     intltool
     wrapGAppsHook
     glibcLocales
+    gobject-introspection
   ];
 
-  # as of 2021-07, the gobject-introspection setup hook does not
-  # work with `strictDeps` enabled, thus for proper `wrapGAppsHook`
-  # it needs to be disabled explicitly. https://github.com/NixOS/nixpkgs/issues/56943
-  strictDeps = false;
-
   buildInputs = [
     python3
     gtk3
-    gobject-introspection
     gnome.adwaita-icon-theme
   ];
 
-  checkInputs = with python3Packages; [
+  nativeCheckInputs = with python3Packages; [
     minimock
     pytest
     pytest-httpserver
diff --git a/nixpkgs/pkgs/applications/audio/grandorgue/default.nix b/nixpkgs/pkgs/applications/audio/grandorgue/default.nix
index 30c6e57188ab..9856b81c92b8 100644
--- a/nixpkgs/pkgs/applications/audio/grandorgue/default.nix
+++ b/nixpkgs/pkgs/applications/audio/grandorgue/default.nix
@@ -1,32 +1,57 @@
-{ lib, stdenv, fetchsvn, cmake, gcc, pkg-config, fftwFloat, alsa-lib
-, zlib, wavpack, wxGTK31, udev, jackaudioSupport ? false, libjack2
+{ lib, stdenv, fetchFromGitHub, cmake, pkg-config, fftwFloat, alsa-lib
+, zlib, wavpack, wxGTK32, udev, jackaudioSupport ? false, libjack2
+, imagemagick, libicns, makeWrapper, Cocoa
 , includeDemo ? true }:
 
 stdenv.mkDerivation rec {
   pname = "grandorgue";
-  rev = "2333";
-  version = "0.3.1-r${rev}";
-  src = fetchsvn {
-    url = "https://svn.code.sf.net/p/ourorgan/svn/trunk";
-    inherit rev;
-    sha256 = "0xzjdc2g4gja2lpmn21xhdskv43qpbpzkbb05jfqv6ma2zwffzz1";
+  version = "3.11.0";
+
+  src = fetchFromGitHub {
+    owner = "GrandOrgue";
+    repo = pname;
+    rev = version;
+    fetchSubmodules = true;
+    sha256 = "sha256-l1KqER/vkNwgKLXIFUzHnYLw2ivGNP7hRiKhIOzn7pw=";
   };
 
-  nativeBuildInputs = [ cmake pkg-config ];
+  postPatch = ''
+    substituteInPlace resources/CMakeLists.txt \
+      --replace \
+        "iconutil -c icns \''${GENERATED_ICONS_DIR}" \
+        "png2icns \''${GENERATED_ICONS_DIR}/../GrandOrgue.icns \''${GENERATED_ICONS_DIR}/*{16,32,128,256,512,1024}.png" \
+  '';
+
+  nativeBuildInputs = [ cmake pkg-config imagemagick libicns makeWrapper ];
 
-  buildInputs = [ pkg-config fftwFloat alsa-lib zlib wavpack wxGTK31 udev ]
+  buildInputs = [ fftwFloat zlib wavpack wxGTK32 ]
+    ++ lib.optionals stdenv.isLinux [ alsa-lib udev ]
+    ++ lib.optionals stdenv.isDarwin [ Cocoa ]
     ++ lib.optional jackaudioSupport libjack2;
 
-  cmakeFlags = lib.optional (!jackaudioSupport) [
+  cmakeFlags = lib.optionals (!jackaudioSupport) [
     "-DRTAUDIO_USE_JACK=OFF"
     "-DRTMIDI_USE_JACK=OFF"
+    "-DGO_USE_JACK=OFF"
+    "-DINSTALL_DEPEND=OFF"
   ] ++ lib.optional (!includeDemo) "-DINSTALL_DEMO=OFF";
 
+  env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin "-DTARGET_OS_IPHONE=0";
+
+  postInstall = lib.optionalString stdenv.isDarwin ''
+    mkdir -p $out/{Applications,bin,lib}
+    mv $out/GrandOrgue.app $out/Applications/
+    for lib in $out/Applications/GrandOrgue.app/Contents/MacOS/lib*; do
+      ln -s $lib $out/lib/
+    done
+    makeWrapper $out/{Applications/GrandOrgue.app/Contents/MacOS,bin}/GrandOrgue
+  '';
+
   meta = {
     description = "Virtual Pipe Organ Software";
-    homepage = "https://sourceforge.net/projects/ourorgan";
-    license = lib.licenses.gpl2;
-    platforms = lib.platforms.linux;
+    homepage = "https://github.com/GrandOrgue/grandorgue";
+    license = lib.licenses.gpl2Plus;
+    platforms = lib.platforms.unix;
     maintainers = [ lib.maintainers.puzzlewolf ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/gtkcord4/default.nix b/nixpkgs/pkgs/applications/audio/gtkcord4/default.nix
new file mode 100644
index 000000000000..fde6a0632691
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/gtkcord4/default.nix
@@ -0,0 +1,68 @@
+{ buildGoModule
+, cairo
+, fetchFromGitHub
+, gdk-pixbuf
+, glib
+, gobject-introspection
+, graphene
+, gst_all_1
+, gtk4
+, lib
+, libadwaita
+, libcanberra-gtk3
+, pango
+, pkg-config
+, sound-theme-freedesktop
+, wrapGAppsHook4
+}:
+
+buildGoModule rec {
+  pname = "gtkcord4";
+  version = "0.0.11";
+
+  src = fetchFromGitHub {
+    owner = "diamondburned";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-0d656gjfFlgNdKbPJK+6KIU7zvp88j3bGIlGPwJNRdM=";
+  };
+
+  nativeBuildInputs = [
+    gobject-introspection
+    pkg-config
+    wrapGAppsHook4
+  ];
+
+  buildInputs = [
+    cairo
+    gdk-pixbuf
+    glib
+    graphene
+    gtk4
+    pango
+    # Optional according to upstream but required for sound and video
+    gst_all_1.gst-plugins-bad
+    gst_all_1.gst-plugins-base
+    gst_all_1.gst-plugins-good
+    gst_all_1.gst-plugins-ugly
+    gst_all_1.gstreamer
+    libcanberra-gtk3
+    sound-theme-freedesktop
+    libadwaita
+  ];
+
+  postInstall = ''
+    install -D -m 444 -t $out/share/applications nix/xyz.diamondb.gtkcord4.desktop
+    install -D -m 444 internal/icons/svg/logo.svg $out/share/icons/hicolor/scalable/apps/gtkcord4.svg
+    install -D -m 444 internal/icons/png/logo.png $out/share/icons/hicolor/256x256/apps/gtkcord4.png
+  '';
+
+  vendorHash = "sha256-+zbaRaGOF6w8C7lmtd3k5Rh/0a+OnqTL9Qhg1ErTHBo=";
+
+  meta = with lib; {
+    description = "GTK4 Discord client in Go, attempt #4.";
+    homepage = "https://github.com/diamondburned/gtkcord4";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ hmenke urandom aleksana ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/gtkpod/default.nix b/nixpkgs/pkgs/applications/audio/gtkpod/default.nix
index 220d2d38e145..a16ad3c93201 100644
--- a/nixpkgs/pkgs/applications/audio/gtkpod/default.nix
+++ b/nixpkgs/pkgs/applications/audio/gtkpod/default.nix
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
   # gcc-10. Otherwise build fails as:
   #   ld: .libs/autodetection.o:/build/gtkpod-2.1.5/libgtkpod/gtkpod_app_iface.h:248: multiple definition of
   #       `gtkpod_app'; .libs/gtkpod_app_iface.o:/build/gtkpod-2.1.5/libgtkpod/gtkpod_app_iface.h:248: first defined here
-  NIX_CFLAGS_COMPILE = "-fcommon";
+  env.NIX_CFLAGS_COMPILE = "-fcommon";
 
   enableParallelBuilding = true;
 
diff --git a/nixpkgs/pkgs/applications/audio/guitarix/default.nix b/nixpkgs/pkgs/applications/audio/guitarix/default.nix
index 724280fbcdd5..3033888996a1 100644
--- a/nixpkgs/pkgs/applications/audio/guitarix/default.nix
+++ b/nixpkgs/pkgs/applications/audio/guitarix/default.nix
@@ -6,6 +6,7 @@
 , boost
 , curl
 , eigen
+, faust
 , fftw
 , gettext
 , glib
@@ -42,22 +43,13 @@ in
 
 stdenv.mkDerivation rec {
   pname = "guitarix";
-  version = "0.42.1";
+  version = "0.44.1";
 
   src = fetchurl {
     url = "mirror://sourceforge/guitarix/guitarix2-${version}.tar.xz";
-    sha256 = "101c2hdpipj3s6rmva5wf3q9hfjv7bkyzi7s8sgaiys8f7h4czkr";
+    sha256 = "d+g9dU9RrDjFQj847rVd5bPiYSjmC1EbAtLe/PNubBg=";
   };
 
-  patches = [
-    (fetchpatch {
-      name = "guitarix-gcc11.patch";
-      url = "https://github.com/brummer10/guitarix/commit/d8f003484c57d808682025dfb07a7a1fb848afdc.patch";
-      stripLen = 1;
-      sha256 = "1qhlbf18cn6m9jdz3741nrdfqvznjna3daqmn9l10k5nd3asy4il";
-    })
-  ];
-
   nativeBuildInputs = [
     gettext
     hicolor-icon-theme
@@ -74,6 +66,7 @@ stdenv.mkDerivation rec {
     boost
     curl
     eigen
+    faust
     fftw
     glib
     glib-networking.out
@@ -96,11 +89,7 @@ stdenv.mkDerivation rec {
     zita-resampler
   ];
 
-  # this doesnt build, probably because we have the wrong faust version:
-  #       "--faust"
-  # aproved versions are 2.20.2 and 2.15.11
   wafConfigureFlags = [
-    "--no-faust"
     "--no-font-cache-update"
     "--shared-lib"
     "--no-desktop-update"
@@ -108,7 +97,7 @@ stdenv.mkDerivation rec {
     "--install-roboto-font"
   ] ++ optional optimizationSupport "--optimization";
 
-  NIX_CFLAGS_COMPILE = [ "-fpermissive" ];
+  env.NIX_CFLAGS_COMPILE = toString [ "-fpermissive" ];
 
   meta = with lib; {
     description = "A virtual guitar amplifier for Linux running with JACK";
diff --git a/nixpkgs/pkgs/applications/audio/gwc/default.nix b/nixpkgs/pkgs/applications/audio/gwc/default.nix
index aeb64b92c88a..29bfc047e199 100644
--- a/nixpkgs/pkgs/applications/audio/gwc/default.nix
+++ b/nixpkgs/pkgs/applications/audio/gwc/default.nix
@@ -12,13 +12,13 @@
 
 stdenv.mkDerivation rec {
   pname = "gwc";
-  version = "0.22-05";
+  version = "0.22-06";
 
   src = fetchFromGitHub {
     owner = "AlisterH";
     repo = pname;
     rev = version;
-    sha256 = "sha256-FHKu5qAyRyMxXdWYTCeAc6Q4J+NOaU1SGgoTbe0PiFE=";
+    sha256 = "sha256-hRwy++gZiW/olIIeiVTpdIjPLIHgvgVUGEaUX9tpFbY=";
   };
 
   nativeBuildInputs = [
@@ -40,6 +40,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     description = "GUI application for removing noise (hiss, pops and clicks) from audio files";
     homepage = "https://github.com/AlisterH/gwc/";
+    changelog = "https://github.com/AlisterH/gwc/blob/${version}/Changelog";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ magnetophon ];
     platforms = platforms.linux;
diff --git a/nixpkgs/pkgs/applications/audio/gxplugins-lv2/default.nix b/nixpkgs/pkgs/applications/audio/gxplugins-lv2/default.nix
index 5e8747f76566..847096c38816 100644
--- a/nixpkgs/pkgs/applications/audio/gxplugins-lv2/default.nix
+++ b/nixpkgs/pkgs/applications/audio/gxplugins-lv2/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "GxPlugins.lv2";
-  version = "0.9";
+  version = "1.0";
 
   src = fetchFromGitHub {
     owner = "brummer10";
     repo = pname;
     rev = "v${version}";
-    sha256 = "02fksl8wr443ygwgcd1c2zab8kp67a6ps12k71ysqx7szv4zq877";
+    sha256 = "sha256-NvmFoOAQtAnKrZgzG1Shy1HuJEWgjJloQEx6jw59hag=";
     fetchSubmodules = true;
   };
 
diff --git a/nixpkgs/pkgs/applications/audio/headset/default.nix b/nixpkgs/pkgs/applications/audio/headset/default.nix
new file mode 100644
index 000000000000..336d0d391a31
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/headset/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, stdenv
+, fetchurl
+, dpkg
+, makeWrapper
+, electron
+}:
+
+stdenv.mkDerivation rec {
+  pname = "headset";
+  version = "4.2.1";
+
+  src = fetchurl {
+    url = "https://github.com/headsetapp/headset-electron/releases/download/v${version}/headset_${version}_amd64.deb";
+    hash = "sha256-81gsIq74sggauE6g8pM6z05KTmsbe49CZa9aRQEDwMo=";
+  };
+
+  dontConfigure = true;
+  dontBuild = true;
+
+  nativeBuildInputs = [ makeWrapper dpkg ];
+
+  unpackPhase = "dpkg-deb --fsys-tarfile $src | tar -x --no-same-permissions --no-same-owner";
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/bin $out/share/headset
+    cp -R usr/share/{applications,icons} $out/share
+    cp -R usr/lib/headset/resources/app.asar $out/share/headset/
+
+    makeWrapper ${electron}/bin/electron $out/bin/headset \
+      --add-flags $out/share/headset/app.asar
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A simple music player for YouTube and Reddit";
+    homepage = "https://headsetapp.co/";
+    license = licenses.mit;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ muscaln ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/helio-workstation/default.nix b/nixpkgs/pkgs/applications/audio/helio-workstation/default.nix
index 9801f2d2b2ad..a416cbecc02e 100644
--- a/nixpkgs/pkgs/applications/audio/helio-workstation/default.nix
+++ b/nixpkgs/pkgs/applications/audio/helio-workstation/default.nix
@@ -5,14 +5,14 @@
 
 stdenv.mkDerivation rec {
   pname = "helio-workstation";
-  version = "3.9";
+  version = "3.11";
 
   src = fetchFromGitHub {
     owner = "helio-fm";
     repo = pname;
     rev = version;
     fetchSubmodules = true;
-    sha256 = "sha256-AtgKgw+F5lc0Ma3zOxmk3iaZQp2KZb2FP5F8QvvYTT4=";
+    sha256 = "sha256-ec4ueg6TNo3AaZ81j01OQZzhgOfSzG1/Vd0QhEXOUl0=";
   };
 
   buildInputs = [
diff --git a/nixpkgs/pkgs/applications/audio/helvum/default.nix b/nixpkgs/pkgs/applications/audio/helvum/default.nix
index 798af97ab32f..c293c3384d57 100644
--- a/nixpkgs/pkgs/applications/audio/helvum/default.nix
+++ b/nixpkgs/pkgs/applications/audio/helvum/default.nix
@@ -1,4 +1,5 @@
 { lib
+, cargo
 , clang
 , desktop-file-utils
 , fetchFromGitLab
@@ -11,25 +12,26 @@
 , pipewire
 , pkg-config
 , rustPlatform
+, rustc
 , stdenv
 }:
 
 stdenv.mkDerivation rec {
   pname = "helvum";
-  version = "0.3.4";
+  version = "0.4.0";
 
   src = fetchFromGitLab {
     domain = "gitlab.freedesktop.org";
     owner = "pipewire";
     repo = pname;
     rev = version;
-    sha256 = "0nhv6zw2zzxz2bg2zj32w1brywnm5lv6j3cvmmvwshc389z2k5x1";
+    hash = "sha256-TvjO7fGobGmAltVHeXWyMtMLANdVWVGvBYq20JD3mMI=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     name = "${pname}-${version}";
-    hash = "sha256-EIHO9qVPIXgezfFOaarlTU0an762nFmX1ELbQuAZ7rY";
+    hash = "sha256-W5Imlut30cjV4A6TCjBFLbViB0CDUucNsvIUiCXqu7I=";
   };
 
   nativeBuildInputs = [
@@ -38,8 +40,8 @@ stdenv.mkDerivation rec {
     ninja
     pkg-config
     rustPlatform.cargoSetupHook
-    rustPlatform.rust.cargo
-    rustPlatform.rust.rustc
+    cargo
+    rustc
     rustPlatform.bindgenHook
   ];
 
diff --git a/nixpkgs/pkgs/applications/audio/hivelytracker/default.nix b/nixpkgs/pkgs/applications/audio/hivelytracker/default.nix
index 8f9e3809fd2d..b87ad68ceee7 100644
--- a/nixpkgs/pkgs/applications/audio/hivelytracker/default.nix
+++ b/nixpkgs/pkgs/applications/audio/hivelytracker/default.nix
@@ -2,36 +2,32 @@
 , stdenv
 , fetchFromGitHub
 , pkg-config
-, makeWrapper
 , SDL
 , SDL_image
 , SDL_ttf
-, gtk2
-, glib
+, gtk3
 }:
 
 stdenv.mkDerivation rec {
   pname = "hivelytracker";
-  version = "unstable-2020-08-19";
+  version = "1.9";
 
   src = fetchFromGitHub {
     owner = "pete-gordon";
     repo = "hivelytracker";
-    rev = "c8e3c7a5ee9f4a07cb4a941caecf7e4c4f4d40e0";
-    sha256 = "1nqianlf1msir6wqwapi7ys1vbmf6aik58wa54b6cn5v6kwxh75a";
+    rev = "V${lib.replaceStrings ["."] ["_"] version}";
+    sha256 = "148p320sd8phcpmj4m85ns5zly2dawbp8kgx9ryjfdk24pa88xg6";
   };
 
   nativeBuildInputs = [
     pkg-config
-    makeWrapper
   ];
 
   buildInputs = [
     SDL
     SDL_image
     SDL_ttf
-    gtk2
-    glib
+    gtk3
   ];
 
   makeFlags = [
@@ -40,28 +36,12 @@ stdenv.mkDerivation rec {
     "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 \
-      --chdir "$out/share/hivelytracker"
-
     # Also install the hvl2wav tool
     install -Dm755 hvl2wav/hvl2wav $out/bin/hvl2wav
   '';
@@ -86,4 +66,3 @@ stdenv.mkDerivation rec {
     broken = stdenv.isDarwin; # TODO: try to use xcbuild
   };
 }
-
diff --git a/nixpkgs/pkgs/applications/audio/hqplayer-desktop/default.nix b/nixpkgs/pkgs/applications/audio/hqplayer-desktop/default.nix
index 17c8f936efd1..9b77ac59fd9e 100644
--- a/nixpkgs/pkgs/applications/audio/hqplayer-desktop/default.nix
+++ b/nixpkgs/pkgs/applications/audio/hqplayer-desktop/default.nix
@@ -1,11 +1,13 @@
 { mkDerivation
 , alsa-lib
 , autoPatchelfHook
+, evince
 , fetchurl
 , flac
-, gcc11
+, gcc12
 , lib
 , libmicrohttpd
+, libusb-compat-0_1
 , llvmPackages_10
 , qtcharts
 , qtdeclarative
@@ -18,15 +20,15 @@
 
 mkDerivation rec {
   pname = "hqplayer-desktop";
-  version = "4.13.1-38";
+  version = "4.22.0-65";
 
   src = fetchurl {
-    url = "https://www.signalyst.eu/bins/hqplayer/fc34/hqplayer4desktop-${version}.fc34.x86_64.rpm";
-    sha256 = "sha256-DEZWEGk5SfhcNQddehCBVbfeTH8KfVCdaxQ+F3MrRe8=";
+    url = "https://www.signalyst.eu/bins/hqplayer4desktop-${version}.fc36.x86_64.rpm";
+    sha256 = "sha256-PA8amsqy4O9cMruNYVhG+uBiUGQ5WfnZC2ARppmZd7g=";
   };
 
   unpackPhase = ''
-    ${rpmextract}/bin/rpmextract $src
+    ${rpmextract}/bin/rpmextract "$src"
   '';
 
   nativeBuildInputs = [ autoPatchelfHook rpmextract ];
@@ -34,8 +36,9 @@ mkDerivation rec {
   buildInputs = [
     alsa-lib
     flac
-    gcc11.cc.lib
+    gcc12.cc.lib
     libmicrohttpd
+    libusb-compat-0_1
     llvmPackages_10.openmp
     qtcharts
     qtdeclarative
@@ -45,41 +48,52 @@ mkDerivation rec {
     wavpack
   ];
 
+  dontPatch = true;
   dontConfigure = true;
   dontBuild = true;
 
   installPhase = ''
     runHook preInstall
 
-    # main executable
-    mkdir -p $out/bin
-    cp ./usr/bin/* $out/bin
+    # additional library
+    mkdir -p "$out"/lib
+    mv ./opt/hqplayer4desktop/lib/* "$out"/lib
 
-    # desktop files
-    mkdir -p $out/share/applications
-    cp ./usr/share/applications/* $out/share/applications
+    # main executable
+    mkdir -p "$out"/bin
+    mv ./usr/bin/* "$out"/bin
 
     # documentation
-    mkdir -p $out/share/doc/${pname}
-    cp ./usr/share/doc/hqplayer4desktop/* $out/share/doc/${pname}
+    mkdir -p "$doc/share/doc/${pname}" "$doc/share/applications"
+    mv ./usr/share/doc/hqplayer4desktop/* "$doc/share/doc/${pname}"
+    mv ./usr/share/applications/hqplayer4desktop-manual.desktop "$doc/share/applications"
+
+    # desktop files
+    mkdir -p "$out/share/applications"
+    mv ./usr/share/applications/* "$out/share/applications"
 
     # pixmaps
-    mkdir -p $out/share/pixmaps
-    cp ./usr/share/pixmaps/* $out/share/pixmaps
+    mkdir -p "$out/share/pixmaps"
+    mv ./usr/share/pixmaps/* "$out/share/pixmaps"
 
     runHook postInstall
   '';
 
+  # doc has dependencies on evince that is not required by main app
+  outputs = [ "out" "doc" ];
+
   postInstall = ''
-    for desktopFile in $out/share/applications/*; do
+    for desktopFile in $out/share/applications/hqplayer4{desktop-nostyle,desktop-highdpi,-client,desktop}.desktop; do
       substituteInPlace "$desktopFile" \
-        --replace /usr/bin/ $out/bin/ \
-        --replace /usr/share/doc/ $out/share/doc/
+        --replace /usr/bin "$out"/bin
     done
+    substituteInPlace "$doc/share/applications/hqplayer4desktop-manual.desktop" \
+        --replace /usr/share/doc/hqplayer4desktop "$doc/share/doc/${pname}" \
+        --replace evince "${evince}/bin/evince"
   '';
 
   postFixup = ''
-    patchelf --replace-needed libomp.so.5 libomp.so $out/bin/.hqplayer4desktop-wrapped
+    patchelf --replace-needed libomp.so.5 libomp.so "$out/bin/.hqplayer4desktop-wrapped"
   '';
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/applications/audio/id3v2/default.nix b/nixpkgs/pkgs/applications/audio/id3v2/default.nix
index f6c88bc456e9..7b8ece0e7182 100644
--- a/nixpkgs/pkgs/applications/audio/id3v2/default.nix
+++ b/nixpkgs/pkgs/applications/audio/id3v2/default.nix
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A command line editor for id3v2 tags";
-    homepage = "http://id3v2.sourceforge.net/";
+    homepage = "https://id3v2.sourceforge.net/";
     license = licenses.gpl2Plus;
     platforms = with platforms; unix;
   };
diff --git a/nixpkgs/pkgs/applications/audio/in-formant/0001-Avoid-using-vendored-dependencies-we-have-in-nixpkgs.patch b/nixpkgs/pkgs/applications/audio/in-formant/0001-Avoid-using-vendored-dependencies-we-have-in-nixpkgs.patch
new file mode 100644
index 000000000000..b45b3218f358
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/in-formant/0001-Avoid-using-vendored-dependencies-we-have-in-nixpkgs.patch
@@ -0,0 +1,47 @@
+From 42eda1afc1cfb0506b02baae894fb32f7e21755d Mon Sep 17 00:00:00 2001
+From: ckie <git-525ff67@ckie.dev>
+Date: Fri, 10 Mar 2023 04:39:38 +0200
+Subject: [PATCH] Avoid using vendored dependencies we have in nixpkgs
+
+---
+ CMakeLists.txt | 12 ++++--------
+ 1 file changed, 4 insertions(+), 8 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 136e7b0..5416da1 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -246,8 +246,6 @@ qt6_add_resources(RESOURCES_OBJ resources/qml.qrc)
+ qt6_add_big_resources(RESOURCES_OBJ resources/other.qrc)
+ set_property(SOURCE "${RESOURCES_OBJ}" PROPERTY SKIP_AUTOMOC ON)
+ 
+-set(ARMADILLO_INCLUDE_DIR external/armadillo/include)
+-set(TOMLPP_INCLUDE_DIR external/tomlplusplus/include)
+ 
+ ### SEARCH AUDIO MODULES 
+ 
+@@ -334,17 +332,15 @@ target_include_directories(in-formant SYSTEM PRIVATE ${ARMADILLO_INCLUDE_DIR} ${
+ target_link_libraries(in-formant PRIVATE Eigen3::Eigen ${FFTW_LIBRARIES} Qt6::Charts Qt6::Quick Qt6::QuickControls2 Qt6::QuickTemplates2 Qt6::Qml Qt6::Widgets Qt6::OpenGL Qt6::Gui Qt6::Core)
+ target_link_directories(in-formant PRIVATE ${FFTW_LIBRARY_DIRS})
+ 
+-set(BUILD_SHARED_LIBS TRUE)
+-add_subdirectory(external/freetype EXCLUDE_FROM_ALL)
++find_package(Freetype)
+ target_link_libraries(in-formant PRIVATE freetype)
+-set(BUILD_SHARED_LIBS)
+ 
+ add_subdirectory(external/rpmalloc EXCLUDE_FROM_ALL)
+ target_link_libraries(in-formant PRIVATE rpcxx_only)
+ 
+-add_subdirectory(external/libsamplerate)
+-target_link_libraries(in-formant PRIVATE lsr)
+-target_include_directories(in-formant PRIVATE external/libsamplerate/src)
++
++find_library(LIBSAMPLERATE_LIBRARY NAMES samplerate libsamplerate-0 samplerate-0)
++target_link_libraries(in-formant PRIVATE ${LIBSAMPLERATE_LIBRARY})
+ 
+ target_compile_definitions(in-formant PRIVATE
+     -DINFORMANT_VERSION=${CUR_VERSION} -DARMA_DONT_USE_WRAPPER
+-- 
+2.39.0
+
diff --git a/nixpkgs/pkgs/applications/audio/in-formant/default.nix b/nixpkgs/pkgs/applications/audio/in-formant/default.nix
index 5fb36b034506..6801e3641852 100644
--- a/nixpkgs/pkgs/applications/audio/in-formant/default.nix
+++ b/nixpkgs/pkgs/applications/audio/in-formant/default.nix
@@ -1,33 +1,56 @@
-{ stdenv, cmake, lib, fetchFromGitHub, qt5, fftw, libtorch-bin, portaudio, eigen
-, xorg, pkg-config, autoPatchelfHook, soxr
+{ stdenv
+, cmake
+, lib
+, fetchFromGitHub
+, wrapQtAppsHook
+, qtbase
+, qtcharts
+, fftw
+, libtorch-bin
+, portaudio
+, eigen
+, xorg
+, pkg-config
+, autoPatchelfHook
+, soxr
+, freetype
+, libsamplerate
+, armadillo
+, tomlplusplus
 }:
 
 stdenv.mkDerivation rec {
   pname = "in-formant";
-  version = "2021-06-30";
+  version = "unstable-2022-09-15";
 
-  # no Qt6 yet, so we're stuck in the last Qt5-supporting commit: https://github.com/NixOS/nixpkgs/issues/108008
   src = fetchFromGitHub {
     owner = "in-formant";
     repo = "in-formant";
-    rev = "e28e628cf5ff0949a7b046d220cc884f6035f31a";
-    sha256 = "sha256-YvtV0wGUNmI/+GGxrIfTk/l8tqUsWgc/LAI17X+AWGI=";
+    rev = "e0606feecff70f0fd4226ff8f116e46817dd7462";
+    hash = "sha256-/4eKny9M2e8Lb9LOiKBj9QLE00CAaD+2ZAwn48lnvKQ=";
     fetchSubmodules = true;
   };
 
-  nativeBuildInputs = [ cmake pkg-config qt5.wrapQtAppsHook autoPatchelfHook ];
+  patches = [
+    # Ignore the freetype sources bundled as a submodule:
+    # /nix/store/…-harfbuzz-7.0.0/lib/libharfbuzz.so.0: undefined reference to `FT_Get_Transform'
+    ./0001-Avoid-using-vendored-dependencies-we-have-in-nixpkgs.patch
+  ];
+
+  nativeBuildInputs = [ cmake pkg-config wrapQtAppsHook autoPatchelfHook ];
 
   buildInputs = [
-    qt5.qtbase
-    qt5.qtquickcontrols
-    qt5.qtquickcontrols2
-    qt5.qtcharts
+    qtbase
+    qtcharts
     fftw
     libtorch-bin
     portaudio
     eigen
     xorg.libxcb
     soxr
+    libsamplerate
+    armadillo
+    tomlplusplus
   ];
 
   installPhase = ''
@@ -35,14 +58,12 @@ stdenv.mkDerivation rec {
     cp in-formant $out/bin
   '';
 
-  # RPATH of binary /nix/store/.../bin/... contains a forbidden reference to /build/
-  cmakeFlags = [ "-DCMAKE_SKIP_BUILD_RPATH=ON" ];
-
   meta = with lib; {
     description = "A real-time pitch and formant tracking software";
     homepage = "https://github.com/in-formant/in-formant";
     license = licenses.asl20;
-    platforms = platforms.linux;
+    # currently broken on i686-linux and aarch64-linux due to other nixpkgs dependencies
+    platforms = [ "x86_64-linux" ];
     maintainers = with maintainers; [ ckie ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/indicator-sound-switcher/default.nix b/nixpkgs/pkgs/applications/audio/indicator-sound-switcher/default.nix
index 6326d7cc5630..6610e53e2cc7 100644
--- a/nixpkgs/pkgs/applications/audio/indicator-sound-switcher/default.nix
+++ b/nixpkgs/pkgs/applications/audio/indicator-sound-switcher/default.nix
@@ -7,7 +7,7 @@
 , gobject-introspection
 , intltool, wrapGAppsHook, glib
 , librsvg
-, libayatana-appindicator-gtk3
+, libayatana-appindicator
 , libpulseaudio
 , keybinder3
 , gdk-pixbuf
@@ -15,13 +15,13 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "indicator-sound-switcher";
-  version = "2.3.7";
+  version = "2.3.9";
 
   src = fetchFromGitHub {
     owner = "yktoo";
     repo = pname;
-    rev = "v${version}";
-    sha256 = "sha256-agzU3Z3E6NvCnlsz9L719LqMTm8EmYg3TY/2lWTYgKs=";
+    rev = "refs/tags/v${version}";
+    sha256 = "sha256-qJ1lg9A1aCM+/v/JbQAVpYGX25qA5ULqsM8k7uH1uvQ=";
   };
 
   postPatch = ''
@@ -47,7 +47,7 @@ python3Packages.buildPythonApplication rec {
     gtk3
     gobject-introspection
     librsvg
-    libayatana-appindicator-gtk3
+    libayatana-appindicator
     libpulseaudio
     keybinder3
   ];
diff --git a/nixpkgs/pkgs/applications/audio/infamousPlugins/default.nix b/nixpkgs/pkgs/applications/audio/infamousPlugins/default.nix
index dd96f720e939..03ef83bd6fa9 100644
--- a/nixpkgs/pkgs/applications/audio/infamousPlugins/default.nix
+++ b/nixpkgs/pkgs/applications/audio/infamousPlugins/default.nix
@@ -1,4 +1,19 @@
-{ lib, stdenv, fetchFromGitHub, fetchpatch, pkg-config, 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";
@@ -16,6 +31,13 @@ stdenv.mkDerivation rec {
       url = "https://github.com/ssj71/infamousPlugins/commit/06dd967b4736ea886dc1dc07f882cb1563961582.patch";
       sha256 = "08xwh6px13y1gykaw103nhvjms7vgbgkcm0avh9f5d2d7aadq0l2";
     })
+
+    # glibx-2.36 upstream fix: https://github.com/ssj71/infamousPlugins/pull/52
+    (fetchpatch {
+      name = "glibc-2.36.patch";
+      url = "https://github.com/ssj71/infamousPlugins/commit/eb4fd9af25362fdd006549c471f4cf0427816dd5.patch";
+      hash = "sha256-kBB2meQYVoVSTHIG77M8Fmeve87JBIUjpWCP6oiOkKI=";
+    })
   ];
   nativeBuildInputs = [ pkg-config cmake ];
   buildInputs = [ cairomm lv2 libpthreadstubs libXdmcp libXft ntk pcre fftwFloat zita-resampler ];
diff --git a/nixpkgs/pkgs/applications/audio/ingen/default.nix b/nixpkgs/pkgs/applications/audio/ingen/default.nix
index a0defad0da0c..81a97d5a054e 100644
--- a/nixpkgs/pkgs/applications/audio/ingen/default.nix
+++ b/nixpkgs/pkgs/applications/audio/ingen/default.nix
@@ -1,5 +1,5 @@
 { lib, stdenv, fetchgit, boost, ganv, glibmm, gtkmm2, libjack2, lilv
-, lv2, makeWrapper, pkg-config, python3, raul, serd, sord, sratom
+, lv2, pkg-config, python3, raul, serd, sord, sratom
 , wafHook
 , suil
 }:
diff --git a/nixpkgs/pkgs/applications/audio/jack-rack/default.nix b/nixpkgs/pkgs/applications/audio/jack-rack/default.nix
index 25ee53d3f435..8cf55289b2f3 100644
--- a/nixpkgs/pkgs/applications/audio/jack-rack/default.nix
+++ b/nixpkgs/pkgs/applications/audio/jack-rack/default.nix
@@ -8,7 +8,7 @@ stdenv.mkDerivation rec {
   };
   nativeBuildInputs = [ pkg-config ];
   buildInputs = [ libjack2 ladspaH gtk2 alsa-lib libxml2 lrdf ];
-  NIX_LDFLAGS = "-ldl -lm -lpthread";
+  NIX_LDFLAGS = "-lm -lpthread";
 
   meta = {
     description = ''An effects "rack" for the JACK low latency audio API'';
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
       be controlled using the ALSA sequencer. It's phat; it turns your
       computer into an effects box.
     '';
-    homepage = "http://jack-rack.sourceforge.net/";
+    homepage = "https://jack-rack.sourceforge.net/";
     license = lib.licenses.gpl2Plus;
     maintainers = [ lib.maintainers.astsmtl ];
     platforms = lib.platforms.linux;
diff --git a/nixpkgs/pkgs/applications/audio/jackmix/default.nix b/nixpkgs/pkgs/applications/audio/jackmix/default.nix
index e9d2abee91cd..b34c7fbc1801 100644
--- a/nixpkgs/pkgs/applications/audio/jackmix/default.nix
+++ b/nixpkgs/pkgs/applications/audio/jackmix/default.nix
@@ -1,4 +1,6 @@
-{ mkDerivation, lib, fetchFromGitHub, pkg-config, sconsPackages, qtbase, lash, libjack2, jack ? libjack2, alsa-lib }:
+{ mkDerivation, lib, fetchFromGitHub, pkg-config, scons, qtbase, lash, libjack2, jack ? libjack2, alsa-lib
+, fetchpatch
+}:
 
 mkDerivation rec {
   pname = "jackmix";
@@ -11,9 +13,16 @@ mkDerivation rec {
     sha256 = "0p59411vk38lccn24r7nih10jpgg9i46yc26zpc3x13amxwwpd4h";
   };
 
-  patches = [ ./no_error.patch ];
+  patches = [
+    ./no_error.patch
+    (fetchpatch {
+      name = "sconstruct-python3.patch";
+      url = "https://github.com/kampfschlaefer/jackmix/commit/3a0c868b267728fdbc69cc3dc1941edac27d97f6.patch";
+      hash = "sha256-MLgxIiZ0+C1IVEci9Q347DR+SJUlPG2N3iPvuhRptJU=";
+    })
+  ];
 
-  nativeBuildInputs = [ sconsPackages.scons_3_1_2 pkg-config ];
+  nativeBuildInputs = [ scons pkg-config ];
   buildInputs = [
     qtbase
     lash
diff --git a/nixpkgs/pkgs/applications/audio/jamesdsp/default.nix b/nixpkgs/pkgs/applications/audio/jamesdsp/default.nix
index 786b45512085..be6f09514387 100644
--- a/nixpkgs/pkgs/applications/audio/jamesdsp/default.nix
+++ b/nixpkgs/pkgs/applications/audio/jamesdsp/default.nix
@@ -13,7 +13,6 @@
 , makeDesktopItem
 , pkg-config
 , libarchive
-, fetchpatch
 , copyDesktopItems
 , usePipewire ? true
 , usePulseaudio ? false
@@ -26,28 +25,15 @@ let
 in
   mkDerivation rec {
   pname = "jamesdsp";
-  version = "2.3";
+  version = "2.4";
   src = fetchFromGitHub rec {
     owner = "Audio4Linux";
     repo = "JDSP4Linux";
     fetchSubmodules = true;
     rev = version;
-    hash = "sha256-Hkzurr+s+vvSyOMCYH9kHI+nIm6mL9yORGNzY2FXslc=";
+    hash = "sha256-wD1JZQD8dR24cBN4QJCSrEsS4aoMD+MQmqnOIFKOeoE=";
   };
 
-  patches = [
-    # fixing /usr install assumption, remove on version bump
-    (fetchpatch {
-      url = "https://github.com/Audio4Linux/JDSP4Linux/commit/003c9e9fc426f83e269aed6e05be3ed55273931a.patch";
-      hash = "sha256-crll/a7C9pUq9eL5diq8/YgC5bNC6SrdijZEBxZpJ8E=";
-    })
-    # compatibility fix for PipeWire 0.3.44+, remove on version bump
-    (fetchpatch {
-      url = "https://github.com/Audio4Linux/JDSP4Linux/commit/e04c55735cc20fc3c3ce042c5681ec80f7df3c96.patch";
-      hash = "sha256-o6AUtQzugykALSdkM3i3lYqRmzJX3FzmALSi0TrWuRA=";
-    })
-  ];
-
   nativeBuildInputs = [
     qmake
     pkg-config
@@ -86,6 +72,11 @@ in
     })
   ];
 
+  postInstall = ''
+    install -D resources/icons/icon.png $out/share/pixmaps/jamesdsp.png
+    install -D resources/icons/icon.svg $out/share/icons/hicolor/scalable/apps/jamesdsp.svg
+  '';
+
   meta = with lib;{
     broken = (stdenv.isLinux && stdenv.isAarch64);
     description = "An audio effect processor for PipeWire clients";
diff --git a/nixpkgs/pkgs/applications/audio/jamin/default.nix b/nixpkgs/pkgs/applications/audio/jamin/default.nix
index 70cb4d7f1109..e130d9a642d4 100644
--- a/nixpkgs/pkgs/applications/audio/jamin/default.nix
+++ b/nixpkgs/pkgs/applications/audio/jamin/default.nix
@@ -19,16 +19,14 @@ stdenv.mkDerivation rec {
   # gcc-10. Otherwise build fails as:
   #     ld: jamin-preferences.o:/build/jamin-0.95.0/src/hdeq.h:64: multiple definition of
   #       `l_notebook1'; jamin-callbacks.o:/build/jamin-0.95.0/src/hdeq.h:64: first defined here
-  NIX_CFLAGS_COMPILE = "-fcommon";
-
-  NIX_LDFLAGS = "-ldl";
+  env.NIX_CFLAGS_COMPILE = "-fcommon";
 
   postInstall = ''
     wrapProgram $out/bin/jamin --set LADSPA_PATH ${ladspaPlugins}/lib/ladspa
   '';
 
   meta = with lib; {
-    homepage = "http://jamin.sourceforge.net";
+    homepage = "https://jamin.sourceforge.net";
     description = "JACK Audio Mastering interface";
     license = licenses.gpl2;
     maintainers = [ maintainers.nico202 ];
diff --git a/nixpkgs/pkgs/applications/audio/jmusicbot/default.nix b/nixpkgs/pkgs/applications/audio/jmusicbot/default.nix
index d9d7bf19e7d6..590c695577cf 100644
--- a/nixpkgs/pkgs/applications/audio/jmusicbot/default.nix
+++ b/nixpkgs/pkgs/applications/audio/jmusicbot/default.nix
@@ -1,12 +1,12 @@
-{ stdenv, lib, fetchurl, makeWrapper, jre }:
+{ stdenv, lib, fetchurl, makeWrapper, jre_headless }:
 
 stdenv.mkDerivation rec {
   pname = "JMusicBot";
-  version = "0.3.8";
+  version = "0.3.9";
 
   src = fetchurl {
     url = "https://github.com/jagrosh/MusicBot/releases/download/${version}/JMusicBot-${version}.jar";
-    sha256 = "sha256-wzmrh9moY6oo3RqOy9Zl1X70BZlvbJkQmz8BaBIFtIM=";
+    sha256 = "sha256-2A1yo2e1MawGLMTM6jWwpQJJuKOmljxFriORv90Jqg8=";
   };
 
   dontUnpack = true;
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
     mkdir -p $out/lib
     cp $src $out/lib/JMusicBot
 
-    makeWrapper ${jre}/bin/java $out/bin/JMusicBot \
+    makeWrapper ${jre_headless}/bin/java $out/bin/JMusicBot \
       --add-flags "-Xmx1G -Dnogui=true -Djava.util.concurrent.ForkJoinPool.common.parallelism=1 -jar $out/lib/JMusicBot"
   '';
 
@@ -27,6 +27,6 @@ stdenv.mkDerivation rec {
     sourceProvenance = with sourceTypes; [ binaryBytecode ];
     license = licenses.asl20;
     maintainers = with maintainers; [ SuperSandro2000 ];
-    platforms = platforms.all;
+    inherit (jre_headless.meta) platforms;
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/kapitonov-plugins-pack/default.nix b/nixpkgs/pkgs/applications/audio/kapitonov-plugins-pack/default.nix
index 655fc6a9608c..935e3a950383 100644
--- a/nixpkgs/pkgs/applications/audio/kapitonov-plugins-pack/default.nix
+++ b/nixpkgs/pkgs/applications/audio/kapitonov-plugins-pack/default.nix
@@ -1,5 +1,5 @@
 { lib, stdenv, fetchFromGitHub, faust, meson, ninja, pkg-config
-, boost, cairo, fftw, gnome, ladspa-sdk, libxcb, lv2, xcbutilwm
+, boost, cairo, fftw, ladspa-sdk, libxcb, lv2, xcbutilwm
 , zita-convolver, zita-resampler
  }:
 
diff --git a/nixpkgs/pkgs/applications/audio/keyfinder/default.nix b/nixpkgs/pkgs/applications/audio/keyfinder/default.nix
index c3667ee57a5d..24a72501db54 100644
--- a/nixpkgs/pkgs/applications/audio/keyfinder/default.nix
+++ b/nixpkgs/pkgs/applications/audio/keyfinder/default.nix
@@ -33,7 +33,7 @@ mkDerivation rec {
       management, no track suggestions, no media player. Just a fast,
       efficient workflow tool.
     '';
-    homepage = "http://www.ibrahimshaath.co.uk/keyfinder/";
+    homepage = "https://www.ibrahimshaath.co.uk/keyfinder/";
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
   };
diff --git a/nixpkgs/pkgs/applications/audio/kid3/default.nix b/nixpkgs/pkgs/applications/audio/kid3/default.nix
index b4961384080e..843738babbc5 100644
--- a/nixpkgs/pkgs/applications/audio/kid3/default.nix
+++ b/nixpkgs/pkgs/applications/audio/kid3/default.nix
@@ -27,11 +27,11 @@
 
 stdenv.mkDerivation rec {
   pname = "kid3";
-  version = "3.9.2";
+  version = "3.9.3";
 
   src = fetchurl {
     url = "https://download.kde.org/stable/${pname}/${version}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-R4Xv+PmzKZQF1tFtSQTFjaisGug2EKM6mPVoGutNnok=";
+    sha256 = "sha256-D2hrdej2Q69AYjDn2Ey4vBSOmzBY3UzZMUdJSRjurdA=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/audio/klick/default.nix b/nixpkgs/pkgs/applications/audio/klick/default.nix
index 281a7148dfea..8faa7410a539 100644
--- a/nixpkgs/pkgs/applications/audio/klick/default.nix
+++ b/nixpkgs/pkgs/applications/audio/klick/default.nix
@@ -1,22 +1,37 @@
-{ lib, stdenv, fetchurl, sconsPackages, pkg-config
-, libsamplerate, libsndfile, liblo, libjack2, boost }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, pkg-config
+, scons
+, rubberband
+, boost
+, libjack2
+, liblo
+, libsamplerate
+, libsndfile
+}:
 
 stdenv.mkDerivation rec {
   pname = "klick";
-  version = "0.12.2";
+  version = "0.14.2";
 
-  src = fetchurl {
-    url = "http://das.nasophon.de/download/${pname}-${version}.tar.gz";
-    sha256 = "1289533c0849b1b66463bf27f7ce5f71736b655cfb7672ef884c7e6eb957ac42";
+  src = fetchFromGitHub {
+    owner = "Allfifthstuning";
+    repo = "klick";
+    rev = version;
+    hash = "sha256-jHyeVCmyy9ipbVaF7GSW19DOVpU9EQJoLcGq9uos+eY=";
   };
 
-  nativeBuildInputs = [ sconsPackages.scons_3_0_1 pkg-config ];
+  nativeBuildInputs = [
+    pkg-config
+    rubberband
+    scons
+  ];
   buildInputs = [ libsamplerate libsndfile liblo libjack2 boost ];
   prefixKey = "PREFIX=";
-  NIX_CFLAGS_COMPILE = "-fpermissive";
 
   meta = {
-    homepage = "http://das.nasophon.de/klick/";
+    homepage = "https://das.nasophon.de/klick/";
     description = "Advanced command-line metronome for JACK";
     license = lib.licenses.gpl2Plus;
     platforms = lib.platforms.linux;
diff --git a/nixpkgs/pkgs/applications/audio/klystrack/default.nix b/nixpkgs/pkgs/applications/audio/klystrack/default.nix
index 362c76a0d4de..9ea5f40be14b 100644
--- a/nixpkgs/pkgs/applications/audio/klystrack/default.nix
+++ b/nixpkgs/pkgs/applications/audio/klystrack/default.nix
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
   #   ld: libengine_gui.a(gui_menu.o):(.bss+0x0): multiple definition of
   #     `menu_t'; objs.release/action.o:(.bss+0x20): first defined here
   # TODO: remove it for 1.7.7+ release as it was fixed upstream.
-  NIX_CFLAGS_COMPILE = "-fcommon";
+  env.NIX_CFLAGS_COMPILE = "-fcommon";
 
   buildFlags = [ "PREFIX=${placeholder "out"}" "CFG=release" ];
 
diff --git a/nixpkgs/pkgs/applications/audio/ladspa-sdk/default.nix b/nixpkgs/pkgs/applications/audio/ladspa-sdk/default.nix
index 47a36ed1b5df..8055683a3fcf 100644
--- a/nixpkgs/pkgs/applications/audio/ladspa-sdk/default.nix
+++ b/nixpkgs/pkgs/applications/audio/ladspa-sdk/default.nix
@@ -1,4 +1,5 @@
 { lib, stdenv, fetchurl }:
+
 stdenv.mkDerivation rec {
   pname = "ladspa-sdk";
   version = "1.15";
@@ -7,12 +8,27 @@ stdenv.mkDerivation rec {
     sha256 = "1vgx54cgsnc3ncl9qbgjbmq12c444xjafjkgr348h36j16draaa2";
   };
 
+  sourceRoot = "ladspa_sdk_${version}/src";
+
+  strictDeps = true;
+
   patchPhase = ''
-    cd src
     sed -i 's@/usr/@$(out)/@g'  Makefile
-    sed -i 's@-mkdirhier@mkdir -p@g'  Makefile
   '';
 
+  makeFlags = [
+    "CC=${stdenv.cc.targetPrefix}cc"
+    "CPP=${stdenv.cc.targetPrefix}c++"
+  ];
+
+  # The default target also runs tests, which we don't want to do in
+  # the build phase as it would break cross.
+  buildFlags = [ "targets" ];
+
+  # Tests try to create and play a sound file.  Playing will fail, but
+  # it's probably still useful to run the part that creates the file.
+  doCheck = true;
+
   meta = {
     description = "The SDK for the LADSPA audio plugin standard";
     longDescription = ''
diff --git a/nixpkgs/pkgs/applications/audio/ledfx/default.nix b/nixpkgs/pkgs/applications/audio/ledfx/default.nix
new file mode 100644
index 000000000000..0bec6eefb63e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/ledfx/default.nix
@@ -0,0 +1,62 @@
+{ lib
+, python3
+, fetchPypi
+}:
+
+python3.pkgs.buildPythonPackage rec {
+  pname = "ledfx";
+  version = "2.0.67";
+  format = "setuptools";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-lFxAMjglQZXCySr83PtvStU6hw2ucQu+rSjIHo1yZBk=";
+  };
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace '"openrgb-python~=0.2.10",' "" \
+      --replace "'rpi-ws281x>=4.3.0; platform_system == \"Linux\"'," "" \
+      --replace '"sentry-sdk==1.14.0",' "" \
+      --replace "~=" ">="
+  '';
+
+  propagatedBuildInputs = with python3.pkgs; [
+    aiohttp
+    aiohttp-cors
+    aubio
+    certifi
+    cython
+    flux-led
+    icmplib
+    multidict
+    numpy
+    # openrgb-python # not packaged
+    paho-mqtt
+    pillow
+    psutil
+    pyserial
+    pystray
+    python-rtmidi
+    # rpi-ws281x # not packaged
+    requests
+    sacn
+    samplerate
+    sentry-sdk
+    sounddevice
+    uvloop
+    voluptuous
+    zeroconf
+  ];
+
+  # has no tests
+  doCheck = false;
+
+  meta = with lib; {
+    description = "LedFx is a network based LED effect controller with support for advanced real-time audio effects";
+    homepage = "https://github.com/LedFx/LedFx";
+    changelog = "https://github.com/LedFx/LedFx/blob/${version}/CHANGELOG.rst";
+    license = licenses.gpl3Only;
+    maintainers = teams.c3d2.members;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/librespot/default.nix b/nixpkgs/pkgs/applications/audio/librespot/default.nix
index 5917739f2442..f477b811d70f 100644
--- a/nixpkgs/pkgs/applications/audio/librespot/default.nix
+++ b/nixpkgs/pkgs/applications/audio/librespot/default.nix
@@ -1,6 +1,17 @@
-{ lib, stdenv, fetchFromGitHub, rustPlatform, pkg-config, openssl, withRodio ? true
-, withALSA ? true, alsa-lib ? null, withPulseAudio ? false, libpulseaudio ? null
-, withPortAudio ? false, portaudio ? null }:
+{ lib
+, rustPlatform
+, fetchFromGitHub
+, pkg-config
+, stdenv
+, openssl
+, withALSA ? true
+, alsa-lib
+, withPortAudio ? false
+, portaudio
+, withPulseAudio ? false
+, libpulseaudio
+, withRodio ? true
+}:
 
 rustPlatform.buildRustPackage rec {
   pname = "librespot";
@@ -15,26 +26,26 @@ rustPlatform.buildRustPackage rec {
 
   cargoSha256 = "sha256-tbDlWP0sUIa0W9HhdYNOvo9cGeqFemclhA7quh7f/Rw=";
 
-  nativeBuildInputs = [ pkg-config ];
+  nativeBuildInputs = [ pkg-config ] ++ lib.optionals stdenv.isDarwin [
+    rustPlatform.bindgenHook
+  ];
 
-  buildInputs = [ openssl ] ++ lib.optional withALSA alsa-lib
-    ++ lib.optional withPulseAudio libpulseaudio
-    ++ lib.optional withPortAudio portaudio;
+  buildInputs = [ openssl ]
+    ++ lib.optional withALSA alsa-lib
+    ++ lib.optional withPortAudio portaudio
+    ++ lib.optional withPulseAudio libpulseaudio;
 
   buildNoDefaultFeatures = true;
   buildFeatures = lib.optional withRodio "rodio-backend"
     ++ lib.optional withALSA "alsa-backend"
-    ++ lib.optional withPulseAudio "pulseaudio-backend"
-    ++ lib.optional withPortAudio "portaudio-backend";
-
-  doCheck = false;
+    ++ lib.optional withPortAudio "portaudio-backend"
+    ++ lib.optional withPulseAudio "pulseaudio-backend";
 
   meta = with lib; {
     description = "Open Source Spotify client library and playback daemon";
     homepage = "https://github.com/librespot-org/librespot";
+    changelog = "https://github.com/librespot-org/librespot/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ bennofs ];
-    platforms = platforms.unix;
-    broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/trunk/librespot.x86_64-darwin
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/lingot/default.nix b/nixpkgs/pkgs/applications/audio/lingot/default.nix
index 22cab165ccf1..234e2d675cb1 100644
--- a/nixpkgs/pkgs/applications/audio/lingot/default.nix
+++ b/nixpkgs/pkgs/applications/audio/lingot/default.nix
@@ -1,23 +1,26 @@
-{ lib, stdenv
+{ lib
+, stdenv
 , fetchurl
 , pkg-config
 , intltool
-, gtk3
 , wrapGAppsHook
+, gtk3
 , alsa-lib
-, libjack2
 , libpulseaudio
 , fftw
+, fftwFloat
+, json_c
+, libjack2
 , jackSupport ? true
 }:
 
 stdenv.mkDerivation rec {
   pname = "lingot";
-  version = "1.0.1";
+  version = "1.1.1";
 
   src = fetchurl {
     url = "mirror://savannah/${pname}/${pname}-${version}.tar.gz";
-    sha256 = "03x0qqb9iarjapvii3ja522vkxrqv1hwix6b1r53is48p5xwgf3i";
+    sha256 = "sha256-xPl+SWo2ZscHhtE25vLMxeijgT6wjNo1ys1+sNFvTVY=";
   };
 
   nativeBuildInputs = [
@@ -31,6 +34,8 @@ stdenv.mkDerivation rec {
     alsa-lib
     libpulseaudio
     fftw
+    fftwFloat
+    json_c
   ] ++ lib.optional jackSupport libjack2;
 
   configureFlags = lib.optional (!jackSupport) "--disable-jack";
diff --git a/nixpkgs/pkgs/applications/audio/linvstmanager/default.nix b/nixpkgs/pkgs/applications/audio/linvstmanager/default.nix
new file mode 100644
index 000000000000..dc8376c4166f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/linvstmanager/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, cmake
+, qtbase
+, wrapQtAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "linvstmanager";
+  version = "1.1.1";
+
+  src = fetchFromGitHub {
+    owner = "Goli4thus";
+    repo = "linvstmanager";
+    rev = "v${version}";
+    hash = "sha256-K6eugimMy/MZgHYkg+zfF8DDqUuqqoeymxHtcFGu2Uk=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    qtbase
+  ];
+
+  meta = with lib; {
+    description = "Graphical companion application for various bridges like LinVst, etc";
+    homepage = "https://github.com/Goli4thus/linvstmanager";
+    license = with licenses; [ gpl3 ];
+    platforms = platforms.linux;
+    maintainers = [ maintainers.GabrielDougherty ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/listenbrainz-mpd/default.nix b/nixpkgs/pkgs/applications/audio/listenbrainz-mpd/default.nix
new file mode 100644
index 000000000000..b83150985499
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/listenbrainz-mpd/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, rustPlatform
+, fetchFromGitea
+, pkg-config
+, stdenv
+, openssl
+, libiconv
+, sqlite
+, Security }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "listenbrainz-mpd";
+  version = "2.1.0";
+
+  src = fetchFromGitea {
+    domain = "codeberg.org";
+    owner = "elomatreb";
+    repo = "listenbrainz-mpd";
+    rev = "v${version}";
+    hash = "sha256-AalZTlizaw93KlVffFDjGNoKkCHUFQTiElZgJo64shs=";
+  };
+
+  cargoHash = "sha256-n24P56ZrF8qEpM45uIFr7bJhlzuAexNr6siEsF219uA=";
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [ sqlite ] ++ (if stdenv.isDarwin then [ libiconv Security ] else [ openssl ]);
+
+  meta = with lib; {
+    homepage = "https://codeberg.org/elomatreb/listenbrainz-mpd";
+    changelog = "https://codeberg.org/elomatreb/listenbrainz-mpd/src/tag/v${version}/CHANGELOG.md";
+    description = "ListenBrainz submission client for MPD";
+    license = licenses.agpl3Only;
+    maintainers = with maintainers; [ DeeUnderscore ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/littlegptracker/default.nix b/nixpkgs/pkgs/applications/audio/littlegptracker/default.nix
index 4d7d70aebd66..846936e65f6a 100644
--- a/nixpkgs/pkgs/applications/audio/littlegptracker/default.nix
+++ b/nixpkgs/pkgs/applications/audio/littlegptracker/default.nix
@@ -35,8 +35,8 @@ stdenv.mkDerivation rec {
     ++ lib.optionals stdenv.isLinux  [ "PLATFORM=DEB" ]
     ++ lib.optionals stdenv.isDarwin [ "PLATFORM=OSX" ];
 
-  NIX_CFLAGS_COMPILE = [ "-fpermissive" ] ++
-    lib.optional stdenv.hostPlatform.isAarch64 "-Wno-error=narrowing";
+  env.NIX_CFLAGS_COMPILE = toString ([ "-fpermissive" ] ++
+    lib.optional stdenv.hostPlatform.isAarch64 "-Wno-error=narrowing");
 
   NIX_LDFLAGS = lib.optional stdenv.isDarwin "-framework Foundation";
 
@@ -63,8 +63,8 @@ stdenv.mkDerivation rec {
       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";
+    homepage = "https://www.littlegptracker.com/";
+    downloadPage = "https://www.littlegptracker.com/download.php";
     license = licenses.bsd3;
     maintainers = with maintainers; [ fgaz ];
     platforms = platforms.all;
diff --git a/nixpkgs/pkgs/applications/audio/lmms/default.nix b/nixpkgs/pkgs/applications/audio/lmms/default.nix
index 22d9b3fed976..01b84780607b 100644
--- a/nixpkgs/pkgs/applications/audio/lmms/default.nix
+++ b/nixpkgs/pkgs/applications/audio/lmms/default.nix
@@ -1,4 +1,4 @@
-{ lib, fetchFromGitHub, cmake, pkg-config, alsa-lib ? null, fftwFloat, fltk13
+{ lib, fetchFromGitHub, fetchpatch, cmake, pkg-config, alsa-lib ? null, carla ? null, fftwFloat, fltk13
 , fluidsynth ? null, lame ? null, libgig ? null, libjack2 ? null, libpulseaudio ? null
 , libsamplerate, libsoundio ? null, libsndfile, libvorbis ? null, portaudio ? null
 , qtbase, qtx11extras, qttools, SDL ? null, mkDerivation }:
@@ -18,6 +18,7 @@ mkDerivation rec {
   nativeBuildInputs = [ cmake qttools pkg-config ];
 
   buildInputs = [
+    carla
     alsa-lib
     fftwFloat
     fltk13
@@ -36,6 +37,13 @@ mkDerivation rec {
     SDL # TODO: switch to SDL2 in the next version
   ];
 
+  patches = [
+    (fetchpatch {
+      url = "https://raw.githubusercontent.com/archlinux/svntogit-community/cf64acc45e3264c6923885867e2dbf8b7586a36b/trunk/lmms-carla-export.patch";
+      sha256 = "sha256-wlSewo93DYBN2PvrcV58dC9kpoo9Y587eCeya5OX+j4=";
+    })
+  ];
+
   cmakeFlags = [ "-DWANT_QT5=ON" ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/applications/audio/lollypop/default.nix b/nixpkgs/pkgs/applications/audio/lollypop/default.nix
index 9557aa65c19a..005bef77d456 100644
--- a/nixpkgs/pkgs/applications/audio/lollypop/default.nix
+++ b/nixpkgs/pkgs/applications/audio/lollypop/default.nix
@@ -1,5 +1,5 @@
 { lib
-, fetchgit
+, fetchFromGitLab
 , nix-update-script
 , meson
 , ninja
@@ -9,7 +9,7 @@
 , gst_all_1
 , libhandy
 , libsecret
-, libsoup
+, libsoup_3
 , appstream-glib
 , desktop-file-utils
 , totem-pl-parser
@@ -25,16 +25,17 @@
 
 python3.pkgs.buildPythonApplication rec  {
   pname = "lollypop";
-  version = "1.4.34";
+  version = "1.4.37";
 
   format = "other";
-  doCheck = false;
 
-  src = fetchgit {
-    url = "https://gitlab.gnome.org/World/lollypop";
-    rev = "refs/tags/${version}";
+  src = fetchFromGitLab {
+    domain = "gitlab.gnome.org";
+    owner = "World";
+    repo = pname;
+    rev = version;
     fetchSubmodules = true;
-    sha256 = "sha256-nkrnmpM/mVrXVGkfwzmbSxsO1L890LgsjxSXAYjevCs=";
+    sha256 = "sha256-3GPmGNbbSxvLq0t3F9q1x64BwNQCEvFQWLb0bSO9KUY=";
   };
 
   nativeBuildInputs = [
@@ -59,7 +60,7 @@ python3.pkgs.buildPythonApplication rec  {
     gstreamer
     gtk3
     libhandy
-    libsoup
+    libsoup_3
     pango
     totem-pl-parser
   ] ++ lib.optional lastFMSupport libsecret;
@@ -95,12 +96,9 @@ python3.pkgs.buildPythonApplication rec  {
   '';
 
   passthru = {
-    updateScript = nix-update-script {
-      attrPath = pname;
-    };
+    updateScript = nix-update-script { };
   };
 
-
   meta = with lib; {
     changelog = "https://gitlab.gnome.org/World/lollypop/tags/${version}";
     description = "A modern music player for GNOME";
diff --git a/nixpkgs/pkgs/applications/audio/lsp-plugins/default.nix b/nixpkgs/pkgs/applications/audio/lsp-plugins/default.nix
index c0da4fd228a0..ba35300ac0ac 100644
--- a/nixpkgs/pkgs/applications/audio/lsp-plugins/default.nix
+++ b/nixpkgs/pkgs/applications/audio/lsp-plugins/default.nix
@@ -4,22 +4,26 @@
 , ladspaH, php, libXrandr }:
 
 stdenv.mkDerivation rec {
-        pname = "lsp-plugins";
-        version = "1.2.2";
+  pname = "lsp-plugins";
+  version = "1.2.7";
 
-        src = fetchurl {
-                url = "https://github.com/sadko4u/${pname}/releases/download/${version}/${pname}-src-${version}.tar.gz";
-                sha256 = "sha256-qIakDWNs8fQmlw/VHwTET2LmIvI+6I6zK88bmsWF4VI=";
-        };
+  src = fetchurl {
+    url = "https://github.com/sadko4u/${pname}/releases/download/${version}/${pname}-src-${version}.tar.gz";
+    sha256 = "sha256-UCyPOGfa8tVTZzE5ynv/Ov0L+Q6SjAAIwb3jX8X/x0M=";
+  };
 
-        nativeBuildInputs = [ pkg-config php makeWrapper ];
-        buildInputs = [ jack2 libsndfile libGLU libGL lv2 cairo ladspaH libXrandr ];
+  outputs = [ "out" "dev" "doc" ];
 
-        makeFlags = [
-                "PREFIX=${placeholder "out"}"
+  nativeBuildInputs = [ pkg-config php makeWrapper ];
+  buildInputs = [ jack2 libsndfile libGLU libGL lv2 cairo ladspaH libXrandr ];
+
+  makeFlags = [
+    "PREFIX=${placeholder "out"}"
+    "ETCDIR=${placeholder "out"}/etc"
+    "SHAREDDIR=${placeholder "out"}/share"
   ];
 
-  NIX_CFLAGS_COMPILE = "-DLSP_NO_EXPERIMENTAL";
+  env.NIX_CFLAGS_COMPILE = "-DLSP_NO_EXPERIMENTAL";
 
   configurePhase = ''
     make config PREFIX=${placeholder "out"}
@@ -32,138 +36,58 @@ stdenv.mkDerivation rec {
   meta = with lib;
     { description = "Collection of open-source audio plugins";
       longDescription = ''
-        Compatible with follwing formats:
+        Compatible with the following formats:
 
+        - CLAP - set of plugins for Clever Audio Plugins API
         - LADSPA - set of plugins for Linux Audio Developer's Simple Plugin API
         - LV2 - set of plugins and UIs for Linux Audio Developer's Simple Plugin API (LADSPA) version 2
         - LinuxVST - set of plugins and UIs for Steinberg's VST 2.4 format ported on GNU/Linux Platform
         - JACK - Standalone versions for JACK Audio connection Kit with UI
 
-        Contains the following plugins:
+        Contains the following plugins (https://lsp-plug.in/?page=plugins)
 
-        - Limiter Mono - Begrenzer Mono
-        - Limiter Stereo - Begrenzer Stereo
-        - Dynamic Processor LeftRight - Dynamikprozessor LeftRight
-        - Dynamic Processor MidSide - Dynamikprozessor MidSide
-        - Dynamic Processor Mono - Dynamikprozessor Mono
-        - Dynamic Processor Stereo - Dynamikprozessor Stereo
-        - Expander LeftRight - Expander LeftRight
-        - 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
-        - Gate Stereo - Gate Stereo
-        - Graphic Equalizer x16 LeftRight - Grafischer Entzerrer x16 LeftRight
-        - Graphic Equalizer x16 MidSide - Grafischer Entzerrer x16 MidSide
-        - Graphic Equalizer x16 Mono - Grafischer Entzerrer x16 Mono
-        - Graphic Equalizer x16 Stereo - Grafischer Entzerrer x16 Stereo
-        - Graphic Equalizer x32 LeftRight - Grafischer Entzerrer x32 LeftRight
-        - Graphic Equalizer x32 MidSide - Grafischer Entzerrer x32 MidSide
-        - Graphic Equalizer x32 Mono - Grafischer Entzerrer x32 Mono
-        - Graphic Equalizer x32 Stereo - Grafischer Entzerrer x32 Stereo
-        - Impulse Responses Mono - Impulsantworten Mono
-        - Impulse Responses Stereo - Impulsantworten Stereo
-        - Impulse Reverb Mono - Impulsnachhall Mono
-        - Impulse Reverb Stereo - Impulsnachhall Stereo
-        - Sampler Mono - Klangerzeuger Mono
-        - Sampler Stereo - Klangerzeuger Stereo
-        - Compressor LeftRight - Kompressor LeftRight
-        - 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
-        - Parametric Equalizer x16 Mono - Parametrischer Entzerrer x16 Mono
-        - Parametric Equalizer x16 Stereo - Parametrischer Entzerrer x16 Stereo
-        - Parametric Equalizer x32 LeftRight - Parametrischer Entzerrer x32 LeftRight
-        - Parametric Equalizer x32 MidSide - Parametrischer Entzerrer x32 MidSide
-        - Parametric Equalizer x32 Mono - Parametrischer Entzerrer x32 Mono
-        - 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
-        - Sidechain Multiband Compressor Stereo x8 - Sidechain Multi-band Kompressor Stereo x8
-        - Sidechain Limiter Mono - Sidechain-Begrenzer Mono
-        - Sidechain Limiter Stereo - Sidechain-Begrenzer Stereo
-        - Sidechain Dynamic Processor LeftRight - Sidechain-Dynamikprozessor LeftRight
-        - Sidechain Dynamic Processor MidSide - Sidechain-Dynamikprozessor MidSide
-        - Sidechain Dynamic Processor Mono - Sidechain-Dynamikprozessor Mono
-        - Sidechain Dynamic Processor Stereo - Sidechain-Dynamikprozessor Stereo
-        - Sidechain Expander LeftRight - Sidechain-Expander LeftRight
-        - Sidechain Expander MidSide - Sidechain-Expander MidSide
-        - Sidechain Expander Mono - Sidechain-Expander Mono
-        - Sidechain Expander Stereo - Sidechain-Expander Stereo
-        - Sidechain Gate LeftRight - Sidechain-Gate LeftRight
-        - Sidechain Gate MidSide - Sidechain-Gate MidSide
-        - Sidechain Gate Mono - Sidechain-Gate Mono
-        - Sidechain Gate Stereo - Sidechain-Gate Stereo
-        - Sidechain Compressor LeftRight - Sidechain-Kompressor LeftRight
-        - Sidechain Compressor MidSide - Sidechain-Kompressor MidSide
-        - Sidechain Compressor Mono - Sidechain-Kompressor Mono
-        - Sidechain Compressor Stereo - Sidechain-Kompressor Stereo
-        - Slapback Delay Mono - Slapback-Delay Mono
-        - Slapback Delay Stereo - Slapback-Delay Stereo
-        - Spectrum Analyzer x1 - Spektrumanalysator x1
-        - Spectrum Analyzer x12 - Spektrumanalysator x12
-        - Spectrum Analyzer x16 - Spektrumanalysator x16
-        - 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
-        - Trigger Stereo - Triggersensor Stereo
-        - Delay Compensator Mono - Verzögerungsausgleicher Mono
-        - Delay Compensator Stereo - Verzögerungsausgleicher Stereo
-        - Delay Compensator x2 Stereo - Verzögerungsausgleicher x2 Stereo
+        Equalizers:
+        - Graphic Equalizer
+        - Parametric Equalizer
+        Dynamic Processing:
+        - Compressor
+        - Dynamic Processor
+        - Expander
+        - Gate
+        - Limiter
+        Multiband Dynamic Processing:
+        - Multiband Compressor
+        - Multiband Dynamic Processor
+        - Multiband Expander
+        - Multiband Gate
+        Convolution / Reverb processing:
+        - Impulse Responses
+        - Impulse Reverb
+        - Room Builder
+        Delay Effects:
+        - Artistic Delay
+        - Compensation Delay
+        - Slap-back Delay
+        Analyzers:
+        - Oscilloscope
+        - Phase Detector
+        - Spectrum Analyzer
+        Multiband Processing:
+        - Crossover
+        Samplers:
+        - Multisampler
+        - Sampler
+        Generators / Oscillators:
+        - Noise Generator
+        - Oscillator
+        Utilitary Plugins:
+        - A/B Test Plugin
+        - Latency Meter
+        - Loudness Compensator
+        - Mixer
+        - Profiler
+        - Surge Filter
+        - Trigger
       '';
       homepage = "https://lsp-plug.in";
       maintainers = with maintainers; [ magnetophon ];
diff --git a/nixpkgs/pkgs/applications/audio/ltc-tools/default.nix b/nixpkgs/pkgs/applications/audio/ltc-tools/default.nix
index c8c87959727c..935581050744 100644
--- a/nixpkgs/pkgs/applications/audio/ltc-tools/default.nix
+++ b/nixpkgs/pkgs/applications/audio/ltc-tools/default.nix
@@ -11,7 +11,8 @@ stdenv.mkDerivation rec {
     sha256 = "0vp25b970r1hv5ndzs4di63rgwnl31jfaj3jz5dka276kx34q4al";
   };
 
-  buildInputs = [ pkg-config libltc libsndfile jack2 ];
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ libltc libsndfile jack2 ];
 
   makeFlags = [ "PREFIX=$(out)" ];
 
diff --git a/nixpkgs/pkgs/applications/audio/mbrola/default.nix b/nixpkgs/pkgs/applications/audio/mbrola/default.nix
index befa0ac206c3..a21495027c86 100644
--- a/nixpkgs/pkgs/applications/audio/mbrola/default.nix
+++ b/nixpkgs/pkgs/applications/audio/mbrola/default.nix
@@ -1,42 +1,72 @@
-{ stdenv, lib, fetchFromGitHub }:
+{ stdenv, stdenvNoCC, lib, symlinkJoin, 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";
+  meta = with lib; {
+    license = licenses.agpl3Plus;
+    maintainers = with maintainers; [ davidak ];
+    platforms = platforms.linux;
+    description = "Speech synthesizer based on the concatenation of diphones";
+    homepage = "https://github.com/numediart/MBROLA";
   };
 
-  # required for cross compilation
-  makeFlags = [ "CC=${stdenv.cc.targetPrefix}cc" ];
+  voices = stdenvNoCC.mkDerivation {
+    pname = "${pname}-voices";
+    inherit version;
 
-  installPhase = ''
-    runHook preInstall
-    install -D Bin/mbrola $out/bin/mbrola
+    src = fetchFromGitHub {
+      owner = "numediart";
+      repo = "MBROLA-voices";
+      rev = "fe05a0ccef6a941207fd6aaad0b31294a1f93a51";  # using latest commit
+      sha256 = "1w0y2xjp9rndwdjagp2wxh656mdm3d6w9cs411g27rjyfy1205a0";
+    };
 
-    # TODO: package separately because it's very big
-    install -d $out/share/mbrola/voices
-    cp -R ${voices}/data/* $out/share/mbrola/voices/
-    runHook postInstall
-  '';
+    dontBuild = true;
+    installPhase = ''
+      runHook preInstall
+      install -d $out/share/mbrola/voices
+      cp -R $src/data/* $out/share/mbrola/voices/
+      runHook postInstall
+    '';
+    dontFixup = true;
 
-  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;
+    meta = meta // {
+      description = "Speech synthesizer based on the concatenation of diphones (voice files)";
+      homepage = "https://github.com/numediart/MBROLA-voices";
+    };
   };
+
+  bin = stdenv.mkDerivation {
+    pname = "${pname}-bin";
+    inherit version;
+
+    src = fetchFromGitHub {
+      owner = "numediart";
+      repo = "MBROLA";
+      rev = version;
+      sha256 = "1w86gv6zs2cbr0731n49z8v6xxw0g8b0hzyv2iqb9mqcfh38l8zy";
+    };
+
+    # required for cross compilation
+    makeFlags = [ "CC=${stdenv.cc.targetPrefix}cc" ];
+
+    installPhase = ''
+      runHook preInstall
+      install -D Bin/mbrola $out/bin/mbrola
+      rm -rf $out/share/mbrola/voices/*
+      runHook postInstall
+    '';
+
+    meta = meta // {
+      description = "Speech synthesizer based on the concatenation of diphones (binary only)";
+    };
+  };
+
+in
+symlinkJoin {
+  inherit pname version meta;
+  name = "${pname}-${version}";
+  paths = [ bin voices ];
 }
diff --git a/nixpkgs/pkgs/applications/audio/mellowplayer/default.nix b/nixpkgs/pkgs/applications/audio/mellowplayer/default.nix
index 5bdcb81fb633..b736ae882990 100644
--- a/nixpkgs/pkgs/applications/audio/mellowplayer/default.nix
+++ b/nixpkgs/pkgs/applications/audio/mellowplayer/default.nix
@@ -10,6 +10,7 @@
 , qtquickcontrols2
 , qttools
 , qtwebengine
+, stdenv
 }:
 
 mkDerivation rec {
@@ -61,6 +62,7 @@ mkDerivation rec {
 
   meta = with lib; {
     inherit (qtbase.meta) platforms;
+    broken = stdenv.isDarwin; # test build fails, but the project is not maintained anymore
 
     description = "Cloud music integration for your desktop";
     homepage = "https://gitlab.com/ColinDuquesnoy/MellowPlayer";
diff --git a/nixpkgs/pkgs/applications/audio/meterbridge/default.nix b/nixpkgs/pkgs/applications/audio/meterbridge/default.nix
index a825eaa4e38c..675189f6d131 100644
--- a/nixpkgs/pkgs/applications/audio/meterbridge/default.nix
+++ b/nixpkgs/pkgs/applications/audio/meterbridge/default.nix
@@ -12,8 +12,9 @@ stdenv.mkDerivation rec {
 
   patches = [ ./buf_rect.patch ./fix_build_with_gcc-5.patch];
 
+  nativeBuildInputs = [ pkg-config ];
   buildInputs =
-    [ pkg-config SDL SDL_image libjack2
+    [ SDL SDL_image libjack2
     ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/applications/audio/mi2ly/default.nix b/nixpkgs/pkgs/applications/audio/mi2ly/default.nix
index 9a046a2e11aa..2ba12575543c 100644
--- a/nixpkgs/pkgs/applications/audio/mi2ly/default.nix
+++ b/nixpkgs/pkgs/applications/audio/mi2ly/default.nix
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
 
   hardeningDisable = [ "format" ];
 
-  NIX_CFLAGS_COMPILE = [ "-fgnu89-inline" ];
+  env.NIX_CFLAGS_COMPILE = toString [ "-fgnu89-inline" ];
 
   buildPhase = "./cc";
   installPhase = ''
diff --git a/nixpkgs/pkgs/applications/audio/mid2key/default.nix b/nixpkgs/pkgs/applications/audio/mid2key/default.nix
index 0a5aecfecb0f..d4af7108c159 100644
--- a/nixpkgs/pkgs/applications/audio/mid2key/default.nix
+++ b/nixpkgs/pkgs/applications/audio/mid2key/default.nix
@@ -7,12 +7,10 @@ stdenv.mkDerivation rec {
   src = fetchFromGitHub {
     owner = "dnschneid";
     repo = "mid2key";
-    rev = "v${version}";
-    sha256 = "0j2vsjvdgx51nd1qmaa18mcy0yw9pwrhbv2mdwnf913bwsk4y904";
+    rev = "r${version}";
+    sha256 = "Zo0mqdBJ1JKD9ZCA8te3f5opyYslFncYcx9iuXq2B9g=";
   };
 
-  unpackPhase = "tar xvzf $src";
-
   buildInputs = [ alsa-lib libX11 libXi libXtst xorgproto ];
 
   buildPhase = "make";
diff --git a/nixpkgs/pkgs/applications/audio/midas/generic.nix b/nixpkgs/pkgs/applications/audio/midas/generic.nix
index 8c34318191bc..fa5a7b5e46a3 100644
--- a/nixpkgs/pkgs/applications/audio/midas/generic.nix
+++ b/nixpkgs/pkgs/applications/audio/midas/generic.nix
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
 
   installPhase = ''
     mkdir -p $out/bin
-    cp ${pname} $out/bin
+    cp ${type}-Edit $out/bin/${pname}
   '';
   preFixup = let
     # we prepare our library path in the let clause to avoid it become part of the input of mkDerivation
diff --git a/nixpkgs/pkgs/applications/audio/midas/m32edit.nix b/nixpkgs/pkgs/applications/audio/midas/m32edit.nix
index 082da1621be3..eff7fb8f8083 100644
--- a/nixpkgs/pkgs/applications/audio/midas/m32edit.nix
+++ b/nixpkgs/pkgs/applications/audio/midas/m32edit.nix
@@ -4,7 +4,7 @@ callPackage ./generic.nix (args // rec {
   brand = "Midas";
   type = "M32";
   version = "4.1";
-  url = "https://mediadl.musictribe.com/download/software/midas_${type}/${type}-Edit_LINUX_64-Bit_${version}.tar.gz";
+  url = "https://mediadl.musictribe.com/download/software/midas_${type}/${type}-Edit_LINUX_${version}.tar.gz";
   sha256 = "0aqhdrxqa49liyvbbw5x32kwk0h1spzvmizmdxklrfs64vvr9bvh";
   homepage = "https://midasconsoles.com/midas/product?modelCode=P0B3I";
 })
diff --git a/nixpkgs/pkgs/applications/audio/midas/x32edit.nix b/nixpkgs/pkgs/applications/audio/midas/x32edit.nix
index a07c83a9dfe4..d375ebf1a468 100644
--- a/nixpkgs/pkgs/applications/audio/midas/x32edit.nix
+++ b/nixpkgs/pkgs/applications/audio/midas/x32edit.nix
@@ -4,7 +4,7 @@ callPackage ./generic.nix (args // rec {
   brand = "Behringer";
   type = "X32";
   version = "4.1";
-  url = "https://mediadl.musictribe.com/download/software/behringer/${type}/${type}-Edit_LINUX_64-Bit_${version}.tar.gz";
+  url = "https://mediadl.musictribe.com/download/software/behringer/${type}/${type}-Edit_LINUX_${version}.tar.gz";
   sha256 = "0zsw7qfmcci87skkpq8vx5zxk35phn8y4byispvki9ascifnnb33";
   homepage = "https://www.behringer.com/behringer/product?modelCode=P0ASF";
 })
diff --git a/nixpkgs/pkgs/applications/audio/midi-visualizer/default.nix b/nixpkgs/pkgs/applications/audio/midi-visualizer/default.nix
index a50e5dcd6690..ed48c129418c 100644
--- a/nixpkgs/pkgs/applications/audio/midi-visualizer/default.nix
+++ b/nixpkgs/pkgs/applications/audio/midi-visualizer/default.nix
@@ -1,30 +1,62 @@
-{ lib, stdenv, fetchFromGitHub, cmake, pkg-config, libX11, glfw, makeWrapper,
-  libXrandr, libXinerama, libXcursor, gtk3, ffmpeg-full, ...}:
+{ lib
+, stdenv
+, fetchFromGitHub
+, cmake
+, pkg-config
+, libX11
+, glfw
+, makeWrapper
+, libXrandr
+, libXinerama
+, libXcursor
+, gtk3
+, ffmpeg-full
+, AppKit
+, Carbon
+, Cocoa
+, CoreAudio
+, CoreMIDI
+, CoreServices
+, Kernel
+}:
 
 stdenv.mkDerivation rec {
   pname = "MIDIVisualizer";
-  version = "6.5";
+  version = "7.0";
 
   src = fetchFromGitHub {
     owner = "kosua20";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-thRcRJ88bz3jwu6rKaQxt2MkBSf5Ri1jygkKDguP2eE=";
+    sha256 = "sha256-wfPSPH+E9cErVvfJZqHttFtjiUYJopM/u6w6NpRHifE=";
   };
 
   nativeBuildInputs = [ cmake pkg-config makeWrapper];
 
   buildInputs = [
-    libX11
     glfw
+    ffmpeg-full
+  ] ++ lib.optionals stdenv.isLinux [
+    libX11
     libXrandr
     libXinerama
     libXcursor
     gtk3
-    ffmpeg-full
+  ] ++ lib.optionals stdenv.isDarwin [
+    AppKit
+    Carbon
+    Cocoa
+    CoreAudio
+    CoreMIDI
+    CoreServices
+    Kernel
   ];
 
-  installPhase = ''
+  installPhase = if stdenv.isDarwin then ''
+    mkdir -p $out/Applications $out/bin
+    cp -r MIDIVisualizer.app $out/Applications/
+    ln -s ../Applications/MIDIVisualizer.app/Contents/MacOS/MIDIVisualizer $out/bin/
+  '' else ''
     mkdir -p $out/bin
     cp MIDIVisualizer $out/bin
 
@@ -36,7 +68,7 @@ stdenv.mkDerivation rec {
     description = "A small MIDI visualizer tool, using OpenGL";
     homepage = "https://github.com/kosua20/MIDIVisualizer";
     license = licenses.mit;
-    platforms = platforms.linux;
+    platforms = platforms.unix;
     maintainers = [ maintainers.ericdallo ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/midisheetmusic/default.nix b/nixpkgs/pkgs/applications/audio/midisheetmusic/default.nix
index 6a5626d98a69..0d07663d115a 100644
--- a/nixpkgs/pkgs/applications/audio/midisheetmusic/default.nix
+++ b/nixpkgs/pkgs/applications/audio/midisheetmusic/default.nix
@@ -13,7 +13,7 @@ in stdenv.mkDerivation {
     sha256 = "05c6zskj50g29f51lx8fvgzsi3f31z01zj6ssjjrgr7jfs7ak70p";
   };
 
-  checkInputs = (with dotnetPackages; [ NUnitConsole ]);
+  nativeCheckInputs = (with dotnetPackages; [ NUnitConsole ]);
   nativeBuildInputs = [ mono makeWrapper ];
 
   buildPhase = ''
diff --git a/nixpkgs/pkgs/applications/audio/mimic/default.nix b/nixpkgs/pkgs/applications/audio/mimic/default.nix
index 7e11c0a8d75f..2819e288ec11 100644
--- a/nixpkgs/pkgs/applications/audio/mimic/default.nix
+++ b/nixpkgs/pkgs/applications/audio/mimic/default.nix
@@ -38,6 +38,11 @@ stdenv.mkDerivation rec {
     pcre2
   ] ++ lib.optional pulseaudioSupport libpulseaudio;
 
+  env.NIX_CFLAGS_COMPILE = toString [
+    # Needed with GCC 12
+    "-Wno-error=free-nonheap-object"
+  ];
+
   postInstall = ''
     wrapProgram $out/bin/mimic \
       --run "export ALSA_PLUGIN_DIR=${alsa-plugins}/lib/alsa-lib"
diff --git a/nixpkgs/pkgs/applications/audio/minidsp/default.nix b/nixpkgs/pkgs/applications/audio/minidsp/default.nix
new file mode 100644
index 000000000000..5c3da313e3c4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/minidsp/default.nix
@@ -0,0 +1,40 @@
+{
+  lib,
+  fetchFromGitHub,
+  rustPlatform,
+  stdenv,
+  libusb1,
+  AppKit,
+  IOKit,
+  pkg-config,
+}:
+rustPlatform.buildRustPackage rec {
+  pname = "minidsp";
+  version = "0.1.9";
+
+  src = fetchFromGitHub {
+    owner = "mrene";
+    repo = "minidsp-rs";
+    # v0.1.9 tag is out of date, cargo lock fixed in next commit on main
+    rev = "b03a95a05917f20b9c3153c03e4e99dd943d9f6f";
+    hash = "sha256-uZBrX3VCCpr7AY82PgR596mncL5wWDK7bpx2m/jCJBE=";
+  };
+
+  cargoHash = "sha256-0PyojyimxnwEtHA98Npf4eHvycjuXdPrrIFilVuEnQk=";
+
+  cargoBuildFlags = ["-p minidsp -p minidsp-daemon"];
+
+  buildInputs =
+    lib.optionals stdenv.isLinux [libusb1]
+    ++ lib.optionals stdenv.isDarwin [AppKit IOKit];
+
+  nativeBuildInputs = lib.optionals stdenv.isLinux [pkg-config];
+
+  meta = with lib; {
+    description = "A control interface for some MiniDSP products";
+    homepage = "https://github.com/mrene/minidsp-rs";
+    license = licenses.asl20;
+    platforms = platforms.linux ++ platforms.darwin;
+    maintainers = [maintainers.adamcstephens maintainers.mrene];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/miniplayer/default.nix b/nixpkgs/pkgs/applications/audio/miniplayer/default.nix
new file mode 100644
index 000000000000..018fd6c8b78f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/miniplayer/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, python3Packages
+, fetchPypi
+}:
+
+with python3Packages;
+
+buildPythonApplication rec {
+  pname = "miniplayer";
+  version = "1.8.1";
+  format = "pyproject";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-iUUsVIDLQAiaMomfA2LvvJZ2ePhgADtC6GCwIpRC1MA=";
+  };
+
+  propagatedBuildInputs = [
+    colorthief
+    ffmpeg-python
+    mpd2
+    pillow
+    pixcat
+    requests
+    ueberzug
+  ];
+
+  # pythonImportsCheck is disabled because this package doesn't expose any modules.
+
+  meta = with lib; {
+    description = "A curses-based MPD client with basic functionality that can also display an album art";
+    homepage = "https://github.com/GuardKenzie/miniplayer";
+    license = licenses.mit;
+    maintainers = with maintainers; [ azahi ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mixxx/default.nix b/nixpkgs/pkgs/applications/audio/mixxx/default.nix
index ce12b239e5ac..0c660c3af580 100644
--- a/nixpkgs/pkgs/applications/audio/mixxx/default.nix
+++ b/nixpkgs/pkgs/applications/audio/mixxx/default.nix
@@ -1,7 +1,6 @@
 { lib
 , stdenv
 , mkDerivation
-, fetchurl
 , fetchFromGitHub
 , chromaprint
 , cmake
@@ -53,13 +52,13 @@
 
 mkDerivation rec {
   pname = "mixxx";
-  version = "2.3.3";
+  version = "2.3.5";
 
   src = fetchFromGitHub {
     owner = "mixxxdj";
     repo = "mixxx";
     rev = version;
-    sha256 = "sha256-NRtrEobdJMFgDXrEeb2t1zeVN8pQP7+pda2DSU/yNX8=";
+    sha256 = "sha256-NAp7RoYSI6BRw7C0ejW4pCJJYx9BG8D+BGVCVTDrggQ=";
   };
 
   nativeBuildInputs = [ cmake pkg-config ];
@@ -117,7 +116,7 @@ mkDerivation rec {
 
   # mixxx installs udev rules to DATADIR instead of SYSCONFDIR
   # let's disable this and install udev rules manually via postInstall
-  # see https://github.com/mixxxdj/mixxx/blob/2.3.3/CMakeLists.txt#L1381-L1392
+  # see https://github.com/mixxxdj/mixxx/blob/2.3.5/CMakeLists.txt#L1381-L1392
   cmakeFlags = [
     "-DINSTALL_USER_UDEV_RULES=OFF"
   ];
diff --git a/nixpkgs/pkgs/applications/audio/mmlgui/default.nix b/nixpkgs/pkgs/applications/audio/mmlgui/default.nix
index 0a29b7aad939..23f592703763 100644
--- a/nixpkgs/pkgs/applications/audio/mmlgui/default.nix
+++ b/nixpkgs/pkgs/applications/audio/mmlgui/default.nix
@@ -15,14 +15,14 @@
 
 stdenv.mkDerivation rec {
   pname = "mmlgui";
-  version = "unstable-2022-05-24";
+  version = "unstable-2023-03-19";
 
   src = fetchFromGitHub {
     owner = "superctr";
     repo = "mmlgui";
-    rev = "fe2b298c1eddae4cc38096f6c1ba1ccaed562cf1";
+    rev = "59ac28c0008e227c03799cce85b77f96241159b1";
     fetchSubmodules = true;
-    sha256 = "Q34zzZthdThMbduXcc/qMome89mAMrn1Vinr073u4zo=";
+    sha256 = "0CHRUizhg/WOWhDOsFqRiGu/m/U7xt5du8Uvnl7kxpU=";
   };
 
   postPatch = ''
@@ -51,7 +51,7 @@ stdenv.mkDerivation rec {
     Cocoa
   ];
 
-  checkInputs = [
+  nativeCheckInputs = [
     cppunit
   ];
 
diff --git a/nixpkgs/pkgs/applications/audio/mmtc/default.nix b/nixpkgs/pkgs/applications/audio/mmtc/default.nix
index 578cecf09b09..ccbe14d76725 100644
--- a/nixpkgs/pkgs/applications/audio/mmtc/default.nix
+++ b/nixpkgs/pkgs/applications/audio/mmtc/default.nix
@@ -2,25 +2,25 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "mmtc";
-  version = "0.2.14";
+  version = "0.3.2";
 
   src = fetchFromGitHub {
     owner = "figsoda";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-g2JHY95vkG/Ep2eqz8guteF8fHUso/JuuVijNGkgykA=";
+    sha256 = "sha256-gs6uytX4rm2JrJ4UbtHJDg+b+Z1ZjcsuUR0b13jQIy4=";
   };
 
-  cargoSha256 = "sha256-tVjy/O5hfnQFC6to8VMGc39mEXhA5lwUIne6pVvDec0=";
+  cargoSha256 = "sha256-7zV/AsSZHk99ROC1301nkwJ22dvh4afeCI//G1zWHu8=";
 
   nativeBuildInputs = [ installShellFiles ];
 
-  preFixup = ''
-    completions=($releaseDir/build/mmtc-*/out/completions)
-    installShellCompletion $completions/mmtc.{bash,fish} --zsh $completions/_mmtc
+  postInstall = ''
+    installManPage artifacts/mmtc.1
+    installShellCompletion artifacts/mmtc.{bash,fish} --zsh artifacts/_mmtc
   '';
 
-  GEN_COMPLETIONS = 1;
+  GEN_ARTIFACTS = "artifacts";
 
   meta = with lib; {
     description = "Minimal mpd terminal client that aims to be simple yet highly configurable";
diff --git a/nixpkgs/pkgs/applications/audio/moc/default.nix b/nixpkgs/pkgs/applications/audio/moc/default.nix
index bd524b6d9317..ddd868c71ce7 100644
--- a/nixpkgs/pkgs/applications/audio/moc/default.nix
+++ b/nixpkgs/pkgs/applications/audio/moc/default.nix
@@ -15,7 +15,7 @@
 , musepackSupport ? true, libmpc, libmpcdec, taglib
 , vorbisSupport ? true, libvorbis
 , speexSupport ? true, speex
-, ffmpegSupport ? true, ffmpeg
+, ffmpegSupport ? true, ffmpeg_4
 , sndfileSupport ? true, libsndfile
 , wavpackSupport ? true, wavpack
 # Misc
@@ -56,7 +56,7 @@ stdenv.mkDerivation rec {
     ++ lib.optionals musepackSupport [ libmpc libmpcdec taglib ]
     ++ lib.optional vorbisSupport libvorbis
     ++ lib.optional speexSupport speex
-    ++ lib.optional ffmpegSupport ffmpeg
+    ++ lib.optional ffmpegSupport ffmpeg_4
     ++ lib.optional sndfileSupport libsndfile
     ++ lib.optional wavpackSupport wavpack
     # Misc
diff --git a/nixpkgs/pkgs/applications/audio/mod-arpeggiator-lv2/default.nix b/nixpkgs/pkgs/applications/audio/mod-arpeggiator-lv2/default.nix
index 3896545dc41c..a628e38469f5 100644
--- a/nixpkgs/pkgs/applications/audio/mod-arpeggiator-lv2/default.nix
+++ b/nixpkgs/pkgs/applications/audio/mod-arpeggiator-lv2/default.nix
@@ -12,7 +12,8 @@ stdenv.mkDerivation rec {
     sha256 = "sha256-1KiWMTVTTf1/iR4AzJ1Oe0mOrWN5edsZN0tQMidgnRA=";
   };
 
-  buildInputs = [ lv2 pkg-config ];
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ lv2 ];
 
   makeFlags = [ "PREFIX=$(out)" ];
 
diff --git a/nixpkgs/pkgs/applications/audio/monkeys-audio/default.nix b/nixpkgs/pkgs/applications/audio/monkeys-audio/default.nix
index 05647af2201a..e20e90493054 100644
--- a/nixpkgs/pkgs/applications/audio/monkeys-audio/default.nix
+++ b/nixpkgs/pkgs/applications/audio/monkeys-audio/default.nix
@@ -1,33 +1,30 @@
-{lib, gcc10Stdenv, fetchurl}:
+{ lib
+, stdenv
+, fetchzip
+, cmake
+}:
 
-gcc10Stdenv.mkDerivation rec {
-  version = "3.99-u4-b5";
-  pname = "monkeys-audio-old";
+stdenv.mkDerivation rec {
+  version = "10.14";
+  pname = "monkeys-audio";
 
-  patches = [ ./buildfix.diff ];
-
-  src = fetchurl {
-    /*
-    The real homepage is <https://monkeysaudio.com/>, but in fact we are
-    getting an old, ported to Linux version of the sources, made by (quoting
-    from the AUTHORS file found in the source):
-
-    Frank Klemm : First port to linux (with makefile)
-
-    SuperMMX <SuperMMX AT GMail DOT com> : Package the source, include the frontend and shared lib,
-         porting to Big Endian platform and adding other non-win32 enhancement.
-    */
-    url = "https://deb-multimedia.org/pool/main/m/${pname}/${pname}_${version}.orig.tar.gz";
-    sha256 = "0kjfwzfxfx7f958b2b1kf8yj655lp0ppmn0sh57gbkjvj8lml7nz";
+  src = fetchzip {
+    url = "https://monkeysaudio.com/files/MAC_${
+      builtins.concatStringsSep "" (lib.strings.splitString "." version)}_SDK.zip";
+    sha256 = "sha256-AsWBcEVyHAFzJd9PhbEA866yCGAmgJedvDUP1G7JfUY=";
+    stripRoot = false;
   };
+  nativeBuildInputs = [
+    cmake
+  ];
 
   meta = with lib; {
-    description = "Lossless audio codec";
+    description = "APE codec and decompressor";
     platforms = platforms.linux;
     # This is not considered a GPL license, but it seems rather free although
     # it's not standard, see a quote of it:
     # https://github.com/NixOS/nixpkgs/pull/171682#issuecomment-1120260551
     license = licenses.free;
-    maintainers = [ ];
+    maintainers = with maintainers; [ doronbehar ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/bandcamp.nix b/nixpkgs/pkgs/applications/audio/mopidy/bandcamp.nix
index a28f1cca36ba..01a5f9f6bd9f 100644
--- a/nixpkgs/pkgs/applications/audio/mopidy/bandcamp.nix
+++ b/nixpkgs/pkgs/applications/audio/mopidy/bandcamp.nix
@@ -1,9 +1,9 @@
-{ lib, python3Packages, mopidy }:
+{ lib, python3Packages, fetchPypi, mopidy }:
 
 python3Packages.buildPythonApplication rec {
   pname = "Mopidy-Bandcamp";
   version = "1.1.5";
-  src = python3Packages.fetchPypi {
+  src = fetchPypi {
     inherit pname version;
     sha256 = "sha256-wg9zcOKfZQRhpyA1Cu5wvdwKpmrlcr2m9mrqBHgUXAQ=";
   };
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/default.nix b/nixpkgs/pkgs/applications/audio/mopidy/default.nix
index 05857ce0142b..958be098d7bb 100644
--- a/nixpkgs/pkgs/applications/audio/mopidy/default.nix
+++ b/nixpkgs/pkgs/applications/audio/mopidy/default.nix
@@ -27,6 +27,8 @@ lib.makeScope newScope (self: with self; {
 
   mopidy-musicbox-webclient = callPackage ./musicbox-webclient.nix { };
 
+  mopidy-notify = callPackage ./notify.nix { };
+
   mopidy-podcast = callPackage ./podcast.nix { };
 
   mopidy-scrobbler = callPackage ./scrobbler.nix { };
@@ -35,6 +37,10 @@ lib.makeScope newScope (self: with self; {
 
   mopidy-soundcloud = callPackage ./soundcloud.nix { };
 
+  mopidy-spotify = callPackage ./spotify.nix { };
+
+  mopidy-tidal = callPackage ./tidal.nix { };
+
   mopidy-tunein = callPackage ./tunein.nix { };
 
   mopidy-youtube = callPackage ./youtube.nix { };
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/iris.nix b/nixpkgs/pkgs/applications/audio/mopidy/iris.nix
index 5b2cbe031c67..8008935f4657 100644
--- a/nixpkgs/pkgs/applications/audio/mopidy/iris.nix
+++ b/nixpkgs/pkgs/applications/audio/mopidy/iris.nix
@@ -1,12 +1,12 @@
-{ lib, python3Packages, mopidy }:
+{ lib, python3Packages, fetchPypi, mopidy }:
 
 python3Packages.buildPythonApplication rec {
   pname = "Mopidy-Iris";
-  version = "3.60.0";
+  version = "3.64.0";
 
-  src = python3Packages.fetchPypi {
+  src = fetchPypi {
     inherit pname version;
-    sha256 = "18w6qqmxzn8psiacybryxailm826f3j1wgiv0c03fbdsy6kr5f7l";
+    sha256 = "062x73glhn1x4wgc7zmb9y3cq15d5grgqf5drdpbp6p3cgk4s2vc";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/jellyfin.nix b/nixpkgs/pkgs/applications/audio/mopidy/jellyfin.nix
index 7790380f9b76..d7d808cf685d 100644
--- a/nixpkgs/pkgs/applications/audio/mopidy/jellyfin.nix
+++ b/nixpkgs/pkgs/applications/audio/mopidy/jellyfin.nix
@@ -1,13 +1,13 @@
-{ lib, python3Packages, mopidy }:
+{ lib, python3Packages, fetchPypi, mopidy }:
 
 python3Packages.buildPythonApplication rec {
   pname = "mopidy-jellyfin";
-  version = "1.0.2";
+  version = "1.0.4";
 
-  src = python3Packages.fetchPypi {
+  src = fetchPypi {
     inherit version;
     pname = "Mopidy-Jellyfin";
-    sha256 = "0j7v5xx3c401r5dw1sqm1n2263chjga1d3ml85rg79hjhhhacy75";
+    sha256 = "ny0u6HdOlZCsmIzZuQ1rql+bvHU3xkh8IdwhJVHNH9c=";
   };
 
   propagatedBuildInputs = [ mopidy python3Packages.unidecode python3Packages.websocket-client ];
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/local.nix b/nixpkgs/pkgs/applications/audio/mopidy/local.nix
index 4e9b18d7eb65..c907deff34f9 100644
--- a/nixpkgs/pkgs/applications/audio/mopidy/local.nix
+++ b/nixpkgs/pkgs/applications/audio/mopidy/local.nix
@@ -1,29 +1,38 @@
-{ stdenv
-, lib
+{ lib
 , mopidy
 , python3Packages
+, fetchPypi
+, fetchpatch
 }:
 
 python3Packages.buildPythonApplication rec {
   pname = "Mopidy-Local";
   version = "3.2.1";
 
-  src = python3Packages.fetchPypi {
+  src = fetchPypi {
     inherit pname version;
     sha256 = "18w39mxpv8p17whd6zfw5653d21q138f8xd6ili6ks2g2dbm25i9";
   };
 
+  patches = [
+    # Fix tests with newer Mopidy versions >=3.4.0 -- mopidy/mopidy-local#69
+    (fetchpatch {
+      name = "update-tests-for-mopidy-3.4.0.patch";
+      url = "https://github.com/mopidy/mopidy-local/commit/f2c198f8eb253f62100afc58f652e73a76d5a090.patch";
+      hash = "sha256-jrlZc/pd00S5q9nOfV1OXu+uP/SvH+Xbi7U52aZajj4=";
+    })
+  ];
+
   propagatedBuildInputs = [
     mopidy
     python3Packages.uritools
   ];
 
-  checkInputs = [
+  nativeCheckInputs = [
     python3Packages.pytestCheckHook
   ];
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
     homepage = "https://github.com/mopidy/mopidy-local";
     description = "Mopidy extension for playing music from your local music archive";
     license = licenses.asl20;
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/moped.nix b/nixpkgs/pkgs/applications/audio/mopidy/moped.nix
index c191eba4c4d9..ec1b2ddaff06 100644
--- a/nixpkgs/pkgs/applications/audio/mopidy/moped.nix
+++ b/nixpkgs/pkgs/applications/audio/mopidy/moped.nix
@@ -1,10 +1,10 @@
-{ lib, pythonPackages, mopidy, glibcLocales }:
+{ lib, pythonPackages, fetchPypi, mopidy, glibcLocales }:
 
 pythonPackages.buildPythonApplication rec {
   pname = "Mopidy-Moped";
   version = "0.7.1";
 
-  src = pythonPackages.fetchPypi {
+  src = fetchPypi {
     inherit pname version;
     sha256 = "15461174037d87af93dd59a236d4275c5abf71cea0670ffff24a7d0399a8a2e4";
   };
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/mopidy.nix b/nixpkgs/pkgs/applications/audio/mopidy/mopidy.nix
index 6d3db5d50970..4f4a3fa0201b 100644
--- a/nixpkgs/pkgs/applications/audio/mopidy/mopidy.nix
+++ b/nixpkgs/pkgs/applications/audio/mopidy/mopidy.nix
@@ -1,19 +1,19 @@
-{ lib, stdenv, fetchFromGitHub, pythonPackages, wrapGAppsHook
+{ lib, stdenv, fetchFromGitHub, pythonPackages, wrapGAppsNoGuiHook
 , gst_all_1, glib-networking, gobject-introspection
 }:
 
 pythonPackages.buildPythonApplication rec {
   pname = "mopidy";
-  version = "3.3.0";
+  version = "3.4.1";
 
   src = fetchFromGitHub {
     owner = "mopidy";
     repo = "mopidy";
     rev = "refs/tags/v${version}";
-    sha256 = "sha256-F0fIl9DrludZZdzsrl/xsp7TLMgTPbVGtGvMHyD52Yw=";
+    sha256 = "sha256-IUQe5WH2vsrAOgokhTNVVM3lnJXphT2xNGu27hWBLSo=";
   };
 
-  nativeBuildInputs = [ wrapGAppsHook ];
+  nativeBuildInputs = [ wrapGAppsNoGuiHook ];
 
   buildInputs = with gst_all_1; [
     glib-networking
@@ -21,6 +21,7 @@ pythonPackages.buildPythonApplication rec {
     gst-plugins-base
     gst-plugins-good
     gst-plugins-ugly
+    gst-plugins-rs
   ];
 
   propagatedBuildInputs = [
@@ -44,10 +45,7 @@ pythonPackages.buildPythonApplication rec {
 
   meta = with lib; {
     homepage = "https://www.mopidy.com/";
-    description = ''
-      An extensible music server that plays music from local disk, Spotify,
-      SoundCloud, and more
-    '';
+    description = "An extensible music server that plays music from local disk, Spotify, SoundCloud, and more";
     license = licenses.asl20;
     maintainers = [ maintainers.fpletz ];
     hydraPlatforms = [];
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/mopify.nix b/nixpkgs/pkgs/applications/audio/mopidy/mopify.nix
index 670b1a9c5091..8d4dcd140382 100644
--- a/nixpkgs/pkgs/applications/audio/mopidy/mopify.nix
+++ b/nixpkgs/pkgs/applications/audio/mopidy/mopify.nix
@@ -1,10 +1,10 @@
-{ lib, pythonPackages, mopidy }:
+{ lib, pythonPackages, fetchPypi, mopidy }:
 
 pythonPackages.buildPythonApplication rec {
   pname = "Mopidy-Mopify";
   version = "1.6.1";
 
-  src = pythonPackages.fetchPypi {
+  src = fetchPypi {
     inherit pname version;
     sha256 = "93ad2b3d38b1450c8f2698bb908b0b077a96b3f64cdd6486519e518132e23a5c";
   };
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/mpd.nix b/nixpkgs/pkgs/applications/audio/mopidy/mpd.nix
index ab7e33ea3e37..281efc028951 100644
--- a/nixpkgs/pkgs/applications/audio/mopidy/mpd.nix
+++ b/nixpkgs/pkgs/applications/audio/mopidy/mpd.nix
@@ -1,15 +1,15 @@
-{ lib, python3Packages, mopidy }:
+{ lib, python3Packages, fetchPypi, mopidy }:
 
 python3Packages.buildPythonApplication rec {
   pname = "Mopidy-MPD";
-  version = "3.2.0";
+  version = "3.3.0";
 
-  src = python3Packages.fetchPypi {
+  src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-oZvKr61lyu7CmXP2A/xtYng1FIUPyveVJMqUuv6UnaM=";
+    sha256 = "sha256-CeLMRqj9cwBvQrOx7XHVV8MjDjwOosONVlsN2o+vTVM=";
   };
 
-  propagatedBuildInputs = [mopidy];
+  propagatedBuildInputs = [ mopidy ];
 
   # no tests implemented
   doCheck = false;
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/mpris.nix b/nixpkgs/pkgs/applications/audio/mopidy/mpris.nix
index 6bacfee627ca..86f85749573e 100644
--- a/nixpkgs/pkgs/applications/audio/mopidy/mpris.nix
+++ b/nixpkgs/pkgs/applications/audio/mopidy/mpris.nix
@@ -1,10 +1,10 @@
-{ lib, python3Packages, mopidy }:
+{ lib, python3Packages, fetchPypi, mopidy }:
 
 python3Packages.buildPythonApplication rec {
   pname = "mopidy-mpris";
   version = "3.0.3";
 
-  src = python3Packages.fetchPypi {
+  src = fetchPypi {
     inherit version;
     pname = "Mopidy-MPRIS";
     sha256 = "sha256-rHQgNIyludTEL7RDC8dIpyGTMOt1Tazn6i/orKlSP4U=";
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/muse.nix b/nixpkgs/pkgs/applications/audio/mopidy/muse.nix
index 22a6fcd68427..62b9f92fea95 100644
--- a/nixpkgs/pkgs/applications/audio/mopidy/muse.nix
+++ b/nixpkgs/pkgs/applications/audio/mopidy/muse.nix
@@ -1,10 +1,10 @@
-{ lib, pythonPackages, mopidy }:
+{ lib, pythonPackages, fetchPypi, mopidy }:
 
 pythonPackages.buildPythonApplication rec {
   pname = "mopidy-muse";
   version = "0.0.27";
 
-  src = pythonPackages.fetchPypi {
+  src = fetchPypi {
     inherit version;
     pname = "Mopidy-Muse";
     sha256 = "0jx9dkgxr07avzz9zskzhqy98zsxkdrf7iid2ax5vygwf8qsx8ks";
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/musicbox-webclient.nix b/nixpkgs/pkgs/applications/audio/mopidy/musicbox-webclient.nix
index 1e2cb8d06094..02dc7b37cef1 100644
--- a/nixpkgs/pkgs/applications/audio/mopidy/musicbox-webclient.nix
+++ b/nixpkgs/pkgs/applications/audio/mopidy/musicbox-webclient.nix
@@ -1,4 +1,8 @@
-{ lib, stdenv, fetchFromGitHub, pythonPackages, mopidy }:
+{ lib
+, fetchFromGitHub
+, pythonPackages
+, mopidy
+}:
 
 pythonPackages.buildPythonApplication rec {
   pname = "mopidy-musicbox-webclient";
@@ -6,19 +10,22 @@ pythonPackages.buildPythonApplication rec {
 
   src = fetchFromGitHub {
     owner = "pimusicbox";
-    repo = "mopidy-musicbox-webclient";
+    repo = pname;
     rev = "v${version}";
     sha256 = "1lzarazq67gciyn6r8cdms0f7j0ayyfwhpf28z93ydb280mfrrb9";
   };
 
-  propagatedBuildInputs = [ mopidy ];
+  propagatedBuildInputs = [
+    mopidy
+  ];
 
   doCheck = false;
 
   meta = with lib; {
-    description = "Mopidy extension for playing music from SoundCloud";
-    license = licenses.mit;
-    broken = stdenv.isDarwin;
-    maintainers = [ maintainers.spwhitt ];
+    description = "A Mopidy frontend extension and web client with additional features for Pi MusicBox";
+    homepage = "https://github.com/pimusicbox/mopidy-musicbox-webclient";
+    changelog = "https://github.com/pimusicbox/mopidy-musicbox-webclient/blob/v${version}/CHANGELOG.rst";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/notify.nix b/nixpkgs/pkgs/applications/audio/mopidy/notify.nix
new file mode 100644
index 000000000000..0840f2616979
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mopidy/notify.nix
@@ -0,0 +1,29 @@
+{ lib, fetchPypi, pythonPackages, mopidy }:
+
+pythonPackages.buildPythonApplication rec {
+  pname = "Mopidy-Notify";
+  version = "0.2.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-lzZupjlS0kbNvsn18serOoMfu0sRb0nRwpowvOPvt/g=";
+  };
+
+  propagatedBuildInputs = [
+    mopidy
+    pythonPackages.pydbus
+  ];
+
+  nativeBuildInputs = [
+    pythonPackages.pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "mopidy_notify" ];
+
+  meta = with lib; {
+    homepage = "https://github.com/phijor/mopidy-notify";
+    description = "Mopidy extension for showing desktop notifications on track change";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ lilyinstarlight ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/podcast.nix b/nixpkgs/pkgs/applications/audio/mopidy/podcast.nix
index 8a5c4ec2b3d6..bb834aa9872f 100644
--- a/nixpkgs/pkgs/applications/audio/mopidy/podcast.nix
+++ b/nixpkgs/pkgs/applications/audio/mopidy/podcast.nix
@@ -1,10 +1,10 @@
-{ lib, python3Packages, mopidy }:
+{ lib, python3Packages, fetchPypi, mopidy }:
 
 python3Packages.buildPythonApplication rec {
   pname = "mopidy-podcast";
   version = "3.0.0";
 
-  src = python3Packages.fetchPypi {
+  src = fetchPypi {
     inherit version;
     pname = "Mopidy-Podcast";
     sha256 = "1z2b523yvdpcf8p7m7kczrvaw045lmxzhq4qj00dflxa2yw61qxr";
@@ -16,7 +16,7 @@ python3Packages.buildPythonApplication rec {
     python3Packages.uritools
   ];
 
-  checkInputs = with python3Packages; [
+  nativeCheckInputs = with python3Packages; [
     pytestCheckHook
   ];
 
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/scrobbler.nix b/nixpkgs/pkgs/applications/audio/mopidy/scrobbler.nix
index 621ced53646a..a7d9194ab9b8 100644
--- a/nixpkgs/pkgs/applications/audio/mopidy/scrobbler.nix
+++ b/nixpkgs/pkgs/applications/audio/mopidy/scrobbler.nix
@@ -1,10 +1,10 @@
-{ lib, python3Packages, mopidy }:
+{ lib, python3Packages, fetchPypi, mopidy }:
 
 python3Packages.buildPythonApplication rec {
   pname = "Mopidy-Scrobbler";
   version = "2.0.1";
 
-  src = python3Packages.fetchPypi {
+  src = fetchPypi {
     inherit pname version;
     sha256 = "11vxgax4xgkggnq4fr1rh2rcvzspkkimck5p3h4phdj3qpnj0680";
   };
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/somafm.nix b/nixpkgs/pkgs/applications/audio/mopidy/somafm.nix
index 81c689a343de..f9a9343dbf17 100644
--- a/nixpkgs/pkgs/applications/audio/mopidy/somafm.nix
+++ b/nixpkgs/pkgs/applications/audio/mopidy/somafm.nix
@@ -1,18 +1,16 @@
-{ lib, python3Packages, mopidy }:
+{ lib, python3Packages, fetchPypi, mopidy }:
 
 python3Packages.buildPythonApplication rec {
   pname = "mopidy-somafm";
-  version = "2.0.0";
+  version = "2.0.2";
 
-  src = python3Packages.fetchPypi {
+  src = fetchPypi {
     inherit version;
     pname = "Mopidy-SomaFM";
-    sha256 = "1j88rrliys8hqvnb35k1xqw88bvrllcb4rb53lgh82byhscsxlf3";
+    sha256 = "DC0emxkoWfjGHih2C8nINBFByf521Xf+3Ks4JRxNPLM=";
   };
 
-  propagatedBuildInputs = [
-    mopidy
-  ];
+  propagatedBuildInputs = [ mopidy ];
 
   doCheck = false;
 
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/soundcloud.nix b/nixpkgs/pkgs/applications/audio/mopidy/soundcloud.nix
index d8a244b51467..1985cc6f387d 100644
--- a/nixpkgs/pkgs/applications/audio/mopidy/soundcloud.nix
+++ b/nixpkgs/pkgs/applications/audio/mopidy/soundcloud.nix
@@ -18,6 +18,6 @@ pythonPackages.buildPythonApplication rec {
   meta = with lib; {
     description = "Mopidy extension for playing music from SoundCloud";
     license = licenses.mit;
-    maintainers = [ maintainers.spwhitt ];
+    maintainers = [ ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/spotify.nix b/nixpkgs/pkgs/applications/audio/mopidy/spotify.nix
new file mode 100644
index 000000000000..86d20ea5e83b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mopidy/spotify.nix
@@ -0,0 +1,31 @@
+{ lib, fetchFromGitHub, pythonPackages, mopidy }:
+
+pythonPackages.buildPythonApplication rec {
+  pname = "mopidy-spotify";
+  version = "unstable-2023-04-21";
+
+  src = fetchFromGitHub {
+    owner = "mopidy";
+    repo = "mopidy-spotify";
+    rev = "984151ac96c5f9c35892055bff20cc11f46092d5";
+    hash = "sha256-4e9Aj0AOFR4/FK54gr1ZyPt0nYZDMrMetV4FPtBxapU=";
+  };
+
+  propagatedBuildInputs = [
+    mopidy
+    pythonPackages.responses
+  ];
+
+  nativeBuildInputs = [
+    pythonPackages.pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "mopidy_spotify" ];
+
+  meta = with lib; {
+    homepage = "https://github.com/mopidy/mopidy-spotify";
+    description = "Mopidy extension for playing music from Spotify";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ lilyinstarlight ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/subidy.nix b/nixpkgs/pkgs/applications/audio/mopidy/subidy.nix
index 98d69816b73f..b84a14106fdc 100644
--- a/nixpkgs/pkgs/applications/audio/mopidy/subidy.nix
+++ b/nixpkgs/pkgs/applications/audio/mopidy/subidy.nix
@@ -13,7 +13,7 @@ pythonPackages.buildPythonApplication rec {
 
   propagatedBuildInputs = [ mopidy pythonPackages.py-sonic ];
 
-  checkInputs = with pythonPackages; [ pytestCheckHook ];
+  nativeCheckInputs = with pythonPackages; [ pytestCheckHook ];
 
   meta = with lib; {
     homepage = "https://www.mopidy.com/";
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/tidal.nix b/nixpkgs/pkgs/applications/audio/mopidy/tidal.nix
new file mode 100644
index 000000000000..9c1816e7b80c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mopidy/tidal.nix
@@ -0,0 +1,36 @@
+{ lib
+, python3Packages
+, fetchPypi
+, mopidy
+}:
+
+python3Packages.buildPythonApplication rec {
+  pname = "Mopidy-Tidal";
+  version = "0.3.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-ekqhzKyU2WqTOeRR1ZSZA9yW3UXsLBsC2Bk6FZrQgmc=";
+  };
+
+  propagatedBuildInputs = [
+    mopidy
+    python3Packages.tidalapi
+  ];
+
+  nativeCheckInputs = with python3Packages; [
+    pytestCheckHook
+    pytest-mock
+  ];
+
+  pytestFlagsArray = [ "tests/" ];
+
+  meta = with lib; {
+    description = "Mopidy extension for playing music from Tidal";
+    homepage = "https://github.com/tehkillerbee/mopidy-tidal";
+    license = licenses.mit;
+    maintainers = [ maintainers.rodrgz ];
+  };
+}
+
+
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/tunein.nix b/nixpkgs/pkgs/applications/audio/mopidy/tunein.nix
index 4a3edd2a4344..914db01e6496 100644
--- a/nixpkgs/pkgs/applications/audio/mopidy/tunein.nix
+++ b/nixpkgs/pkgs/applications/audio/mopidy/tunein.nix
@@ -1,10 +1,10 @@
-{ lib, python3Packages, mopidy }:
+{ lib, python3Packages, fetchPypi, mopidy }:
 
 python3Packages.buildPythonApplication rec {
   pname = "mopidy-tunein";
   version = "1.1.0";
 
-  src = python3Packages.fetchPypi {
+  src = fetchPypi {
     inherit version;
     pname = "Mopidy-TuneIn";
     sha256 = "01y1asylscr73yqx071imhrzfzlg07wmqqzkdvpgm6r35marc2li";
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/youtube.nix b/nixpkgs/pkgs/applications/audio/mopidy/youtube.nix
index 5110d6ace93f..198f4ee49201 100644
--- a/nixpkgs/pkgs/applications/audio/mopidy/youtube.nix
+++ b/nixpkgs/pkgs/applications/audio/mopidy/youtube.nix
@@ -27,7 +27,7 @@ python3.pkgs.buildPythonApplication rec {
     mopidy
   ];
 
-  checkInputs = with python3.pkgs; [
+  nativeCheckInputs = with python3.pkgs; [
     vcrpy
     pytestCheckHook
   ];
@@ -52,6 +52,6 @@ python3.pkgs.buildPythonApplication rec {
     description = "Mopidy extension for playing music from YouTube";
     homepage = "https://github.com/natumbri/mopidy-youtube";
     license = licenses.asl20;
-    maintainers = with maintainers; [ spwhitt ];
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/ytmusic.nix b/nixpkgs/pkgs/applications/audio/mopidy/ytmusic.nix
index 9f393a0e7520..d09bc6c8dde6 100644
--- a/nixpkgs/pkgs/applications/audio/mopidy/ytmusic.nix
+++ b/nixpkgs/pkgs/applications/audio/mopidy/ytmusic.nix
@@ -1,24 +1,36 @@
-{ lib, python3Packages, mopidy }:
+{ lib
+, python3
+, fetchPypi
+, mopidy
+}:
 
-python3Packages.buildPythonApplication rec {
+let
+  python = python3.override {
+    packageOverrides = self: super: {
+      ytmusicapi = super.ytmusicapi.overridePythonAttrs (old: rec {
+        version = "0.25.1";
+        src = fetchPypi {
+          inherit (old) pname;
+          inherit version;
+          hash = "sha256-uc/fgDetSYaCRzff0SzfbRhs3TaKrfE2h6roWkkj8yQ=";
+        };
+      });
+    };
+  };
+in python.pkgs.buildPythonApplication rec {
   pname = "mopidy-ytmusic";
-  version = "0.3.5";
+  version = "0.3.8";
 
-  src = python3Packages.fetchPypi {
+  src = fetchPypi {
     inherit version;
-    pname = "Mopidy-YTMusic";
-    sha256 = "0pncyxfqxvznb9y4ksndbny1yf5mxh4089ak0yz86dp2qi5j99iv";
+    pname = "mopidy_ytmusic";
+    sha256 = "6b4d8ff9c477dbdd30d0259a009494ebe104cad3f8b37241ae503e5bce4ec2e8";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace 'ytmusicapi>=0.20.0,<0.21.0' 'ytmusicapi>=0.20.0'
-  '';
-
   propagatedBuildInputs = [
-    mopidy
-    python3Packages.ytmusicapi
-    python3Packages.pytube
+    (mopidy.override { pythonPackages = python.pkgs; })
+    python.pkgs.ytmusicapi
+    python.pkgs.pytube
   ];
 
   pythonImportsCheck = [ "mopidy_ytmusic" ];
@@ -27,6 +39,7 @@ python3Packages.buildPythonApplication rec {
   doCheck = false;
 
   meta = with lib; {
+    changelog = "https://github.com/OzymandiasTheGreat/mopidy-ytmusic/blob/v${version}/CHANGELOG.rst";
     description = "Mopidy extension for playing music from YouTube Music";
     homepage = "https://github.com/OzymandiasTheGreat/mopidy-ytmusic";
     license = licenses.asl20;
diff --git a/nixpkgs/pkgs/applications/audio/mousai/default.nix b/nixpkgs/pkgs/applications/audio/mousai/default.nix
index 96d686864fbc..0da6acc242fa 100644
--- a/nixpkgs/pkgs/applications/audio/mousai/default.nix
+++ b/nixpkgs/pkgs/applications/audio/mousai/default.nix
@@ -1,76 +1,67 @@
 { lib
-, python3
+, stdenv
 , fetchFromGitHub
-, substituteAll
 , appstream-glib
+, cargo
+, dbus
 , desktop-file-utils
-, gettext
 , glib
+, glib-networking
 , gobject-introspection
 , gst_all_1
 , gtk4
 , libadwaita
-, librsvg
+, libpulseaudio
+, libsoup_3
 , meson
 , ninja
 , pkg-config
-, pulseaudio
+, rustPlatform
+, rustc
 , wrapGAppsHook4
 }:
 
-python3.pkgs.buildPythonApplication rec {
+stdenv.mkDerivation rec {
   pname = "mousai";
-  version = "0.6.6";
-
-  format = "other";
+  version = "0.7.3";
 
   src = fetchFromGitHub {
     owner = "SeaDve";
     repo = "Mousai";
     rev = "v${version}";
-    sha256 = "sha256-nCbFVFg+nVF8BOBfdzQVgdTRXR5UF18PJFC266yTFwg=";
+    hash = "sha256-VAP2ENgI0Ge1JJEfNtw8dgOLZ1g0sEaoZHICFKI3hXM=";
   };
 
-  patches = [
-    (substituteAll {
-      src = ./paths.patch;
-      pactl = "${lib.getBin pulseaudio}/bin/pactl";
-    })
-  ];
-
-  postPatch = ''
-    substituteInPlace build-aux/meson/postinstall.py \
-      --replace gtk-update-icon-cache gtk4-update-icon-cache
-
-    patchShebangs build-aux/meson
-  '';
+  cargoDeps = rustPlatform.fetchCargoTarball {
+    inherit src;
+    name = "${pname}-${version}";
+    hash = "sha256-vbMfIk/fXmAHgouzyeceP7jAc/OIyUxFDu/+31aB1F4=";
+  };
 
   nativeBuildInputs = [
     appstream-glib
     desktop-file-utils
-    gettext
-    glib
-    gtk4
     meson
     ninja
     pkg-config
     wrapGAppsHook4
+    rustPlatform.cargoSetupHook
+    cargo
+    rustc
   ];
 
   buildInputs = [
-    gobject-introspection
+    dbus
     gst_all_1.gstreamer
     gst_all_1.gst-plugins-base
     gst_all_1.gst-plugins-good
+    gst_all_1.gst-plugins-bad
+    glib
+    glib-networking
     gtk4
     libadwaita
-    librsvg
-    pulseaudio
-  ];
-
-  propagatedBuildInputs = with python3.pkgs; [
-    pygobject3
-    requests
+    libpulseaudio
+    libsoup_3
   ];
 
   meta = with lib; {
@@ -78,5 +69,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/SeaDve/Mousai";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ dotlambda ];
+    platforms = platforms.linux;
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/mp3blaster/default.nix b/nixpkgs/pkgs/applications/audio/mp3blaster/default.nix
index 0d65fe813ec1..8d4a63f3b9ef 100644
--- a/nixpkgs/pkgs/applications/audio/mp3blaster/default.nix
+++ b/nixpkgs/pkgs/applications/audio/mp3blaster/default.nix
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
     libvorbis
   ] ++ lib.optional stdenv.isDarwin SDL;
 
-  NIX_CFLAGS_COMPILE = toString ([
+  env.NIX_CFLAGS_COMPILE = toString ([
     "-Wno-narrowing"
   ] ++ lib.optionals stdenv.cc.isClang [
     "-Wno-reserved-user-defined-literal"
diff --git a/nixpkgs/pkgs/applications/audio/mp3gain/default.nix b/nixpkgs/pkgs/applications/audio/mp3gain/default.nix
index ba2a757e090c..a0e6a0527f7d 100644
--- a/nixpkgs/pkgs/applications/audio/mp3gain/default.nix
+++ b/nixpkgs/pkgs/applications/audio/mp3gain/default.nix
@@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Lossless mp3 normalizer with statistical analysis";
-    homepage = "http://mp3gain.sourceforge.net/";
+    homepage = "https://mp3gain.sourceforge.net/";
     license = licenses.lgpl21;
     platforms = platforms.unix;
     maintainers = with maintainers; [ devhell ];
diff --git a/nixpkgs/pkgs/applications/audio/mp3val/default.nix b/nixpkgs/pkgs/applications/audio/mp3val/default.nix
index dc1a30858318..559f04f919f1 100644
--- a/nixpkgs/pkgs/applications/audio/mp3val/default.nix
+++ b/nixpkgs/pkgs/applications/audio/mp3val/default.nix
@@ -24,12 +24,12 @@ stdenv.mkDerivation rec {
       files' integrity. It can be useful for finding corrupted files (e.g.
       incompletely downloaded, truncated, containing garbage). MP3val is
       also able to fix most of the problems. Being a multiplatform application,
-      MP3val can be runned both under Windows and under Linux (or BSD). The most
+      MP3val can be run both under Windows and under Linux (or BSD). The most
       common MPEG audio file type is MPEG 1 Layer III (mp3), but MP3val supports
       also other MPEG versions and layers. The tool is also aware of the most
       common types of tags (ID3v1, ID3v2, APEv2).
     '';
-    homepage = "http://mp3val.sourceforge.net/index.shtml";
+    homepage = "https://mp3val.sourceforge.net/index.shtml";
     license = lib.licenses.gpl2;
     platforms = lib.platforms.unix;
     maintainers = [ lib.maintainers.devhell ];
diff --git a/nixpkgs/pkgs/applications/audio/mpc123/default.nix b/nixpkgs/pkgs/applications/audio/mpc123/default.nix
index e247ebeb2b1d..7746d1c63fa8 100644
--- a/nixpkgs/pkgs/applications/audio/mpc123/default.nix
+++ b/nixpkgs/pkgs/applications/audio/mpc123/default.nix
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
   # Workaround build failure on -fno-common toolchains like upstream
   # gcc-10. Otherwise build fails as:
   #   ld: /build/cc566Cj9.o:(.bss+0x0): multiple definition of `mpc123_file_reader'; ao.o:(.bss+0x40): first defined here
-  NIX_CFLAGS_COMPILE = "-fcommon";
+  env.NIX_CFLAGS_COMPILE = "-fcommon";
 
   buildInputs = [ gettext libmpcdec libao ];
 
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
     '';
 
   meta = {
-    homepage = "http://mpc123.sourceforge.net/";
+    homepage = "https://mpc123.sourceforge.net/";
 
     description = "A Musepack (.mpc) audio player";
 
diff --git a/nixpkgs/pkgs/applications/audio/mpd-touch-screen-gui/default.nix b/nixpkgs/pkgs/applications/audio/mpd-touch-screen-gui/default.nix
new file mode 100644
index 000000000000..482fe8f66f4c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/mpd-touch-screen-gui/default.nix
@@ -0,0 +1,63 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, autoreconfHook
+, pkg-config
+, SDL2
+, SDL2_ttf
+, SDL2_image
+, boost
+, libmpdclient
+, libwtk-sdl2
+, icu
+, libconfig
+, dejavu_fonts
+}:
+
+stdenv.mkDerivation rec {
+  pname = "mpd-touch-screen-gui";
+  version = "unstable-2022-12-30";
+
+  src = fetchFromGitHub {
+    owner = "muesli4";
+    repo = pname;
+    rev = "156eaebede89da2b83a98d8f9dfa46af12282fb4";
+    sha256 = "sha256-vr/St4BghrndjUQ0nZI/uJq+F/MjEj6ulc4DYwQ/pgU=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    autoreconfHook
+  ];
+
+  postPatch = ''
+    sed -i s#/usr/share/fonts/TTF#${dejavu_fonts}/share/fonts/truetype#g data/program.conf
+  '';
+
+  buildInputs = [
+    SDL2
+    SDL2_ttf
+    SDL2_image
+    boost
+    libmpdclient
+    libwtk-sdl2
+    icu
+    libconfig
+  ];
+
+  # https://stackoverflow.com/questions/53089494/configure-error-could-not-find-a-version-of-the-library
+  configureFlags = [
+    "--with-boost-libdir=${boost.out}/lib"
+  ];
+
+  doCheck = true;
+
+  meta = with lib; {
+    description = "A small MPD client that let's you view covers and has controls suitable for small touchscreens";
+    homepage = "https://github.com/muesli4/mpd-touch-screen-gui";
+    # See: https://github.com/muesli4/mpd-touch-screen-gui/tree/master/LICENSES
+    license = licenses.lgpl3Plus;
+    maintainers = with maintainers; [ doronbehar ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mpdevil/default.nix b/nixpkgs/pkgs/applications/audio/mpdevil/default.nix
index f8fac7d14a9f..35fe314958c7 100644
--- a/nixpkgs/pkgs/applications/audio/mpdevil/default.nix
+++ b/nixpkgs/pkgs/applications/audio/mpdevil/default.nix
@@ -1,23 +1,25 @@
 { lib, fetchFromGitHub
+, pkg-config, meson ,ninja
 , python3Packages
 , gdk-pixbuf, glib, gobject-introspection, gtk3
 , libnotify
-, intltool
 , wrapGAppsHook }:
 
 python3Packages.buildPythonApplication rec {
   pname = "mpdevil";
-  version = "1.4.1";
+  version = "1.10.2";
 
   src = fetchFromGitHub {
     owner = "SoongNoonien";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1a5nhlbgi3ahnkcq16c2vgiaghgswy5lxg64pcrlbqssg1pj5gma";
+    sha256 = "sha256-zLCL64yX7i/mtUf8CkgrSwb6zZ7vhR1Dw8eUH/vgFT4=";
   };
 
+  format = "other";
+
   nativeBuildInputs = [
-    glib.dev gobject-introspection gtk3 intltool wrapGAppsHook
+    glib.dev gobject-introspection gtk3 pkg-config meson ninja wrapGAppsHook
   ];
 
   buildInputs = [
@@ -48,6 +50,6 @@ python3Packages.buildPythonApplication rec {
     homepage = "https://github.com/SoongNoonien/mpdevil";
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ ];
+    maintainers = with maintainers; [ apfelkuchen6 ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/mpg123/default.nix b/nixpkgs/pkgs/applications/audio/mpg123/default.nix
index 29f28203e138..348dcfb5986f 100644
--- a/nixpkgs/pkgs/applications/audio/mpg123/default.nix
+++ b/nixpkgs/pkgs/applications/audio/mpg123/default.nix
@@ -3,7 +3,7 @@
 , fetchurl
 , makeWrapper
 , pkg-config
-, perl
+, libOnly ? false # whether to build only the library
 , withAlsa ? stdenv.hostPlatform.isLinux
 , alsa-lib
 , withPulse ? stdenv.hostPlatform.isLinux
@@ -14,29 +14,36 @@
 , withJack ? stdenv.hostPlatform.isUnix
 , jack
 , withConplay ? !stdenv.hostPlatform.isWindows
+, perl
 }:
 
+assert withConplay -> !libOnly;
+
 stdenv.mkDerivation rec {
-  pname = "mpg123";
-  version = "1.29.3";
+  pname = "${lib.optionalString libOnly "lib"}mpg123";
+  version = "1.31.3";
 
   src = fetchurl {
-    url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.bz2";
-    sha256 = "sha256-ljiF2Mx3Ji8ot3GHx9GJ4yGV5kJE3iUwt5jd8yGD6Ec=";
+    url = "mirror://sourceforge/mpg123/mpg123-${version}.tar.bz2";
+    hash = "sha256-HKd9Omml/4RbegU294P+5VThBBE5prl49q/hT1gUrRo=";
   };
 
-  outputs = [ "out" ] ++ lib.optionals withConplay [ "conplay" ];
+  outputs = [ "out" "dev" "man" ] ++ lib.optional withConplay "conplay";
 
-  nativeBuildInputs = lib.optionals withConplay [ makeWrapper ]
-    ++ lib.optionals (withPulse || withJack) [ pkg-config ];
+  nativeBuildInputs = lib.optionals (!libOnly) (
+    lib.optionals withConplay [ makeWrapper ]
+    ++ lib.optionals (withPulse || withJack) [ pkg-config ]
+  );
 
-  buildInputs = lib.optionals withConplay [ perl ]
+  buildInputs = lib.optionals (!libOnly) (
+    lib.optionals withConplay [ perl ]
     ++ lib.optionals withAlsa [ alsa-lib ]
     ++ lib.optionals withPulse [ libpulseaudio ]
     ++ lib.optionals withCoreAudio [ AudioUnit AudioToolbox ]
-    ++ lib.optionals withJack [ jack ];
+    ++ lib.optionals withJack [ jack ]
+  );
 
-  configureFlags = [
+  configureFlags = lib.optionals (!libOnly) [
     "--with-audio=${lib.strings.concatStringsSep "," (
       lib.optional withJack "jack"
       ++ lib.optional withPulse "pulse"
diff --git a/nixpkgs/pkgs/applications/audio/mpg321/default.nix b/nixpkgs/pkgs/applications/audio/mpg321/default.nix
index 08cfbada9313..e00b6722f38d 100644
--- a/nixpkgs/pkgs/applications/audio/mpg321/default.nix
+++ b/nixpkgs/pkgs/applications/audio/mpg321/default.nix
@@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
   # gcc-10. Otherwise build fails as:
   #   ld: volume.o:/build/mpg321-0.3.2-orig/mpg321.h:119: multiple definition of
   #     `loop_remaining'; mpg321.o:/build/mpg321-0.3.2-orig/mpg321.h:119: first defined here
-  NIX_CFLAGS_COMPILE = "-fcommon";
+  env.NIX_CFLAGS_COMPILE = "-fcommon";
 
   configureFlags =
     [ ("--enable-alsa=" + (if stdenv.isLinux then "yes" else "no")) ]
@@ -46,7 +46,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Command-line MP3 player";
-    homepage = "http://mpg321.sourceforge.net/";
+    homepage = "https://mpg321.sourceforge.net/";
     license = licenses.gpl2;
     platforms = platforms.unix;
   };
diff --git a/nixpkgs/pkgs/applications/audio/munt/libmt32emu.nix b/nixpkgs/pkgs/applications/audio/munt/libmt32emu.nix
index fdd9e6fac89d..75cf863fc769 100644
--- a/nixpkgs/pkgs/applications/audio/munt/libmt32emu.nix
+++ b/nixpkgs/pkgs/applications/audio/munt/libmt32emu.nix
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
   src = fetchFromGitHub {
     owner = "munt";
     repo = "munt";
-    rev = "${pname}_${lib.replaceChars [ "." ] [ "_" ] version}";
+    rev = "${pname}_${lib.replaceStrings [ "." ] [ "_" ] version}";
     sha256 = "sha256-XGds9lDfSiY0D8RhYG4TGyjYEVvVYuAfNSv9+VxiJEs=";
   };
 
@@ -28,8 +28,14 @@ stdenv.mkDerivation rec {
     "-Dmunt_WITH_MT32EMU_QT=OFF"
   ];
 
+  postFixup = ''
+    substituteInPlace "$dev"/lib/pkgconfig/mt32emu.pc \
+      --replace '=''${exec_prefix}//' '=/' \
+      --replace "$dev/$dev/" "$dev/"
+  '';
+
   meta = with lib; {
-    homepage = "http://munt.sourceforge.net/";
+    homepage = "https://munt.sourceforge.net/";
     description = "A library to emulate Roland MT-32, CM-32L, CM-64 and LAPC-I devices";
     license = with licenses; [ lgpl21Plus ];
     maintainers = with maintainers; [ OPNA2608 ];
diff --git a/nixpkgs/pkgs/applications/audio/munt/mt32emu-qt.nix b/nixpkgs/pkgs/applications/audio/munt/mt32emu-qt.nix
index 207fbc3717f7..51501de4a89e 100644
--- a/nixpkgs/pkgs/applications/audio/munt/mt32emu-qt.nix
+++ b/nixpkgs/pkgs/applications/audio/munt/mt32emu-qt.nix
@@ -14,7 +14,7 @@
 }:
 
 let
-  char2underscore = char: str: lib.replaceChars [ char ] [ "_" ] str;
+  char2underscore = char: str: lib.replaceStrings [ char ] [ "_" ] str;
 in
 mkDerivation rec {
   pname = "mt32emu-qt";
@@ -63,7 +63,7 @@ mkDerivation rec {
   '';
 
   meta = with lib; {
-    homepage = "http://munt.sourceforge.net/";
+    homepage = "https://munt.sourceforge.net/";
     description = "A synthesizer application built on Qt and libmt32emu";
     longDescription = ''
       mt32emu-qt is a synthesiser application that facilitates both realtime
diff --git a/nixpkgs/pkgs/applications/audio/munt/mt32emu-smf2wav.nix b/nixpkgs/pkgs/applications/audio/munt/mt32emu-smf2wav.nix
index 86b5dcee4a65..517d1b200aab 100644
--- a/nixpkgs/pkgs/applications/audio/munt/mt32emu-smf2wav.nix
+++ b/nixpkgs/pkgs/applications/audio/munt/mt32emu-smf2wav.nix
@@ -8,7 +8,7 @@
 }:
 
 let
-  char2underscore = char: str: lib.replaceChars [ char ] [ "_" ] str;
+  char2underscore = char: str: lib.replaceStrings [ char ] [ "_" ] str;
 in
 stdenv.mkDerivation rec {
   pname = "mt32emu-smf2wav";
@@ -43,7 +43,7 @@ stdenv.mkDerivation rec {
   ];
 
   meta = with lib; {
-    homepage = "http://munt.sourceforge.net/";
+    homepage = "https://munt.sourceforge.net/";
     description = "Produces a WAVE file from a Standard MIDI file (SMF)";
     license = with licenses; [ gpl3Plus ];
     maintainers = with maintainers; [ OPNA2608 ];
diff --git a/nixpkgs/pkgs/applications/audio/muse/default.nix b/nixpkgs/pkgs/applications/audio/muse/default.nix
index f5a6bafe792c..5663070d7dfe 100644
--- a/nixpkgs/pkgs/applications/audio/muse/default.nix
+++ b/nixpkgs/pkgs/applications/audio/muse/default.nix
@@ -1,6 +1,6 @@
 { 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
+, libsamplerate, libsndfile, lilv, lrdf, lv2, qtsvg, rtaudio, rubberband, sord, serd
 }:
 
 stdenv.mkDerivation rec {
@@ -16,10 +16,6 @@ stdenv.mkDerivation rec {
 
   sourceRoot = "source/muse3";
 
-  prePatch = ''
-    chmod u+w $NIX_BUILD_TOP
-  '';
-
   patches = [ ./fix-parallel-building.patch ];
 
   nativeBuildInputs = [ cmake pkg-config qttools wrapQtAppsHook ];
@@ -29,6 +25,8 @@ stdenv.mkDerivation rec {
     libsamplerate libsndfile lilv lrdf lv2 qtsvg rtaudio rubberband sord
   ];
 
+  env.NIX_CFLAGS_COMPILE = toString [ "-I${lib.getDev serd}/include/serd-0" ];
+
   meta = with lib; {
     homepage = "https://muse-sequencer.github.io/";
     description = "MIDI/Audio sequencer with recording and editing capabilities";
diff --git a/nixpkgs/pkgs/applications/audio/museeks/default.nix b/nixpkgs/pkgs/applications/audio/museeks/default.nix
new file mode 100644
index 000000000000..2db7b9e46df4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/museeks/default.nix
@@ -0,0 +1,38 @@
+{ lib, fetchurl, appimageTools }:
+
+let
+  pname = "museeks";
+  version = "0.13.1";
+
+  src = fetchurl {
+    url = "https://github.com/martpie/museeks/releases/download/${version}/museeks-x86_64.AppImage";
+    hash = "sha256-LvunhCFmpv00TnXzWjp3kQUAhoKpmp6pqKgcaUqZV+o=";
+  };
+
+  appimageContents = appimageTools.extractType2 {
+    inherit pname version src;
+  };
+in
+appimageTools.wrapType2 {
+  inherit pname version src;
+
+  extraInstallCommands = ''
+    mv $out/bin/${pname}-${version} $out/bin/${pname}
+
+    mkdir -p $out/share/${pname}
+    cp -a ${appimageContents}/{locales,resources} $out/share/${pname}
+    cp -a ${appimageContents}/usr/share/icons $out/share/
+    install -Dm 444 ${appimageContents}/${pname}.desktop -t $out/share/applications
+
+    substituteInPlace $out/share/applications/${pname}.desktop \
+      --replace 'Exec=AppRun' 'Exec=${pname}'
+  '';
+
+  meta = with lib; {
+    description = "A simple, clean and cross-platform music player";
+    homepage = "https://github.com/martpie/museeks";
+    license = licenses.mit;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ zendo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/musescore/darwin.nix b/nixpkgs/pkgs/applications/audio/musescore/darwin.nix
index add56f99d9b3..652adb03b66a 100644
--- a/nixpkgs/pkgs/applications/audio/musescore/darwin.nix
+++ b/nixpkgs/pkgs/applications/audio/musescore/darwin.nix
@@ -1,22 +1,21 @@
 { stdenv, lib, fetchurl, undmg }:
 
 let
-  versionComponents = [ "3" "6" "2" "548020600" ];
+  versionComponents = [ "4" "0" "1" ];
   appName = "MuseScore ${builtins.head versionComponents}";
+  ref = "230121751";
 in
 
-with lib;
-
 stdenv.mkDerivation rec {
   pname = "musescore-darwin";
-  version = concatStringsSep "." versionComponents;
+  version = lib.concatStringsSep "." versionComponents;
 
   # The disk image contains the .app and a symlink to /Applications.
   sourceRoot = "${appName}.app";
 
   src = fetchurl {
-    url =  "https://github.com/musescore/MuseScore/releases/download/v${concatStringsSep "." (take 3 versionComponents)}/MuseScore-${version}.dmg";
-    sha256 = "sha256-lHckfhTTrDzaGwlbnZ5w0O1gMPbRmrmgATIGMY517l0=";
+    url =  "https://github.com/musescore/MuseScore/releases/download/v${version}/MuseScore-${version}.${ref}.dmg";
+    hash = "sha256-tkIEV+tCS0SYh2TlC70/zEBUEOSg//EaSKDGA7kH/vo=";
   };
 
   buildInputs = [ undmg ];
diff --git a/nixpkgs/pkgs/applications/audio/musescore/default.nix b/nixpkgs/pkgs/applications/audio/musescore/default.nix
index caa799c88f61..15828d25729c 100644
--- a/nixpkgs/pkgs/applications/audio/musescore/default.nix
+++ b/nixpkgs/pkgs/applications/audio/musescore/default.nix
@@ -1,28 +1,35 @@
-{ mkDerivation, lib, fetchFromGitHub, cmake, pkg-config
+{ mkDerivation, lib, fetchFromGitHub, fetchpatch, cmake, pkg-config, ninja
 , alsa-lib, freetype, libjack2, lame, libogg, libpulseaudio, libsndfile, libvorbis
-, portaudio, portmidi, qtbase, qtdeclarative, qtgraphicaleffects
+, portaudio, portmidi, qtbase, qtdeclarative, qtgraphicaleffects, flac
 , qtquickcontrols2, qtscript, qtsvg, qttools
-, qtwebengine, qtxmlpatterns
+, qtwebengine, qtxmlpatterns, qtnetworkauth, qtx11extras
 , nixosTests
 }:
 
 mkDerivation rec {
   pname = "musescore";
-  version = "3.6.2";
+  version = "4.0.2";
 
   src = fetchFromGitHub {
     owner = "musescore";
     repo = "MuseScore";
     rev = "v${version}";
-    sha256 = "sha256-GBGAD/qdOhoNfDzI+O0EiKgeb86GFJxpci35T6tZ+2s=";
+    sha256 = "sha256-3NSHUdTyAC/WOhkB6yBrqtV3LV4Hl1m3poB3ojtJMfs=";
   };
-
   patches = [
-    ./remove_qtwebengine_install_hack.patch
+    # See https://github.com/musescore/MuseScore/issues/15571
+    (fetchpatch {
+      url = "https://github.com/musescore/MuseScore/commit/365be5dfb7296ebee4677cb74b67c1721bc2cf7b.patch";
+      hash = "sha256-tJ2M21i3geO9OsjUQKNatSXTkJ5U9qMT4RLNdJnyoKw=";
+    })
   ];
 
   cmakeFlags = [
     "-DMUSESCORE_BUILD_CONFIG=release"
+    # Disable the _usage_ of the `/bin/crashpad_handler` utility. See:
+    # https://github.com/musescore/MuseScore/pull/15577
+    "-DBUILD_CRASHPAD_CLIENT=OFF"
+    # Use our freetype
     "-DUSE_SYSTEM_FREETYPE=ON"
   ];
 
@@ -31,16 +38,16 @@ mkDerivation rec {
     "--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libjack2 ]}"
     # There are some issues with using the wayland backend, see:
     # https://musescore.org/en/node/321936
-    "--set QT_QPA_PLATFORM xcb"
+    "--set-default QT_QPA_PLATFORM xcb"
   ];
 
-  nativeBuildInputs = [ cmake pkg-config ];
+  nativeBuildInputs = [ cmake pkg-config ninja ];
 
   buildInputs = [
     alsa-lib libjack2 freetype lame libogg libpulseaudio libsndfile libvorbis
-    portaudio portmidi # tesseract
+    portaudio portmidi flac # tesseract
     qtbase qtdeclarative qtgraphicaleffects qtquickcontrols2
-    qtscript qtsvg qttools qtwebengine qtxmlpatterns
+    qtscript qtsvg qttools qtwebengine qtxmlpatterns qtnetworkauth qtx11extras
   ];
 
   passthru.tests = nixosTests.musescore;
@@ -48,8 +55,11 @@ mkDerivation rec {
   meta = with lib; {
     description = "Music notation and composition software";
     homepage = "https://musescore.org/";
-    license = licenses.gpl2;
+    license = licenses.gpl3Only;
     maintainers = with maintainers; [ vandenoever turion doronbehar ];
+    # Darwin requires CoreMIDI from SDK 11.3, we use the upstream built .dmg
+    # file in ./darwin.nix in the meantime.
     platforms = platforms.linux;
+    mainProgram = "mscore";
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/musescore/remove_qtwebengine_install_hack.patch b/nixpkgs/pkgs/applications/audio/musescore/remove_qtwebengine_install_hack.patch
deleted file mode 100644
index 57a6092d5852..000000000000
--- a/nixpkgs/pkgs/applications/audio/musescore/remove_qtwebengine_install_hack.patch
+++ /dev/null
@@ -1,19 +0,0 @@
---- a/main/CMakeLists.txt
-+++ b/main/CMakeLists.txt
-@@ -220,16 +219,0 @@ else (MINGW)
--      ## install qwebengine core
--      if (NOT APPLE AND USE_WEBENGINE)
--         install(PROGRAMS
--            ${QT_INSTALL_LIBEXECS}/QtWebEngineProcess
--            DESTINATION bin
--            )
--         install(DIRECTORY
--            ${QT_INSTALL_DATA}/resources
--            DESTINATION lib/qt5
--            )
--         install(DIRECTORY
--            ${QT_INSTALL_TRANSLATIONS}/qtwebengine_locales
--            DESTINATION lib/qt5/translations
--            )
--      endif(NOT APPLE AND USE_WEBENGINE)
--
diff --git a/nixpkgs/pkgs/applications/audio/musikcube/default.nix b/nixpkgs/pkgs/applications/audio/musikcube/default.nix
index b19e22eeeba4..9c6c8d30f4c5 100644
--- a/nixpkgs/pkgs/applications/audio/musikcube/default.nix
+++ b/nixpkgs/pkgs/applications/audio/musikcube/default.nix
@@ -1,51 +1,47 @@
-{ cmake
-, pkg-config
-, boost
+{ asio
+, cmake
 , curl
 , fetchFromGitHub
 , fetchpatch
 , ffmpeg
 , gnutls
 , lame
+, lib
 , libev
+, game-music-emu
 , libmicrohttpd
 , libopenmpt
 , mpg123
 , ncurses
-, lib
+, pkg-config
+, portaudio
 , stdenv
 , taglib
 # Linux Dependencies
 , alsa-lib
+, pipewireSupport ? !stdenv.hostPlatform.isDarwin, pipewire
 , pulseaudio
-, systemdSupport ? stdenv.isLinux
+, sndioSupport ? true, sndio
 , systemd
+, systemdSupport ? lib.meta.availableOn stdenv.hostPlatform systemd
 # Darwin Dependencies
 , Cocoa
 , SystemConfiguration
+, coreaudioSupport ? stdenv.hostPlatform.isDarwin, CoreAudio
 }:
 
 stdenv.mkDerivation rec {
   pname = "musikcube";
-  version = "0.98.0";
+  version = "3.0.1";
 
   src = fetchFromGitHub {
     owner = "clangen";
     repo = pname;
     rev = version;
-    sha256 = "sha256-bnwOxEcvRXWPuqtkv8YlpclvH/6ZtQvyvHy4mqJCwik=";
+    hash = "sha512-ahKPmChHRVpOQcgt0fOYumlsMApeN4MWwywE9F0edeN0Xr3Vp830mWGzEBJvMvGI/lnU/1rd7tREaHfm1vCJaw==";
   };
 
-  patches = []
-    ++ lib.optionals stdenv.isDarwin [
-      # Fix pending upstream inclusion for Darwin nixpkgs builds:
-      # https://github.com/clangen/musikcube/pull/531
-      (fetchpatch {
-        name = "darwin-build.patch";
-        url = "https://github.com/clangen/musikcube/commit/9077bb9fa6ddfe93ebb14bb8feebc8a0ef9b7ee4.patch";
-        sha256 = "sha256-Am9AGKDGMN5z+JJFJKdsBLrHf2neHFovgF/8I5EXLDA=";
-      })
-    ];
+  outputs = [ "out" "dev" ];
 
   nativeBuildInputs = [
     cmake
@@ -53,16 +49,18 @@ stdenv.mkDerivation rec {
   ];
 
   buildInputs = [
-    boost
+    asio
     curl
     ffmpeg
     gnutls
     lame
     libev
+    game-music-emu
     libmicrohttpd
     libopenmpt
     mpg123
     ncurses
+    portaudio
     taglib
   ] ++ lib.optionals systemdSupport [
     systemd
@@ -70,21 +68,27 @@ stdenv.mkDerivation rec {
     alsa-lib pulseaudio
   ] ++ lib.optionals stdenv.isDarwin [
     Cocoa SystemConfiguration
+  ] ++ lib.optionals coreaudioSupport [
+    CoreAudio
+  ] ++ lib.optionals sndioSupport [
+    sndio
+  ] ++ lib.optionals pipewireSupport [
+    pipewire
   ];
 
   cmakeFlags = [
     "-DDISABLE_STRIP=true"
   ];
 
-  postFixup = lib.optionals stdenv.isDarwin ''
+  postFixup = lib.optionalString stdenv.isDarwin ''
     install_name_tool -add_rpath $out/share/${pname} $out/share/${pname}/${pname}
     install_name_tool -add_rpath $out/share/${pname} $out/share/${pname}/${pname}d
   '';
 
   meta = with lib; {
-    description = "A fully functional terminal-based music player, library, and streaming audio server";
+    description = "Terminal-based music player, library, and streaming audio server";
     homepage = "https://musikcube.com/";
-    maintainers = [ maintainers.aanderse ];
+    maintainers = with maintainers; [ aanderse srapenne afh ];
     license = licenses.bsd3;
     platforms = platforms.all;
   };
diff --git a/nixpkgs/pkgs/applications/audio/musly/default.nix b/nixpkgs/pkgs/applications/audio/musly/default.nix
index 0d10b55d3296..1ae6624637a1 100644
--- a/nixpkgs/pkgs/applications/audio/musly/default.nix
+++ b/nixpkgs/pkgs/applications/audio/musly/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchFromGitHub, cmake, eigen, ffmpeg }:
+{ lib, stdenv, fetchFromGitHub, cmake, eigen, ffmpeg_4 }:
 stdenv.mkDerivation {
   pname = "musly";
   version = "unstable-2017-04-26";
@@ -9,12 +9,12 @@ stdenv.mkDerivation {
     sha256 = "1q42wvdwy2pac7bhfraqqj2czw7w2m33ms3ifjl8phm7d87i8825";
   };
   nativeBuildInputs = [ cmake ];
-  buildInputs = [ eigen ffmpeg ];
-  fixupPhase = if stdenv.isDarwin then ''
+  buildInputs = [ eigen ffmpeg_4 ];
+  fixupPhase = lib.optionalString stdenv.isDarwin ''
     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 lib; {
     homepage = "https://www.musly.org";
diff --git a/nixpkgs/pkgs/applications/audio/muso/default.nix b/nixpkgs/pkgs/applications/audio/muso/default.nix
index 29a97b94dcac..95c45216ef2e 100644
--- a/nixpkgs/pkgs/applications/audio/muso/default.nix
+++ b/nixpkgs/pkgs/applications/audio/muso/default.nix
@@ -4,13 +4,13 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "muso";
-  version = "2.0.0";
+  version = "unstable-2021-09-02";
 
   src = fetchFromGitHub {
     owner = "quebin31";
     repo = pname;
-    rev = "68cc90869bcc0f202830a318fbfd6bb9bdb75a39";
-    sha256 = "1dnfslliss173igympl7h1zc0qz0g10kf96dwrcj6aglmvvw426p";
+    rev = "6dd1c6d3a82b21d4fb2606accf2f26179eb6eaf9";
+    hash = "sha256-09DWUER0ZWQuwfE3sjov2GjJNI7coE3D3E5iUy9mlSE=";
   };
 
   nativeBuildInputs = [ pkg-config wrapGAppsHook ];
@@ -26,10 +26,10 @@ rustPlatform.buildRustPackage rec {
     cp share/* $out/share/muso/
   '';
 
-  cargoSha256 = "1hgdzyz005244f2mh97js9ga0a6s2hcd6iydz07f1hmhsh1j2bwy";
+  cargoHash = "sha256-+UVUejKCfjC6zdW315wmu7f3A5GmnoQ3rIk8SK6LIRI=";
 
   meta = with lib; {
-    broken = (stdenv.isLinux && stdenv.isAarch64) || stdenv.isDarwin;
+    broken = stdenv.isDarwin;
     description = "An automatic music sorter (based on ID3 tags)";
     homepage = "https://github.com/quebin31/muso";
     license = with licenses; [ gpl3Plus ];
diff --git a/nixpkgs/pkgs/applications/audio/muzika/default.nix b/nixpkgs/pkgs/applications/audio/muzika/default.nix
new file mode 100644
index 000000000000..01f09a5bef92
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/muzika/default.nix
@@ -0,0 +1,82 @@
+{ lib
+, desktop-file-utils
+, fetchFromGitHub
+, fetchYarnDeps
+, fixup_yarn_lock
+, gjs
+, glib-networking
+, gobject-introspection
+, gst_all_1
+, gtk4
+, libadwaita
+, libsoup_3
+, meson
+, ninja
+, pkg-config
+, stdenv
+, wrapGAppsHook4
+, yarn
+, nodejs
+}:
+
+stdenv.mkDerivation rec {
+  pname = "muzika";
+  version = "unstable-2023-06-07";
+
+  src = fetchFromGitHub {
+    owner = "vixalien";
+    repo = "muzika";
+    rev = "d0ca7eebad67082e73513ebd7ca04edb1fdec7ce";
+    hash = "sha256-ycnHpyYaUJZgproTLCWCVzsvnUisXlq3fqlij1KryWA=";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [
+    desktop-file-utils
+    gobject-introspection
+    meson
+    ninja
+    nodejs
+    pkg-config
+    wrapGAppsHook4
+    yarn
+  ];
+
+  buildInputs = [
+    gjs
+    glib-networking
+    gst_all_1.gst-plugins-base
+    gst_all_1.gst-plugins-good
+    gst_all_1.gst-plugins-bad
+    gtk4
+    libadwaita
+    libsoup_3
+  ];
+
+  yarnOfflineCache = fetchYarnDeps {
+    yarnLock = src + "/yarn.lock";
+    hash = "sha256-FvPEbYIydgfyKKsf2jnXUbPEhIboPi3wR7BWzEuo72Q=";
+  };
+
+  preConfigure = ''
+    export HOME="$PWD"
+    yarn config --offline set yarn-offline-mirror $yarnOfflineCache
+    ${fixup_yarn_lock}/bin/fixup_yarn_lock yarn.lock
+  '';
+
+  mesonFlags = [
+    "-Dyarnrc=../.yarnrc"
+  ];
+
+  postFixup = ''
+    sed -i "1 a imports.package._findEffectiveEntryPointName = () => 'com.vixalien.muzika';" $out/bin/.com.vixalien.muzika-wrapped
+    ln -s $out/bin/com.vixalien.muzika $out/bin/muzika
+  '';
+
+  meta = with lib; {
+    description = "Elegant music streaming app";
+    homepage = "https://github.com/vixalien/muzika";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ onny ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/mympd/default.nix b/nixpkgs/pkgs/applications/audio/mympd/default.nix
index e6027eef06af..06d241988864 100644
--- a/nixpkgs/pkgs/applications/audio/mympd/default.nix
+++ b/nixpkgs/pkgs/applications/audio/mympd/default.nix
@@ -8,28 +8,40 @@
 , lua5_3
 , libid3tag
 , flac
-, pcre
+, pcre2
+, gzip
+, perl
+, jq
 }:
 
 stdenv.mkDerivation rec {
   pname = "mympd";
-  version = "8.0.4";
+  version = "10.3.3";
 
   src = fetchFromGitHub {
     owner = "jcorporation";
     repo = "myMPD";
     rev = "v${version}";
-    sha256 = "sha256-hpUoXqblhHreDZg8fDD5S4UG+ltptIbzP9LKyQ/WbX0=";
+    sha256 = "sha256-LqIaRFAXB3XMidC1Dypax/ucayot/IJPAvPwzHQeH9k=";
   };
 
-  nativeBuildInputs = [ pkg-config cmake ];
+  nativeBuildInputs = [
+    pkg-config
+    cmake
+    gzip
+    perl
+    jq
+  ];
+  preConfigure = ''
+    env MYMPD_BUILDDIR=$PWD/build ./build.sh createassets
+  '';
   buildInputs = [
     libmpdclient
     openssl
     lua5_3
     libid3tag
     flac
-    pcre
+    pcre2
   ];
 
   cmakeFlags = [
@@ -43,7 +55,7 @@ stdenv.mkDerivation rec {
   hardeningDisable = [ "strictoverflow" ];
 
   meta = {
-    homepage = "https://jcorporation.github.io/mympd";
+    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;
diff --git a/nixpkgs/pkgs/applications/audio/ncmpc/default.nix b/nixpkgs/pkgs/applications/audio/ncmpc/default.nix
index 739d0c3c499e..0333f95710e4 100644
--- a/nixpkgs/pkgs/applications/audio/ncmpc/default.nix
+++ b/nixpkgs/pkgs/applications/audio/ncmpc/default.nix
@@ -12,29 +12,27 @@
 , pcreSupport ? false, pcre ? null
 }:
 
-with lib;
-
 assert pcreSupport -> pcre != null;
 
 stdenv.mkDerivation rec {
   pname = "ncmpc";
-  version = "0.47";
+  version = "0.48";
 
   src = fetchFromGitHub {
     owner  = "MusicPlayerDaemon";
     repo   = "ncmpc";
     rev    = "v${version}";
-    sha256 = "sha256-7vywLMiIUfRx9/fCmUH1AGUB63bT8z7wabgm3CuLLUs=";
+    sha256 = "sha256-89hBaWFwMPBqSWDmsXND0PEc1a9Fte+p1ho5tWuZFlY=";
   };
 
   buildInputs = [ glib ncurses libmpdclient boost ]
-    ++ optional pcreSupport pcre;
+    ++ lib.optional pcreSupport pcre;
   nativeBuildInputs = [ meson ninja pkg-config gettext ];
 
   mesonFlags = [
     "-Dlirc=disabled"
     "-Ddocumentation=disabled"
-  ] ++ optional (!pcreSupport) "-Dregex=disabled";
+  ] ++ lib.optional (!pcreSupport) "-Dregex=disabled";
 
   meta = with lib; {
     description = "Curses-based interface for MPD (music player daemon)";
diff --git a/nixpkgs/pkgs/applications/audio/ncmpcpp/default.nix b/nixpkgs/pkgs/applications/audio/ncmpcpp/default.nix
index fee5dc88403f..e97bb2c130e5 100644
--- a/nixpkgs/pkgs/applications/audio/ncmpcpp/default.nix
+++ b/nixpkgs/pkgs/applications/audio/ncmpcpp/default.nix
@@ -10,15 +10,11 @@
 , icu
 , curl
 , outputsSupport ? true # outputs screen
-, visualizerSupport ? false, fftw ? null # visualizer screen
+, visualizerSupport ? false, fftw # visualizer screen
 , clockSupport ? true # clock screen
-, taglibSupport ? true, taglib ? null # tag editor
+, taglibSupport ? true, taglib # tag editor
 }:
 
-assert visualizerSupport -> (fftw != null);
-assert taglibSupport -> (taglib != null);
-
-with lib;
 stdenv.mkDerivation rec {
   pname = "ncmpcpp";
   version = "0.9.2";
@@ -29,19 +25,23 @@ stdenv.mkDerivation rec {
   };
 
   enableParallelBuilding = true;
+
+  strictDeps = true;
+
   configureFlags = [ "BOOST_LIB_SUFFIX=" ]
-    ++ optional outputsSupport "--enable-outputs"
-    ++ optional visualizerSupport "--enable-visualizer --with-fftw"
-    ++ optional clockSupport "--enable-clock"
-    ++ optional taglibSupport "--with-taglib";
+    ++ lib.optional outputsSupport "--enable-outputs"
+    ++ lib.optional visualizerSupport "--enable-visualizer --with-fftw"
+    ++ lib.optional clockSupport "--enable-clock"
+    ++ lib.optional taglibSupport "--with-taglib";
 
-  nativeBuildInputs = [ pkg-config ];
+  nativeBuildInputs = [ pkg-config ]
+    ++ lib.optional taglibSupport taglib;
 
   buildInputs = [ boost libmpdclient ncurses readline libiconv icu curl ]
-    ++ optional visualizerSupport fftw
-    ++ optional taglibSupport taglib;
+    ++ lib.optional visualizerSupport fftw
+    ++ lib.optional taglibSupport taglib;
 
-  meta = {
+  meta = with lib; {
     description = "A featureful ncurses based MPD client inspired by ncmpc";
     homepage    = "https://rybczak.net/ncmpcpp/";
     changelog   = "https://github.com/ncmpcpp/ncmpcpp/blob/${version}/CHANGELOG.md";
diff --git a/nixpkgs/pkgs/applications/audio/ncpamixer/default.nix b/nixpkgs/pkgs/applications/audio/ncpamixer/default.nix
index f929d9b6f1f7..d557a7d2da7c 100644
--- a/nixpkgs/pkgs/applications/audio/ncpamixer/default.nix
+++ b/nixpkgs/pkgs/applications/audio/ncpamixer/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "ncpamixer";
-  version = "unstable-2021-10-17";
+  version = "1.3.3.3";
 
   src = fetchFromGitHub {
     owner = "fulhax";
     repo = "ncpamixer";
-    rev = "4faf8c27d4de55ddc244f372cbf5b2319d0634f7";
-    sha256 = "sha256-ElbxdAaXAY0pj0oo2IcxGT+K+7M5XdCgom0XbJ9BxW4=";
+    rev = version;
+    sha256 = "sha256-TxSfiBSsCAImzCXv6o64Jy7tSefpYCkU0xtuHx26Ss4=";
   };
 
   nativeBuildInputs = [ cmake pkg-config ];
diff --git a/nixpkgs/pkgs/applications/audio/ncspot/default.nix b/nixpkgs/pkgs/applications/audio/ncspot/default.nix
index 14042fc20550..1f493e2eaf1e 100644
--- a/nixpkgs/pkgs/applications/audio/ncspot/default.nix
+++ b/nixpkgs/pkgs/applications/audio/ncspot/default.nix
@@ -1,40 +1,57 @@
-{ stdenv, lib, fetchFromGitHub, rustPlatform, pkg-config, ncurses, openssl
+{ stdenv
+, lib
+, fetchFromGitHub
+, rustPlatform
+, pkg-config
+, ncurses
+, openssl
+, Cocoa
 , withALSA ? true, alsa-lib
+, withClipboard ? true, libxcb, python3
+, withCover ? false, ueberzug
 , withPulseAudio ? false, libpulseaudio
 , withPortAudio ? false, portaudio
-, withMPRIS ? false, dbus
+, withMPRIS ? true, withNotify ? true, dbus
 }:
 
 rustPlatform.buildRustPackage rec {
   pname = "ncspot";
-  version = "0.10.1";
+  version = "0.13.2";
 
   src = fetchFromGitHub {
     owner = "hrkfdn";
     repo = "ncspot";
     rev = "v${version}";
-    sha256 = "sha256-KETLPBMBWGqmuczF5BG7WZ15szWqQHx7uKwDA2KyN/U=";
+    hash = "sha256-DdJa4ax/v86OgO+IAsiFA8/u6pEGcCw+N/3MLXzz8DM=";
   };
 
-  cargoSha256 = "sha256-95IFRFZySpyyF3k3RpGeV+sDXkg38kcHyPYxuxTfJJA=";
+  cargoHash = "sha256-HkpFboXgHbJMYJFabJ58Syy1ag+InwqkeJAw8MxAr0A=";
 
-  nativeBuildInputs = [ pkg-config ];
+  nativeBuildInputs = [ pkg-config ]
+    ++ lib.optional withClipboard python3;
 
   buildInputs = [ ncurses ]
     ++ lib.optional stdenv.isLinux openssl
     ++ lib.optional withALSA alsa-lib
+    ++ lib.optional withClipboard libxcb
+    ++ lib.optional withCover ueberzug
     ++ lib.optional withPulseAudio libpulseaudio
     ++ lib.optional withPortAudio portaudio
-    ++ lib.optional withMPRIS dbus;
+    ++ lib.optional (withMPRIS || withNotify) dbus
+    ++ lib.optional stdenv.isDarwin Cocoa;
+
+  env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin "-DNCURSES_UNCTRL_H_incl";
 
   buildNoDefaultFeatures = true;
+
   buildFeatures = [ "cursive/pancurses-backend" ]
     ++ lib.optional withALSA "alsa_backend"
+    ++ lib.optional withClipboard "share_clipboard"
+    ++ lib.optional withCover "cover"
     ++ lib.optional withPulseAudio "pulseaudio_backend"
     ++ lib.optional withPortAudio "portaudio_backend"
-    ++ lib.optional withMPRIS "mpris";
-
-  doCheck = false;
+    ++ lib.optional withMPRIS "mpris"
+    ++ lib.optional withNotify "notify";
 
   meta = with lib; {
     description = "Cross-platform ncurses Spotify client written in Rust, inspired by ncmpc and the likes";
diff --git a/nixpkgs/pkgs/applications/audio/netease-cloud-music-gtk/Cargo.lock b/nixpkgs/pkgs/applications/audio/netease-cloud-music-gtk/Cargo.lock
new file mode 100644
index 000000000000..50af298c2a0c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/netease-cloud-music-gtk/Cargo.lock
@@ -0,0 +1,2253 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[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.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "anyhow"
+version = "1.0.66"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6"
+
+[[package]]
+name = "async-channel"
+version = "1.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e14485364214912d3b19cc3435dde4df66065127f05fa0d75c712f36f12c2f28"
+dependencies = [
+ "concurrent-queue",
+ "event-listener",
+ "futures-core",
+]
+
+[[package]]
+name = "atomic_refcell"
+version = "0.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73b5e5f48b927f04e952dedc932f31995a65a0bf65ec971c74436e51bf6e970d"
+
+[[package]]
+name = "atty"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
+dependencies = [
+ "hermit-abi",
+ "libc",
+ "winapi",
+]
+
+[[package]]
+name = "autocfg"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+
+[[package]]
+name = "base64"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
+
+[[package]]
+name = "bit_field"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dcb6dd1c2376d2e096796e234a70e17e94cc2d5d54ff8ce42b28cef1d0d359a4"
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "block"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
+
+[[package]]
+name = "bumpalo"
+version = "3.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba"
+
+[[package]]
+name = "bytemuck"
+version = "1.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f5715e491b5a1598fc2bef5a606847b5dc1d48ea625bd3c02c00de8285591da"
+
+[[package]]
+name = "byteorder"
+version = "1.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
+
+[[package]]
+name = "bytes"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db"
+
+[[package]]
+name = "cache-padded"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c"
+
+[[package]]
+name = "cairo-rs"
+version = "0.16.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08f9ee4a4ca9239c9a839453dce04b7ddee2f859ec4cd7acd1f5703b68db549c"
+dependencies = [
+ "bitflags",
+ "cairo-sys-rs",
+ "glib 0.16.2",
+ "libc",
+ "once_cell",
+ "thiserror",
+]
+
+[[package]]
+name = "cairo-sys-rs"
+version = "0.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5119ea655ec777b523f0b57279e70f8a4542f61b0e98a48f892b4ef043fd4c5d"
+dependencies = [
+ "glib-sys 0.16.0",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "castaway"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2698f953def977c68f935bb0dfa959375ad4638570e969e2f1e9f433cbf1af6"
+
+[[package]]
+name = "cc"
+version = "1.0.73"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
+
+[[package]]
+name = "cfg-expr"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0357a6402b295ca3a86bc148e84df46c02e41f41fef186bda662557ef6328aa"
+dependencies = [
+ "smallvec",
+]
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "color_quant"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b"
+
+[[package]]
+name = "concurrent-queue"
+version = "1.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af4780a44ab5696ea9e28294517f1fffb421a83a25af521333c838635509db9c"
+dependencies = [
+ "cache-padded",
+]
+
+[[package]]
+name = "crc32fast"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "crossbeam-channel"
+version = "0.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521"
+dependencies = [
+ "cfg-if",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-deque"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc"
+dependencies = [
+ "cfg-if",
+ "crossbeam-epoch",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-epoch"
+version = "0.9.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f916dfc5d356b0ed9dae65f1db9fc9770aa2851d2662b988ccf4fe3516e86348"
+dependencies = [
+ "autocfg",
+ "cfg-if",
+ "crossbeam-utils",
+ "memoffset",
+ "scopeguard",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "crunchy"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
+
+[[package]]
+name = "curl"
+version = "0.4.44"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "509bd11746c7ac09ebd19f0b17782eae80aadee26237658a6b4808afb5c11a22"
+dependencies = [
+ "curl-sys",
+ "libc",
+ "openssl-probe",
+ "openssl-sys",
+ "schannel",
+ "socket2",
+ "winapi",
+]
+
+[[package]]
+name = "curl-sys"
+version = "0.4.58+curl-7.86.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "430e2ecf0c5f4445334472cf8f9611a6eea404b4135ca5500f38a97a128c913e"
+dependencies = [
+ "cc",
+ "libc",
+ "libnghttp2-sys",
+ "libz-sys",
+ "openssl-sys",
+ "pkg-config",
+ "vcpkg",
+ "winapi",
+]
+
+[[package]]
+name = "dbus"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "48b5f0f36f1eebe901b0e6bee369a77ed3396334bf3f09abd46454a576f71819"
+dependencies = [
+ "libc",
+ "libdbus-sys",
+]
+
+[[package]]
+name = "either"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797"
+
+[[package]]
+name = "encoding_rs"
+version = "0.8.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "env_logger"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c90bf5f19754d10198ccb95b70664fc925bd1fc090a0fd9a6ebc54acc8cd6272"
+dependencies = [
+ "atty",
+ "humantime",
+ "log",
+ "regex",
+ "termcolor",
+]
+
+[[package]]
+name = "event-listener"
+version = "2.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
+
+[[package]]
+name = "exr"
+version = "1.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8eb5f255b5980bb0c8cf676b675d1a99be40f316881444f44e0462eaf5df5ded"
+dependencies = [
+ "bit_field",
+ "flume",
+ "half",
+ "lebe",
+ "miniz_oxide 0.6.2",
+ "smallvec",
+ "threadpool",
+]
+
+[[package]]
+name = "fastrand"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499"
+dependencies = [
+ "instant",
+]
+
+[[package]]
+name = "field-offset"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e1c54951450cbd39f3dbcf1005ac413b49487dabf18a720ad2383eccfeffb92"
+dependencies = [
+ "memoffset",
+ "rustc_version",
+]
+
+[[package]]
+name = "flate2"
+version = "1.0.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6"
+dependencies = [
+ "crc32fast",
+ "miniz_oxide 0.5.4",
+]
+
+[[package]]
+name = "flume"
+version = "0.10.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577"
+dependencies = [
+ "futures-core",
+ "futures-sink",
+ "nanorand",
+ "pin-project",
+ "spin",
+]
+
+[[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.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
+dependencies = [
+ "percent-encoding",
+]
+
+[[package]]
+name = "fragile"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa"
+
+[[package]]
+name = "futures-channel"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed"
+dependencies = [
+ "futures-core",
+]
+
+[[package]]
+name = "futures-core"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac"
+
+[[package]]
+name = "futures-executor"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7acc85df6714c176ab5edf386123fafe217be88c0840ec11f199441134a074e2"
+dependencies = [
+ "futures-core",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-io"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb"
+
+[[package]]
+name = "futures-lite"
+version = "1.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48"
+dependencies = [
+ "fastrand",
+ "futures-core",
+ "futures-io",
+ "memchr",
+ "parking",
+ "pin-project-lite",
+ "waker-fn",
+]
+
+[[package]]
+name = "futures-macro"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "futures-sink"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9"
+
+[[package]]
+name = "futures-task"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea"
+
+[[package]]
+name = "futures-util"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6"
+dependencies = [
+ "futures-core",
+ "futures-macro",
+ "futures-task",
+ "pin-project-lite",
+ "pin-utils",
+ "slab",
+]
+
+[[package]]
+name = "gdk-pixbuf"
+version = "0.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0fb526c8c3a075eda15f961820edf3e15fe18576ac4fbabbb324e4cc6c421e6"
+dependencies = [
+ "bitflags",
+ "gdk-pixbuf-sys",
+ "gio",
+ "glib 0.16.2",
+ "libc",
+]
+
+[[package]]
+name = "gdk-pixbuf-sys"
+version = "0.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7df12d15c10c3c5a84d9fb4ba0e27659f6a2bdee4f27f8b17126da15d5ddd3f2"
+dependencies = [
+ "gio-sys",
+ "glib-sys 0.16.0",
+ "gobject-sys 0.16.0",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "gdk4"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "66fe07f362c977c4684d1136a29f097208b3ccb2013ab6f441a3c60a046fd358"
+dependencies = [
+ "bitflags",
+ "cairo-rs",
+ "gdk-pixbuf",
+ "gdk4-sys",
+ "gio",
+ "glib 0.16.2",
+ "libc",
+ "pango",
+]
+
+[[package]]
+name = "gdk4-sys"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ddcf9e3ab5f237bb641e7f2fccc4b26d5b86f111f0d62e27d452dc24964541c2"
+dependencies = [
+ "cairo-sys-rs",
+ "gdk-pixbuf-sys",
+ "gio-sys",
+ "glib-sys 0.16.0",
+ "gobject-sys 0.16.0",
+ "libc",
+ "pango-sys",
+ "pkg-config",
+ "system-deps",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "libc",
+ "wasi",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "gettext-rs"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e49ea8a8fad198aaa1f9655a2524b64b70eb06b2f3ff37da407566c93054f364"
+dependencies = [
+ "gettext-sys",
+ "locale_config",
+]
+
+[[package]]
+name = "gettext-sys"
+version = "0.21.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c63ce2e00f56a206778276704bbe38564c8695249fdc8f354b4ef71c57c3839d"
+dependencies = [
+ "cc",
+ "temp-dir",
+]
+
+[[package]]
+name = "gif"
+version = "0.11.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3edd93c6756b4dfaf2709eafcc345ba2636565295c198a9cfbf75fa5e3e00b06"
+dependencies = [
+ "color_quant",
+ "weezl",
+]
+
+[[package]]
+name = "gio"
+version = "0.16.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33c1debf8d0315d69be0153aa76249db3c858ef69b7778ad3cc669e6d370c485"
+dependencies = [
+ "bitflags",
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-util",
+ "gio-sys",
+ "glib 0.16.2",
+ "libc",
+ "once_cell",
+ "pin-project-lite",
+ "smallvec",
+ "thiserror",
+]
+
+[[package]]
+name = "gio-sys"
+version = "0.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6da1bba9d3f2ab13a6e9932c40f240dc99ebc9f0bdc35cfb130d1a3df36f374c"
+dependencies = [
+ "glib-sys 0.16.0",
+ "gobject-sys 0.16.0",
+ "libc",
+ "system-deps",
+ "winapi",
+]
+
+[[package]]
+name = "glib"
+version = "0.15.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edb0306fbad0ab5428b0ca674a23893db909a98582969c9b537be4ced78c505d"
+dependencies = [
+ "bitflags",
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-task",
+ "glib-macros 0.15.11",
+ "glib-sys 0.15.10",
+ "gobject-sys 0.15.10",
+ "libc",
+ "once_cell",
+ "smallvec",
+ "thiserror",
+]
+
+[[package]]
+name = "glib"
+version = "0.16.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d5abffa711471e015eb93d65d6ea20e7e9f6f7951fc0a1042280439319b2de06"
+dependencies = [
+ "bitflags",
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-task",
+ "futures-util",
+ "gio-sys",
+ "glib-macros 0.16.0",
+ "glib-sys 0.16.0",
+ "gobject-sys 0.16.0",
+ "libc",
+ "once_cell",
+ "smallvec",
+ "thiserror",
+]
+
+[[package]]
+name = "glib-macros"
+version = "0.15.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "25a68131a662b04931e71891fb14aaf65ee4b44d08e8abc10f49e77418c86c64"
+dependencies = [
+ "anyhow",
+ "heck",
+ "proc-macro-crate",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "glib-macros"
+version = "0.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e195c1311fa6b04d7b896ea39385f6bd60ef5d25bf74a7c11c8c3f94f6c1a572"
+dependencies = [
+ "anyhow",
+ "heck",
+ "proc-macro-crate",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "glib-sys"
+version = "0.15.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4"
+dependencies = [
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "glib-sys"
+version = "0.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b33357bb421a77bd849f6a0bfcaf3b4b256a2577802971bb5dd522d530f27021"
+dependencies = [
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "gobject-sys"
+version = "0.15.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a"
+dependencies = [
+ "glib-sys 0.15.10",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "gobject-sys"
+version = "0.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "63ca11a57400f3d4fda594e002844be47900c9fb8b29e2155c6e37a1f24e51b3"
+dependencies = [
+ "glib-sys 0.16.0",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "graphene-rs"
+version = "0.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95a8de4506a64776d90fedf9c28fdca5a7127f8cc9c78976e8184ac6f42685d8"
+dependencies = [
+ "glib 0.16.2",
+ "graphene-sys",
+ "libc",
+]
+
+[[package]]
+name = "graphene-sys"
+version = "0.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2c952f764f02f8546fcc5d014bc78aa704c6d453c828c8b429121f704349163"
+dependencies = [
+ "glib-sys 0.16.0",
+ "libc",
+ "pkg-config",
+ "system-deps",
+]
+
+[[package]]
+name = "gsk4"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4fc2b86c751a7fe9aad0fdba85937a6aace3a8453e0e2a08d2a31ce4bb8ae55"
+dependencies = [
+ "bitflags",
+ "cairo-rs",
+ "gdk4",
+ "glib 0.16.2",
+ "graphene-rs",
+ "gsk4-sys",
+ "libc",
+ "pango",
+]
+
+[[package]]
+name = "gsk4-sys"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2cb53e25cbbe3fa8e3e9db7c06d65085086fadbec4cd0aa567b2e2a4917db83d"
+dependencies = [
+ "cairo-sys-rs",
+ "gdk4-sys",
+ "glib-sys 0.16.0",
+ "gobject-sys 0.16.0",
+ "graphene-sys",
+ "libc",
+ "pango-sys",
+ "system-deps",
+]
+
+[[package]]
+name = "gstreamer"
+version = "0.19.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e428081934c617115320750b7827f8f13131d9c3ae90b647c14a5d6019f47b4"
+dependencies = [
+ "bitflags",
+ "cfg-if",
+ "futures-channel",
+ "futures-core",
+ "futures-util",
+ "glib 0.16.2",
+ "gstreamer-sys",
+ "libc",
+ "muldiv",
+ "num-integer",
+ "num-rational",
+ "once_cell",
+ "option-operations",
+ "paste",
+ "pretty-hex",
+ "thiserror",
+]
+
+[[package]]
+name = "gstreamer-base"
+version = "0.19.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "326674197c010e91a98d0f55a032abe22b1fd932456dbcdc3415450b4b653817"
+dependencies = [
+ "atomic_refcell",
+ "bitflags",
+ "cfg-if",
+ "glib 0.16.2",
+ "gstreamer",
+ "gstreamer-base-sys",
+ "libc",
+]
+
+[[package]]
+name = "gstreamer-base-sys"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd55d3858fa65a99286c1cbe8db001f4ce5cff6a038f1c1253f5d99f840970de"
+dependencies = [
+ "glib-sys 0.16.0",
+ "gobject-sys 0.16.0",
+ "gstreamer-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "gstreamer-player"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "796e053b45803544c37a150ae6cbedc8019bc5f410dff78aa6041e7a1a969f2b"
+dependencies = [
+ "bitflags",
+ "glib 0.16.2",
+ "gstreamer",
+ "gstreamer-player-sys",
+ "gstreamer-video",
+ "libc",
+ "once_cell",
+]
+
+[[package]]
+name = "gstreamer-player-sys"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7930b84f995cf393906ee8499d7bf643aba1899ace61e20fee0ea416ad532f32"
+dependencies = [
+ "glib-sys 0.16.0",
+ "gobject-sys 0.16.0",
+ "gstreamer-sys",
+ "gstreamer-video-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "gstreamer-sys"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbaafc66df32b334d4aa28025fd5d83cadc971e1910205e140ea070f4ac4834f"
+dependencies = [
+ "glib-sys 0.16.0",
+ "gobject-sys 0.16.0",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "gstreamer-video"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9b96daff8a3d853588e61207afac81a4879f3972430f6609721601ab757d7fd"
+dependencies = [
+ "bitflags",
+ "cfg-if",
+ "futures-channel",
+ "glib 0.16.2",
+ "gstreamer",
+ "gstreamer-base",
+ "gstreamer-video-sys",
+ "libc",
+ "once_cell",
+]
+
+[[package]]
+name = "gstreamer-video-sys"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "066ee44cd8d84f19a18c646128c1890878c034d3fb9f34d8d5f07311bbd9f41f"
+dependencies = [
+ "glib-sys 0.16.0",
+ "gobject-sys 0.16.0",
+ "gstreamer-base-sys",
+ "gstreamer-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "gtk4"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "47223ddb27033731b71ea841d1b878bd87a275a865f1df60b41505f9e4933d64"
+dependencies = [
+ "bitflags",
+ "cairo-rs",
+ "field-offset",
+ "futures-channel",
+ "gdk-pixbuf",
+ "gdk4",
+ "gio",
+ "glib 0.16.2",
+ "graphene-rs",
+ "gsk4",
+ "gtk4-macros",
+ "gtk4-sys",
+ "libc",
+ "once_cell",
+ "pango",
+]
+
+[[package]]
+name = "gtk4-macros"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce5eb86364b216ee8c497b1121831168fb25130d3378495a135f8e5c1972db7b"
+dependencies = [
+ "anyhow",
+ "proc-macro-crate",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "gtk4-sys"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0f04bd0b63d999a36ae53a916ee4b20ea64a3ef4732ca8a98b1fde4a22c1476c"
+dependencies = [
+ "cairo-sys-rs",
+ "gdk-pixbuf-sys",
+ "gdk4-sys",
+ "gio-sys",
+ "glib-sys 0.16.0",
+ "gobject-sys 0.16.0",
+ "graphene-sys",
+ "gsk4-sys",
+ "libc",
+ "pango-sys",
+ "system-deps",
+]
+
+[[package]]
+name = "half"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad6a9459c9c30b177b925162351f97e7d967c7ea8bab3b8352805327daf45554"
+dependencies = [
+ "crunchy",
+]
+
+[[package]]
+name = "heck"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9"
+
+[[package]]
+name = "hermit-abi"
+version = "0.1.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "hex"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
+
+[[package]]
+name = "html-escape"
+version = "0.2.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8e7479fa1ef38eb49fb6a42c426be515df2d063f06cb8efd3e50af073dbc26c"
+dependencies = [
+ "utf8-width",
+]
+
+[[package]]
+name = "http"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399"
+dependencies = [
+ "bytes",
+ "fnv",
+ "itoa",
+]
+
+[[package]]
+name = "httpdate"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421"
+
+[[package]]
+name = "humantime"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
+
+[[package]]
+name = "idna"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
+dependencies = [
+ "unicode-bidi",
+ "unicode-normalization",
+]
+
+[[package]]
+name = "image"
+version = "0.24.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd8e4fb07cf672b1642304e731ef8a6a4c7891d67bb4fd4f5ce58cd6ed86803c"
+dependencies = [
+ "bytemuck",
+ "byteorder",
+ "color_quant",
+ "exr",
+ "gif",
+ "jpeg-decoder",
+ "num-rational",
+ "num-traits",
+ "png",
+ "scoped_threadpool",
+ "tiff",
+]
+
+[[package]]
+name = "instant"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "isahc"
+version = "1.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "334e04b4d781f436dc315cb1e7515bd96826426345d498149e4bde36b67f8ee9"
+dependencies = [
+ "async-channel",
+ "castaway",
+ "crossbeam-utils",
+ "curl",
+ "curl-sys",
+ "encoding_rs",
+ "event-listener",
+ "futures-lite",
+ "http",
+ "httpdate",
+ "log",
+ "mime",
+ "once_cell",
+ "polling",
+ "slab",
+ "sluice",
+ "tracing",
+ "tracing-futures",
+ "url",
+ "waker-fn",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc"
+
+[[package]]
+name = "jpeg-decoder"
+version = "0.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9478aa10f73e7528198d75109c8be5cd7d15fb530238040148d5f9a22d4c5b3b"
+dependencies = [
+ "rayon",
+]
+
+[[package]]
+name = "js-sys"
+version = "0.3.60"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47"
+dependencies = [
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "lazy_static"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+
+[[package]]
+name = "lebe"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8"
+
+[[package]]
+name = "libadwaita"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed92f031cf7f3d501b84f41e4d05aed6ebfd8eed59a8fc0cccbf51359e92c8e3"
+dependencies = [
+ "bitflags",
+ "futures-channel",
+ "gdk-pixbuf",
+ "gdk4",
+ "gio",
+ "glib 0.16.2",
+ "gtk4",
+ "libadwaita-sys",
+ "libc",
+ "once_cell",
+ "pango",
+]
+
+[[package]]
+name = "libadwaita-sys"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ec4243e86fb53d06df2461d543529a640c9a0fba2d4cc850b70e11a85f9d952"
+dependencies = [
+ "gdk4-sys",
+ "gio-sys",
+ "glib-sys 0.16.0",
+ "gobject-sys 0.16.0",
+ "gtk4-sys",
+ "libc",
+ "pango-sys",
+ "system-deps",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.137"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89"
+
+[[package]]
+name = "libdbus-sys"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c185b5b7ad900923ef3a8ff594083d4d9b5aea80bb4f32b8342363138c0d456b"
+dependencies = [
+ "pkg-config",
+]
+
+[[package]]
+name = "libnghttp2-sys"
+version = "0.1.7+1.45.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57ed28aba195b38d5ff02b9170cbff627e336a20925e43b4945390401c5dc93f"
+dependencies = [
+ "cc",
+ "libc",
+]
+
+[[package]]
+name = "libz-sys"
+version = "1.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbf"
+dependencies = [
+ "cc",
+ "libc",
+ "pkg-config",
+ "vcpkg",
+]
+
+[[package]]
+name = "locale_config"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08d2c35b16f4483f6c26f0e4e9550717a2f6575bcd6f12a53ff0c490a94a6934"
+dependencies = [
+ "lazy_static",
+ "objc",
+ "objc-foundation",
+ "regex",
+ "winapi",
+]
+
+[[package]]
+name = "lock_api"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df"
+dependencies = [
+ "autocfg",
+ "scopeguard",
+]
+
+[[package]]
+name = "log"
+version = "0.4.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "malloc_buf"
+version = "0.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "memchr"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+
+[[package]]
+name = "memoffset"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "mime"
+version = "0.3.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d"
+
+[[package]]
+name = "miniz_oxide"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96590ba8f175222643a85693f33d26e9c8a015f599c216509b1a6894af675d34"
+dependencies = [
+ "adler",
+]
+
+[[package]]
+name = "miniz_oxide"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa"
+dependencies = [
+ "adler",
+]
+
+[[package]]
+name = "mpris-player"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be832ec9171fdaf43609d02bb552f4129ba6eacd184bb25186e2906dbd3cf098"
+dependencies = [
+ "dbus",
+ "glib 0.15.12",
+]
+
+[[package]]
+name = "muldiv"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b5136edda114182728ccdedb9f5eda882781f35fa6e80cc360af12a8932507f3"
+
+[[package]]
+name = "nanorand"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3"
+dependencies = [
+ "getrandom",
+]
+
+[[package]]
+name = "netease-cloud-music-api"
+version = "1.0.2"
+source = "git+https://github.com/gmg137/netease-cloud-music-api.git#08e08044a0726bcd2e0d01035b972cb7f7b56ae8"
+dependencies = [
+ "anyhow",
+ "base64",
+ "hex",
+ "isahc",
+ "lazy_static",
+ "openssl",
+ "rand",
+ "regex",
+ "serde",
+ "serde_json",
+ "urlqstring",
+]
+
+[[package]]
+name = "netease-cloud-music-gtk4"
+version = "2.0.3"
+dependencies = [
+ "anyhow",
+ "env_logger",
+ "fastrand",
+ "fragile",
+ "gettext-rs",
+ "gstreamer",
+ "gstreamer-player",
+ "gtk4",
+ "libadwaita",
+ "log",
+ "mpris-player",
+ "netease-cloud-music-api",
+ "once_cell",
+ "qrcode-generator",
+ "regex",
+]
+
+[[package]]
+name = "num-integer"
+version = "0.1.45"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
+dependencies = [
+ "autocfg",
+ "num-traits",
+]
+
+[[package]]
+name = "num-rational"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
+dependencies = [
+ "autocfg",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "num_cpus"
+version = "1.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1"
+dependencies = [
+ "hermit-abi",
+ "libc",
+]
+
+[[package]]
+name = "objc"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1"
+dependencies = [
+ "malloc_buf",
+]
+
+[[package]]
+name = "objc-foundation"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9"
+dependencies = [
+ "block",
+ "objc",
+ "objc_id",
+]
+
+[[package]]
+name = "objc_id"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b"
+dependencies = [
+ "objc",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1"
+
+[[package]]
+name = "openssl"
+version = "0.10.42"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "12fc0523e3bd51a692c8850d075d74dc062ccf251c0110668cbd921917118a13"
+dependencies = [
+ "bitflags",
+ "cfg-if",
+ "foreign-types",
+ "libc",
+ "once_cell",
+ "openssl-macros",
+ "openssl-sys",
+]
+
+[[package]]
+name = "openssl-macros"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "openssl-probe"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
+
+[[package]]
+name = "openssl-sys"
+version = "0.9.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b03b84c3b2d099b81f0953422b4d4ad58761589d0229b5506356afca05a3670a"
+dependencies = [
+ "autocfg",
+ "cc",
+ "libc",
+ "pkg-config",
+ "vcpkg",
+]
+
+[[package]]
+name = "option-operations"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c26d27bb1aeab65138e4bf7666045169d1717febcc9ff870166be8348b223d0"
+dependencies = [
+ "paste",
+]
+
+[[package]]
+name = "pango"
+version = "0.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7208c60f224cf6e44c551df5ee2ef38f9da0fd29d7c5a0402000b8ab0520e798"
+dependencies = [
+ "bitflags",
+ "gio",
+ "glib 0.16.2",
+ "libc",
+ "once_cell",
+ "pango-sys",
+]
+
+[[package]]
+name = "pango-sys"
+version = "0.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "922441c228366ed98d3534b87bc7c987c50564094c3abbc3513717786419252d"
+dependencies = [
+ "glib-sys 0.16.0",
+ "gobject-sys 0.16.0",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "parking"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72"
+
+[[package]]
+name = "paste"
+version = "1.0.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1de2e551fb905ac83f73f7aedf2f0cb4a0da7e35efa24a202a936269f1f18e1"
+
+[[package]]
+name = "percent-encoding"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
+
+[[package]]
+name = "pest"
+version = "2.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dbc7bc69c062e492337d74d59b120c274fd3d261b6bf6d3207d499b4b379c41a"
+dependencies = [
+ "thiserror",
+ "ucd-trie",
+]
+
+[[package]]
+name = "pin-project"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc"
+dependencies = [
+ "pin-project-internal",
+]
+
+[[package]]
+name = "pin-project-internal"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "pin-project-lite"
+version = "0.2.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
+
+[[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.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
+
+[[package]]
+name = "png"
+version = "0.17.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f0e7f4c94ec26ff209cee506314212639d6c91b80afb82984819fafce9df01c"
+dependencies = [
+ "bitflags",
+ "crc32fast",
+ "flate2",
+ "miniz_oxide 0.5.4",
+]
+
+[[package]]
+name = "polling"
+version = "2.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab4609a838d88b73d8238967b60dd115cc08d38e2bbaf51ee1e4b695f89122e2"
+dependencies = [
+ "autocfg",
+ "cfg-if",
+ "libc",
+ "log",
+ "wepoll-ffi",
+ "winapi",
+]
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872"
+
+[[package]]
+name = "pretty-hex"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c6fa0831dd7cc608c38a5e323422a0077678fa5744aa2be4ad91c4ece8eec8d5"
+
+[[package]]
+name = "proc-macro-crate"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9"
+dependencies = [
+ "once_cell",
+ "thiserror",
+ "toml",
+]
+
+[[package]]
+name = "proc-macro-error"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
+dependencies = [
+ "proc-macro-error-attr",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro-error-attr"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.47"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "qrcode-generator"
+version = "4.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "501c33c9127afb867693646b38817bf63a9a756d4b66aefbc5c0d7e5e8c3125a"
+dependencies = [
+ "html-escape",
+ "image",
+ "qrcodegen",
+]
+
+[[package]]
+name = "qrcodegen"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4339fc7a1021c9c1621d87f5e3505f2805c8c105420ba2f2a4df86814590c142"
+
+[[package]]
+name = "quote"
+version = "1.0.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom",
+]
+
+[[package]]
+name = "rayon"
+version = "1.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d"
+dependencies = [
+ "autocfg",
+ "crossbeam-deque",
+ "either",
+ "rayon-core",
+]
+
+[[package]]
+name = "rayon-core"
+version = "1.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f"
+dependencies = [
+ "crossbeam-channel",
+ "crossbeam-deque",
+ "crossbeam-utils",
+ "num_cpus",
+]
+
+[[package]]
+name = "regex"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.6.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
+
+[[package]]
+name = "rustc_version"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee"
+dependencies = [
+ "semver",
+]
+
+[[package]]
+name = "ryu"
+version = "1.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09"
+
+[[package]]
+name = "schannel"
+version = "0.1.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2"
+dependencies = [
+ "lazy_static",
+ "windows-sys",
+]
+
+[[package]]
+name = "scoped_threadpool"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8"
+
+[[package]]
+name = "scopeguard"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+
+[[package]]
+name = "semver"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6"
+dependencies = [
+ "semver-parser",
+]
+
+[[package]]
+name = "semver-parser"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7"
+dependencies = [
+ "pest",
+]
+
+[[package]]
+name = "serde"
+version = "1.0.147"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.147"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.87"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ce777b7b150d76b9cf60d28b55f5847135a003f7d7350c6be7a773508ce7d45"
+dependencies = [
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "slab"
+version = "0.4.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "sluice"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d7400c0eff44aa2fcb5e31a5f24ba9716ed90138769e4977a2ba6014ae63eb5"
+dependencies = [
+ "async-channel",
+ "futures-core",
+ "futures-io",
+]
+
+[[package]]
+name = "smallvec"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
+
+[[package]]
+name = "socket2"
+version = "0.4.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd"
+dependencies = [
+ "libc",
+ "winapi",
+]
+
+[[package]]
+name = "spin"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f6002a767bff9e83f8eeecf883ecb8011875a21ae8da43bffb817a57e78cc09"
+dependencies = [
+ "lock_api",
+]
+
+[[package]]
+name = "syn"
+version = "1.0.103"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a864042229133ada95abf3b54fdc62ef5ccabe9515b64717bcb9a1919e59445d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "system-deps"
+version = "6.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2955b1fe31e1fa2fbd1976b71cc69a606d7d4da16f6de3333d0c92d51419aeff"
+dependencies = [
+ "cfg-expr",
+ "heck",
+ "pkg-config",
+ "toml",
+ "version-compare",
+]
+
+[[package]]
+name = "temp-dir"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af547b166dd1ea4b472165569fc456cfb6818116f854690b0ff205e636523dab"
+
+[[package]]
+name = "termcolor"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "threadpool"
+version = "1.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa"
+dependencies = [
+ "num_cpus",
+]
+
+[[package]]
+name = "tiff"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7259662e32d1e219321eb309d5f9d898b779769d81b76e762c07c8e5d38fcb65"
+dependencies = [
+ "flate2",
+ "jpeg-decoder",
+ "weezl",
+]
+
+[[package]]
+name = "tinyvec"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+dependencies = [
+ "tinyvec_macros",
+]
+
+[[package]]
+name = "tinyvec_macros"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
+
+[[package]]
+name = "toml"
+version = "0.5.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "tracing"
+version = "0.1.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
+dependencies = [
+ "cfg-if",
+ "log",
+ "pin-project-lite",
+ "tracing-attributes",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-attributes"
+version = "0.1.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a"
+dependencies = [
+ "once_cell",
+]
+
+[[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 = "ucd-trie"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81"
+
+[[package]]
+name = "unicode-bidi"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3"
+
+[[package]]
+name = "unicode-normalization"
+version = "0.1.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
+dependencies = [
+ "tinyvec",
+]
+
+[[package]]
+name = "url"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
+dependencies = [
+ "form_urlencoded",
+ "idna",
+ "percent-encoding",
+]
+
+[[package]]
+name = "urlqstring"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "25ef3473a06a065718d8ec7cd7acc6a35fc20f836dee7661ad3b64ea3cc2e0cc"
+
+[[package]]
+name = "utf8-width"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5190c9442dcdaf0ddd50f37420417d219ae5261bbf5db120d0f9bab996c9cba1"
+
+[[package]]
+name = "vcpkg"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
+
+[[package]]
+name = "version-compare"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fe88247b92c1df6b6de80ddc290f3976dbdf2f5f5d3fd049a9fb598c6dd5ca73"
+
+[[package]]
+name = "version_check"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+
+[[package]]
+name = "waker-fn"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca"
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268"
+dependencies = [
+ "cfg-if",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142"
+dependencies = [
+ "bumpalo",
+ "log",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f"
+
+[[package]]
+name = "weezl"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb"
+
+[[package]]
+name = "wepoll-ffi"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d743fdedc5c64377b5fc2bc036b01c7fd642205a0d96356034ae3404d49eb7fb"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-util"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+dependencies = [
+ "winapi",
+]
+
+[[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 = "windows-sys"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2"
+dependencies = [
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680"
diff --git a/nixpkgs/pkgs/applications/audio/netease-cloud-music-gtk/cargo-lock.patch b/nixpkgs/pkgs/applications/audio/netease-cloud-music-gtk/cargo-lock.patch
deleted file mode 100644
index 2820506c519e..000000000000
--- a/nixpkgs/pkgs/applications/audio/netease-cloud-music-gtk/cargo-lock.patch
+++ /dev/null
@@ -1,2151 +0,0 @@
-diff --git a/Cargo.lock b/Cargo.lock
-new file mode 100644
-index 0000000..7171b64
---- /dev/null
-+++ b/Cargo.lock
-@@ -0,0 +1,2145 @@
-+# This file is automatically @generated by Cargo.
-+# It is not intended for manual editing.
-+version = 3
-+
-+[[package]]
-+name = "adler"
-+version = "1.0.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
-+
-+[[package]]
-+name = "adler32"
-+version = "1.2.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234"
-+
-+[[package]]
-+name = "aho-corasick"
-+version = "0.7.18"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
-+dependencies = [
-+ "memchr",
-+]
-+
-+[[package]]
-+name = "anyhow"
-+version = "1.0.60"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "c794e162a5eff65c72ef524dfe393eb923c354e350bb78b9c7383df13f3bc142"
-+
-+[[package]]
-+name = "async-channel"
-+version = "1.6.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "2114d64672151c0c5eaa5e131ec84a74f06e1e559830dabba01ca30605d66319"
-+dependencies = [
-+ "concurrent-queue",
-+ "event-listener",
-+ "futures-core",
-+]
-+
-+[[package]]
-+name = "autocfg"
-+version = "1.1.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
-+
-+[[package]]
-+name = "base64"
-+version = "0.13.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd"
-+
-+[[package]]
-+name = "bit_field"
-+version = "0.10.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "dcb6dd1c2376d2e096796e234a70e17e94cc2d5d54ff8ce42b28cef1d0d359a4"
-+
-+[[package]]
-+name = "bitflags"
-+version = "1.3.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
-+
-+[[package]]
-+name = "block"
-+version = "0.1.6"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
-+
-+[[package]]
-+name = "bumpalo"
-+version = "3.10.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3"
-+
-+[[package]]
-+name = "bytemuck"
-+version = "1.11.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "a5377c8865e74a160d21f29c2d40669f53286db6eab59b88540cbb12ffc8b835"
-+
-+[[package]]
-+name = "byteorder"
-+version = "1.4.3"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
-+
-+[[package]]
-+name = "bytes"
-+version = "1.2.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db"
-+
-+[[package]]
-+name = "cache-padded"
-+version = "1.2.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c"
-+
-+[[package]]
-+name = "cairo-rs"
-+version = "0.15.12"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "c76ee391b03d35510d9fa917357c7f1855bd9a6659c95a1b392e33f49b3369bc"
-+dependencies = [
-+ "bitflags",
-+ "cairo-sys-rs",
-+ "glib",
-+ "libc",
-+ "thiserror",
-+]
-+
-+[[package]]
-+name = "cairo-sys-rs"
-+version = "0.15.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8"
-+dependencies = [
-+ "glib-sys",
-+ "libc",
-+ "system-deps",
-+]
-+
-+[[package]]
-+name = "castaway"
-+version = "0.1.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "a2698f953def977c68f935bb0dfa959375ad4638570e969e2f1e9f433cbf1af6"
-+
-+[[package]]
-+name = "cc"
-+version = "1.0.73"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
-+
-+[[package]]
-+name = "cfg-expr"
-+version = "0.10.3"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "0aacacf4d96c24b2ad6eb8ee6df040e4f27b0d0b39a5710c30091baa830485db"
-+dependencies = [
-+ "smallvec",
-+]
-+
-+[[package]]
-+name = "cfg-if"
-+version = "1.0.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
-+
-+[[package]]
-+name = "color_quant"
-+version = "1.1.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b"
-+
-+[[package]]
-+name = "concurrent-queue"
-+version = "1.2.4"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "af4780a44ab5696ea9e28294517f1fffb421a83a25af521333c838635509db9c"
-+dependencies = [
-+ "cache-padded",
-+]
-+
-+[[package]]
-+name = "crc32fast"
-+version = "1.3.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
-+dependencies = [
-+ "cfg-if",
-+]
-+
-+[[package]]
-+name = "crossbeam-channel"
-+version = "0.5.6"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521"
-+dependencies = [
-+ "cfg-if",
-+ "crossbeam-utils",
-+]
-+
-+[[package]]
-+name = "crossbeam-deque"
-+version = "0.8.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc"
-+dependencies = [
-+ "cfg-if",
-+ "crossbeam-epoch",
-+ "crossbeam-utils",
-+]
-+
-+[[package]]
-+name = "crossbeam-epoch"
-+version = "0.9.10"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "045ebe27666471bb549370b4b0b3e51b07f56325befa4284db65fc89c02511b1"
-+dependencies = [
-+ "autocfg",
-+ "cfg-if",
-+ "crossbeam-utils",
-+ "memoffset",
-+ "once_cell",
-+ "scopeguard",
-+]
-+
-+[[package]]
-+name = "crossbeam-utils"
-+version = "0.8.11"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "51887d4adc7b564537b15adcfb307936f8075dfcd5f00dde9a9f1d29383682bc"
-+dependencies = [
-+ "cfg-if",
-+ "once_cell",
-+]
-+
-+[[package]]
-+name = "curl"
-+version = "0.4.44"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "509bd11746c7ac09ebd19f0b17782eae80aadee26237658a6b4808afb5c11a22"
-+dependencies = [
-+ "curl-sys",
-+ "libc",
-+ "openssl-probe",
-+ "openssl-sys",
-+ "schannel",
-+ "socket2",
-+ "winapi",
-+]
-+
-+[[package]]
-+name = "curl-sys"
-+version = "0.4.56+curl-7.83.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "6093e169dd4de29e468fa649fbae11cdcd5551c81fe5bf1b0677adad7ef3d26f"
-+dependencies = [
-+ "cc",
-+ "libc",
-+ "libnghttp2-sys",
-+ "libz-sys",
-+ "openssl-sys",
-+ "pkg-config",
-+ "vcpkg",
-+ "winapi",
-+]
-+
-+[[package]]
-+name = "dbus"
-+version = "0.6.5"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "48b5f0f36f1eebe901b0e6bee369a77ed3396334bf3f09abd46454a576f71819"
-+dependencies = [
-+ "libc",
-+ "libdbus-sys",
-+]
-+
-+[[package]]
-+name = "deflate"
-+version = "1.0.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "c86f7e25f518f4b81808a2cf1c50996a61f5c2eb394b2393bd87f2a4780a432f"
-+dependencies = [
-+ "adler32",
-+]
-+
-+[[package]]
-+name = "either"
-+version = "1.7.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "3f107b87b6afc2a64fd13cac55fe06d6c8859f12d4b14cbcdd2c67d0976781be"
-+
-+[[package]]
-+name = "encoding_rs"
-+version = "0.8.31"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b"
-+dependencies = [
-+ "cfg-if",
-+]
-+
-+[[package]]
-+name = "event-listener"
-+version = "2.5.3"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
-+
-+[[package]]
-+name = "exr"
-+version = "1.4.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "14cc0e06fb5f67e5d6beadf3a382fec9baca1aa751c6d5368fdeee7e5932c215"
-+dependencies = [
-+ "bit_field",
-+ "deflate",
-+ "flume",
-+ "half",
-+ "inflate",
-+ "lebe",
-+ "smallvec",
-+ "threadpool",
-+]
-+
-+[[package]]
-+name = "fastrand"
-+version = "1.8.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499"
-+dependencies = [
-+ "instant",
-+]
-+
-+[[package]]
-+name = "field-offset"
-+version = "0.3.4"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "1e1c54951450cbd39f3dbcf1005ac413b49487dabf18a720ad2383eccfeffb92"
-+dependencies = [
-+ "memoffset",
-+ "rustc_version",
-+]
-+
-+[[package]]
-+name = "flate2"
-+version = "1.0.24"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6"
-+dependencies = [
-+ "crc32fast",
-+ "miniz_oxide",
-+]
-+
-+[[package]]
-+name = "flume"
-+version = "0.10.14"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577"
-+dependencies = [
-+ "futures-core",
-+ "futures-sink",
-+ "nanorand",
-+ "pin-project",
-+ "spin",
-+]
-+
-+[[package]]
-+name = "fnv"
-+version = "1.0.7"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
-+
-+[[package]]
-+name = "foreign-types"
-+version = "0.3.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
-+dependencies = [
-+ "foreign-types-shared",
-+]
-+
-+[[package]]
-+name = "foreign-types-shared"
-+version = "0.1.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
-+
-+[[package]]
-+name = "form_urlencoded"
-+version = "1.0.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191"
-+dependencies = [
-+ "matches",
-+ "percent-encoding",
-+]
-+
-+[[package]]
-+name = "fragile"
-+version = "1.2.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "85dcb89d2b10c5f6133de2efd8c11959ce9dbb46a2f7a4cab208c4eeda6ce1ab"
-+
-+[[package]]
-+name = "futures-channel"
-+version = "0.3.21"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010"
-+dependencies = [
-+ "futures-core",
-+]
-+
-+[[package]]
-+name = "futures-core"
-+version = "0.3.21"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3"
-+
-+[[package]]
-+name = "futures-executor"
-+version = "0.3.21"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6"
-+dependencies = [
-+ "futures-core",
-+ "futures-task",
-+ "futures-util",
-+]
-+
-+[[package]]
-+name = "futures-io"
-+version = "0.3.21"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b"
-+
-+[[package]]
-+name = "futures-lite"
-+version = "1.12.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48"
-+dependencies = [
-+ "fastrand",
-+ "futures-core",
-+ "futures-io",
-+ "memchr",
-+ "parking",
-+ "pin-project-lite",
-+ "waker-fn",
-+]
-+
-+[[package]]
-+name = "futures-sink"
-+version = "0.3.21"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868"
-+
-+[[package]]
-+name = "futures-task"
-+version = "0.3.21"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a"
-+
-+[[package]]
-+name = "futures-util"
-+version = "0.3.21"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a"
-+dependencies = [
-+ "futures-core",
-+ "futures-task",
-+ "pin-project-lite",
-+ "pin-utils",
-+ "slab",
-+]
-+
-+[[package]]
-+name = "gdk-pixbuf"
-+version = "0.15.11"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "ad38dd9cc8b099cceecdf41375bb6d481b1b5a7cd5cd603e10a69a9383f8619a"
-+dependencies = [
-+ "bitflags",
-+ "gdk-pixbuf-sys",
-+ "gio",
-+ "glib",
-+ "libc",
-+]
-+
-+[[package]]
-+name = "gdk-pixbuf-sys"
-+version = "0.15.10"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "140b2f5378256527150350a8346dbdb08fadc13453a7a2d73aecd5fab3c402a7"
-+dependencies = [
-+ "gio-sys",
-+ "glib-sys",
-+ "gobject-sys",
-+ "libc",
-+ "system-deps",
-+]
-+
-+[[package]]
-+name = "gdk4"
-+version = "0.4.8"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "4fabb7cf843c26b085a5d68abb95d0c0bf27a9ae2eeff9c4adb503a1eb580876"
-+dependencies = [
-+ "bitflags",
-+ "cairo-rs",
-+ "gdk-pixbuf",
-+ "gdk4-sys",
-+ "gio",
-+ "glib",
-+ "libc",
-+ "pango",
-+]
-+
-+[[package]]
-+name = "gdk4-sys"
-+version = "0.4.8"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "efe7dcb44f5c00aeabff3f69abfc5673de46559070f89bd3fbb7b66485d9cef2"
-+dependencies = [
-+ "cairo-sys-rs",
-+ "gdk-pixbuf-sys",
-+ "gio-sys",
-+ "glib-sys",
-+ "gobject-sys",
-+ "libc",
-+ "pango-sys",
-+ "pkg-config",
-+ "system-deps",
-+]
-+
-+[[package]]
-+name = "getrandom"
-+version = "0.2.7"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6"
-+dependencies = [
-+ "cfg-if",
-+ "js-sys",
-+ "libc",
-+ "wasi",
-+ "wasm-bindgen",
-+]
-+
-+[[package]]
-+name = "gettext-rs"
-+version = "0.7.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "e49ea8a8fad198aaa1f9655a2524b64b70eb06b2f3ff37da407566c93054f364"
-+dependencies = [
-+ "gettext-sys",
-+ "locale_config",
-+]
-+
-+[[package]]
-+name = "gettext-sys"
-+version = "0.21.3"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "c63ce2e00f56a206778276704bbe38564c8695249fdc8f354b4ef71c57c3839d"
-+dependencies = [
-+ "cc",
-+ "temp-dir",
-+]
-+
-+[[package]]
-+name = "gif"
-+version = "0.11.4"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "3edd93c6756b4dfaf2709eafcc345ba2636565295c198a9cfbf75fa5e3e00b06"
-+dependencies = [
-+ "color_quant",
-+ "weezl",
-+]
-+
-+[[package]]
-+name = "gio"
-+version = "0.15.12"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "68fdbc90312d462781a395f7a16d96a2b379bb6ef8cd6310a2df272771c4283b"
-+dependencies = [
-+ "bitflags",
-+ "futures-channel",
-+ "futures-core",
-+ "futures-io",
-+ "gio-sys",
-+ "glib",
-+ "libc",
-+ "once_cell",
-+ "thiserror",
-+]
-+
-+[[package]]
-+name = "gio-sys"
-+version = "0.15.10"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d"
-+dependencies = [
-+ "glib-sys",
-+ "gobject-sys",
-+ "libc",
-+ "system-deps",
-+ "winapi",
-+]
-+
-+[[package]]
-+name = "glib"
-+version = "0.15.12"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "edb0306fbad0ab5428b0ca674a23893db909a98582969c9b537be4ced78c505d"
-+dependencies = [
-+ "bitflags",
-+ "futures-channel",
-+ "futures-core",
-+ "futures-executor",
-+ "futures-task",
-+ "glib-macros",
-+ "glib-sys",
-+ "gobject-sys",
-+ "libc",
-+ "once_cell",
-+ "smallvec",
-+ "thiserror",
-+]
-+
-+[[package]]
-+name = "glib-macros"
-+version = "0.15.11"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "25a68131a662b04931e71891fb14aaf65ee4b44d08e8abc10f49e77418c86c64"
-+dependencies = [
-+ "anyhow",
-+ "heck",
-+ "proc-macro-crate",
-+ "proc-macro-error",
-+ "proc-macro2",
-+ "quote",
-+ "syn",
-+]
-+
-+[[package]]
-+name = "glib-sys"
-+version = "0.15.10"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4"
-+dependencies = [
-+ "libc",
-+ "system-deps",
-+]
-+
-+[[package]]
-+name = "gobject-sys"
-+version = "0.15.10"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a"
-+dependencies = [
-+ "glib-sys",
-+ "libc",
-+ "system-deps",
-+]
-+
-+[[package]]
-+name = "graphene-rs"
-+version = "0.15.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "7c54f9fbbeefdb62c99f892dfca35f83991e2cb5b46a8dc2a715e58612f85570"
-+dependencies = [
-+ "glib",
-+ "graphene-sys",
-+ "libc",
-+]
-+
-+[[package]]
-+name = "graphene-sys"
-+version = "0.15.10"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "fa691fc7337ba1df599afb55c3bcb85c04f1b3f17362570e9bb0ff0d1bc3028a"
-+dependencies = [
-+ "glib-sys",
-+ "libc",
-+ "pkg-config",
-+ "system-deps",
-+]
-+
-+[[package]]
-+name = "gsk4"
-+version = "0.4.8"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "05e9020d333280b3aa38d496495bfa9b50712eebf1ad63f0ec5bcddb5eb61be4"
-+dependencies = [
-+ "bitflags",
-+ "cairo-rs",
-+ "gdk4",
-+ "glib",
-+ "graphene-rs",
-+ "gsk4-sys",
-+ "libc",
-+ "pango",
-+]
-+
-+[[package]]
-+name = "gsk4-sys"
-+version = "0.4.8"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "7add39ccf60078508c838643a2dcc91f045c46ed63b5ea6ab701b2e25bda3fea"
-+dependencies = [
-+ "cairo-sys-rs",
-+ "gdk4-sys",
-+ "glib-sys",
-+ "gobject-sys",
-+ "graphene-sys",
-+ "libc",
-+ "pango-sys",
-+ "system-deps",
-+]
-+
-+[[package]]
-+name = "gstreamer"
-+version = "0.18.8"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "d66363bacf5e4f6eb281564adc2902e44c52ae5c45082423e7439e9012b75456"
-+dependencies = [
-+ "bitflags",
-+ "cfg-if",
-+ "futures-channel",
-+ "futures-core",
-+ "futures-util",
-+ "glib",
-+ "gstreamer-sys",
-+ "libc",
-+ "muldiv",
-+ "num-integer",
-+ "num-rational",
-+ "once_cell",
-+ "option-operations",
-+ "paste",
-+ "pretty-hex",
-+ "thiserror",
-+]
-+
-+[[package]]
-+name = "gstreamer-base"
-+version = "0.18.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "224f35f36582407caf58ded74854526beeecc23d0cf64b8d1c3e00584ed6863f"
-+dependencies = [
-+ "bitflags",
-+ "cfg-if",
-+ "glib",
-+ "gstreamer",
-+ "gstreamer-base-sys",
-+ "libc",
-+]
-+
-+[[package]]
-+name = "gstreamer-base-sys"
-+version = "0.18.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "a083493c3c340e71fa7c66eebda016e9fafc03eb1b4804cf9b2bad61994b078e"
-+dependencies = [
-+ "glib-sys",
-+ "gobject-sys",
-+ "gstreamer-sys",
-+ "libc",
-+ "system-deps",
-+]
-+
-+[[package]]
-+name = "gstreamer-player"
-+version = "0.18.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "5f14ee02352ba73cadebe640bfb33f12fe8d03cbcad816a102d55a0251fb99bb"
-+dependencies = [
-+ "bitflags",
-+ "glib",
-+ "gstreamer",
-+ "gstreamer-player-sys",
-+ "gstreamer-video",
-+ "libc",
-+ "once_cell",
-+]
-+
-+[[package]]
-+name = "gstreamer-player-sys"
-+version = "0.18.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "1f9b674b39a4d0e18710f6e3d2b109f1793d8028ee4e39da3909b55b4529d399"
-+dependencies = [
-+ "glib-sys",
-+ "gobject-sys",
-+ "gstreamer-sys",
-+ "gstreamer-video-sys",
-+ "libc",
-+ "system-deps",
-+]
-+
-+[[package]]
-+name = "gstreamer-sys"
-+version = "0.18.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "e3517a65d3c2e6f8905b456eba5d53bda158d664863aef960b44f651cb7d33e2"
-+dependencies = [
-+ "glib-sys",
-+ "gobject-sys",
-+ "libc",
-+ "system-deps",
-+]
-+
-+[[package]]
-+name = "gstreamer-video"
-+version = "0.18.7"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "9418adfc72dafa1ad9eb106527ce4804887d101027c4528ec28c7d29cc899519"
-+dependencies = [
-+ "bitflags",
-+ "cfg-if",
-+ "futures-channel",
-+ "glib",
-+ "gstreamer",
-+ "gstreamer-base",
-+ "gstreamer-video-sys",
-+ "libc",
-+ "once_cell",
-+]
-+
-+[[package]]
-+name = "gstreamer-video-sys"
-+version = "0.18.3"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "33331b1675e73b5b000c796354278eca7fdde9327015971d9f41afe28b96e0dc"
-+dependencies = [
-+ "glib-sys",
-+ "gobject-sys",
-+ "gstreamer-base-sys",
-+ "gstreamer-sys",
-+ "libc",
-+ "system-deps",
-+]
-+
-+[[package]]
-+name = "gtk4"
-+version = "0.4.8"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "c64f0c2a3d80e899dc3febddad5bac193ffcf74a0fd7e31037f30dd34d6f7396"
-+dependencies = [
-+ "bitflags",
-+ "cairo-rs",
-+ "field-offset",
-+ "futures-channel",
-+ "gdk-pixbuf",
-+ "gdk4",
-+ "gio",
-+ "glib",
-+ "graphene-rs",
-+ "gsk4",
-+ "gtk4-macros",
-+ "gtk4-sys",
-+ "libc",
-+ "once_cell",
-+ "pango",
-+]
-+
-+[[package]]
-+name = "gtk4-macros"
-+version = "0.4.8"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "fafbcc920af4eb677d7d164853e7040b9de5a22379c596f570190c675d45f7a7"
-+dependencies = [
-+ "anyhow",
-+ "proc-macro-crate",
-+ "proc-macro-error",
-+ "proc-macro2",
-+ "quick-xml",
-+ "quote",
-+ "syn",
-+]
-+
-+[[package]]
-+name = "gtk4-sys"
-+version = "0.4.8"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "5bc8006eea634b7c72da3ff79e24606e45f21b3b832a3c5a1f543f5f97eb0f63"
-+dependencies = [
-+ "cairo-sys-rs",
-+ "gdk-pixbuf-sys",
-+ "gdk4-sys",
-+ "gio-sys",
-+ "glib-sys",
-+ "gobject-sys",
-+ "graphene-sys",
-+ "gsk4-sys",
-+ "libc",
-+ "pango-sys",
-+ "system-deps",
-+]
-+
-+[[package]]
-+name = "half"
-+version = "1.8.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
-+
-+[[package]]
-+name = "heck"
-+version = "0.4.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9"
-+
-+[[package]]
-+name = "hermit-abi"
-+version = "0.1.19"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
-+dependencies = [
-+ "libc",
-+]
-+
-+[[package]]
-+name = "hex"
-+version = "0.4.3"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
-+
-+[[package]]
-+name = "html-escape"
-+version = "0.2.11"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "b8e7479fa1ef38eb49fb6a42c426be515df2d063f06cb8efd3e50af073dbc26c"
-+dependencies = [
-+ "utf8-width",
-+]
-+
-+[[package]]
-+name = "http"
-+version = "0.2.8"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399"
-+dependencies = [
-+ "bytes",
-+ "fnv",
-+ "itoa",
-+]
-+
-+[[package]]
-+name = "httpdate"
-+version = "1.0.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421"
-+
-+[[package]]
-+name = "idna"
-+version = "0.2.3"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8"
-+dependencies = [
-+ "matches",
-+ "unicode-bidi",
-+ "unicode-normalization",
-+]
-+
-+[[package]]
-+name = "image"
-+version = "0.24.3"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "7e30ca2ecf7666107ff827a8e481de6a132a9b687ed3bb20bb1c144a36c00964"
-+dependencies = [
-+ "bytemuck",
-+ "byteorder",
-+ "color_quant",
-+ "exr",
-+ "gif",
-+ "jpeg-decoder",
-+ "num-rational",
-+ "num-traits",
-+ "png",
-+ "scoped_threadpool",
-+ "tiff",
-+]
-+
-+[[package]]
-+name = "inflate"
-+version = "0.4.5"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "1cdb29978cc5797bd8dcc8e5bf7de604891df2a8dc576973d71a281e916db2ff"
-+dependencies = [
-+ "adler32",
-+]
-+
-+[[package]]
-+name = "instant"
-+version = "0.1.12"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
-+dependencies = [
-+ "cfg-if",
-+]
-+
-+[[package]]
-+name = "isahc"
-+version = "1.7.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "334e04b4d781f436dc315cb1e7515bd96826426345d498149e4bde36b67f8ee9"
-+dependencies = [
-+ "async-channel",
-+ "castaway",
-+ "crossbeam-utils",
-+ "curl",
-+ "curl-sys",
-+ "encoding_rs",
-+ "event-listener",
-+ "futures-lite",
-+ "http",
-+ "httpdate",
-+ "log",
-+ "mime",
-+ "once_cell",
-+ "polling",
-+ "slab",
-+ "sluice",
-+ "tracing",
-+ "tracing-futures",
-+ "url",
-+ "waker-fn",
-+]
-+
-+[[package]]
-+name = "itoa"
-+version = "1.0.3"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754"
-+
-+[[package]]
-+name = "jpeg-decoder"
-+version = "0.2.6"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "9478aa10f73e7528198d75109c8be5cd7d15fb530238040148d5f9a22d4c5b3b"
-+dependencies = [
-+ "rayon",
-+]
-+
-+[[package]]
-+name = "js-sys"
-+version = "0.3.59"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "258451ab10b34f8af53416d1fdab72c22e805f0c92a1136d59470ec0b11138b2"
-+dependencies = [
-+ "wasm-bindgen",
-+]
-+
-+[[package]]
-+name = "lazy_static"
-+version = "1.4.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
-+
-+[[package]]
-+name = "lebe"
-+version = "0.5.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "7efd1d698db0759e6ef11a7cd44407407399a910c774dd804c64c032da7826ff"
-+
-+[[package]]
-+name = "libadwaita"
-+version = "0.1.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "f2ae453d28e3b91f03749f02b1531e8cfe315a1d0762b77a61797d2ab80bb87d"
-+dependencies = [
-+ "gdk-pixbuf",
-+ "gdk4",
-+ "gio",
-+ "glib",
-+ "gtk4",
-+ "libadwaita-sys",
-+ "libc",
-+ "once_cell",
-+ "pango",
-+]
-+
-+[[package]]
-+name = "libadwaita-sys"
-+version = "0.1.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "f18b6ac4cadd252a89f5cba0a5a4e99836131795d6fad37b859ac79e8cb7d2c8"
-+dependencies = [
-+ "gdk4-sys",
-+ "gio-sys",
-+ "glib-sys",
-+ "gobject-sys",
-+ "gtk4-sys",
-+ "libc",
-+ "system-deps",
-+]
-+
-+[[package]]
-+name = "libc"
-+version = "0.2.127"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "505e71a4706fa491e9b1b55f51b95d4037d0821ee40131190475f692b35b009b"
-+
-+[[package]]
-+name = "libdbus-sys"
-+version = "0.2.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "c185b5b7ad900923ef3a8ff594083d4d9b5aea80bb4f32b8342363138c0d456b"
-+dependencies = [
-+ "pkg-config",
-+]
-+
-+[[package]]
-+name = "libnghttp2-sys"
-+version = "0.1.7+1.45.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "57ed28aba195b38d5ff02b9170cbff627e336a20925e43b4945390401c5dc93f"
-+dependencies = [
-+ "cc",
-+ "libc",
-+]
-+
-+[[package]]
-+name = "libz-sys"
-+version = "1.1.8"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbf"
-+dependencies = [
-+ "cc",
-+ "libc",
-+ "pkg-config",
-+ "vcpkg",
-+]
-+
-+[[package]]
-+name = "locale_config"
-+version = "0.3.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "08d2c35b16f4483f6c26f0e4e9550717a2f6575bcd6f12a53ff0c490a94a6934"
-+dependencies = [
-+ "lazy_static",
-+ "objc",
-+ "objc-foundation",
-+ "regex",
-+ "winapi",
-+]
-+
-+[[package]]
-+name = "lock_api"
-+version = "0.4.7"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53"
-+dependencies = [
-+ "autocfg",
-+ "scopeguard",
-+]
-+
-+[[package]]
-+name = "log"
-+version = "0.4.17"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
-+dependencies = [
-+ "cfg-if",
-+]
-+
-+[[package]]
-+name = "malloc_buf"
-+version = "0.0.6"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb"
-+dependencies = [
-+ "libc",
-+]
-+
-+[[package]]
-+name = "matches"
-+version = "0.1.9"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f"
-+
-+[[package]]
-+name = "memchr"
-+version = "2.5.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
-+
-+[[package]]
-+name = "memoffset"
-+version = "0.6.5"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
-+dependencies = [
-+ "autocfg",
-+]
-+
-+[[package]]
-+name = "mime"
-+version = "0.3.16"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d"
-+
-+[[package]]
-+name = "miniz_oxide"
-+version = "0.5.3"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc"
-+dependencies = [
-+ "adler",
-+]
-+
-+[[package]]
-+name = "mpris-player"
-+version = "0.6.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "be832ec9171fdaf43609d02bb552f4129ba6eacd184bb25186e2906dbd3cf098"
-+dependencies = [
-+ "dbus",
-+ "glib",
-+]
-+
-+[[package]]
-+name = "muldiv"
-+version = "1.0.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "b5136edda114182728ccdedb9f5eda882781f35fa6e80cc360af12a8932507f3"
-+
-+[[package]]
-+name = "nanorand"
-+version = "0.7.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3"
-+dependencies = [
-+ "getrandom",
-+]
-+
-+[[package]]
-+name = "netease-cloud-music-api"
-+version = "1.0.0"
-+source = "git+https://github.com/gmg137/netease-cloud-music-api.git#56c64c6d96ee36c716ac02f145a635456746ad54"
-+dependencies = [
-+ "anyhow",
-+ "base64",
-+ "hex",
-+ "isahc",
-+ "lazy_static",
-+ "openssl",
-+ "rand",
-+ "regex",
-+ "serde",
-+ "serde_json",
-+ "urlqstring",
-+]
-+
-+[[package]]
-+name = "netease-cloud-music-gtk4"
-+version = "2.0.1"
-+dependencies = [
-+ "anyhow",
-+ "fastrand",
-+ "fragile",
-+ "gettext-rs",
-+ "gstreamer",
-+ "gstreamer-player",
-+ "gtk4",
-+ "libadwaita",
-+ "mpris-player",
-+ "netease-cloud-music-api",
-+ "once_cell",
-+ "qrcode-generator",
-+ "regex",
-+]
-+
-+[[package]]
-+name = "num-integer"
-+version = "0.1.45"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
-+dependencies = [
-+ "autocfg",
-+ "num-traits",
-+]
-+
-+[[package]]
-+name = "num-rational"
-+version = "0.4.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
-+dependencies = [
-+ "autocfg",
-+ "num-integer",
-+ "num-traits",
-+]
-+
-+[[package]]
-+name = "num-traits"
-+version = "0.2.15"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
-+dependencies = [
-+ "autocfg",
-+]
-+
-+[[package]]
-+name = "num_cpus"
-+version = "1.13.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1"
-+dependencies = [
-+ "hermit-abi",
-+ "libc",
-+]
-+
-+[[package]]
-+name = "objc"
-+version = "0.2.7"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1"
-+dependencies = [
-+ "malloc_buf",
-+]
-+
-+[[package]]
-+name = "objc-foundation"
-+version = "0.1.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9"
-+dependencies = [
-+ "block",
-+ "objc",
-+ "objc_id",
-+]
-+
-+[[package]]
-+name = "objc_id"
-+version = "0.1.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b"
-+dependencies = [
-+ "objc",
-+]
-+
-+[[package]]
-+name = "once_cell"
-+version = "1.13.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1"
-+
-+[[package]]
-+name = "openssl"
-+version = "0.10.41"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "618febf65336490dfcf20b73f885f5651a0c89c64c2d4a8c3662585a70bf5bd0"
-+dependencies = [
-+ "bitflags",
-+ "cfg-if",
-+ "foreign-types",
-+ "libc",
-+ "once_cell",
-+ "openssl-macros",
-+ "openssl-sys",
-+]
-+
-+[[package]]
-+name = "openssl-macros"
-+version = "0.1.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c"
-+dependencies = [
-+ "proc-macro2",
-+ "quote",
-+ "syn",
-+]
-+
-+[[package]]
-+name = "openssl-probe"
-+version = "0.1.5"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
-+
-+[[package]]
-+name = "openssl-sys"
-+version = "0.9.75"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "e5f9bd0c2710541a3cda73d6f9ac4f1b240de4ae261065d309dbe73d9dceb42f"
-+dependencies = [
-+ "autocfg",
-+ "cc",
-+ "libc",
-+ "pkg-config",
-+ "vcpkg",
-+]
-+
-+[[package]]
-+name = "option-operations"
-+version = "0.4.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "42b01597916c91a493b1e8a2fde64fec1764be3259abc1f06efc99c274f150a2"
-+dependencies = [
-+ "paste",
-+]
-+
-+[[package]]
-+name = "pango"
-+version = "0.15.10"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "22e4045548659aee5313bde6c582b0d83a627b7904dd20dc2d9ef0895d414e4f"
-+dependencies = [
-+ "bitflags",
-+ "glib",
-+ "libc",
-+ "once_cell",
-+ "pango-sys",
-+]
-+
-+[[package]]
-+name = "pango-sys"
-+version = "0.15.10"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa"
-+dependencies = [
-+ "glib-sys",
-+ "gobject-sys",
-+ "libc",
-+ "system-deps",
-+]
-+
-+[[package]]
-+name = "parking"
-+version = "2.0.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72"
-+
-+[[package]]
-+name = "paste"
-+version = "1.0.8"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "9423e2b32f7a043629287a536f21951e8c6a82482d0acb1eeebfc90bc2225b22"
-+
-+[[package]]
-+name = "percent-encoding"
-+version = "2.1.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
-+
-+[[package]]
-+name = "pest"
-+version = "2.2.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "69486e2b8c2d2aeb9762db7b4e00b0331156393555cff467f4163ff06821eef8"
-+dependencies = [
-+ "thiserror",
-+ "ucd-trie",
-+]
-+
-+[[package]]
-+name = "pin-project"
-+version = "1.0.11"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "78203e83c48cffbe01e4a2d35d566ca4de445d79a85372fc64e378bfc812a260"
-+dependencies = [
-+ "pin-project-internal",
-+]
-+
-+[[package]]
-+name = "pin-project-internal"
-+version = "1.0.11"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "710faf75e1b33345361201d36d04e98ac1ed8909151a017ed384700836104c74"
-+dependencies = [
-+ "proc-macro2",
-+ "quote",
-+ "syn",
-+]
-+
-+[[package]]
-+name = "pin-project-lite"
-+version = "0.2.9"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
-+
-+[[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.25"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae"
-+
-+[[package]]
-+name = "png"
-+version = "0.17.5"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "dc38c0ad57efb786dd57b9864e5b18bae478c00c824dc55a38bbc9da95dde3ba"
-+dependencies = [
-+ "bitflags",
-+ "crc32fast",
-+ "deflate",
-+ "miniz_oxide",
-+]
-+
-+[[package]]
-+name = "polling"
-+version = "2.2.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "685404d509889fade3e86fe3a5803bca2ec09b0c0778d5ada6ec8bf7a8de5259"
-+dependencies = [
-+ "cfg-if",
-+ "libc",
-+ "log",
-+ "wepoll-ffi",
-+ "winapi",
-+]
-+
-+[[package]]
-+name = "ppv-lite86"
-+version = "0.2.16"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872"
-+
-+[[package]]
-+name = "pretty-hex"
-+version = "0.3.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "c6fa0831dd7cc608c38a5e323422a0077678fa5744aa2be4ad91c4ece8eec8d5"
-+
-+[[package]]
-+name = "proc-macro-crate"
-+version = "1.2.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "26d50bfb8c23f23915855a00d98b5a35ef2e0b871bb52937bacadb798fbb66c8"
-+dependencies = [
-+ "once_cell",
-+ "thiserror",
-+ "toml",
-+]
-+
-+[[package]]
-+name = "proc-macro-error"
-+version = "1.0.4"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
-+dependencies = [
-+ "proc-macro-error-attr",
-+ "proc-macro2",
-+ "quote",
-+ "syn",
-+ "version_check",
-+]
-+
-+[[package]]
-+name = "proc-macro-error-attr"
-+version = "1.0.4"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
-+dependencies = [
-+ "proc-macro2",
-+ "quote",
-+ "version_check",
-+]
-+
-+[[package]]
-+name = "proc-macro2"
-+version = "1.0.43"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab"
-+dependencies = [
-+ "unicode-ident",
-+]
-+
-+[[package]]
-+name = "qrcode-generator"
-+version = "4.1.6"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "501c33c9127afb867693646b38817bf63a9a756d4b66aefbc5c0d7e5e8c3125a"
-+dependencies = [
-+ "html-escape",
-+ "image",
-+ "qrcodegen",
-+]
-+
-+[[package]]
-+name = "qrcodegen"
-+version = "1.8.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "4339fc7a1021c9c1621d87f5e3505f2805c8c105420ba2f2a4df86814590c142"
-+
-+[[package]]
-+name = "quick-xml"
-+version = "0.22.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "8533f14c8382aaad0d592c812ac3b826162128b65662331e1127b45c3d18536b"
-+dependencies = [
-+ "memchr",
-+]
-+
-+[[package]]
-+name = "quote"
-+version = "1.0.21"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
-+dependencies = [
-+ "proc-macro2",
-+]
-+
-+[[package]]
-+name = "rand"
-+version = "0.8.5"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
-+dependencies = [
-+ "libc",
-+ "rand_chacha",
-+ "rand_core",
-+]
-+
-+[[package]]
-+name = "rand_chacha"
-+version = "0.3.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
-+dependencies = [
-+ "ppv-lite86",
-+ "rand_core",
-+]
-+
-+[[package]]
-+name = "rand_core"
-+version = "0.6.3"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
-+dependencies = [
-+ "getrandom",
-+]
-+
-+[[package]]
-+name = "rayon"
-+version = "1.5.3"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d"
-+dependencies = [
-+ "autocfg",
-+ "crossbeam-deque",
-+ "either",
-+ "rayon-core",
-+]
-+
-+[[package]]
-+name = "rayon-core"
-+version = "1.9.3"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f"
-+dependencies = [
-+ "crossbeam-channel",
-+ "crossbeam-deque",
-+ "crossbeam-utils",
-+ "num_cpus",
-+]
-+
-+[[package]]
-+name = "regex"
-+version = "1.6.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b"
-+dependencies = [
-+ "aho-corasick",
-+ "memchr",
-+ "regex-syntax",
-+]
-+
-+[[package]]
-+name = "regex-syntax"
-+version = "0.6.27"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
-+
-+[[package]]
-+name = "rustc_version"
-+version = "0.3.3"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee"
-+dependencies = [
-+ "semver",
-+]
-+
-+[[package]]
-+name = "ryu"
-+version = "1.0.11"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09"
-+
-+[[package]]
-+name = "schannel"
-+version = "0.1.20"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2"
-+dependencies = [
-+ "lazy_static",
-+ "windows-sys",
-+]
-+
-+[[package]]
-+name = "scoped_threadpool"
-+version = "0.1.9"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8"
-+
-+[[package]]
-+name = "scopeguard"
-+version = "1.1.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
-+
-+[[package]]
-+name = "semver"
-+version = "0.11.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6"
-+dependencies = [
-+ "semver-parser",
-+]
-+
-+[[package]]
-+name = "semver-parser"
-+version = "0.10.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7"
-+dependencies = [
-+ "pest",
-+]
-+
-+[[package]]
-+name = "serde"
-+version = "1.0.142"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "e590c437916fb6b221e1d00df6e3294f3fccd70ca7e92541c475d6ed6ef5fee2"
-+dependencies = [
-+ "serde_derive",
-+]
-+
-+[[package]]
-+name = "serde_derive"
-+version = "1.0.142"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "34b5b8d809babe02f538c2cfec6f2c1ed10804c0e5a6a041a049a4f5588ccc2e"
-+dependencies = [
-+ "proc-macro2",
-+ "quote",
-+ "syn",
-+]
-+
-+[[package]]
-+name = "serde_json"
-+version = "1.0.83"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "38dd04e3c8279e75b31ef29dbdceebfe5ad89f4d0937213c53f7d49d01b3d5a7"
-+dependencies = [
-+ "itoa",
-+ "ryu",
-+ "serde",
-+]
-+
-+[[package]]
-+name = "slab"
-+version = "0.4.7"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef"
-+dependencies = [
-+ "autocfg",
-+]
-+
-+[[package]]
-+name = "sluice"
-+version = "0.5.5"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "6d7400c0eff44aa2fcb5e31a5f24ba9716ed90138769e4977a2ba6014ae63eb5"
-+dependencies = [
-+ "async-channel",
-+ "futures-core",
-+ "futures-io",
-+]
-+
-+[[package]]
-+name = "smallvec"
-+version = "1.9.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1"
-+
-+[[package]]
-+name = "socket2"
-+version = "0.4.4"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0"
-+dependencies = [
-+ "libc",
-+ "winapi",
-+]
-+
-+[[package]]
-+name = "spin"
-+version = "0.9.4"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "7f6002a767bff9e83f8eeecf883ecb8011875a21ae8da43bffb817a57e78cc09"
-+dependencies = [
-+ "lock_api",
-+]
-+
-+[[package]]
-+name = "syn"
-+version = "1.0.99"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "58dbef6ec655055e20b86b15a8cc6d439cca19b667537ac6a1369572d151ab13"
-+dependencies = [
-+ "proc-macro2",
-+ "quote",
-+ "unicode-ident",
-+]
-+
-+[[package]]
-+name = "system-deps"
-+version = "6.0.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "a1a45a1c4c9015217e12347f2a411b57ce2c4fc543913b14b6fe40483328e709"
-+dependencies = [
-+ "cfg-expr",
-+ "heck",
-+ "pkg-config",
-+ "toml",
-+ "version-compare",
-+]
-+
-+[[package]]
-+name = "temp-dir"
-+version = "0.1.11"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "af547b166dd1ea4b472165569fc456cfb6818116f854690b0ff205e636523dab"
-+
-+[[package]]
-+name = "thiserror"
-+version = "1.0.32"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "f5f6586b7f764adc0231f4c79be7b920e766bb2f3e51b3661cdb263828f19994"
-+dependencies = [
-+ "thiserror-impl",
-+]
-+
-+[[package]]
-+name = "thiserror-impl"
-+version = "1.0.32"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "12bafc5b54507e0149cdf1b145a5d80ab80a90bcd9275df43d4fff68460f6c21"
-+dependencies = [
-+ "proc-macro2",
-+ "quote",
-+ "syn",
-+]
-+
-+[[package]]
-+name = "threadpool"
-+version = "1.8.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa"
-+dependencies = [
-+ "num_cpus",
-+]
-+
-+[[package]]
-+name = "tiff"
-+version = "0.7.3"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "7259662e32d1e219321eb309d5f9d898b779769d81b76e762c07c8e5d38fcb65"
-+dependencies = [
-+ "flate2",
-+ "jpeg-decoder",
-+ "weezl",
-+]
-+
-+[[package]]
-+name = "tinyvec"
-+version = "1.6.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
-+dependencies = [
-+ "tinyvec_macros",
-+]
-+
-+[[package]]
-+name = "tinyvec_macros"
-+version = "0.1.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
-+
-+[[package]]
-+name = "toml"
-+version = "0.5.9"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7"
-+dependencies = [
-+ "serde",
-+]
-+
-+[[package]]
-+name = "tracing"
-+version = "0.1.36"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "2fce9567bd60a67d08a16488756721ba392f24f29006402881e43b19aac64307"
-+dependencies = [
-+ "cfg-if",
-+ "log",
-+ "pin-project-lite",
-+ "tracing-attributes",
-+ "tracing-core",
-+]
-+
-+[[package]]
-+name = "tracing-attributes"
-+version = "0.1.22"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "11c75893af559bc8e10716548bdef5cb2b983f8e637db9d0e15126b61b484ee2"
-+dependencies = [
-+ "proc-macro2",
-+ "quote",
-+ "syn",
-+]
-+
-+[[package]]
-+name = "tracing-core"
-+version = "0.1.29"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "5aeea4303076558a00714b823f9ad67d58a3bbda1df83d8827d21193156e22f7"
-+dependencies = [
-+ "once_cell",
-+]
-+
-+[[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 = "ucd-trie"
-+version = "0.1.4"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "89570599c4fe5585de2b388aab47e99f7fa4e9238a1399f707a02e356058141c"
-+
-+[[package]]
-+name = "unicode-bidi"
-+version = "0.3.8"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992"
-+
-+[[package]]
-+name = "unicode-ident"
-+version = "1.0.3"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "c4f5b37a154999a8f3f98cc23a628d850e154479cd94decf3414696e12e31aaf"
-+
-+[[package]]
-+name = "unicode-normalization"
-+version = "0.1.21"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "854cbdc4f7bc6ae19c820d44abdc3277ac3e1b2b93db20a636825d9322fb60e6"
-+dependencies = [
-+ "tinyvec",
-+]
-+
-+[[package]]
-+name = "url"
-+version = "2.2.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c"
-+dependencies = [
-+ "form_urlencoded",
-+ "idna",
-+ "matches",
-+ "percent-encoding",
-+]
-+
-+[[package]]
-+name = "urlqstring"
-+version = "0.3.5"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "25ef3473a06a065718d8ec7cd7acc6a35fc20f836dee7661ad3b64ea3cc2e0cc"
-+
-+[[package]]
-+name = "utf8-width"
-+version = "0.1.6"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "5190c9442dcdaf0ddd50f37420417d219ae5261bbf5db120d0f9bab996c9cba1"
-+
-+[[package]]
-+name = "vcpkg"
-+version = "0.2.15"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
-+
-+[[package]]
-+name = "version-compare"
-+version = "0.1.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "fe88247b92c1df6b6de80ddc290f3976dbdf2f5f5d3fd049a9fb598c6dd5ca73"
-+
-+[[package]]
-+name = "version_check"
-+version = "0.9.4"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
-+
-+[[package]]
-+name = "waker-fn"
-+version = "1.1.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca"
-+
-+[[package]]
-+name = "wasi"
-+version = "0.11.0+wasi-snapshot-preview1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
-+
-+[[package]]
-+name = "wasm-bindgen"
-+version = "0.2.82"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "fc7652e3f6c4706c8d9cd54832c4a4ccb9b5336e2c3bd154d5cccfbf1c1f5f7d"
-+dependencies = [
-+ "cfg-if",
-+ "wasm-bindgen-macro",
-+]
-+
-+[[package]]
-+name = "wasm-bindgen-backend"
-+version = "0.2.82"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "662cd44805586bd52971b9586b1df85cdbbd9112e4ef4d8f41559c334dc6ac3f"
-+dependencies = [
-+ "bumpalo",
-+ "log",
-+ "once_cell",
-+ "proc-macro2",
-+ "quote",
-+ "syn",
-+ "wasm-bindgen-shared",
-+]
-+
-+[[package]]
-+name = "wasm-bindgen-macro"
-+version = "0.2.82"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "b260f13d3012071dfb1512849c033b1925038373aea48ced3012c09df952c602"
-+dependencies = [
-+ "quote",
-+ "wasm-bindgen-macro-support",
-+]
-+
-+[[package]]
-+name = "wasm-bindgen-macro-support"
-+version = "0.2.82"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "5be8e654bdd9b79216c2929ab90721aa82faf65c48cdf08bdc4e7f51357b80da"
-+dependencies = [
-+ "proc-macro2",
-+ "quote",
-+ "syn",
-+ "wasm-bindgen-backend",
-+ "wasm-bindgen-shared",
-+]
-+
-+[[package]]
-+name = "wasm-bindgen-shared"
-+version = "0.2.82"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "6598dd0bd3c7d51095ff6531a5b23e02acdc81804e30d8f07afb77b7215a140a"
-+
-+[[package]]
-+name = "weezl"
-+version = "0.1.7"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb"
-+
-+[[package]]
-+name = "wepoll-ffi"
-+version = "0.1.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "d743fdedc5c64377b5fc2bc036b01c7fd642205a0d96356034ae3404d49eb7fb"
-+dependencies = [
-+ "cc",
-+]
-+
-+[[package]]
-+name = "winapi"
-+version = "0.3.9"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
-+dependencies = [
-+ "winapi-i686-pc-windows-gnu",
-+ "winapi-x86_64-pc-windows-gnu",
-+]
-+
-+[[package]]
-+name = "winapi-i686-pc-windows-gnu"
-+version = "0.4.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
-+
-+[[package]]
-+name = "winapi-x86_64-pc-windows-gnu"
-+version = "0.4.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
-+
-+[[package]]
-+name = "windows-sys"
-+version = "0.36.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2"
-+dependencies = [
-+ "windows_aarch64_msvc",
-+ "windows_i686_gnu",
-+ "windows_i686_msvc",
-+ "windows_x86_64_gnu",
-+ "windows_x86_64_msvc",
-+]
-+
-+[[package]]
-+name = "windows_aarch64_msvc"
-+version = "0.36.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47"
-+
-+[[package]]
-+name = "windows_i686_gnu"
-+version = "0.36.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6"
-+
-+[[package]]
-+name = "windows_i686_msvc"
-+version = "0.36.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024"
-+
-+[[package]]
-+name = "windows_x86_64_gnu"
-+version = "0.36.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1"
-+
-+[[package]]
-+name = "windows_x86_64_msvc"
-+version = "0.36.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680"
diff --git a/nixpkgs/pkgs/applications/audio/netease-cloud-music-gtk/default.nix b/nixpkgs/pkgs/applications/audio/netease-cloud-music-gtk/default.nix
index b854ebb8ce8d..8a83da7ff529 100644
--- a/nixpkgs/pkgs/applications/audio/netease-cloud-music-gtk/default.nix
+++ b/nixpkgs/pkgs/applications/audio/netease-cloud-music-gtk/default.nix
@@ -2,6 +2,7 @@
 , stdenv
 , fetchFromGitHub
 , rustPlatform
+, cargo
 , meson
 , ninja
 , pkg-config
@@ -10,6 +11,7 @@
 , appstream-glib
 , desktop-file-utils
 , libxml2
+, rustc
 , wrapGAppsHook4
 , openssl
 , dbus
@@ -21,20 +23,20 @@
 
 stdenv.mkDerivation rec {
   pname = "netease-cloud-music-gtk";
-  version = "2.0.1";
+  version = "2.0.3";
 
   src = fetchFromGitHub {
     owner = "gmg137";
     repo = pname;
     rev = version;
-    hash = "sha256-dlJZvmfw9+cavAysxVzCekgPdygg5zbU3ZR5BOjPk08=";
+    hash = "sha256-A3mvf6TZ3+aiWA6rg9G5NMaDKvO0VQzwIM1t0MaTpTc=";
   };
 
-  patches = [ ./cargo-lock.patch ];
-
-  cargoDeps = rustPlatform.fetchCargoTarball {
-    inherit src patches;
-    hash = "sha256-mJyjWEBsLhHwJCeZyRdby/K/jse0F9UBwfQxkNtZito=";
+  cargoDeps = rustPlatform.importCargoLock {
+    lockFile = ./Cargo.lock;
+    outputHashes = {
+      "netease-cloud-music-api-1.0.2" = "sha256-7Yp2ZBg5wHnDPtdPLwZQnqcSlVuGCrXpV5M/dp/IaOE=";
+    };
   };
 
   nativeBuildInputs = [
@@ -47,11 +49,10 @@ stdenv.mkDerivation rec {
     desktop-file-utils # update-desktop-database
     libxml2 # xmllint
     wrapGAppsHook4
-  ] ++ (with rustPlatform; [
-    cargoSetupHook
-    rust.cargo
-    rust.rustc
-  ]);
+    rustPlatform.cargoSetupHook
+    cargo
+    rustc
+  ];
 
   buildInputs = [
     openssl
diff --git a/nixpkgs/pkgs/applications/audio/netease-cloud-music-gtk/update-cargo-lock.sh b/nixpkgs/pkgs/applications/audio/netease-cloud-music-gtk/update-cargo-lock.sh
deleted file mode 100755
index ef5b1dcbbc39..000000000000
--- a/nixpkgs/pkgs/applications/audio/netease-cloud-music-gtk/update-cargo-lock.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/env nix-shell
-#!nix-shell -i bash -p coreutils ripgrep git cargo
-
-# Ref: https://github.com/NixOS/nixpkgs/blob/nixos-21.05/pkgs/applications/audio/netease-music-tui/update-cargo-lock.sh
-
-set -eu -vx
-
-here=$PWD
-version=$(rg '^  version = "' default.nix | cut -d '"' -f 2)
-checkout=$(mktemp -d)
-
-git clone -b "$version" --depth=1 https://github.com/gmg137/netease-cloud-music-gtk "$checkout"
-cd "$checkout"
-
-cargo generate-lockfile
-git add -f Cargo.lock
-git diff HEAD -- Cargo.lock > "$here"/cargo-lock.patch
-
-cd "$here"
-rm -rf "$checkout"
diff --git a/nixpkgs/pkgs/applications/audio/netease-music-tui/Cargo.lock b/nixpkgs/pkgs/applications/audio/netease-music-tui/Cargo.lock
new file mode 100644
index 000000000000..471b1a53eae7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/netease-music-tui/Cargo.lock
@@ -0,0 +1,2778 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "addr2line"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b"
+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.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "alsa"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5915f52fe2cf65e83924d037b6c5290b7cee097c6b5c8700746e6168a343fd6b"
+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 = "android_system_properties"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "async-compression"
+version = "0.3.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "942c7cd7ae39e91bde4820d74132e9862e62c2f386c3aa90ccf55949f5bad63a"
+dependencies = [
+ "bytes 0.5.6",
+ "flate2",
+ "futures-core",
+ "memchr",
+ "pin-project-lite 0.2.9",
+]
+
+[[package]]
+name = "autocfg"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+
+[[package]]
+name = "backtrace"
+version = "0.3.66"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cab84319d616cfb654d03394f38ab7e6f0919e181b1b57e1fd15e7fb4077d9a7"
+dependencies = [
+ "addr2line",
+ "cc",
+ "cfg-if 1.0.0",
+ "libc",
+ "miniz_oxide",
+ "object",
+ "rustc-demangle",
+]
+
+[[package]]
+name = "base-x"
+version = "0.2.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270"
+
+[[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.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
+
+[[package]]
+name = "bindgen"
+version = "0.61.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a022e58a142a46fea340d68012b9201c094e93ec3d033a944a24f8fd4a4f09a"
+dependencies = [
+ "bitflags",
+ "cexpr",
+ "clang-sys",
+ "lazy_static 1.4.0",
+ "lazycell",
+ "peeking_take_while",
+ "proc-macro2",
+ "quote",
+ "regex",
+ "rustc-hash",
+ "shlex",
+ "syn",
+]
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "bumpalo"
+version = "3.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba"
+
+[[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.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db"
+
+[[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.76"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76a284da2e6fe2092f2353e51713435363112dfd60030e22add80be333fb928f"
+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.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
+dependencies = [
+ "nom 7.1.1",
+]
+
+[[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.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "16b0a3d9ed01224b22057780a37bb8c5dbfe1be8ba48678e7bf57ec4b385411f"
+dependencies = [
+ "iana-time-zone",
+ "js-sys",
+ "num-integer",
+ "num-traits 0.2.15",
+ "time 0.1.44",
+ "wasm-bindgen",
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "clang-sys"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa2e27ae6ab525c3d369ded447057bca5438d86dc3a68f6faafb8269ba82ebf3"
+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 = "codespan-reporting"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e"
+dependencies = [
+ "termcolor",
+ "unicode-width",
+]
+
+[[package]]
+name = "combine"
+version = "4.6.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4"
+dependencies = [
+ "bytes 1.2.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.147",
+ "serde-hjson",
+ "serde_json",
+ "toml 0.4.10",
+ "yaml-rust",
+]
+
+[[package]]
+name = "const_fn"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbdcdcb6d86f71c5e97409ad45898af11cbc995b4ee8112d59095a28d376c935"
+
+[[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.27",
+ "version_check 0.9.4",
+]
+
+[[package]]
+name = "cookie_store"
+version = "0.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3818dfca4b0cb5211a659bbcbb94225b7127407b2b135e650d717bfb78ab10d3"
+dependencies = [
+ "cookie",
+ "idna 0.2.3",
+ "log",
+ "publicsuffix",
+ "serde 1.0.147",
+ "serde_json",
+ "time 0.2.27",
+ "url",
+]
+
+[[package]]
+name = "core-foundation"
+version = "0.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "core-foundation-sys"
+version = "0.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc"
+
+[[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.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a9444b94b8024feecc29e01a9706c69c1e26bfee480221c90764200cfd778fb"
+dependencies = [
+ "bindgen",
+]
+
+[[package]]
+name = "cpal"
+version = "0.13.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74117836a5124f3629e4b474eed03e479abaf98988b4bb317e29f08cfe0e4116"
+dependencies = [
+ "alsa",
+ "core-foundation-sys",
+ "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.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
+dependencies = [
+ "cfg-if 1.0.0",
+]
+
+[[package]]
+name = "cxx"
+version = "1.0.82"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4a41a86530d0fe7f5d9ea779916b7cadd2d4f9add748b99c2c029cbbdfaf453"
+dependencies = [
+ "cc",
+ "cxxbridge-flags",
+ "cxxbridge-macro",
+ "link-cplusplus",
+]
+
+[[package]]
+name = "cxx-build"
+version = "1.0.82"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06416d667ff3e3ad2df1cd8cd8afae5da26cf9cec4d0825040f88b5ca659a2f0"
+dependencies = [
+ "cc",
+ "codespan-reporting",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "scratch",
+ "syn",
+]
+
+[[package]]
+name = "cxxbridge-flags"
+version = "1.0.82"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "820a9a2af1669deeef27cb271f476ffd196a2c4b6731336011e0ba63e2c7cf71"
+
+[[package]]
+name = "cxxbridge-macro"
+version = "1.0.82"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a08a6e2fcc370a089ad3b4aaf54db3b1b4cee38ddabce5896b33eb693275f470"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "darling"
+version = "0.13.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c"
+dependencies = [
+ "darling_core",
+ "darling_macro",
+]
+
+[[package]]
+name = "darling_core"
+version = "0.13.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610"
+dependencies = [
+ "fnv",
+ "ident_case",
+ "proc-macro2",
+ "quote",
+ "strsim",
+ "syn",
+]
+
+[[package]]
+name = "darling_macro"
+version = "0.13.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835"
+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 = "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.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6"
+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.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797"
+
+[[package]]
+name = "encoding_rs"
+version = "0.8.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b"
+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 = "fastrand"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499"
+dependencies = [
+ "instant",
+]
+
+[[package]]
+name = "flate2"
+version = "1.0.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6"
+dependencies = [
+ "crc32fast",
+ "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.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
+dependencies = [
+ "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.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38390104763dc37a5145a53c29c63c1290b5d316d6086ec32c293f6736051bb0"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-io",
+ "futures-sink",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-channel"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed"
+dependencies = [
+ "futures-core",
+ "futures-sink",
+]
+
+[[package]]
+name = "futures-core"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac"
+
+[[package]]
+name = "futures-executor"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7acc85df6714c176ab5edf386123fafe217be88c0840ec11f199441134a074e2"
+dependencies = [
+ "futures-core",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-io"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb"
+
+[[package]]
+name = "futures-macro"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "futures-sink"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9"
+
+[[package]]
+name = "futures-task"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea"
+
+[[package]]
+name = "futures-util"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-macro",
+ "futures-sink",
+ "futures-task",
+ "memchr",
+ "pin-project-lite 0.2.9",
+ "pin-utils",
+ "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.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
+dependencies = [
+ "cfg-if 1.0.0",
+ "libc",
+ "wasi 0.11.0+wasi-snapshot-preview1",
+]
+
+[[package]]
+name = "gimli"
+version = "0.26.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d"
+
+[[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.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+
+[[package]]
+name = "hermit-abi"
+version = "0.1.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "hex"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
+
+[[package]]
+name = "hound"
+version = "3.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4d13cdbd5dbb29f9c88095bbdc2590c9cba0d0a1269b983fef6b2cdd7e9f4db1"
+
+[[package]]
+name = "http"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399"
+dependencies = [
+ "bytes 1.2.1",
+ "fnv",
+ "itoa 1.0.4",
+]
+
+[[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.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
+
+[[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 0.4.8",
+ "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 = "iana-time-zone"
+version = "0.1.53"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765"
+dependencies = [
+ "android_system_properties",
+ "core-foundation-sys",
+ "iana-time-zone-haiku",
+ "js-sys",
+ "wasm-bindgen",
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "iana-time-zone-haiku"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca"
+dependencies = [
+ "cxx",
+ "cxx-build",
+]
+
+[[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.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8"
+dependencies = [
+ "matches",
+ "unicode-bidi",
+ "unicode-normalization",
+]
+
+[[package]]
+name = "idna"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
+dependencies = [
+ "unicode-bidi",
+ "unicode-normalization",
+]
+
+[[package]]
+name = "indexmap"
+version = "1.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
+dependencies = [
+ "autocfg",
+ "hashbrown",
+]
+
+[[package]]
+name = "instant"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+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.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f88c5561171189e69df9d98bcf18fd5f9558300f7ea7b801eb8a0fd748bd8745"
+
+[[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.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4"
+
+[[package]]
+name = "itoa"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc"
+
+[[package]]
+name = "jni"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c6df18c2e3db7e453d3c6ac5b3e9d5182664d28788126d39b91f2d1e22b017ec"
+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.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "068b1ee6743e4d11fb9c6a1e6064b3693a1b600e7f5f5988047d98b3dc9fb90b"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "js-sys"
+version = "0.3.60"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47"
+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.137"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89"
+
+[[package]]
+name = "libdbus-sys"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c185b5b7ad900923ef3a8ff594083d4d9b5aea80bb4f32b8342363138c0d456b"
+dependencies = [
+ "pkg-config",
+]
+
+[[package]]
+name = "libloading"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f"
+dependencies = [
+ "cfg-if 1.0.0",
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "link-cplusplus"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9272ab7b96c9046fbc5bc56c06c117cb639fe2d509df0c421cad82d2915cf369"
+dependencies = [
+ "cc",
+]
+
+[[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.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
+
+[[package]]
+name = "lock_api"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df"
+dependencies = [
+ "autocfg",
+ "scopeguard",
+]
+
+[[package]]
+name = "log"
+version = "0.4.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
+dependencies = [
+ "cfg-if 1.0.0",
+]
+
+[[package]]
+name = "log-panics"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68f9dd8546191c1850ecf67d22f5ff00a935b890d0e84713159a55495cc2ac5f"
+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.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f"
+
+[[package]]
+name = "memchr"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+
+[[package]]
+name = "memoffset"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
+dependencies = [
+ "autocfg",
+]
+
+[[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.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef"
+dependencies = [
+ "mime",
+ "unicase",
+]
+
+[[package]]
+name = "minimal-lexical"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+
+[[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.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96590ba8f175222643a85693f33d26e9c8a015f599c216509b1a6894af675d34"
+dependencies = [
+ "adler",
+]
+
+[[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.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e"
+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.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2032c77e030ddee34a6787a64166008da93f6a352b629261d0fee232b8742dd4"
+dependencies = [
+ "bitflags",
+ "jni-sys",
+ "ndk-sys",
+ "num_enum",
+ "thiserror",
+]
+
+[[package]]
+name = "ndk-context"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b"
+
+[[package]]
+name = "ndk-glue"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d0c4a7b83860226e6b4183edac21851f05d5a51756e97a1144b7f5a6b63e65f"
+dependencies = [
+ "lazy_static 1.4.0",
+ "libc",
+ "log",
+ "ndk",
+ "ndk-context",
+ "ndk-macro",
+ "ndk-sys",
+]
+
+[[package]]
+name = "ndk-macro"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0df7ac00c4672f9d5aece54ee3347520b7e20f158656c7db2e6de01902eb7a6c"
+dependencies = [
+ "darling",
+ "proc-macro-crate",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "ndk-sys"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e5a6ae77c8ee183dcbbba6150e2e6b9f3f4196a7666c02a715a95692ec1fa97"
+dependencies = [
+ "jni-sys",
+]
+
+[[package]]
+name = "net2"
+version = "0.2.38"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74d0df99cfcd2530b2e694f6e17e7f37b8e26bb23983ac530c0c97408837c631"
+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",
+ "cpal",
+ "dbus",
+ "dirs",
+ "failure",
+ "futures",
+ "hex",
+ "lazy_static 1.4.0",
+ "log",
+ "log-panics",
+ "mp3-duration",
+ "num-bigint",
+ "openssl",
+ "rand",
+ "regex",
+ "reqwest",
+ "rodio",
+ "serde 1.0.147",
+ "serde_derive",
+ "serde_json",
+ "serde_urlencoded 0.6.1",
+ "simple-logging",
+ "tempfile",
+ "termion",
+ "tokio",
+ "tui",
+ "unicode-width",
+]
+
+[[package]]
+name = "nix"
+version = "0.23.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9f866317acbd3a240710c63f065ffb1e4fd466259045ccb504130b7f668f35c6"
+dependencies = [
+ "bitflags",
+ "cc",
+ "cfg-if 1.0.0",
+ "libc",
+ "memoffset",
+]
+
+[[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 = "7.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36"
+dependencies = [
+ "memchr",
+ "minimal-lexical",
+]
+
+[[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.15",
+]
+
+[[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.45"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
+dependencies = [
+ "autocfg",
+ "num-traits 0.2.15",
+]
+
+[[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.15",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "num_cpus"
+version = "1.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6058e64324c71e02bc2b150e4f3bc8286db6c83092132ffa3f6b1eab0f9def5"
+dependencies = [
+ "hermit-abi",
+ "libc",
+]
+
+[[package]]
+name = "num_enum"
+version = "0.5.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9"
+dependencies = [
+ "num_enum_derive",
+]
+
+[[package]]
+name = "num_enum_derive"
+version = "0.5.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce"
+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.29.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "21158b2c33aa6d4561f1c0a6ea283ca92bc54802a93b263e910746d679a7eb53"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "oboe"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "27f63c358b4fa0fbcfefd7c8be5cfc39c08ce2389f5325687e7762a48d30a5c1"
+dependencies = [
+ "jni",
+ "ndk",
+ "ndk-context",
+ "num-derive",
+ "num-traits 0.2.15",
+ "oboe-sys",
+]
+
+[[package]]
+name = "oboe-sys"
+version = "0.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3370abb7372ed744232c12954d920d1a40f1c4686de9e79e800021ef492294bd"
+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.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860"
+
+[[package]]
+name = "openssl"
+version = "0.10.42"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "12fc0523e3bd51a692c8850d075d74dc062ccf251c0110668cbd921917118a13"
+dependencies = [
+ "bitflags",
+ "cfg-if 1.0.0",
+ "foreign-types",
+ "libc",
+ "once_cell",
+ "openssl-macros",
+ "openssl-sys",
+]
+
+[[package]]
+name = "openssl-macros"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "openssl-probe"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
+
+[[package]]
+name = "openssl-sys"
+version = "0.9.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b03b84c3b2d099b81f0953422b4d4ad58761589d0229b5506356afca05a3670a"
+dependencies = [
+ "autocfg",
+ "cc",
+ "libc",
+ "pkg-config",
+ "vcpkg",
+]
+
+[[package]]
+name = "parking_lot"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99"
+dependencies = [
+ "instant",
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216"
+dependencies = [
+ "cfg-if 1.0.0",
+ "instant",
+ "libc",
+ "redox_syscall 0.2.16",
+ "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.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
+
+[[package]]
+name = "pin-project"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc"
+dependencies = [
+ "pin-project-internal",
+]
+
+[[package]]
+name = "pin-project-internal"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55"
+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.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
+
+[[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.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+
+[[package]]
+name = "proc-macro-crate"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9"
+dependencies = [
+ "once_cell",
+ "thiserror",
+ "toml 0.5.9",
+]
+
+[[package]]
+name = "proc-macro-hack"
+version = "0.5.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5"
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.47"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "publicsuffix"
+version = "1.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95b4ce31ff0a27d93c8de1849cf58162283752f065a90d508f1105fa6c9a213f"
+dependencies = [
+ "idna 0.2.3",
+ "url",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
+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",
+ "rand_core",
+ "rand_hc",
+]
+
+[[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",
+]
+
+[[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_hc"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
+dependencies = [
+ "rand_core",
+]
+
+[[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.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
+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.16",
+]
+
+[[package]]
+name = "redox_users"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"
+dependencies = [
+ "getrandom 0.2.8",
+ "redox_syscall 0.2.16",
+ "thiserror",
+]
+
+[[package]]
+name = "regex"
+version = "1.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.6.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848"
+
+[[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.1",
+ "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.9",
+ "serde 1.0.147",
+ "serde_urlencoded 0.7.1",
+ "time 0.2.27",
+ "tokio",
+ "tokio-socks",
+ "tokio-tls",
+ "url",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+ "winreg",
+]
+
+[[package]]
+name = "rodio"
+version = "0.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0939e9f626e6c6f1989adb6226a039c855ca483053f0ee7c98b90e41cf731e"
+dependencies = [
+ "claxon",
+ "cpal",
+ "hound",
+ "lewton",
+ "minimp3",
+]
+
+[[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.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342"
+
+[[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.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09"
+
+[[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.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2"
+dependencies = [
+ "lazy_static 1.4.0",
+ "windows-sys",
+]
+
+[[package]]
+name = "scopeguard"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+
+[[package]]
+name = "scratch"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8132065adcfd6e02db789d9285a0deb2f3fcb04002865ab67d5fb103533898"
+
+[[package]]
+name = "security-framework"
+version = "2.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2bc1bb97804af6631813c55739f771071e0f2ed33ee20b68c86ec505d906356c"
+dependencies = [
+ "bitflags",
+ "core-foundation",
+ "core-foundation-sys",
+ "libc",
+ "security-framework-sys",
+]
+
+[[package]]
+name = "security-framework-sys"
+version = "2.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556"
+dependencies = [
+ "core-foundation-sys",
+ "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.147"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965"
+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.147"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.88"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e8b3801309262e8184d9687fb697586833e939767aea0dda89f5a8e650e8bd7"
+dependencies = [
+ "itoa 1.0.4",
+ "ryu",
+ "serde 1.0.147",
+]
+
+[[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 0.4.8",
+ "serde 1.0.147",
+ "url",
+]
+
+[[package]]
+name = "serde_urlencoded"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
+dependencies = [
+ "form_urlencoded",
+ "itoa 1.0.4",
+ "ryu",
+ "serde 1.0.147",
+]
+
+[[package]]
+name = "sha1"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770"
+dependencies = [
+ "sha1_smol",
+]
+
+[[package]]
+name = "sha1_smol"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012"
+
+[[package]]
+name = "shlex"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3"
+
+[[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.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef"
+dependencies = [
+ "autocfg",
+]
+
+[[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.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
+
+[[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.4",
+]
+
+[[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.147",
+ "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.147",
+ "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.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+
+[[package]]
+name = "syn"
+version = "1.0.103"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a864042229133ada95abf3b54fdc62ef5ccabe9515b64717bcb9a1919e59445d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "synstructure"
+version = "0.12.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "unicode-xid",
+]
+
+[[package]]
+name = "tempfile"
+version = "3.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4"
+dependencies = [
+ "cfg-if 1.0.0",
+ "fastrand",
+ "libc",
+ "redox_syscall 0.2.16",
+ "remove_dir_all",
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "termcolor"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
+dependencies = [
+ "winapi-util",
+]
+
+[[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.16",
+ "redox_termios",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb"
+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.44"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255"
+dependencies = [
+ "libc",
+ "wasi 0.10.0+wasi-snapshot-preview1",
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "time"
+version = "0.2.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4752a97f8eebd6854ff91f1c1824cd6160626ac4bd44287f7f4ea2035a02a242"
+dependencies = [
+ "const_fn",
+ "libc",
+ "standback",
+ "stdweb 0.4.20",
+ "time-macros",
+ "version_check 0.9.4",
+ "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.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fd3c141a1b43194f3f56a1411225df8646c55781d5f26db825b3d98507eb482f"
+dependencies = [
+ "proc-macro-hack",
+ "proc-macro2",
+ "quote",
+ "standback",
+ "syn",
+]
+
+[[package]]
+name = "tinyvec"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+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.147",
+]
+
+[[package]]
+name = "toml"
+version = "0.5.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7"
+dependencies = [
+ "serde 1.0.147",
+]
+
+[[package]]
+name = "tower-service"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
+
+[[package]]
+name = "tracing"
+version = "0.1.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
+dependencies = [
+ "cfg-if 1.0.0",
+ "log",
+ "pin-project-lite 0.2.9",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a"
+dependencies = [
+ "once_cell",
+]
+
+[[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.4",
+]
+
+[[package]]
+name = "unicode-bidi"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3"
+
+[[package]]
+name = "unicode-normalization"
+version = "0.1.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
+dependencies = [
+ "tinyvec",
+]
+
+[[package]]
+name = "unicode-segmentation"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fdbf052a0783de01e944a6ce7a8cb939e295b1e7be835a1112c3b9a7f047a5a"
+
+[[package]]
+name = "unicode-width"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
+
+[[package]]
+name = "unicode-xid"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
+
+[[package]]
+name = "url"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
+dependencies = [
+ "form_urlencoded",
+ "idna 0.3.0",
+ "percent-encoding",
+]
+
+[[package]]
+name = "vcpkg"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
+
+[[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.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+
+[[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.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f"
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268"
+dependencies = [
+ "cfg-if 1.0.0",
+ "serde 1.0.147",
+ "serde_json",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142"
+dependencies = [
+ "bumpalo",
+ "log",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-futures"
+version = "0.4.33"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d"
+dependencies = [
+ "cfg-if 1.0.0",
+ "js-sys",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f"
+
+[[package]]
+name = "web-sys"
+version = "0.3.60"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f"
+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 = "windows-sys"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2"
+dependencies = [
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680"
+
+[[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.6",
+]
diff --git a/nixpkgs/pkgs/applications/audio/netease-music-tui/cargo-lock.patch b/nixpkgs/pkgs/applications/audio/netease-music-tui/cargo-lock.patch
deleted file mode 100644
index f47c233d6aee..000000000000
--- a/nixpkgs/pkgs/applications/audio/netease-music-tui/cargo-lock.patch
+++ /dev/null
@@ -1,2655 +0,0 @@
-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/nixpkgs/pkgs/applications/audio/netease-music-tui/default.nix b/nixpkgs/pkgs/applications/audio/netease-music-tui/default.nix
index f6ccee3e535e..4449a8907a20 100644
--- a/nixpkgs/pkgs/applications/audio/netease-music-tui/default.nix
+++ b/nixpkgs/pkgs/applications/audio/netease-music-tui/default.nix
@@ -2,21 +2,27 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "netease-music-tui";
-  version = "0.1.4";
+  version = "0.1.5";
 
   src = fetchFromGitHub {
     owner = "betta-cyber";
     repo = "netease-music-tui";
     rev = "v${version}";
-    sha256 = "sha256-ILJkejRKG2DRXgR6O2tAFbrbd8HtnLZJmITq7hF41DQ=";
+    sha256 = "sha256-+zRXihWg65DtyX3yD04CsW8aXIvNph36PW2veeg36lg=";
   };
 
-  cargoPatches = [ ./cargo-lock.patch ];
+  cargoLock = {
+    lockFile = ./Cargo.lock;
+  };
+
+  postPatch = ''
+    ln -s ${./Cargo.lock} Cargo.lock
+  '';
 
   nativeBuildInputs = [ pkg-config ];
   buildInputs = [ alsa-lib openssl ];
 
-  cargoSha256 = "sha256-/JQDUtSSkuO9nrYVSkQOaZjps1BUuH8Bc1SMyDSSJS4=";
+  cargoSha256 = "sha256-i+W/KwnqdaHcrdaWYUuCUeFlRKekVuEvFh/pxDolPNU=";
 
   meta = with lib; {
     homepage = "https://github.com/betta-cyber/netease-music-tui";
diff --git a/nixpkgs/pkgs/applications/audio/netease-music-tui/update-cargo-lock.sh b/nixpkgs/pkgs/applications/audio/netease-music-tui/update-cargo-lock.sh
index b7ca4216ace5..dc8a1bf3e468 100644..100755
--- a/nixpkgs/pkgs/applications/audio/netease-music-tui/update-cargo-lock.sh
+++ b/nixpkgs/pkgs/applications/audio/netease-music-tui/update-cargo-lock.sh
@@ -1,20 +1,17 @@
-#!nix-shell
+#!/usr/bin/env 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
+set -euo pipefail
 
-here=$PWD
-version=$(cat default.nix | grep '^  version = "' | cut -d '"' -f 2)
+here=$(dirname "$0")
+version=$(grep '^  version = "' "$here/default.nix" | cut -d '"' -f 2)
 checkout=$(mktemp -d)
-git clone -b "$version" --depth=1 https://github.com/betta-cyber/netease-music-tui "$checkout"
-cd "$checkout"
+git clone -b "v$version" --depth=1 https://github.com/betta-cyber/netease-music-tui "$checkout"
 
-cargo generate-lockfile
-git add -f Cargo.lock
-git diff HEAD -- Cargo.lock > "$here"/cargo-lock.patch
+cargo generate-lockfile --manifest-path "$checkout/Cargo.toml"
+cp "$checkout/Cargo.lock" "$here"
 
-cd "$here"
 rm -rf "$checkout"
diff --git a/nixpkgs/pkgs/applications/audio/new-session-manager/default.nix b/nixpkgs/pkgs/applications/audio/new-session-manager/default.nix
index 78f71ed950f7..5f23b9be651c 100644
--- a/nixpkgs/pkgs/applications/audio/new-session-manager/default.nix
+++ b/nixpkgs/pkgs/applications/audio/new-session-manager/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "new-session-manager";
-  version = "1.5.3";
+  version = "1.6.1";
 
   src = fetchFromGitHub {
     owner = "linuxaudio";
     repo = "new-session-manager";
     rev = "v${version}";
-    sha256 = "sha256-dQE7kUoxqDtTrk5euHqpMVeApxniecWZWOARcCl573o=";
+    sha256 = "sha256-5G2GlBuKjC/r1SMm78JKia7bMA97YcvUR5l6zBucemw=";
   };
 
   nativeBuildInputs = [ meson pkg-config ninja ];
diff --git a/nixpkgs/pkgs/applications/audio/noisetorch/default.nix b/nixpkgs/pkgs/applications/audio/noisetorch/default.nix
index f422ad7fe136..51b565bc3e74 100644
--- a/nixpkgs/pkgs/applications/audio/noisetorch/default.nix
+++ b/nixpkgs/pkgs/applications/audio/noisetorch/default.nix
@@ -1,27 +1,25 @@
-{ lib, buildGoModule, fetchFromGitHub, copyDesktopItems }:
+{ lib, buildGoModule, fetchFromGitHub }:
 
 buildGoModule rec {
   pname = "NoiseTorch";
-  version = "0.12.0";
+  version = "0.12.2";
 
   src = fetchFromGitHub {
     owner = "noisetorch";
     repo = "NoiseTorch";
     rev = "v${version}";
-    sha256 = "sha256-A6cX1ck47/ZIn9cnV/Ow4CxVFfOX5J0K0Q+B70jCFdQ=";
     fetchSubmodules = true;
+    sha256 = "sha256-gOPSMPH99Upi/30OnAdwSb7SaMV0i/uHB051cclfz6A=";
   };
 
   vendorHash = null;
 
   doCheck = false;
 
-  ldflags = [ "-s" "-w" "-X main.version=${version}" "-X main.distribution=nix" ];
+  ldflags = [ "-s" "-w" "-X main.version=${version}" "-X main.distribution=nixpkgs" ];
 
   subPackages = [ "." ];
 
-  nativeBuildInputs = [ copyDesktopItems ];
-
   preBuild = ''
     make -C c/ladspa/
     go generate
@@ -30,13 +28,10 @@ buildGoModule rec {
 
   postInstall = ''
     install -D ./assets/icon/noisetorch.png $out/share/icons/hicolor/256x256/apps/noisetorch.png
-    copyDesktopItems assets/noisetorch.desktop $out/share/applications/
+    install -Dm444 ./assets/noisetorch.desktop $out/share/applications/noisetorch.desktop
   '';
 
   meta = with lib; {
-    insecure = true;
-    knownVulnerabilities =
-      lib.optional (lib.versionOlder version "0.12") "https://github.com/noisetorch/NoiseTorch/releases/tag/v0.12.0";
     description = "Virtual microphone device with noise supression for PulseAudio";
     homepage = "https://github.com/noisetorch/NoiseTorch";
     license = licenses.gpl3Plus;
diff --git a/nixpkgs/pkgs/applications/audio/nootka/default.nix b/nixpkgs/pkgs/applications/audio/nootka/default.nix
index 59d58df8c8dc..3ce835138f6d 100644
--- a/nixpkgs/pkgs/applications/audio/nootka/default.nix
+++ b/nixpkgs/pkgs/applications/audio/nootka/default.nix
@@ -1,34 +1,43 @@
 { lib, stdenv, fetchurl, cmake
-, alsa-lib, fftwSinglePrec, libjack2, libpulseaudio, libvorbis, soundtouch, qtbase
+, alsa-lib, fftwSinglePrec, libjack2, libpulseaudio, libvorbis, soundtouch
+, qtbase, qtdeclarative, qtgraphicaleffects, qtquickcontrols2, qttools, wrapQtAppsHook
 }:
 
 stdenv.mkDerivation rec {
   pname = "nootka";
-  version = "1.4.7";
+  version = "2.0.2";
 
   src = fetchurl {
     url = "mirror://sourceforge/nootka/${pname}-${version}-source.tar.bz2";
-    sha256 = "1y9wlwri74v2z9dwbcfjs7xri54yra24vpwq19xi2lfv1nbs518x";
+    sha256 = "sha256-ZHdyLZ3+TCpQ77tcNuDlN2124qLDZu9DdH5x7RI1HIs=";
   };
 
-  nativeBuildInputs = [ cmake ];
+  nativeBuildInputs = [ cmake wrapQtAppsHook ];
   buildInputs = [
-    alsa-lib fftwSinglePrec libjack2 libpulseaudio libvorbis soundtouch qtbase
+    alsa-lib
+    fftwSinglePrec
+    libjack2
+    libpulseaudio
+    libvorbis
+    soundtouch
+    qtbase
+    qtdeclarative
+    qtgraphicaleffects
+    qtquickcontrols2
+    qttools
   ];
 
   cmakeFlags = [
-    "-DCMAKE_INCLUDE_PATH=${libjack2}/include/jack;${libpulseaudio.dev}/include/pulse"
+    "-DCMAKE_INCLUDE_PATH=${lib.getDev libjack2}/include/jack;${lib.getDev libpulseaudio}/include/pulse"
     "-DENABLE_JACK=ON"
     "-DENABLE_PULSEAUDIO=ON"
   ];
 
-  dontWrapQtApps = true;
-
   meta = with lib; {
     description = "Application for practicing playing musical scores and ear training";
     homepage = "https://nootka.sourceforge.io/";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ orivej ];
+    maintainers = with maintainers; [ mmlb orivej ];
     platforms = platforms.linux;
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/nootka/unstable.nix b/nixpkgs/pkgs/applications/audio/nootka/unstable.nix
deleted file mode 100644
index 9dbaefa74063..000000000000
--- a/nixpkgs/pkgs/applications/audio/nootka/unstable.nix
+++ /dev/null
@@ -1,54 +0,0 @@
-{ lib
-, stdenv
-, fetchurl
-, cmake
-, alsa-lib
-, fftwSinglePrec
-, libjack2
-, libpulseaudio
-, libvorbis
-, soundtouch
-, qtbase
-, qtdeclarative
-, qtquickcontrols2
-}:
-
-stdenv.mkDerivation rec {
-  pname = "nootka";
-  version = "1.7.0-beta1";
-
-  src = fetchurl {
-    url = "mirror://sourceforge/nootka/nootka-${version}-source.tar.bz2";
-    sha256 = "13b50vnpr1zx2mrgkc8fmhsyfa19rqq1rksvn31145dy6fk1f3gc";
-  };
-
-  nativeBuildInputs = [ cmake ];
-  buildInputs = [
-    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 lib; {
-    broken = (stdenv.isLinux && stdenv.isAarch64);
-    description = "Application for practicing playing musical scores and ear training";
-    homepage = "https://nootka.sourceforge.io/";
-    license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ orivej ];
-    platforms = platforms.linux;
-  };
-}
diff --git a/nixpkgs/pkgs/applications/audio/noson/default.nix b/nixpkgs/pkgs/applications/audio/noson/default.nix
new file mode 100644
index 000000000000..f1b932013a6e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/noson/default.nix
@@ -0,0 +1,51 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, flac
+, libpulseaudio
+, qtbase
+, qtgraphicaleffects
+, qtquickcontrols2
+, wrapQtAppsHook
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "noson";
+  version = "5.4.1";
+
+  src = fetchFromGitHub {
+    owner = "janbar";
+    repo = "noson-app";
+    rev = finalAttrs.version;
+    hash = "sha256-7RrBfkUCRVzUGl+OT3OuoMlu4D3Sa7RpBefFgmfX1Fs=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    flac
+    libpulseaudio
+    qtbase
+    qtgraphicaleffects
+    qtquickcontrols2
+  ];
+
+  # wrapQtAppsHook doesn't automatically find noson-gui
+  dontWrapQtApps = true;
+  preFixup = ''
+    wrapQtApp "$out/lib/noson/noson-gui"
+  '';
+
+  meta = with lib; {
+    description = "SONOS controller for Linux (and macOS)";
+    homepage = "https://janbar.github.io/noson-app/";
+    mainProgram = "noson-app";
+    platforms = platforms.linux ++ platforms.darwin;
+    license = [ licenses.gpl3Only ];
+    maintainers = with maintainers; [ callahad ];
+  };
+})
diff --git a/nixpkgs/pkgs/applications/audio/nova-filters/default.nix b/nixpkgs/pkgs/applications/audio/nova-filters/default.nix
index 0fe6da9537da..1c457c8a0e7b 100644
--- a/nixpkgs/pkgs/applications/audio/nova-filters/default.nix
+++ b/nixpkgs/pkgs/applications/audio/nova-filters/default.nix
@@ -1,32 +1,50 @@
-{lib, stdenv, fetchurl, sconsPackages, boost, ladspaH, pkg-config }:
+{ lib
+, stdenv
+, fetchurl
+, scons
+, boost
+, ladspaH
+, libcxxabi
+}:
 
-stdenv.mkDerivation {
-  version = "0.2-2";
+stdenv.mkDerivation (finalAttrs: {
   pname = "nova-filters";
+  version = "0.2-2";
 
   src = fetchurl {
-    url = "https://klingt.org/~tim/nova-filters/nova-filters_0.2-2.tar.gz";
-    sha256 = "16064vvl2w5lz4xi3lyjk4xx7fphwsxc14ajykvndiz170q32s6i";
+    url = "https://klingt.org/~tim/nova-filters/nova-filters_${finalAttrs.version}.tar.gz";
+    hash = "sha256-0WgxMDjhx2b39FKRwLrm8LrTO5nS0xE7+bRwQfcmBpg=";
   };
 
-  nativeBuildInputs = [ pkg-config sconsPackages.scons_3_0_1 ];
-  buildInputs = [ boost ladspaH ];
+  postPatch = ''
+    substituteInPlace SConstruct \
+      --replace "'TERM' : os.environ['TERM']," "" \
+      --replace "Options" "Variables" \
+      --replace "-fomit-frame-pointer -ffast-math -mfpmath=sse" "-I${boost.dev}/include -I${ladspaH}/include" \
+      --replace "env.has_key('cxx')" "True" \
+      --replace "env['cxx']" "'${stdenv.cc.targetPrefix}c++'" \
+      --replace "-Wl,--strip-all" "${lib.optionalString stdenv.isDarwin "-L${libcxxabi}/lib"}"
+
+    substituteInPlace filters.cpp \
+      --replace "LADSPA_HINT_SAMPLE_RATE, 0, 0.5" "LADSPA_HINT_SAMPLE_RATE, 0.0001, 0.5"
 
-  patchPhase = ''
-    # remove TERM:
-    sed -i -e '4d' SConstruct
-    sed -i "s@mfpmath=sse@mfpmath=sse -I ${boost.dev}/include@g" SConstruct
-    sed -i "s@ladspa.h@${ladspaH}/include/ladspa.h@g" filters.cpp
-    sed -i "s@LADSPA_HINT_SAMPLE_RATE, 0, 0.5@LADSPA_HINT_SAMPLE_RATE, 0.0001, 0.5@g" filters.cpp
-    sed -i "s/= check/= detail::filter_base<internal_type, checked>::check/" nova/source/dsp/filter.hpp
+    substituteInPlace nova/source/dsp/filter.hpp \
+      --replace "= check" "= detail::filter_base<internal_type, checked>::check"
+
+    substituteInPlace nova/source/primitives/float.hpp \
+      --replace "boost/detail/endian.hpp" "boost/predef/other/endian.h" \
+      --replace "BOOST_LITTLE_ENDIAN" "BOOST_ENDIAN_LITTLE_BYTE"
   '';
 
+  nativeBuildInputs = [
+    scons
+  ];
+
   meta = with lib; {
-    broken = (stdenv.isLinux && stdenv.isAarch64);
     description = "LADSPA plugins based on filters of nova";
     homepage = "http://klingt.org/~tim/nova-filters/";
     license = licenses.gpl2Plus;
     maintainers = [ maintainers.magnetophon ];
-    platforms = platforms.linux;
+    platforms = platforms.unix;
   };
-}
+})
diff --git a/nixpkgs/pkgs/applications/audio/ocenaudio/default.nix b/nixpkgs/pkgs/applications/audio/ocenaudio/default.nix
index 1bbbe3583f90..bf656f725945 100644
--- a/nixpkgs/pkgs/applications/audio/ocenaudio/default.nix
+++ b/nixpkgs/pkgs/applications/audio/ocenaudio/default.nix
@@ -11,11 +11,11 @@
 
 stdenv.mkDerivation rec {
   pname = "ocenaudio";
-  version = "3.11.11";
+  version = "3.12.2";
 
   src = fetchurl {
     url = "https://www.ocenaudio.com/downloads/index.php/ocenaudio_debian9_64.deb?version=${version}";
-    sha256 = "sha256-S3Fqg5DjhVoYwfF3A/P7WcOUsU1x+IGwLopyNA3FkRQ=";
+    sha256 = "sha256-AzQAEU5o3m1cFCxeyT32AzX4WUk3DliBPdw+cfQPyKU=";
   };
 
   nativeBuildInputs = [
@@ -49,7 +49,7 @@ stdenv.mkDerivation rec {
     homepage = "https://www.ocenaudio.com";
     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = licenses.unfree;
-    platforms = platforms.linux;
+    platforms = [ "x86_64-linux" ];
     maintainers = with maintainers; [ onny ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/odin2/default.nix b/nixpkgs/pkgs/applications/audio/odin2/default.nix
index f0bd5e015648..de89f9aedead 100644
--- a/nixpkgs/pkgs/applications/audio/odin2/default.nix
+++ b/nixpkgs/pkgs/applications/audio/odin2/default.nix
@@ -18,16 +18,21 @@
 
 stdenv.mkDerivation rec {
   pname = "odin2";
-  version = "unstable-2022-02-23";
+  version = "2.3.4";
 
   src = fetchFromGitHub {
-    owner = "baconpaul";
+    owner = "TheWaveWarden";
     repo = "odin2";
-    rev = "ed02d06cfb5db8a118d291c00bd2e4cd6e262cde";
+    rev = "v${version}";
     fetchSubmodules = true;
-    sha256 = "sha256-VkZ+mqCmqWQafdN0nQxJdPxbiaZ37/0jOhLvVbnGLvQ=";
+    sha256 = "sha256-N96Nb7G6hqfh8DyMtHbttl/fRZUkS8f2KfPSqeMAhHY=";
   };
 
+  postPatch = ''
+    sed '1i#include <utility>' -i \
+      libs/JUCELV2/modules/juce_gui_basics/windows/juce_ComponentPeer.h # gcc12
+  '';
+
   nativeBuildInputs = [
     cmake
     pkg-config
@@ -62,10 +67,12 @@ stdenv.mkDerivation rec {
   ];
 
   installPhase = ''
-    mkdir -p $out/bin $out/lib/vst3
+    mkdir -p $out/bin $out/lib/vst3 $out/lib/lv2 $out/lib/clap
     cd Odin2_artefacts/Release
+    cp Standalone/Odin2 $out/bin
     cp -r VST3/Odin2.vst3 $out/lib/vst3
-    cp -r Standalone/Odin2 $out/bin
+    cp -r LV2/Odin2.lv2 $out/lib/lv2
+    cp -r CLAP/Odin2.clap $out/lib/clap
 '';
 
 
diff --git a/nixpkgs/pkgs/applications/audio/open-stage-control/default.nix b/nixpkgs/pkgs/applications/audio/open-stage-control/default.nix
index f865e31b2dc9..8906d40b3c83 100644
--- a/nixpkgs/pkgs/applications/audio/open-stage-control/default.nix
+++ b/nixpkgs/pkgs/applications/audio/open-stage-control/default.nix
@@ -1,37 +1,45 @@
-{ pkgs, stdenv, lib, fetchFromGitHub, makeBinaryWrapper, makeDesktopItem, copyDesktopItems, nodejs, electron, python3, ... }:
+{ lib, buildNpmPackage, fetchFromGitHub, makeBinaryWrapper, makeDesktopItem, copyDesktopItems, electron, python3, nix-update-script }:
 
-let
-  nodeComposition = import ./node-composition.nix {
-    inherit pkgs nodejs;
-    inherit (stdenv.hostPlatform) system;
-  };
-in
-
-nodeComposition.package.override rec {
+buildNpmPackage rec {
   pname = "open-stage-control";
-  inherit (nodeComposition.args) version;
+  version = "1.25.1";
 
   src = fetchFromGitHub {
     owner = "jean-emmanuel";
     repo = "open-stage-control";
     rev = "v${version}";
-    hash = "sha256-q18pRtsHfme+OPmi3LhJDK1AdpfkwhoE9LA2rNenDtY=";
+    hash = "sha256-mbd+fknSzokFt5dPlZrZIpDox/NzMbvyFp2fNPelv3c=";
   };
 
+  # Remove some Electron stuff from package.json
+  postPatch = ''
+    sed -i -e '/"electron"\|"electron-installer-debian"/d' package.json
+  '';
+
+  npmDepsHash = "sha256-M+6+zrxy8VpJQS0dG/xORMbflKEq8wO2DEOjGrA6OUw=";
+
   nativeBuildInputs = [
     copyDesktopItems
     makeBinaryWrapper
+    python3
   ];
 
   buildInputs = [
     python3.pkgs.python-rtmidi
   ];
 
-  dontNpmInstall = true;
+  doInstallCheck = true;
 
-  postInstall = ''
-    # build assets
-    npm run build
+  makeCacheWritable = true;
+  npmFlags = [ "--legacy-peer-deps" ];
+
+  # Override installPhase so we can copy the only directory that matters (app)
+  installPhase = ''
+    runHook preInstall
+
+    # copy built app and node_modules directories
+    mkdir -p $out/lib/node_modules/open-stage-control
+    cp -r app $out/lib/node_modules/open-stage-control/
 
     # copy icon
     install -Dm644 resources/images/logo.png $out/share/icons/hicolor/256x256/apps/open-stage-control.png
@@ -43,12 +51,13 @@ nodeComposition.package.override rec {
       --add-flags $out/lib/node_modules/open-stage-control/app \
       --prefix PYTHONPATH : "$PYTHONPATH" \
       --prefix PATH : '${lib.makeBinPath [ python3 ]}'
+
+    runHook postInstall
   '';
 
   installCheckPhase = ''
     XDG_CONFIG_HOME="$(mktemp -d)" $out/bin/open-stage-control --help
   '';
-  doInstallCheck = true;
 
   desktopItems = [
     (makeDesktopItem {
@@ -62,6 +71,8 @@ nodeComposition.package.override rec {
     })
   ];
 
+  passthru.updateScript = nix-update-script { };
+
   meta = with lib; {
     description = "Libre and modular OSC / MIDI controller";
     homepage = "https://openstagecontrol.ammd.net/";
diff --git a/nixpkgs/pkgs/applications/audio/open-stage-control/generate-dependencies.sh b/nixpkgs/pkgs/applications/audio/open-stage-control/generate-dependencies.sh
deleted file mode 100755
index ce811b669e12..000000000000
--- a/nixpkgs/pkgs/applications/audio/open-stage-control/generate-dependencies.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/usr/bin/env nix-shell
-#! nix-shell -i bash -p jq nodePackages.node2nix
-
-# Get latest release tag
-tag="$(curl -s https://api.github.com/repos/jean-emmanuel/open-stage-control/releases/latest | jq -r .tag_name)"
-
-# Download package.json from the latest release
-curl -s https://raw.githubusercontent.com/jean-emmanuel/open-stage-control/"$tag"/package.json | grep -v '"electron"\|"electron-installer-debian"\|"electron-packager"\|"electron-packager-plugin-non-proprietary-codecs-ffmpeg"' >package.json
-
-# Lock dependencies with node2nix
-node2nix \
-  --node-env ../../../development/node-packages/node-env.nix \
-  --nodejs-16 \
-  --input package.json \
-  --output node-packages.nix \
-  --composition node-composition.nix
-
-rm -f package.json
diff --git a/nixpkgs/pkgs/applications/audio/open-stage-control/node-composition.nix b/nixpkgs/pkgs/applications/audio/open-stage-control/node-composition.nix
deleted file mode 100644
index 2e810490ca8d..000000000000
--- a/nixpkgs/pkgs/applications/audio/open-stage-control/node-composition.nix
+++ /dev/null
@@ -1,17 +0,0 @@
-# This file has been generated by node2nix 1.11.1. Do not edit!
-
-{pkgs ? import <nixpkgs> {
-    inherit system;
-  }, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-16_x"}:
-
-let
-  nodeEnv = import ../../../development/node-packages/node-env.nix {
-    inherit (pkgs) stdenv lib python2 runCommand writeTextFile writeShellScript;
-    inherit pkgs nodejs;
-    libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
-  };
-in
-import ./node-packages.nix {
-  inherit (pkgs) fetchurl nix-gitignore stdenv lib fetchgit;
-  inherit nodeEnv;
-}
diff --git a/nixpkgs/pkgs/applications/audio/open-stage-control/node-packages.nix b/nixpkgs/pkgs/applications/audio/open-stage-control/node-packages.nix
deleted file mode 100644
index 177412726c40..000000000000
--- a/nixpkgs/pkgs/applications/audio/open-stage-control/node-packages.nix
+++ /dev/null
@@ -1,8311 +0,0 @@
-# This file has been generated by node2nix 1.11.1. Do not edit!
-
-{nodeEnv, fetchurl, fetchgit, nix-gitignore, stdenv, lib, globalBuildInputs ? []}:
-
-let
-  sources = {
-    "@ampproject/remapping-2.2.0" = {
-      name = "_at_ampproject_slash_remapping";
-      packageName = "@ampproject/remapping";
-      version = "2.2.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz";
-        sha512 = "qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==";
-      };
-    };
-    "@babel/code-frame-7.18.6" = {
-      name = "_at_babel_slash_code-frame";
-      packageName = "@babel/code-frame";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz";
-        sha512 = "TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==";
-      };
-    };
-    "@babel/compat-data-7.18.6" = {
-      name = "_at_babel_slash_compat-data";
-      packageName = "@babel/compat-data";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.6.tgz";
-        sha512 = "tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ==";
-      };
-    };
-    "@babel/core-7.18.0" = {
-      name = "_at_babel_slash_core";
-      packageName = "@babel/core";
-      version = "7.18.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/core/-/core-7.18.0.tgz";
-        sha512 = "Xyw74OlJwDijToNi0+6BBI5mLLR5+5R3bcSH80LXzjzEGEUlvNzujEE71BaD/ApEZHAvFI/Mlmp4M5lIkdeeWw==";
-      };
-    };
-    "@babel/eslint-parser-7.17.0" = {
-      name = "_at_babel_slash_eslint-parser";
-      packageName = "@babel/eslint-parser";
-      version = "7.17.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz";
-        sha512 = "PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA==";
-      };
-    };
-    "@babel/generator-7.18.7" = {
-      name = "_at_babel_slash_generator";
-      packageName = "@babel/generator";
-      version = "7.18.7";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz";
-        sha512 = "shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==";
-      };
-    };
-    "@babel/helper-annotate-as-pure-7.18.6" = {
-      name = "_at_babel_slash_helper-annotate-as-pure";
-      packageName = "@babel/helper-annotate-as-pure";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz";
-        sha512 = "duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==";
-      };
-    };
-    "@babel/helper-builder-binary-assignment-operator-visitor-7.18.6" = {
-      name = "_at_babel_slash_helper-builder-binary-assignment-operator-visitor";
-      packageName = "@babel/helper-builder-binary-assignment-operator-visitor";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.6.tgz";
-        sha512 = "KT10c1oWEpmrIRYnthbzHgoOf6B+Xd6a5yhdbNtdhtG7aO1or5HViuf1TQR36xY/QprXA5nvxO6nAjhJ4y38jw==";
-      };
-    };
-    "@babel/helper-compilation-targets-7.18.6" = {
-      name = "_at_babel_slash_helper-compilation-targets";
-      packageName = "@babel/helper-compilation-targets";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz";
-        sha512 = "vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==";
-      };
-    };
-    "@babel/helper-create-class-features-plugin-7.18.6" = {
-      name = "_at_babel_slash_helper-create-class-features-plugin";
-      packageName = "@babel/helper-create-class-features-plugin";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.6.tgz";
-        sha512 = "YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==";
-      };
-    };
-    "@babel/helper-create-regexp-features-plugin-7.18.6" = {
-      name = "_at_babel_slash_helper-create-regexp-features-plugin";
-      packageName = "@babel/helper-create-regexp-features-plugin";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz";
-        sha512 = "7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==";
-      };
-    };
-    "@babel/helper-define-polyfill-provider-0.3.1" = {
-      name = "_at_babel_slash_helper-define-polyfill-provider";
-      packageName = "@babel/helper-define-polyfill-provider";
-      version = "0.3.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz";
-        sha512 = "J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==";
-      };
-    };
-    "@babel/helper-environment-visitor-7.18.6" = {
-      name = "_at_babel_slash_helper-environment-visitor";
-      packageName = "@babel/helper-environment-visitor";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz";
-        sha512 = "8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==";
-      };
-    };
-    "@babel/helper-explode-assignable-expression-7.18.6" = {
-      name = "_at_babel_slash_helper-explode-assignable-expression";
-      packageName = "@babel/helper-explode-assignable-expression";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz";
-        sha512 = "eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==";
-      };
-    };
-    "@babel/helper-function-name-7.18.6" = {
-      name = "_at_babel_slash_helper-function-name";
-      packageName = "@babel/helper-function-name";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz";
-        sha512 = "0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==";
-      };
-    };
-    "@babel/helper-hoist-variables-7.18.6" = {
-      name = "_at_babel_slash_helper-hoist-variables";
-      packageName = "@babel/helper-hoist-variables";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz";
-        sha512 = "UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==";
-      };
-    };
-    "@babel/helper-member-expression-to-functions-7.18.6" = {
-      name = "_at_babel_slash_helper-member-expression-to-functions";
-      packageName = "@babel/helper-member-expression-to-functions";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.6.tgz";
-        sha512 = "CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng==";
-      };
-    };
-    "@babel/helper-module-imports-7.18.6" = {
-      name = "_at_babel_slash_helper-module-imports";
-      packageName = "@babel/helper-module-imports";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz";
-        sha512 = "0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==";
-      };
-    };
-    "@babel/helper-module-transforms-7.18.6" = {
-      name = "_at_babel_slash_helper-module-transforms";
-      packageName = "@babel/helper-module-transforms";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz";
-        sha512 = "L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw==";
-      };
-    };
-    "@babel/helper-optimise-call-expression-7.18.6" = {
-      name = "_at_babel_slash_helper-optimise-call-expression";
-      packageName = "@babel/helper-optimise-call-expression";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz";
-        sha512 = "HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==";
-      };
-    };
-    "@babel/helper-plugin-utils-7.18.6" = {
-      name = "_at_babel_slash_helper-plugin-utils";
-      packageName = "@babel/helper-plugin-utils";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz";
-        sha512 = "gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==";
-      };
-    };
-    "@babel/helper-remap-async-to-generator-7.18.6" = {
-      name = "_at_babel_slash_helper-remap-async-to-generator";
-      packageName = "@babel/helper-remap-async-to-generator";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.6.tgz";
-        sha512 = "z5wbmV55TveUPZlCLZvxWHtrjuJd+8inFhk7DG0WW87/oJuGDcjDiu7HIvGcpf5464L6xKCg3vNkmlVVz9hwyQ==";
-      };
-    };
-    "@babel/helper-replace-supers-7.18.6" = {
-      name = "_at_babel_slash_helper-replace-supers";
-      packageName = "@babel/helper-replace-supers";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.6.tgz";
-        sha512 = "fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g==";
-      };
-    };
-    "@babel/helper-simple-access-7.18.6" = {
-      name = "_at_babel_slash_helper-simple-access";
-      packageName = "@babel/helper-simple-access";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz";
-        sha512 = "iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==";
-      };
-    };
-    "@babel/helper-skip-transparent-expression-wrappers-7.18.6" = {
-      name = "_at_babel_slash_helper-skip-transparent-expression-wrappers";
-      packageName = "@babel/helper-skip-transparent-expression-wrappers";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.6.tgz";
-        sha512 = "4KoLhwGS9vGethZpAhYnMejWkX64wsnHPDwvOsKWU6Fg4+AlK2Jz3TyjQLMEPvz+1zemi/WBdkYxCD0bAfIkiw==";
-      };
-    };
-    "@babel/helper-split-export-declaration-7.18.6" = {
-      name = "_at_babel_slash_helper-split-export-declaration";
-      packageName = "@babel/helper-split-export-declaration";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz";
-        sha512 = "bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==";
-      };
-    };
-    "@babel/helper-validator-identifier-7.18.6" = {
-      name = "_at_babel_slash_helper-validator-identifier";
-      packageName = "@babel/helper-validator-identifier";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz";
-        sha512 = "MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==";
-      };
-    };
-    "@babel/helper-validator-option-7.18.6" = {
-      name = "_at_babel_slash_helper-validator-option";
-      packageName = "@babel/helper-validator-option";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz";
-        sha512 = "XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==";
-      };
-    };
-    "@babel/helper-wrap-function-7.18.6" = {
-      name = "_at_babel_slash_helper-wrap-function";
-      packageName = "@babel/helper-wrap-function";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.6.tgz";
-        sha512 = "I5/LZfozwMNbwr/b1vhhuYD+J/mU+gfGAj5td7l5Rv9WYmH6i3Om69WGKNmlIpsVW/mF6O5bvTKbvDQZVgjqOw==";
-      };
-    };
-    "@babel/helpers-7.18.6" = {
-      name = "_at_babel_slash_helpers";
-      packageName = "@babel/helpers";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz";
-        sha512 = "vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==";
-      };
-    };
-    "@babel/highlight-7.18.6" = {
-      name = "_at_babel_slash_highlight";
-      packageName = "@babel/highlight";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz";
-        sha512 = "u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==";
-      };
-    };
-    "@babel/parser-7.18.6" = {
-      name = "_at_babel_slash_parser";
-      packageName = "@babel/parser";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/parser/-/parser-7.18.6.tgz";
-        sha512 = "uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw==";
-      };
-    };
-    "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6" = {
-      name = "_at_babel_slash_plugin-bugfix-safari-id-destructuring-collision-in-function-expression";
-      packageName = "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz";
-        sha512 = "Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==";
-      };
-    };
-    "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.6" = {
-      name = "_at_babel_slash_plugin-bugfix-v8-spread-parameters-in-optional-chaining";
-      packageName = "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.6.tgz";
-        sha512 = "Udgu8ZRgrBrttVz6A0EVL0SJ1z+RLbIeqsu632SA1hf0awEppD6TvdznoH+orIF8wtFFAV/Enmw9Y+9oV8TQcw==";
-      };
-    };
-    "@babel/plugin-proposal-async-generator-functions-7.18.6" = {
-      name = "_at_babel_slash_plugin-proposal-async-generator-functions";
-      packageName = "@babel/plugin-proposal-async-generator-functions";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz";
-        sha512 = "WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w==";
-      };
-    };
-    "@babel/plugin-proposal-class-properties-7.18.6" = {
-      name = "_at_babel_slash_plugin-proposal-class-properties";
-      packageName = "@babel/plugin-proposal-class-properties";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz";
-        sha512 = "cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==";
-      };
-    };
-    "@babel/plugin-proposal-class-static-block-7.18.6" = {
-      name = "_at_babel_slash_plugin-proposal-class-static-block";
-      packageName = "@babel/plugin-proposal-class-static-block";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz";
-        sha512 = "+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==";
-      };
-    };
-    "@babel/plugin-proposal-dynamic-import-7.18.6" = {
-      name = "_at_babel_slash_plugin-proposal-dynamic-import";
-      packageName = "@babel/plugin-proposal-dynamic-import";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz";
-        sha512 = "1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==";
-      };
-    };
-    "@babel/plugin-proposal-export-namespace-from-7.18.6" = {
-      name = "_at_babel_slash_plugin-proposal-export-namespace-from";
-      packageName = "@babel/plugin-proposal-export-namespace-from";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.6.tgz";
-        sha512 = "zr/QcUlUo7GPo6+X1wC98NJADqmy5QTFWWhqeQWiki4XHafJtLl/YMGkmRB2szDD2IYJCCdBTd4ElwhId9T7Xw==";
-      };
-    };
-    "@babel/plugin-proposal-json-strings-7.18.6" = {
-      name = "_at_babel_slash_plugin-proposal-json-strings";
-      packageName = "@babel/plugin-proposal-json-strings";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz";
-        sha512 = "lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==";
-      };
-    };
-    "@babel/plugin-proposal-logical-assignment-operators-7.18.6" = {
-      name = "_at_babel_slash_plugin-proposal-logical-assignment-operators";
-      packageName = "@babel/plugin-proposal-logical-assignment-operators";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.6.tgz";
-        sha512 = "zMo66azZth/0tVd7gmkxOkOjs2rpHyhpcFo565PUP37hSp6hSd9uUKIfTDFMz58BwqgQKhJ9YxtM5XddjXVn+Q==";
-      };
-    };
-    "@babel/plugin-proposal-nullish-coalescing-operator-7.18.6" = {
-      name = "_at_babel_slash_plugin-proposal-nullish-coalescing-operator";
-      packageName = "@babel/plugin-proposal-nullish-coalescing-operator";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz";
-        sha512 = "wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==";
-      };
-    };
-    "@babel/plugin-proposal-numeric-separator-7.18.6" = {
-      name = "_at_babel_slash_plugin-proposal-numeric-separator";
-      packageName = "@babel/plugin-proposal-numeric-separator";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz";
-        sha512 = "ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==";
-      };
-    };
-    "@babel/plugin-proposal-object-rest-spread-7.18.0" = {
-      name = "_at_babel_slash_plugin-proposal-object-rest-spread";
-      packageName = "@babel/plugin-proposal-object-rest-spread";
-      version = "7.18.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz";
-        sha512 = "nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw==";
-      };
-    };
-    "@babel/plugin-proposal-optional-catch-binding-7.18.6" = {
-      name = "_at_babel_slash_plugin-proposal-optional-catch-binding";
-      packageName = "@babel/plugin-proposal-optional-catch-binding";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz";
-        sha512 = "Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==";
-      };
-    };
-    "@babel/plugin-proposal-optional-chaining-7.18.6" = {
-      name = "_at_babel_slash_plugin-proposal-optional-chaining";
-      packageName = "@babel/plugin-proposal-optional-chaining";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.6.tgz";
-        sha512 = "PatI6elL5eMzoypFAiYDpYQyMtXTn+iMhuxxQt5mAXD4fEmKorpSI3PHd+i3JXBJN3xyA6MvJv7at23HffFHwA==";
-      };
-    };
-    "@babel/plugin-proposal-private-methods-7.18.6" = {
-      name = "_at_babel_slash_plugin-proposal-private-methods";
-      packageName = "@babel/plugin-proposal-private-methods";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz";
-        sha512 = "nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==";
-      };
-    };
-    "@babel/plugin-proposal-private-property-in-object-7.18.6" = {
-      name = "_at_babel_slash_plugin-proposal-private-property-in-object";
-      packageName = "@babel/plugin-proposal-private-property-in-object";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz";
-        sha512 = "9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==";
-      };
-    };
-    "@babel/plugin-proposal-unicode-property-regex-7.18.6" = {
-      name = "_at_babel_slash_plugin-proposal-unicode-property-regex";
-      packageName = "@babel/plugin-proposal-unicode-property-regex";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz";
-        sha512 = "2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==";
-      };
-    };
-    "@babel/plugin-syntax-async-generators-7.8.4" = {
-      name = "_at_babel_slash_plugin-syntax-async-generators";
-      packageName = "@babel/plugin-syntax-async-generators";
-      version = "7.8.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz";
-        sha512 = "tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==";
-      };
-    };
-    "@babel/plugin-syntax-class-properties-7.12.13" = {
-      name = "_at_babel_slash_plugin-syntax-class-properties";
-      packageName = "@babel/plugin-syntax-class-properties";
-      version = "7.12.13";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz";
-        sha512 = "fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==";
-      };
-    };
-    "@babel/plugin-syntax-class-static-block-7.14.5" = {
-      name = "_at_babel_slash_plugin-syntax-class-static-block";
-      packageName = "@babel/plugin-syntax-class-static-block";
-      version = "7.14.5";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz";
-        sha512 = "b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==";
-      };
-    };
-    "@babel/plugin-syntax-dynamic-import-7.8.3" = {
-      name = "_at_babel_slash_plugin-syntax-dynamic-import";
-      packageName = "@babel/plugin-syntax-dynamic-import";
-      version = "7.8.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz";
-        sha512 = "5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==";
-      };
-    };
-    "@babel/plugin-syntax-export-namespace-from-7.8.3" = {
-      name = "_at_babel_slash_plugin-syntax-export-namespace-from";
-      packageName = "@babel/plugin-syntax-export-namespace-from";
-      version = "7.8.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz";
-        sha512 = "MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==";
-      };
-    };
-    "@babel/plugin-syntax-import-assertions-7.18.6" = {
-      name = "_at_babel_slash_plugin-syntax-import-assertions";
-      packageName = "@babel/plugin-syntax-import-assertions";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz";
-        sha512 = "/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==";
-      };
-    };
-    "@babel/plugin-syntax-json-strings-7.8.3" = {
-      name = "_at_babel_slash_plugin-syntax-json-strings";
-      packageName = "@babel/plugin-syntax-json-strings";
-      version = "7.8.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz";
-        sha512 = "lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==";
-      };
-    };
-    "@babel/plugin-syntax-logical-assignment-operators-7.10.4" = {
-      name = "_at_babel_slash_plugin-syntax-logical-assignment-operators";
-      packageName = "@babel/plugin-syntax-logical-assignment-operators";
-      version = "7.10.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz";
-        sha512 = "d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==";
-      };
-    };
-    "@babel/plugin-syntax-nullish-coalescing-operator-7.8.3" = {
-      name = "_at_babel_slash_plugin-syntax-nullish-coalescing-operator";
-      packageName = "@babel/plugin-syntax-nullish-coalescing-operator";
-      version = "7.8.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz";
-        sha512 = "aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==";
-      };
-    };
-    "@babel/plugin-syntax-numeric-separator-7.10.4" = {
-      name = "_at_babel_slash_plugin-syntax-numeric-separator";
-      packageName = "@babel/plugin-syntax-numeric-separator";
-      version = "7.10.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz";
-        sha512 = "9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==";
-      };
-    };
-    "@babel/plugin-syntax-object-rest-spread-7.8.3" = {
-      name = "_at_babel_slash_plugin-syntax-object-rest-spread";
-      packageName = "@babel/plugin-syntax-object-rest-spread";
-      version = "7.8.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz";
-        sha512 = "XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==";
-      };
-    };
-    "@babel/plugin-syntax-optional-catch-binding-7.8.3" = {
-      name = "_at_babel_slash_plugin-syntax-optional-catch-binding";
-      packageName = "@babel/plugin-syntax-optional-catch-binding";
-      version = "7.8.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz";
-        sha512 = "6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==";
-      };
-    };
-    "@babel/plugin-syntax-optional-chaining-7.8.3" = {
-      name = "_at_babel_slash_plugin-syntax-optional-chaining";
-      packageName = "@babel/plugin-syntax-optional-chaining";
-      version = "7.8.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz";
-        sha512 = "KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==";
-      };
-    };
-    "@babel/plugin-syntax-private-property-in-object-7.14.5" = {
-      name = "_at_babel_slash_plugin-syntax-private-property-in-object";
-      packageName = "@babel/plugin-syntax-private-property-in-object";
-      version = "7.14.5";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz";
-        sha512 = "0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==";
-      };
-    };
-    "@babel/plugin-syntax-top-level-await-7.14.5" = {
-      name = "_at_babel_slash_plugin-syntax-top-level-await";
-      packageName = "@babel/plugin-syntax-top-level-await";
-      version = "7.14.5";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz";
-        sha512 = "hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==";
-      };
-    };
-    "@babel/plugin-transform-arrow-functions-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-arrow-functions";
-      packageName = "@babel/plugin-transform-arrow-functions";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz";
-        sha512 = "9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==";
-      };
-    };
-    "@babel/plugin-transform-async-to-generator-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-async-to-generator";
-      packageName = "@babel/plugin-transform-async-to-generator";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz";
-        sha512 = "ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==";
-      };
-    };
-    "@babel/plugin-transform-block-scoped-functions-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-block-scoped-functions";
-      packageName = "@babel/plugin-transform-block-scoped-functions";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz";
-        sha512 = "ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==";
-      };
-    };
-    "@babel/plugin-transform-block-scoping-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-block-scoping";
-      packageName = "@babel/plugin-transform-block-scoping";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.6.tgz";
-        sha512 = "pRqwb91C42vs1ahSAWJkxOxU1RHWDn16XAa6ggQ72wjLlWyYeAcLvTtE0aM8ph3KNydy9CQF2nLYcjq1WysgxQ==";
-      };
-    };
-    "@babel/plugin-transform-classes-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-classes";
-      packageName = "@babel/plugin-transform-classes";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.6.tgz";
-        sha512 = "XTg8XW/mKpzAF3actL554Jl/dOYoJtv3l8fxaEczpgz84IeeVf+T1u2CSvPHuZbt0w3JkIx4rdn/MRQI7mo0HQ==";
-      };
-    };
-    "@babel/plugin-transform-computed-properties-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-computed-properties";
-      packageName = "@babel/plugin-transform-computed-properties";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.6.tgz";
-        sha512 = "9repI4BhNrR0KenoR9vm3/cIc1tSBIo+u1WVjKCAynahj25O8zfbiE6JtAtHPGQSs4yZ+bA8mRasRP+qc+2R5A==";
-      };
-    };
-    "@babel/plugin-transform-destructuring-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-destructuring";
-      packageName = "@babel/plugin-transform-destructuring";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.6.tgz";
-        sha512 = "tgy3u6lRp17ilY8r1kP4i2+HDUwxlVqq3RTc943eAWSzGgpU1qhiKpqZ5CMyHReIYPHdo3Kg8v8edKtDqSVEyQ==";
-      };
-    };
-    "@babel/plugin-transform-dotall-regex-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-dotall-regex";
-      packageName = "@babel/plugin-transform-dotall-regex";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz";
-        sha512 = "6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==";
-      };
-    };
-    "@babel/plugin-transform-duplicate-keys-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-duplicate-keys";
-      packageName = "@babel/plugin-transform-duplicate-keys";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.6.tgz";
-        sha512 = "NJU26U/208+sxYszf82nmGYqVF9QN8py2HFTblPT9hbawi8+1C5a9JubODLTGFuT0qlkqVinmkwOD13s0sZktg==";
-      };
-    };
-    "@babel/plugin-transform-exponentiation-operator-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-exponentiation-operator";
-      packageName = "@babel/plugin-transform-exponentiation-operator";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz";
-        sha512 = "wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==";
-      };
-    };
-    "@babel/plugin-transform-for-of-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-for-of";
-      packageName = "@babel/plugin-transform-for-of";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.6.tgz";
-        sha512 = "WAjoMf4wIiSsy88KmG7tgj2nFdEK7E46tArVtcgED7Bkj6Fg/tG5SbvNIOKxbFS2VFgNh6+iaPswBeQZm4ox8w==";
-      };
-    };
-    "@babel/plugin-transform-function-name-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-function-name";
-      packageName = "@babel/plugin-transform-function-name";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.6.tgz";
-        sha512 = "kJha/Gbs5RjzIu0CxZwf5e3aTTSlhZnHMT8zPWnJMjNpLOUgqevg+PN5oMH68nMCXnfiMo4Bhgxqj59KHTlAnA==";
-      };
-    };
-    "@babel/plugin-transform-literals-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-literals";
-      packageName = "@babel/plugin-transform-literals";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.6.tgz";
-        sha512 = "x3HEw0cJZVDoENXOp20HlypIHfl0zMIhMVZEBVTfmqbObIpsMxMbmU5nOEO8R7LYT+z5RORKPlTI5Hj4OsO9/Q==";
-      };
-    };
-    "@babel/plugin-transform-member-expression-literals-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-member-expression-literals";
-      packageName = "@babel/plugin-transform-member-expression-literals";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz";
-        sha512 = "qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==";
-      };
-    };
-    "@babel/plugin-transform-modules-amd-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-modules-amd";
-      packageName = "@babel/plugin-transform-modules-amd";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz";
-        sha512 = "Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==";
-      };
-    };
-    "@babel/plugin-transform-modules-commonjs-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-modules-commonjs";
-      packageName = "@babel/plugin-transform-modules-commonjs";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz";
-        sha512 = "Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==";
-      };
-    };
-    "@babel/plugin-transform-modules-systemjs-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-modules-systemjs";
-      packageName = "@babel/plugin-transform-modules-systemjs";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.6.tgz";
-        sha512 = "UbPYpXxLjTw6w6yXX2BYNxF3p6QY225wcTkfQCy3OMnSlS/C3xGtwUjEzGkldb/sy6PWLiCQ3NbYfjWUTI3t4g==";
-      };
-    };
-    "@babel/plugin-transform-modules-umd-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-modules-umd";
-      packageName = "@babel/plugin-transform-modules-umd";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz";
-        sha512 = "dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==";
-      };
-    };
-    "@babel/plugin-transform-named-capturing-groups-regex-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-named-capturing-groups-regex";
-      packageName = "@babel/plugin-transform-named-capturing-groups-regex";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz";
-        sha512 = "UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==";
-      };
-    };
-    "@babel/plugin-transform-new-target-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-new-target";
-      packageName = "@babel/plugin-transform-new-target";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz";
-        sha512 = "DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==";
-      };
-    };
-    "@babel/plugin-transform-object-super-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-object-super";
-      packageName = "@babel/plugin-transform-object-super";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz";
-        sha512 = "uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==";
-      };
-    };
-    "@babel/plugin-transform-parameters-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-parameters";
-      packageName = "@babel/plugin-transform-parameters";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.6.tgz";
-        sha512 = "FjdqgMv37yVl/gwvzkcB+wfjRI8HQmc5EgOG9iGNvUY1ok+TjsoaMP7IqCDZBhkFcM5f3OPVMs6Dmp03C5k4/A==";
-      };
-    };
-    "@babel/plugin-transform-property-literals-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-property-literals";
-      packageName = "@babel/plugin-transform-property-literals";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz";
-        sha512 = "cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==";
-      };
-    };
-    "@babel/plugin-transform-regenerator-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-regenerator";
-      packageName = "@babel/plugin-transform-regenerator";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz";
-        sha512 = "poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==";
-      };
-    };
-    "@babel/plugin-transform-reserved-words-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-reserved-words";
-      packageName = "@babel/plugin-transform-reserved-words";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz";
-        sha512 = "oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==";
-      };
-    };
-    "@babel/plugin-transform-shorthand-properties-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-shorthand-properties";
-      packageName = "@babel/plugin-transform-shorthand-properties";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz";
-        sha512 = "eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==";
-      };
-    };
-    "@babel/plugin-transform-spread-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-spread";
-      packageName = "@babel/plugin-transform-spread";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.6.tgz";
-        sha512 = "ayT53rT/ENF8WWexIRg9AiV9h0aIteyWn5ptfZTZQrjk/+f3WdrJGCY4c9wcgl2+MKkKPhzbYp97FTsquZpDCw==";
-      };
-    };
-    "@babel/plugin-transform-sticky-regex-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-sticky-regex";
-      packageName = "@babel/plugin-transform-sticky-regex";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz";
-        sha512 = "kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==";
-      };
-    };
-    "@babel/plugin-transform-template-literals-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-template-literals";
-      packageName = "@babel/plugin-transform-template-literals";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.6.tgz";
-        sha512 = "UuqlRrQmT2SWRvahW46cGSany0uTlcj8NYOS5sRGYi8FxPYPoLd5DDmMd32ZXEj2Jq+06uGVQKHxa/hJx2EzKw==";
-      };
-    };
-    "@babel/plugin-transform-typeof-symbol-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-typeof-symbol";
-      packageName = "@babel/plugin-transform-typeof-symbol";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.6.tgz";
-        sha512 = "7m71iS/QhsPk85xSjFPovHPcH3H9qeyzsujhTc+vcdnsXavoWYJ74zx0lP5RhpC5+iDnVLO+PPMHzC11qels1g==";
-      };
-    };
-    "@babel/plugin-transform-unicode-escapes-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-unicode-escapes";
-      packageName = "@babel/plugin-transform-unicode-escapes";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz";
-        sha512 = "XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw==";
-      };
-    };
-    "@babel/plugin-transform-unicode-regex-7.18.6" = {
-      name = "_at_babel_slash_plugin-transform-unicode-regex";
-      packageName = "@babel/plugin-transform-unicode-regex";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz";
-        sha512 = "gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==";
-      };
-    };
-    "@babel/polyfill-7.12.1" = {
-      name = "_at_babel_slash_polyfill";
-      packageName = "@babel/polyfill";
-      version = "7.12.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.12.1.tgz";
-        sha512 = "X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g==";
-      };
-    };
-    "@babel/preset-env-7.18.0" = {
-      name = "_at_babel_slash_preset-env";
-      packageName = "@babel/preset-env";
-      version = "7.18.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.0.tgz";
-        sha512 = "cP74OMs7ECLPeG1reiCQ/D/ypyOxgfm8uR6HRYV23vTJ7Lu1nbgj9DQDo/vH59gnn7GOAwtTDPPYV4aXzsMKHA==";
-      };
-    };
-    "@babel/preset-modules-0.1.5" = {
-      name = "_at_babel_slash_preset-modules";
-      packageName = "@babel/preset-modules";
-      version = "0.1.5";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz";
-        sha512 = "A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==";
-      };
-    };
-    "@babel/runtime-7.18.6" = {
-      name = "_at_babel_slash_runtime";
-      packageName = "@babel/runtime";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.6.tgz";
-        sha512 = "t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ==";
-      };
-    };
-    "@babel/template-7.18.6" = {
-      name = "_at_babel_slash_template";
-      packageName = "@babel/template";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz";
-        sha512 = "JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==";
-      };
-    };
-    "@babel/traverse-7.18.6" = {
-      name = "_at_babel_slash_traverse";
-      packageName = "@babel/traverse";
-      version = "7.18.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.6.tgz";
-        sha512 = "zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==";
-      };
-    };
-    "@babel/types-7.18.7" = {
-      name = "_at_babel_slash_types";
-      packageName = "@babel/types";
-      version = "7.18.7";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/types/-/types-7.18.7.tgz";
-        sha512 = "QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==";
-      };
-    };
-    "@electron/remote-2.0.8" = {
-      name = "_at_electron_slash_remote";
-      packageName = "@electron/remote";
-      version = "2.0.8";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@electron/remote/-/remote-2.0.8.tgz";
-        sha512 = "P10v3+iFCIvEPeYzTWWGwwHmqWnjoh8RYnbtZAb3RlQefy4guagzIwcWtfftABIfm6JJTNQf4WPSKWZOpLmHXw==";
-      };
-    };
-    "@eslint/eslintrc-1.3.0" = {
-      name = "_at_eslint_slash_eslintrc";
-      packageName = "@eslint/eslintrc";
-      version = "1.3.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz";
-        sha512 = "UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==";
-      };
-    };
-    "@gar/promisify-1.1.3" = {
-      name = "_at_gar_slash_promisify";
-      packageName = "@gar/promisify";
-      version = "1.1.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz";
-        sha512 = "k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==";
-      };
-    };
-    "@humanwhocodes/config-array-0.9.5" = {
-      name = "_at_humanwhocodes_slash_config-array";
-      packageName = "@humanwhocodes/config-array";
-      version = "0.9.5";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz";
-        sha512 = "ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==";
-      };
-    };
-    "@humanwhocodes/object-schema-1.2.1" = {
-      name = "_at_humanwhocodes_slash_object-schema";
-      packageName = "@humanwhocodes/object-schema";
-      version = "1.2.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz";
-        sha512 = "ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==";
-      };
-    };
-    "@jridgewell/gen-mapping-0.1.1" = {
-      name = "_at_jridgewell_slash_gen-mapping";
-      packageName = "@jridgewell/gen-mapping";
-      version = "0.1.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz";
-        sha512 = "sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==";
-      };
-    };
-    "@jridgewell/gen-mapping-0.3.2" = {
-      name = "_at_jridgewell_slash_gen-mapping";
-      packageName = "@jridgewell/gen-mapping";
-      version = "0.3.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz";
-        sha512 = "mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==";
-      };
-    };
-    "@jridgewell/resolve-uri-3.0.8" = {
-      name = "_at_jridgewell_slash_resolve-uri";
-      packageName = "@jridgewell/resolve-uri";
-      version = "3.0.8";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.8.tgz";
-        sha512 = "YK5G9LaddzGbcucK4c8h5tWFmMPBvRZ/uyWmN1/SbBdIvqGUdWGkJ5BAaccgs6XbzVLsqbPJrBSFwKv3kT9i7w==";
-      };
-    };
-    "@jridgewell/set-array-1.1.2" = {
-      name = "_at_jridgewell_slash_set-array";
-      packageName = "@jridgewell/set-array";
-      version = "1.1.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz";
-        sha512 = "xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==";
-      };
-    };
-    "@jridgewell/sourcemap-codec-1.4.14" = {
-      name = "_at_jridgewell_slash_sourcemap-codec";
-      packageName = "@jridgewell/sourcemap-codec";
-      version = "1.4.14";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz";
-        sha512 = "XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==";
-      };
-    };
-    "@jridgewell/trace-mapping-0.3.14" = {
-      name = "_at_jridgewell_slash_trace-mapping";
-      packageName = "@jridgewell/trace-mapping";
-      version = "0.3.14";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz";
-        sha512 = "bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==";
-      };
-    };
-    "@npmcli/fs-1.1.1" = {
-      name = "_at_npmcli_slash_fs";
-      packageName = "@npmcli/fs";
-      version = "1.1.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz";
-        sha512 = "8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==";
-      };
-    };
-    "@npmcli/move-file-1.1.2" = {
-      name = "_at_npmcli_slash_move-file";
-      packageName = "@npmcli/move-file";
-      version = "1.1.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz";
-        sha512 = "1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==";
-      };
-    };
-    "@sindresorhus/is-0.14.0" = {
-      name = "_at_sindresorhus_slash_is";
-      packageName = "@sindresorhus/is";
-      version = "0.14.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz";
-        sha512 = "9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==";
-      };
-    };
-    "@szmarczak/http-timer-1.1.2" = {
-      name = "_at_szmarczak_slash_http-timer";
-      packageName = "@szmarczak/http-timer";
-      version = "1.1.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz";
-        sha512 = "XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==";
-      };
-    };
-    "@tootallnate/once-1.1.2" = {
-      name = "_at_tootallnate_slash_once";
-      packageName = "@tootallnate/once";
-      version = "1.1.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz";
-        sha512 = "RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==";
-      };
-    };
-    "@types/minimist-1.2.2" = {
-      name = "_at_types_slash_minimist";
-      packageName = "@types/minimist";
-      version = "1.2.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz";
-        sha512 = "jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==";
-      };
-    };
-    "@types/normalize-package-data-2.4.1" = {
-      name = "_at_types_slash_normalize-package-data";
-      packageName = "@types/normalize-package-data";
-      version = "2.4.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz";
-        sha512 = "Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==";
-      };
-    };
-    "JSONStream-1.3.5" = {
-      name = "JSONStream";
-      packageName = "JSONStream";
-      version = "1.3.5";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz";
-        sha512 = "E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==";
-      };
-    };
-    "abbrev-1.1.1" = {
-      name = "abbrev";
-      packageName = "abbrev";
-      version = "1.1.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz";
-        sha512 = "nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==";
-      };
-    };
-    "acorn-7.4.1" = {
-      name = "acorn";
-      packageName = "acorn";
-      version = "7.4.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz";
-        sha512 = "nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==";
-      };
-    };
-    "acorn-8.7.1" = {
-      name = "acorn";
-      packageName = "acorn";
-      version = "8.7.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz";
-        sha512 = "Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==";
-      };
-    };
-    "acorn-jsx-5.3.2" = {
-      name = "acorn-jsx";
-      packageName = "acorn-jsx";
-      version = "5.3.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz";
-        sha512 = "rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==";
-      };
-    };
-    "acorn-node-1.8.2" = {
-      name = "acorn-node";
-      packageName = "acorn-node";
-      version = "1.8.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz";
-        sha512 = "8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==";
-      };
-    };
-    "acorn-walk-7.2.0" = {
-      name = "acorn-walk";
-      packageName = "acorn-walk";
-      version = "7.2.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz";
-        sha512 = "OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==";
-      };
-    };
-    "agent-base-6.0.2" = {
-      name = "agent-base";
-      packageName = "agent-base";
-      version = "6.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz";
-        sha512 = "RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==";
-      };
-    };
-    "agentkeepalive-4.2.1" = {
-      name = "agentkeepalive";
-      packageName = "agentkeepalive";
-      version = "4.2.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz";
-        sha512 = "Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==";
-      };
-    };
-    "aggregate-error-3.1.0" = {
-      name = "aggregate-error";
-      packageName = "aggregate-error";
-      version = "3.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz";
-        sha512 = "4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==";
-      };
-    };
-    "ajv-6.12.6" = {
-      name = "ajv";
-      packageName = "ajv";
-      version = "6.12.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz";
-        sha512 = "j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==";
-      };
-    };
-    "ansi-align-3.0.1" = {
-      name = "ansi-align";
-      packageName = "ansi-align";
-      version = "3.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz";
-        sha512 = "IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==";
-      };
-    };
-    "ansi-html-0.0.9" = {
-      name = "ansi-html";
-      packageName = "ansi-html";
-      version = "0.0.9";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.9.tgz";
-        sha512 = "ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg==";
-      };
-    };
-    "ansi-regex-2.1.1" = {
-      name = "ansi-regex";
-      packageName = "ansi-regex";
-      version = "2.1.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz";
-        sha512 = "TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==";
-      };
-    };
-    "ansi-regex-5.0.1" = {
-      name = "ansi-regex";
-      packageName = "ansi-regex";
-      version = "5.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz";
-        sha512 = "quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==";
-      };
-    };
-    "ansi-styles-2.2.1" = {
-      name = "ansi-styles";
-      packageName = "ansi-styles";
-      version = "2.2.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz";
-        sha512 = "kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==";
-      };
-    };
-    "ansi-styles-3.2.1" = {
-      name = "ansi-styles";
-      packageName = "ansi-styles";
-      version = "3.2.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz";
-        sha512 = "VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==";
-      };
-    };
-    "ansi-styles-4.3.0" = {
-      name = "ansi-styles";
-      packageName = "ansi-styles";
-      version = "4.3.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz";
-        sha512 = "zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==";
-      };
-    };
-    "anymatch-3.1.2" = {
-      name = "anymatch";
-      packageName = "anymatch";
-      version = "3.1.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz";
-        sha512 = "P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==";
-      };
-    };
-    "apache-crypt-1.2.5" = {
-      name = "apache-crypt";
-      packageName = "apache-crypt";
-      version = "1.2.5";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/apache-crypt/-/apache-crypt-1.2.5.tgz";
-        sha512 = "ICnYQH+DFVmw+S4Q0QY2XRXD8Ne8ewh8HgbuFH4K7022zCxgHM0Hz1xkRnUlEfAXNbwp1Cnhbedu60USIfDxvg==";
-      };
-    };
-    "apache-md5-1.1.7" = {
-      name = "apache-md5";
-      packageName = "apache-md5";
-      version = "1.1.7";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/apache-md5/-/apache-md5-1.1.7.tgz";
-        sha512 = "JtHjzZmJxtzfTSjsCyHgPR155HBe5WGyUyHTaEkfy46qhwCFKx1Epm6nAxgUG3WfUZP1dWhGqj9Z2NOBeZ+uBw==";
-      };
-    };
-    "aproba-2.0.0" = {
-      name = "aproba";
-      packageName = "aproba";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz";
-        sha512 = "lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==";
-      };
-    };
-    "are-we-there-yet-2.0.0" = {
-      name = "are-we-there-yet";
-      packageName = "are-we-there-yet";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz";
-        sha512 = "Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==";
-      };
-    };
-    "are-we-there-yet-3.0.0" = {
-      name = "are-we-there-yet";
-      packageName = "are-we-there-yet";
-      version = "3.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz";
-        sha512 = "0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==";
-      };
-    };
-    "argparse-2.0.1" = {
-      name = "argparse";
-      packageName = "argparse";
-      version = "2.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz";
-        sha512 = "8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==";
-      };
-    };
-    "array-flatten-2.1.2" = {
-      name = "array-flatten";
-      packageName = "array-flatten";
-      version = "2.1.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz";
-        sha512 = "hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==";
-      };
-    };
-    "arrify-1.0.1" = {
-      name = "arrify";
-      packageName = "arrify";
-      version = "1.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz";
-        sha512 = "3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==";
-      };
-    };
-    "asn1-0.2.6" = {
-      name = "asn1";
-      packageName = "asn1";
-      version = "0.2.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz";
-        sha512 = "ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==";
-      };
-    };
-    "asn1.js-5.4.1" = {
-      name = "asn1.js";
-      packageName = "asn1.js";
-      version = "5.4.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz";
-        sha512 = "+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==";
-      };
-    };
-    "assert-1.5.0" = {
-      name = "assert";
-      packageName = "assert";
-      version = "1.5.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz";
-        sha512 = "EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==";
-      };
-    };
-    "assert-plus-1.0.0" = {
-      name = "assert-plus";
-      packageName = "assert-plus";
-      version = "1.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz";
-        sha512 = "NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==";
-      };
-    };
-    "async-foreach-0.1.3" = {
-      name = "async-foreach";
-      packageName = "async-foreach";
-      version = "0.1.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz";
-        sha512 = "VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA==";
-      };
-    };
-    "asynckit-0.4.0" = {
-      name = "asynckit";
-      packageName = "asynckit";
-      version = "0.4.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz";
-        sha512 = "Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==";
-      };
-    };
-    "available-typed-arrays-1.0.5" = {
-      name = "available-typed-arrays";
-      packageName = "available-typed-arrays";
-      version = "1.0.5";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz";
-        sha512 = "DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==";
-      };
-    };
-    "aws-sign2-0.7.0" = {
-      name = "aws-sign2";
-      packageName = "aws-sign2";
-      version = "0.7.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz";
-        sha512 = "08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==";
-      };
-    };
-    "aws4-1.11.0" = {
-      name = "aws4";
-      packageName = "aws4";
-      version = "1.11.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz";
-        sha512 = "xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==";
-      };
-    };
-    "babel-plugin-dynamic-import-node-2.3.3" = {
-      name = "babel-plugin-dynamic-import-node";
-      packageName = "babel-plugin-dynamic-import-node";
-      version = "2.3.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz";
-        sha512 = "jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==";
-      };
-    };
-    "babel-plugin-polyfill-corejs2-0.3.1" = {
-      name = "babel-plugin-polyfill-corejs2";
-      packageName = "babel-plugin-polyfill-corejs2";
-      version = "0.3.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz";
-        sha512 = "v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==";
-      };
-    };
-    "babel-plugin-polyfill-corejs3-0.5.2" = {
-      name = "babel-plugin-polyfill-corejs3";
-      packageName = "babel-plugin-polyfill-corejs3";
-      version = "0.5.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz";
-        sha512 = "G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==";
-      };
-    };
-    "babel-plugin-polyfill-regenerator-0.3.1" = {
-      name = "babel-plugin-polyfill-regenerator";
-      packageName = "babel-plugin-polyfill-regenerator";
-      version = "0.3.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz";
-        sha512 = "Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==";
-      };
-    };
-    "babelify-10.0.0" = {
-      name = "babelify";
-      packageName = "babelify";
-      version = "10.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/babelify/-/babelify-10.0.0.tgz";
-        sha512 = "X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg==";
-      };
-    };
-    "balanced-match-1.0.2" = {
-      name = "balanced-match";
-      packageName = "balanced-match";
-      version = "1.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz";
-        sha512 = "3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==";
-      };
-    };
-    "balanced-match-2.0.0" = {
-      name = "balanced-match";
-      packageName = "balanced-match";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz";
-        sha512 = "1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==";
-      };
-    };
-    "base64-js-1.5.1" = {
-      name = "base64-js";
-      packageName = "base64-js";
-      version = "1.5.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz";
-        sha512 = "AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==";
-      };
-    };
-    "bcrypt-pbkdf-1.0.2" = {
-      name = "bcrypt-pbkdf";
-      packageName = "bcrypt-pbkdf";
-      version = "1.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz";
-        sha512 = "qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==";
-      };
-    };
-    "bcryptjs-2.4.3" = {
-      name = "bcryptjs";
-      packageName = "bcryptjs";
-      version = "2.4.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz";
-        sha512 = "V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==";
-      };
-    };
-    "binary-extensions-2.2.0" = {
-      name = "binary-extensions";
-      packageName = "binary-extensions";
-      version = "2.2.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz";
-        sha512 = "jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==";
-      };
-    };
-    "bn.js-4.12.0" = {
-      name = "bn.js";
-      packageName = "bn.js";
-      version = "4.12.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz";
-        sha512 = "c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==";
-      };
-    };
-    "bn.js-5.2.1" = {
-      name = "bn.js";
-      packageName = "bn.js";
-      version = "5.2.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz";
-        sha512 = "eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==";
-      };
-    };
-    "bonjour-git+https://github.com/jean-emmanuel/bonjour" = {
-      name = "bonjour";
-      packageName = "bonjour";
-      version = "4.0.0";
-      src = fetchgit {
-        url = "https://github.com/jean-emmanuel/bonjour";
-        rev = "33d7fa28c568d05cb7ffda1fd2b20f4cc364e273";
-        sha256 = "3f9cd813a3cd8ac6ec02421bd590922a4722a0dd89416dc580df6ee1f34e48b0";
-      };
-    };
-    "boxen-5.1.2" = {
-      name = "boxen";
-      packageName = "boxen";
-      version = "5.1.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz";
-        sha512 = "9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==";
-      };
-    };
-    "brace-0.11.1" = {
-      name = "brace";
-      packageName = "brace";
-      version = "0.11.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/brace/-/brace-0.11.1.tgz";
-        sha512 = "Fc8Ne62jJlKHiG/ajlonC4Sd66Pq68fFwK4ihJGNZpGqboc324SQk+lRvMzpPRuJOmfrJefdG8/7JdWX4bzJ2Q==";
-      };
-    };
-    "brace-expansion-1.1.11" = {
-      name = "brace-expansion";
-      packageName = "brace-expansion";
-      version = "1.1.11";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz";
-        sha512 = "iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==";
-      };
-    };
-    "brace-expansion-2.0.1" = {
-      name = "brace-expansion";
-      packageName = "brace-expansion";
-      version = "2.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz";
-        sha512 = "XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==";
-      };
-    };
-    "braces-3.0.2" = {
-      name = "braces";
-      packageName = "braces";
-      version = "3.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz";
-        sha512 = "b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==";
-      };
-    };
-    "brorand-1.1.0" = {
-      name = "brorand";
-      packageName = "brorand";
-      version = "1.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz";
-        sha512 = "cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==";
-      };
-    };
-    "browser-pack-6.1.0" = {
-      name = "browser-pack";
-      packageName = "browser-pack";
-      version = "6.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz";
-        sha512 = "erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==";
-      };
-    };
-    "browser-process-hrtime-0.1.3" = {
-      name = "browser-process-hrtime";
-      packageName = "browser-process-hrtime";
-      version = "0.1.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz";
-        sha512 = "bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==";
-      };
-    };
-    "browser-resolve-2.0.0" = {
-      name = "browser-resolve";
-      packageName = "browser-resolve";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz";
-        sha512 = "7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==";
-      };
-    };
-    "browserify-17.0.0" = {
-      name = "browserify";
-      packageName = "browserify";
-      version = "17.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/browserify/-/browserify-17.0.0.tgz";
-        sha512 = "SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w==";
-      };
-    };
-    "browserify-aes-1.2.0" = {
-      name = "browserify-aes";
-      packageName = "browserify-aes";
-      version = "1.2.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz";
-        sha512 = "+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==";
-      };
-    };
-    "browserify-cipher-1.0.1" = {
-      name = "browserify-cipher";
-      packageName = "browserify-cipher";
-      version = "1.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz";
-        sha512 = "sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==";
-      };
-    };
-    "browserify-des-1.0.2" = {
-      name = "browserify-des";
-      packageName = "browserify-des";
-      version = "1.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz";
-        sha512 = "BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==";
-      };
-    };
-    "browserify-rsa-4.1.0" = {
-      name = "browserify-rsa";
-      packageName = "browserify-rsa";
-      version = "4.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz";
-        sha512 = "AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==";
-      };
-    };
-    "browserify-sign-4.2.1" = {
-      name = "browserify-sign";
-      packageName = "browserify-sign";
-      version = "4.2.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz";
-        sha512 = "/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==";
-      };
-    };
-    "browserify-zlib-0.2.0" = {
-      name = "browserify-zlib";
-      packageName = "browserify-zlib";
-      version = "0.2.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz";
-        sha512 = "Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==";
-      };
-    };
-    "browserslist-4.21.1" = {
-      name = "browserslist";
-      packageName = "browserslist";
-      version = "4.21.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/browserslist/-/browserslist-4.21.1.tgz";
-        sha512 = "Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ==";
-      };
-    };
-    "buffer-5.2.1" = {
-      name = "buffer";
-      packageName = "buffer";
-      version = "5.2.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz";
-        sha512 = "c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==";
-      };
-    };
-    "buffer-from-1.1.2" = {
-      name = "buffer-from";
-      packageName = "buffer-from";
-      version = "1.1.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz";
-        sha512 = "E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==";
-      };
-    };
-    "buffer-indexof-1.1.1" = {
-      name = "buffer-indexof";
-      packageName = "buffer-indexof";
-      version = "1.1.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz";
-        sha512 = "4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==";
-      };
-    };
-    "buffer-xor-1.0.3" = {
-      name = "buffer-xor";
-      packageName = "buffer-xor";
-      version = "1.0.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz";
-        sha512 = "571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==";
-      };
-    };
-    "builtin-status-codes-3.0.0" = {
-      name = "builtin-status-codes";
-      packageName = "builtin-status-codes";
-      version = "3.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz";
-        sha512 = "HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==";
-      };
-    };
-    "cacache-15.3.0" = {
-      name = "cacache";
-      packageName = "cacache";
-      version = "15.3.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz";
-        sha512 = "VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==";
-      };
-    };
-    "cacheable-request-6.1.0" = {
-      name = "cacheable-request";
-      packageName = "cacheable-request";
-      version = "6.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz";
-        sha512 = "Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==";
-      };
-    };
-    "cached-path-relative-1.1.0" = {
-      name = "cached-path-relative";
-      packageName = "cached-path-relative";
-      version = "1.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.1.0.tgz";
-        sha512 = "WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==";
-      };
-    };
-    "call-bind-1.0.2" = {
-      name = "call-bind";
-      packageName = "call-bind";
-      version = "1.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz";
-        sha512 = "7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==";
-      };
-    };
-    "callsites-3.1.0" = {
-      name = "callsites";
-      packageName = "callsites";
-      version = "3.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz";
-        sha512 = "P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==";
-      };
-    };
-    "camel-case-3.0.0" = {
-      name = "camel-case";
-      packageName = "camel-case";
-      version = "3.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz";
-        sha512 = "+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==";
-      };
-    };
-    "camelcase-5.3.1" = {
-      name = "camelcase";
-      packageName = "camelcase";
-      version = "5.3.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz";
-        sha512 = "L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==";
-      };
-    };
-    "camelcase-6.3.0" = {
-      name = "camelcase";
-      packageName = "camelcase";
-      version = "6.3.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz";
-        sha512 = "Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==";
-      };
-    };
-    "camelcase-keys-6.2.2" = {
-      name = "camelcase-keys";
-      packageName = "camelcase-keys";
-      version = "6.2.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz";
-        sha512 = "YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==";
-      };
-    };
-    "caniuse-lite-1.0.30001363" = {
-      name = "caniuse-lite";
-      packageName = "caniuse-lite";
-      version = "1.0.30001363";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001363.tgz";
-        sha512 = "HpQhpzTGGPVMnCjIomjt+jvyUu8vNFo3TaDiZ/RcoTrlOq/5+tC8zHdsbgFB6MxmaY+jCpsH09aD80Bb4Ow3Sg==";
-      };
-    };
-    "caseless-0.12.0" = {
-      name = "caseless";
-      packageName = "caseless";
-      version = "0.12.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz";
-        sha512 = "4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==";
-      };
-    };
-    "chalk-1.1.3" = {
-      name = "chalk";
-      packageName = "chalk";
-      version = "1.1.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz";
-        sha512 = "U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==";
-      };
-    };
-    "chalk-2.4.2" = {
-      name = "chalk";
-      packageName = "chalk";
-      version = "2.4.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz";
-        sha512 = "Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==";
-      };
-    };
-    "chalk-4.1.2" = {
-      name = "chalk";
-      packageName = "chalk";
-      version = "4.1.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz";
-        sha512 = "oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==";
-      };
-    };
-    "chokidar-3.5.3" = {
-      name = "chokidar";
-      packageName = "chokidar";
-      version = "3.5.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz";
-        sha512 = "Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==";
-      };
-    };
-    "chownr-2.0.0" = {
-      name = "chownr";
-      packageName = "chownr";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz";
-        sha512 = "bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==";
-      };
-    };
-    "chroma-js-2.4.2" = {
-      name = "chroma-js";
-      packageName = "chroma-js";
-      version = "2.4.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/chroma-js/-/chroma-js-2.4.2.tgz";
-        sha512 = "U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A==";
-      };
-    };
-    "ci-info-2.0.0" = {
-      name = "ci-info";
-      packageName = "ci-info";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz";
-        sha512 = "5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==";
-      };
-    };
-    "cipher-base-1.0.4" = {
-      name = "cipher-base";
-      packageName = "cipher-base";
-      version = "1.0.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz";
-        sha512 = "Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==";
-      };
-    };
-    "clean-stack-2.2.0" = {
-      name = "clean-stack";
-      packageName = "clean-stack";
-      version = "2.2.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz";
-        sha512 = "4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==";
-      };
-    };
-    "cli-boxes-2.2.1" = {
-      name = "cli-boxes";
-      packageName = "cli-boxes";
-      version = "2.2.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz";
-        sha512 = "y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==";
-      };
-    };
-    "cliui-7.0.4" = {
-      name = "cliui";
-      packageName = "cliui";
-      version = "7.0.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz";
-        sha512 = "OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==";
-      };
-    };
-    "clone-response-1.0.2" = {
-      name = "clone-response";
-      packageName = "clone-response";
-      version = "1.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz";
-        sha512 = "yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==";
-      };
-    };
-    "color-convert-1.9.3" = {
-      name = "color-convert";
-      packageName = "color-convert";
-      version = "1.9.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz";
-        sha512 = "QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==";
-      };
-    };
-    "color-convert-2.0.1" = {
-      name = "color-convert";
-      packageName = "color-convert";
-      version = "2.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz";
-        sha512 = "RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==";
-      };
-    };
-    "color-name-1.1.3" = {
-      name = "color-name";
-      packageName = "color-name";
-      version = "1.1.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz";
-        sha512 = "72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==";
-      };
-    };
-    "color-name-1.1.4" = {
-      name = "color-name";
-      packageName = "color-name";
-      version = "1.1.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz";
-        sha512 = "dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==";
-      };
-    };
-    "color-support-1.1.3" = {
-      name = "color-support";
-      packageName = "color-support";
-      version = "1.1.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz";
-        sha512 = "qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==";
-      };
-    };
-    "combine-source-map-0.8.0" = {
-      name = "combine-source-map";
-      packageName = "combine-source-map";
-      version = "0.8.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz";
-        sha512 = "UlxQ9Vw0b/Bt/KYwCFqdEwsQ1eL8d1gibiFb7lxQJFdvTgc2hIZi6ugsg+kyhzhPV+QEpUiEIwInIAIrgoEkrg==";
-      };
-    };
-    "combined-stream-1.0.8" = {
-      name = "combined-stream";
-      packageName = "combined-stream";
-      version = "1.0.8";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz";
-        sha512 = "FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==";
-      };
-    };
-    "commander-2.20.3" = {
-      name = "commander";
-      packageName = "commander";
-      version = "2.20.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz";
-        sha512 = "GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==";
-      };
-    };
-    "concat-map-0.0.1" = {
-      name = "concat-map";
-      packageName = "concat-map";
-      version = "0.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz";
-        sha512 = "/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==";
-      };
-    };
-    "concat-stream-1.6.2" = {
-      name = "concat-stream";
-      packageName = "concat-stream";
-      version = "1.6.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz";
-        sha512 = "27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==";
-      };
-    };
-    "configstore-5.0.1" = {
-      name = "configstore";
-      packageName = "configstore";
-      version = "5.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz";
-        sha512 = "aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==";
-      };
-    };
-    "console-browserify-1.2.0" = {
-      name = "console-browserify";
-      packageName = "console-browserify";
-      version = "1.2.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz";
-        sha512 = "ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==";
-      };
-    };
-    "console-control-strings-1.1.0" = {
-      name = "console-control-strings";
-      packageName = "console-control-strings";
-      version = "1.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz";
-        sha512 = "ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==";
-      };
-    };
-    "constants-browserify-1.0.0" = {
-      name = "constants-browserify";
-      packageName = "constants-browserify";
-      version = "1.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz";
-        sha512 = "xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==";
-      };
-    };
-    "convert-source-map-1.1.3" = {
-      name = "convert-source-map";
-      packageName = "convert-source-map";
-      version = "1.1.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz";
-        sha512 = "Y8L5rp6jo+g9VEPgvqNfEopjTR4OTYct8lXlS8iVQdmnjDvbdbzYe9rjtFCB9egC86JoNCU61WRY+ScjkZpnIg==";
-      };
-    };
-    "convert-source-map-1.8.0" = {
-      name = "convert-source-map";
-      packageName = "convert-source-map";
-      version = "1.8.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz";
-        sha512 = "+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==";
-      };
-    };
-    "core-js-2.6.12" = {
-      name = "core-js";
-      packageName = "core-js";
-      version = "2.6.12";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz";
-        sha512 = "Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==";
-      };
-    };
-    "core-js-3.22.5" = {
-      name = "core-js";
-      packageName = "core-js";
-      version = "3.22.5";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/core-js/-/core-js-3.22.5.tgz";
-        sha512 = "VP/xYuvJ0MJWRAobcmQ8F2H6Bsn+s7zqAAjFaHGBMc5AQm7zaelhD1LGduFn2EehEcQcU+br6t+fwbpQ5d1ZWA==";
-      };
-    };
-    "core-js-compat-3.23.3" = {
-      name = "core-js-compat";
-      packageName = "core-js-compat";
-      version = "3.23.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.23.3.tgz";
-        sha512 = "WSzUs2h2vvmKsacLHNTdpyOC9k43AEhcGoFlVgCY4L7aw98oSBKtPL6vD0/TqZjRWRQYdDSLkzZIni4Crbbiqw==";
-      };
-    };
-    "core-util-is-1.0.2" = {
-      name = "core-util-is";
-      packageName = "core-util-is";
-      version = "1.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz";
-        sha512 = "3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==";
-      };
-    };
-    "core-util-is-1.0.3" = {
-      name = "core-util-is";
-      packageName = "core-util-is";
-      version = "1.0.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz";
-        sha512 = "ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==";
-      };
-    };
-    "cpr-3.0.1" = {
-      name = "cpr";
-      packageName = "cpr";
-      version = "3.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/cpr/-/cpr-3.0.1.tgz";
-        sha512 = "Xch4PXQ/KC8lJ+KfJ9JI6eG/nmppLrPPWg5Q+vh65Qr9EjuJEubxh/H/Le1TmCZ7+Xv7iJuNRqapyOFZB+wsxA==";
-      };
-    };
-    "create-ecdh-4.0.4" = {
-      name = "create-ecdh";
-      packageName = "create-ecdh";
-      version = "4.0.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz";
-        sha512 = "mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==";
-      };
-    };
-    "create-hash-1.2.0" = {
-      name = "create-hash";
-      packageName = "create-hash";
-      version = "1.2.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz";
-        sha512 = "z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==";
-      };
-    };
-    "create-hmac-1.1.7" = {
-      name = "create-hmac";
-      packageName = "create-hmac";
-      version = "1.1.7";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz";
-        sha512 = "MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==";
-      };
-    };
-    "cross-spawn-7.0.3" = {
-      name = "cross-spawn";
-      packageName = "cross-spawn";
-      version = "7.0.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz";
-        sha512 = "iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==";
-      };
-    };
-    "crypto-browserify-3.12.0" = {
-      name = "crypto-browserify";
-      packageName = "crypto-browserify";
-      version = "3.12.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz";
-        sha512 = "fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==";
-      };
-    };
-    "crypto-random-string-2.0.0" = {
-      name = "crypto-random-string";
-      packageName = "crypto-random-string";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz";
-        sha512 = "v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==";
-      };
-    };
-    "dash-ast-1.0.0" = {
-      name = "dash-ast";
-      packageName = "dash-ast";
-      version = "1.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz";
-        sha512 = "Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==";
-      };
-    };
-    "dashdash-1.14.1" = {
-      name = "dashdash";
-      packageName = "dashdash";
-      version = "1.14.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz";
-        sha512 = "jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==";
-      };
-    };
-    "debug-2.6.9" = {
-      name = "debug";
-      packageName = "debug";
-      version = "2.6.9";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz";
-        sha512 = "bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==";
-      };
-    };
-    "debug-3.2.7" = {
-      name = "debug";
-      packageName = "debug";
-      version = "3.2.7";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz";
-        sha512 = "CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==";
-      };
-    };
-    "debug-4.3.4" = {
-      name = "debug";
-      packageName = "debug";
-      version = "4.3.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz";
-        sha512 = "PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==";
-      };
-    };
-    "decamelize-1.2.0" = {
-      name = "decamelize";
-      packageName = "decamelize";
-      version = "1.2.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz";
-        sha512 = "z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==";
-      };
-    };
-    "decamelize-keys-1.1.0" = {
-      name = "decamelize-keys";
-      packageName = "decamelize-keys";
-      version = "1.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz";
-        sha512 = "ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==";
-      };
-    };
-    "decompress-response-3.3.0" = {
-      name = "decompress-response";
-      packageName = "decompress-response";
-      version = "3.3.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz";
-        sha512 = "BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==";
-      };
-    };
-    "deep-equal-1.1.1" = {
-      name = "deep-equal";
-      packageName = "deep-equal";
-      version = "1.1.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz";
-        sha512 = "yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==";
-      };
-    };
-    "deep-extend-0.6.0" = {
-      name = "deep-extend";
-      packageName = "deep-extend";
-      version = "0.6.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz";
-        sha512 = "LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==";
-      };
-    };
-    "deep-is-0.1.4" = {
-      name = "deep-is";
-      packageName = "deep-is";
-      version = "0.1.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz";
-        sha512 = "oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==";
-      };
-    };
-    "defer-to-connect-1.1.3" = {
-      name = "defer-to-connect";
-      packageName = "defer-to-connect";
-      version = "1.1.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz";
-        sha512 = "0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==";
-      };
-    };
-    "define-lazy-prop-2.0.0" = {
-      name = "define-lazy-prop";
-      packageName = "define-lazy-prop";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz";
-        sha512 = "Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==";
-      };
-    };
-    "define-properties-1.1.4" = {
-      name = "define-properties";
-      packageName = "define-properties";
-      version = "1.1.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz";
-        sha512 = "uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==";
-      };
-    };
-    "defined-1.0.0" = {
-      name = "defined";
-      packageName = "defined";
-      version = "1.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz";
-        sha512 = "Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==";
-      };
-    };
-    "delayed-stream-1.0.0" = {
-      name = "delayed-stream";
-      packageName = "delayed-stream";
-      version = "1.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz";
-        sha512 = "ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==";
-      };
-    };
-    "delegates-1.0.0" = {
-      name = "delegates";
-      packageName = "delegates";
-      version = "1.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz";
-        sha512 = "bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==";
-      };
-    };
-    "depd-1.1.2" = {
-      name = "depd";
-      packageName = "depd";
-      version = "1.1.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz";
-        sha512 = "7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==";
-      };
-    };
-    "depd-2.0.0" = {
-      name = "depd";
-      packageName = "depd";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz";
-        sha512 = "g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==";
-      };
-    };
-    "deps-sort-2.0.1" = {
-      name = "deps-sort";
-      packageName = "deps-sort";
-      version = "2.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz";
-        sha512 = "1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==";
-      };
-    };
-    "des.js-1.0.1" = {
-      name = "des.js";
-      packageName = "des.js";
-      version = "1.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz";
-        sha512 = "Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==";
-      };
-    };
-    "destroy-1.2.0" = {
-      name = "destroy";
-      packageName = "destroy";
-      version = "1.2.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz";
-        sha512 = "2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==";
-      };
-    };
-    "detective-5.2.1" = {
-      name = "detective";
-      packageName = "detective";
-      version = "5.2.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz";
-        sha512 = "v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==";
-      };
-    };
-    "diff-match-patch-1.0.5" = {
-      name = "diff-match-patch";
-      packageName = "diff-match-patch";
-      version = "1.0.5";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz";
-        sha512 = "IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==";
-      };
-    };
-    "diffie-hellman-5.0.3" = {
-      name = "diffie-hellman";
-      packageName = "diffie-hellman";
-      version = "5.0.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz";
-        sha512 = "kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==";
-      };
-    };
-    "dns-equal-1.0.0" = {
-      name = "dns-equal";
-      packageName = "dns-equal";
-      version = "1.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz";
-        sha512 = "z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==";
-      };
-    };
-    "dns-packet-1.3.4" = {
-      name = "dns-packet";
-      packageName = "dns-packet";
-      version = "1.3.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz";
-        sha512 = "BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==";
-      };
-    };
-    "dns-txt-git+https://github.com/jean-emmanuel/dns-txt#v2.0.3" = {
-      name = "dns-txt";
-      packageName = "dns-txt";
-      version = "2.0.3";
-      src = fetchgit {
-        url = "https://github.com/jean-emmanuel/dns-txt";
-        rev = "0c11e084bceee17016f9466e3b64f47776c5fb6f";
-        sha256 = "5a1b886c631e3e9fad925c16d09dc02bfb25617faf7b549c146ee5ca69d396cd";
-      };
-    };
-    "doctrine-3.0.0" = {
-      name = "doctrine";
-      packageName = "doctrine";
-      version = "3.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz";
-        sha512 = "yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==";
-      };
-    };
-    "dom-serializer-1.4.1" = {
-      name = "dom-serializer";
-      packageName = "dom-serializer";
-      version = "1.4.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz";
-        sha512 = "VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==";
-      };
-    };
-    "domain-browser-1.2.0" = {
-      name = "domain-browser";
-      packageName = "domain-browser";
-      version = "1.2.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz";
-        sha512 = "jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==";
-      };
-    };
-    "domelementtype-2.3.0" = {
-      name = "domelementtype";
-      packageName = "domelementtype";
-      version = "2.3.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz";
-        sha512 = "OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==";
-      };
-    };
-    "domhandler-3.3.0" = {
-      name = "domhandler";
-      packageName = "domhandler";
-      version = "3.3.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz";
-        sha512 = "J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==";
-      };
-    };
-    "domhandler-4.3.1" = {
-      name = "domhandler";
-      packageName = "domhandler";
-      version = "4.3.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz";
-        sha512 = "GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==";
-      };
-    };
-    "domutils-2.8.0" = {
-      name = "domutils";
-      packageName = "domutils";
-      version = "2.8.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz";
-        sha512 = "w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==";
-      };
-    };
-    "dot-prop-5.3.0" = {
-      name = "dot-prop";
-      packageName = "dot-prop";
-      version = "5.3.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz";
-        sha512 = "QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==";
-      };
-    };
-    "duplexer2-0.1.4" = {
-      name = "duplexer2";
-      packageName = "duplexer2";
-      version = "0.1.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz";
-        sha512 = "asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==";
-      };
-    };
-    "duplexer3-0.1.4" = {
-      name = "duplexer3";
-      packageName = "duplexer3";
-      version = "0.1.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz";
-        sha512 = "CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA==";
-      };
-    };
-    "ecc-jsbn-0.1.2" = {
-      name = "ecc-jsbn";
-      packageName = "ecc-jsbn";
-      version = "0.1.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz";
-        sha512 = "eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==";
-      };
-    };
-    "ee-first-1.1.1" = {
-      name = "ee-first";
-      packageName = "ee-first";
-      version = "1.1.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz";
-        sha512 = "WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==";
-      };
-    };
-    "electron-is-accelerator-0.1.2" = {
-      name = "electron-is-accelerator";
-      packageName = "electron-is-accelerator";
-      version = "0.1.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/electron-is-accelerator/-/electron-is-accelerator-0.1.2.tgz";
-        sha512 = "fLGSAjXZtdn1sbtZxx52+krefmtNuVwnJCV2gNiVt735/ARUboMl8jnNC9fZEqQdlAv2ZrETfmBUsoQci5evJA==";
-      };
-    };
-    "electron-localshortcut-3.2.1" = {
-      name = "electron-localshortcut";
-      packageName = "electron-localshortcut";
-      version = "3.2.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/electron-localshortcut/-/electron-localshortcut-3.2.1.tgz";
-        sha512 = "DWvhKv36GsdXKnaFFhEiK8kZZA+24/yFLgtTwJJHc7AFgDjNRIBJZ/jq62Y/dWv9E4ypYwrVWN2bVrCYw1uv7Q==";
-      };
-    };
-    "electron-to-chromium-1.4.179" = {
-      name = "electron-to-chromium";
-      packageName = "electron-to-chromium";
-      version = "1.4.179";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.179.tgz";
-        sha512 = "1XeTb/U/8Xgh2YgPOqhakLYsvCcU4U7jUjTMbEnhIJoIWd/Qt3yC8y0cbG+fHzn4zUNF99Ey1xiPf20bwgLO3Q==";
-      };
-    };
-    "elliptic-6.5.4" = {
-      name = "elliptic";
-      packageName = "elliptic";
-      version = "6.5.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz";
-        sha512 = "iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==";
-      };
-    };
-    "emoji-regex-8.0.0" = {
-      name = "emoji-regex";
-      packageName = "emoji-regex";
-      version = "8.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz";
-        sha512 = "MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==";
-      };
-    };
-    "encodeurl-1.0.2" = {
-      name = "encodeurl";
-      packageName = "encodeurl";
-      version = "1.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz";
-        sha512 = "TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==";
-      };
-    };
-    "encoding-0.1.13" = {
-      name = "encoding";
-      packageName = "encoding";
-      version = "0.1.13";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz";
-        sha512 = "ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==";
-      };
-    };
-    "end-of-stream-1.4.4" = {
-      name = "end-of-stream";
-      packageName = "end-of-stream";
-      version = "1.4.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz";
-        sha512 = "+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==";
-      };
-    };
-    "entities-2.2.0" = {
-      name = "entities";
-      packageName = "entities";
-      version = "2.2.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz";
-        sha512 = "p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==";
-      };
-    };
-    "env-paths-2.2.1" = {
-      name = "env-paths";
-      packageName = "env-paths";
-      version = "2.2.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz";
-        sha512 = "+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==";
-      };
-    };
-    "err-code-2.0.3" = {
-      name = "err-code";
-      packageName = "err-code";
-      version = "2.0.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz";
-        sha512 = "2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==";
-      };
-    };
-    "error-ex-1.3.2" = {
-      name = "error-ex";
-      packageName = "error-ex";
-      version = "1.3.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz";
-        sha512 = "7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==";
-      };
-    };
-    "error-stack-parser-2.1.4" = {
-      name = "error-stack-parser";
-      packageName = "error-stack-parser";
-      version = "2.1.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz";
-        sha512 = "Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==";
-      };
-    };
-    "es-abstract-1.20.1" = {
-      name = "es-abstract";
-      packageName = "es-abstract";
-      version = "1.20.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz";
-        sha512 = "WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==";
-      };
-    };
-    "es-to-primitive-1.2.1" = {
-      name = "es-to-primitive";
-      packageName = "es-to-primitive";
-      version = "1.2.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz";
-        sha512 = "QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==";
-      };
-    };
-    "escalade-3.1.1" = {
-      name = "escalade";
-      packageName = "escalade";
-      version = "3.1.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz";
-        sha512 = "k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==";
-      };
-    };
-    "escape-goat-2.1.1" = {
-      name = "escape-goat";
-      packageName = "escape-goat";
-      version = "2.1.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz";
-        sha512 = "8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==";
-      };
-    };
-    "escape-html-1.0.3" = {
-      name = "escape-html";
-      packageName = "escape-html";
-      version = "1.0.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz";
-        sha512 = "NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==";
-      };
-    };
-    "escape-string-regexp-1.0.5" = {
-      name = "escape-string-regexp";
-      packageName = "escape-string-regexp";
-      version = "1.0.5";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
-        sha512 = "vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==";
-      };
-    };
-    "escape-string-regexp-4.0.0" = {
-      name = "escape-string-regexp";
-      packageName = "escape-string-regexp";
-      version = "4.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz";
-        sha512 = "TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==";
-      };
-    };
-    "escaper-2.5.3" = {
-      name = "escaper";
-      packageName = "escaper";
-      version = "2.5.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/escaper/-/escaper-2.5.3.tgz";
-        sha512 = "QGb9sFxBVpbzMggrKTX0ry1oiI4CSDAl9vIL702hzl1jGW8VZs7qfqTRX7WDOjoNDoEVGcEtu1ZOQgReSfT2kQ==";
-      };
-    };
-    "eslint-8.16.0" = {
-      name = "eslint";
-      packageName = "eslint";
-      version = "8.16.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/eslint/-/eslint-8.16.0.tgz";
-        sha512 = "MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==";
-      };
-    };
-    "eslint-scope-5.1.1" = {
-      name = "eslint-scope";
-      packageName = "eslint-scope";
-      version = "5.1.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz";
-        sha512 = "2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==";
-      };
-    };
-    "eslint-scope-7.1.1" = {
-      name = "eslint-scope";
-      packageName = "eslint-scope";
-      version = "7.1.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz";
-        sha512 = "QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==";
-      };
-    };
-    "eslint-utils-3.0.0" = {
-      name = "eslint-utils";
-      packageName = "eslint-utils";
-      version = "3.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz";
-        sha512 = "uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==";
-      };
-    };
-    "eslint-visitor-keys-2.1.0" = {
-      name = "eslint-visitor-keys";
-      packageName = "eslint-visitor-keys";
-      version = "2.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz";
-        sha512 = "0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==";
-      };
-    };
-    "eslint-visitor-keys-3.3.0" = {
-      name = "eslint-visitor-keys";
-      packageName = "eslint-visitor-keys";
-      version = "3.3.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz";
-        sha512 = "mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==";
-      };
-    };
-    "espree-9.3.2" = {
-      name = "espree";
-      packageName = "espree";
-      version = "9.3.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz";
-        sha512 = "D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==";
-      };
-    };
-    "esquery-1.4.0" = {
-      name = "esquery";
-      packageName = "esquery";
-      version = "1.4.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz";
-        sha512 = "cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==";
-      };
-    };
-    "esrecurse-4.3.0" = {
-      name = "esrecurse";
-      packageName = "esrecurse";
-      version = "4.3.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz";
-        sha512 = "KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==";
-      };
-    };
-    "estraverse-4.3.0" = {
-      name = "estraverse";
-      packageName = "estraverse";
-      version = "4.3.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz";
-        sha512 = "39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==";
-      };
-    };
-    "estraverse-5.3.0" = {
-      name = "estraverse";
-      packageName = "estraverse";
-      version = "5.3.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz";
-        sha512 = "MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==";
-      };
-    };
-    "estree-is-member-expression-1.0.0" = {
-      name = "estree-is-member-expression";
-      packageName = "estree-is-member-expression";
-      version = "1.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/estree-is-member-expression/-/estree-is-member-expression-1.0.0.tgz";
-        sha512 = "Ec+X44CapIGExvSZN+pGkmr5p7HwUVQoPQSd458Lqwvaf4/61k/invHSh4BYK8OXnCkfEhWuIoG5hayKLQStIg==";
-      };
-    };
-    "esutils-2.0.3" = {
-      name = "esutils";
-      packageName = "esutils";
-      version = "2.0.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz";
-        sha512 = "kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==";
-      };
-    };
-    "etag-1.8.1" = {
-      name = "etag";
-      packageName = "etag";
-      version = "1.8.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz";
-        sha512 = "aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==";
-      };
-    };
-    "events-3.3.0" = {
-      name = "events";
-      packageName = "events";
-      version = "3.3.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/events/-/events-3.3.0.tgz";
-        sha512 = "mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==";
-      };
-    };
-    "evp_bytestokey-1.0.3" = {
-      name = "evp_bytestokey";
-      packageName = "evp_bytestokey";
-      version = "1.0.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz";
-        sha512 = "/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==";
-      };
-    };
-    "exorcist-2.0.0" = {
-      name = "exorcist";
-      packageName = "exorcist";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/exorcist/-/exorcist-2.0.0.tgz";
-        sha512 = "+c63SvhBq/HjmbV9cu9vkDkjXFiuI4lpqOZU5Y3t5GSV2l4TQCqVli9c7nIASHxkUL4THaOZDUcb6XNBI/eYjw==";
-      };
-    };
-    "extend-3.0.2" = {
-      name = "extend";
-      packageName = "extend";
-      version = "3.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz";
-        sha512 = "fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==";
-      };
-    };
-    "extsprintf-1.3.0" = {
-      name = "extsprintf";
-      packageName = "extsprintf";
-      version = "1.3.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz";
-        sha512 = "11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==";
-      };
-    };
-    "fast-deep-equal-3.1.3" = {
-      name = "fast-deep-equal";
-      packageName = "fast-deep-equal";
-      version = "3.1.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz";
-        sha512 = "f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==";
-      };
-    };
-    "fast-json-stable-stringify-2.1.0" = {
-      name = "fast-json-stable-stringify";
-      packageName = "fast-json-stable-stringify";
-      version = "2.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz";
-        sha512 = "lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==";
-      };
-    };
-    "fast-levenshtein-2.0.6" = {
-      name = "fast-levenshtein";
-      packageName = "fast-levenshtein";
-      version = "2.0.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz";
-        sha512 = "DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==";
-      };
-    };
-    "fast-safe-stringify-2.1.1" = {
-      name = "fast-safe-stringify";
-      packageName = "fast-safe-stringify";
-      version = "2.1.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz";
-        sha512 = "W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==";
-      };
-    };
-    "fastdom-1.0.10" = {
-      name = "fastdom";
-      packageName = "fastdom";
-      version = "1.0.10";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/fastdom/-/fastdom-1.0.10.tgz";
-        sha512 = "sbL4h358IlZn8VsTvA5TYnKVLYif46XhPEll+HTSxVtDSpqZEO/17D/QqlxE9V2K7AQ82GXeYeQLU2HWwKgk1A==";
-      };
-    };
-    "file-entry-cache-6.0.1" = {
-      name = "file-entry-cache";
-      packageName = "file-entry-cache";
-      version = "6.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz";
-        sha512 = "7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==";
-      };
-    };
-    "file-saver-2.0.5" = {
-      name = "file-saver";
-      packageName = "file-saver";
-      version = "2.0.5";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz";
-        sha512 = "P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==";
-      };
-    };
-    "fill-range-7.0.1" = {
-      name = "fill-range";
-      packageName = "fill-range";
-      version = "7.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz";
-        sha512 = "qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==";
-      };
-    };
-    "find-up-4.1.0" = {
-      name = "find-up";
-      packageName = "find-up";
-      version = "4.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz";
-        sha512 = "PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==";
-      };
-    };
-    "flat-cache-3.0.4" = {
-      name = "flat-cache";
-      packageName = "flat-cache";
-      version = "3.0.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz";
-        sha512 = "dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==";
-      };
-    };
-    "flatted-3.2.6" = {
-      name = "flatted";
-      packageName = "flatted";
-      version = "3.2.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz";
-        sha512 = "0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==";
-      };
-    };
-    "for-each-0.3.3" = {
-      name = "for-each";
-      packageName = "for-each";
-      version = "0.3.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz";
-        sha512 = "jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==";
-      };
-    };
-    "forever-agent-0.6.1" = {
-      name = "forever-agent";
-      packageName = "forever-agent";
-      version = "0.6.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz";
-        sha512 = "j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==";
-      };
-    };
-    "form-data-2.3.3" = {
-      name = "form-data";
-      packageName = "form-data";
-      version = "2.3.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz";
-        sha512 = "1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==";
-      };
-    };
-    "fresh-0.5.2" = {
-      name = "fresh";
-      packageName = "fresh";
-      version = "0.5.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz";
-        sha512 = "zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==";
-      };
-    };
-    "fs-minipass-2.1.0" = {
-      name = "fs-minipass";
-      packageName = "fs-minipass";
-      version = "2.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz";
-        sha512 = "V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==";
-      };
-    };
-    "fs.realpath-1.0.0" = {
-      name = "fs.realpath";
-      packageName = "fs.realpath";
-      version = "1.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz";
-        sha512 = "OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==";
-      };
-    };
-    "fsevents-2.3.2" = {
-      name = "fsevents";
-      packageName = "fsevents";
-      version = "2.3.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz";
-        sha512 = "xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==";
-      };
-    };
-    "function-bind-1.1.1" = {
-      name = "function-bind";
-      packageName = "function-bind";
-      version = "1.1.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz";
-        sha512 = "yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==";
-      };
-    };
-    "function.prototype.name-1.1.5" = {
-      name = "function.prototype.name";
-      packageName = "function.prototype.name";
-      version = "1.1.5";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz";
-        sha512 = "uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==";
-      };
-    };
-    "functional-red-black-tree-1.0.1" = {
-      name = "functional-red-black-tree";
-      packageName = "functional-red-black-tree";
-      version = "1.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz";
-        sha512 = "dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==";
-      };
-    };
-    "functions-have-names-1.2.3" = {
-      name = "functions-have-names";
-      packageName = "functions-have-names";
-      version = "1.2.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz";
-        sha512 = "xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==";
-      };
-    };
-    "gauge-3.0.2" = {
-      name = "gauge";
-      packageName = "gauge";
-      version = "3.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz";
-        sha512 = "+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==";
-      };
-    };
-    "gauge-4.0.4" = {
-      name = "gauge";
-      packageName = "gauge";
-      version = "4.0.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz";
-        sha512 = "f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==";
-      };
-    };
-    "gaze-1.1.3" = {
-      name = "gaze";
-      packageName = "gaze";
-      version = "1.1.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz";
-        sha512 = "BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==";
-      };
-    };
-    "gensync-1.0.0-beta.2" = {
-      name = "gensync";
-      packageName = "gensync";
-      version = "1.0.0-beta.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz";
-        sha512 = "3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==";
-      };
-    };
-    "get-assigned-identifiers-1.2.0" = {
-      name = "get-assigned-identifiers";
-      packageName = "get-assigned-identifiers";
-      version = "1.2.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz";
-        sha512 = "mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==";
-      };
-    };
-    "get-caller-file-2.0.5" = {
-      name = "get-caller-file";
-      packageName = "get-caller-file";
-      version = "2.0.5";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz";
-        sha512 = "DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==";
-      };
-    };
-    "get-intrinsic-1.1.2" = {
-      name = "get-intrinsic";
-      packageName = "get-intrinsic";
-      version = "1.1.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz";
-        sha512 = "Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==";
-      };
-    };
-    "get-stdin-4.0.1" = {
-      name = "get-stdin";
-      packageName = "get-stdin";
-      version = "4.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz";
-        sha512 = "F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==";
-      };
-    };
-    "get-stream-4.1.0" = {
-      name = "get-stream";
-      packageName = "get-stream";
-      version = "4.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz";
-        sha512 = "GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==";
-      };
-    };
-    "get-stream-5.2.0" = {
-      name = "get-stream";
-      packageName = "get-stream";
-      version = "5.2.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz";
-        sha512 = "nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==";
-      };
-    };
-    "get-symbol-description-1.0.0" = {
-      name = "get-symbol-description";
-      packageName = "get-symbol-description";
-      version = "1.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz";
-        sha512 = "2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==";
-      };
-    };
-    "getpass-0.1.7" = {
-      name = "getpass";
-      packageName = "getpass";
-      version = "0.1.7";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz";
-        sha512 = "0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==";
-      };
-    };
-    "glob-7.1.7" = {
-      name = "glob";
-      packageName = "glob";
-      version = "7.1.7";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz";
-        sha512 = "OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==";
-      };
-    };
-    "glob-7.2.3" = {
-      name = "glob";
-      packageName = "glob";
-      version = "7.2.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz";
-        sha512 = "nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==";
-      };
-    };
-    "glob-parent-5.1.2" = {
-      name = "glob-parent";
-      packageName = "glob-parent";
-      version = "5.1.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz";
-        sha512 = "AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==";
-      };
-    };
-    "glob-parent-6.0.2" = {
-      name = "glob-parent";
-      packageName = "glob-parent";
-      version = "6.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz";
-        sha512 = "XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==";
-      };
-    };
-    "global-dirs-3.0.0" = {
-      name = "global-dirs";
-      packageName = "global-dirs";
-      version = "3.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz";
-        sha512 = "v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==";
-      };
-    };
-    "globals-11.12.0" = {
-      name = "globals";
-      packageName = "globals";
-      version = "11.12.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz";
-        sha512 = "WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==";
-      };
-    };
-    "globals-13.16.0" = {
-      name = "globals";
-      packageName = "globals";
-      version = "13.16.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/globals/-/globals-13.16.0.tgz";
-        sha512 = "A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==";
-      };
-    };
-    "globule-1.3.4" = {
-      name = "globule";
-      packageName = "globule";
-      version = "1.3.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/globule/-/globule-1.3.4.tgz";
-        sha512 = "OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==";
-      };
-    };
-    "got-9.6.0" = {
-      name = "got";
-      packageName = "got";
-      version = "9.6.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/got/-/got-9.6.0.tgz";
-        sha512 = "R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==";
-      };
-    };
-    "graceful-fs-4.2.10" = {
-      name = "graceful-fs";
-      packageName = "graceful-fs";
-      version = "4.2.10";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz";
-        sha512 = "9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==";
-      };
-    };
-    "gyronorm-2.0.6" = {
-      name = "gyronorm";
-      packageName = "gyronorm";
-      version = "2.0.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/gyronorm/-/gyronorm-2.0.6.tgz";
-        sha512 = "pE66zEK/3G9t1dpikTKIjNuY1JauXgtNiulgPKc28IKwMJ5NuJ03mOQ5ArqnkOyQxhlJSY71i3YdFcHhzx4TOg==";
-      };
-    };
-    "har-schema-2.0.0" = {
-      name = "har-schema";
-      packageName = "har-schema";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz";
-        sha512 = "Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==";
-      };
-    };
-    "har-validator-5.1.5" = {
-      name = "har-validator";
-      packageName = "har-validator";
-      version = "5.1.5";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz";
-        sha512 = "nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==";
-      };
-    };
-    "hard-rejection-2.1.0" = {
-      name = "hard-rejection";
-      packageName = "hard-rejection";
-      version = "2.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz";
-        sha512 = "VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==";
-      };
-    };
-    "has-1.0.3" = {
-      name = "has";
-      packageName = "has";
-      version = "1.0.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/has/-/has-1.0.3.tgz";
-        sha512 = "f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==";
-      };
-    };
-    "has-ansi-2.0.0" = {
-      name = "has-ansi";
-      packageName = "has-ansi";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz";
-        sha512 = "C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==";
-      };
-    };
-    "has-bigints-1.0.2" = {
-      name = "has-bigints";
-      packageName = "has-bigints";
-      version = "1.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz";
-        sha512 = "tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==";
-      };
-    };
-    "has-flag-3.0.0" = {
-      name = "has-flag";
-      packageName = "has-flag";
-      version = "3.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz";
-        sha512 = "sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==";
-      };
-    };
-    "has-flag-4.0.0" = {
-      name = "has-flag";
-      packageName = "has-flag";
-      version = "4.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz";
-        sha512 = "EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==";
-      };
-    };
-    "has-property-descriptors-1.0.0" = {
-      name = "has-property-descriptors";
-      packageName = "has-property-descriptors";
-      version = "1.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz";
-        sha512 = "62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==";
-      };
-    };
-    "has-symbols-1.0.3" = {
-      name = "has-symbols";
-      packageName = "has-symbols";
-      version = "1.0.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz";
-        sha512 = "l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==";
-      };
-    };
-    "has-tostringtag-1.0.0" = {
-      name = "has-tostringtag";
-      packageName = "has-tostringtag";
-      version = "1.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz";
-        sha512 = "kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==";
-      };
-    };
-    "has-unicode-2.0.1" = {
-      name = "has-unicode";
-      packageName = "has-unicode";
-      version = "2.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz";
-        sha512 = "8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==";
-      };
-    };
-    "has-yarn-2.1.0" = {
-      name = "has-yarn";
-      packageName = "has-yarn";
-      version = "2.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz";
-        sha512 = "UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==";
-      };
-    };
-    "hash-base-3.1.0" = {
-      name = "hash-base";
-      packageName = "hash-base";
-      version = "3.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz";
-        sha512 = "1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==";
-      };
-    };
-    "hash.js-1.1.7" = {
-      name = "hash.js";
-      packageName = "hash.js";
-      version = "1.1.7";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz";
-        sha512 = "taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==";
-      };
-    };
-    "hmac-drbg-1.0.1" = {
-      name = "hmac-drbg";
-      packageName = "hmac-drbg";
-      version = "1.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz";
-        sha512 = "Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==";
-      };
-    };
-    "hosted-git-info-2.8.9" = {
-      name = "hosted-git-info";
-      packageName = "hosted-git-info";
-      version = "2.8.9";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz";
-        sha512 = "mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==";
-      };
-    };
-    "hosted-git-info-4.1.0" = {
-      name = "hosted-git-info";
-      packageName = "hosted-git-info";
-      version = "4.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz";
-        sha512 = "kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==";
-      };
-    };
-    "htmlescape-1.1.1" = {
-      name = "htmlescape";
-      packageName = "htmlescape";
-      version = "1.1.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz";
-        sha512 = "eVcrzgbR4tim7c7soKQKtxa/kQM4TzjnlU83rcZ9bHU6t31ehfV7SktN6McWgwPWg+JYMA/O3qpGxBvFq1z2Jg==";
-      };
-    };
-    "htmlparser2-4.1.0" = {
-      name = "htmlparser2";
-      packageName = "htmlparser2";
-      version = "4.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz";
-        sha512 = "4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==";
-      };
-    };
-    "http-auth-4.1.9" = {
-      name = "http-auth";
-      packageName = "http-auth";
-      version = "4.1.9";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/http-auth/-/http-auth-4.1.9.tgz";
-        sha512 = "kvPYxNGc9EKGTXvOMnTBQw2RZfuiSihK/mLw/a4pbtRueTE45S55Lw/3k5CktIf7Ak0veMKEIteDj4YkNmCzmQ==";
-      };
-    };
-    "http-cache-semantics-4.1.0" = {
-      name = "http-cache-semantics";
-      packageName = "http-cache-semantics";
-      version = "4.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz";
-        sha512 = "carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==";
-      };
-    };
-    "http-errors-2.0.0" = {
-      name = "http-errors";
-      packageName = "http-errors";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz";
-        sha512 = "FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==";
-      };
-    };
-    "http-proxy-agent-4.0.1" = {
-      name = "http-proxy-agent";
-      packageName = "http-proxy-agent";
-      version = "4.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz";
-        sha512 = "k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==";
-      };
-    };
-    "http-signature-1.2.0" = {
-      name = "http-signature";
-      packageName = "http-signature";
-      version = "1.2.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz";
-        sha512 = "CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==";
-      };
-    };
-    "https-browserify-1.0.0" = {
-      name = "https-browserify";
-      packageName = "https-browserify";
-      version = "1.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz";
-        sha512 = "J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==";
-      };
-    };
-    "https-proxy-agent-5.0.1" = {
-      name = "https-proxy-agent";
-      packageName = "https-proxy-agent";
-      version = "5.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz";
-        sha512 = "dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==";
-      };
-    };
-    "humanize-ms-1.2.1" = {
-      name = "humanize-ms";
-      packageName = "humanize-ms";
-      version = "1.2.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz";
-        sha512 = "Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==";
-      };
-    };
-    "hyperscript-attribute-to-property-1.0.2" = {
-      name = "hyperscript-attribute-to-property";
-      packageName = "hyperscript-attribute-to-property";
-      version = "1.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/hyperscript-attribute-to-property/-/hyperscript-attribute-to-property-1.0.2.tgz";
-        sha512 = "oerMul16jZCmrbNsUw8QgrtDzF8lKgFri1bKQjReLw1IhiiNkI59CWuzZjJDGT79UQ1YiWqXhJMv/tRMVqgtkA==";
-      };
-    };
-    "hyperx-2.5.4" = {
-      name = "hyperx";
-      packageName = "hyperx";
-      version = "2.5.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/hyperx/-/hyperx-2.5.4.tgz";
-        sha512 = "iOkSh7Yse7lsN/B9y7OsevLWjeXPqGuHQ5SbwaiJM5xAhWFqhoN6erpK1dQsS12OFU36lyai1pnx1mmzWLQqcA==";
-      };
-    };
-    "iconv-lite-0.6.3" = {
-      name = "iconv-lite";
-      packageName = "iconv-lite";
-      version = "0.6.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz";
-        sha512 = "4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==";
-      };
-    };
-    "ieee754-1.2.1" = {
-      name = "ieee754";
-      packageName = "ieee754";
-      version = "1.2.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz";
-        sha512 = "dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==";
-      };
-    };
-    "ignore-5.2.0" = {
-      name = "ignore";
-      packageName = "ignore";
-      version = "5.2.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz";
-        sha512 = "CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==";
-      };
-    };
-    "ignore-by-default-1.0.1" = {
-      name = "ignore-by-default";
-      packageName = "ignore-by-default";
-      version = "1.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz";
-        sha512 = "Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==";
-      };
-    };
-    "import-fresh-3.3.0" = {
-      name = "import-fresh";
-      packageName = "import-fresh";
-      version = "3.3.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz";
-        sha512 = "veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==";
-      };
-    };
-    "import-lazy-2.1.0" = {
-      name = "import-lazy";
-      packageName = "import-lazy";
-      version = "2.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz";
-        sha512 = "m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==";
-      };
-    };
-    "imurmurhash-0.1.4" = {
-      name = "imurmurhash";
-      packageName = "imurmurhash";
-      version = "0.1.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz";
-        sha512 = "JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==";
-      };
-    };
-    "indent-string-4.0.0" = {
-      name = "indent-string";
-      packageName = "indent-string";
-      version = "4.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz";
-        sha512 = "EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==";
-      };
-    };
-    "infer-owner-1.0.4" = {
-      name = "infer-owner";
-      packageName = "infer-owner";
-      version = "1.0.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz";
-        sha512 = "IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==";
-      };
-    };
-    "inflight-1.0.6" = {
-      name = "inflight";
-      packageName = "inflight";
-      version = "1.0.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz";
-        sha512 = "k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==";
-      };
-    };
-    "inherits-2.0.1" = {
-      name = "inherits";
-      packageName = "inherits";
-      version = "2.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz";
-        sha512 = "8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==";
-      };
-    };
-    "inherits-2.0.4" = {
-      name = "inherits";
-      packageName = "inherits";
-      version = "2.0.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz";
-        sha512 = "k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==";
-      };
-    };
-    "ini-1.3.8" = {
-      name = "ini";
-      packageName = "ini";
-      version = "1.3.8";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz";
-        sha512 = "JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==";
-      };
-    };
-    "ini-2.0.0" = {
-      name = "ini";
-      packageName = "ini";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz";
-        sha512 = "7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==";
-      };
-    };
-    "inline-source-map-0.6.2" = {
-      name = "inline-source-map";
-      packageName = "inline-source-map";
-      version = "0.6.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz";
-        sha512 = "0mVWSSbNDvedDWIN4wxLsdPM4a7cIPcpyMxj3QZ406QRwQ6ePGB1YIHxVPjqpcUGbWQ5C+nHTwGNWAGvt7ggVA==";
-      };
-    };
-    "insert-module-globals-7.2.1" = {
-      name = "insert-module-globals";
-      packageName = "insert-module-globals";
-      version = "7.2.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.1.tgz";
-        sha512 = "ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==";
-      };
-    };
-    "internal-slot-1.0.3" = {
-      name = "internal-slot";
-      packageName = "internal-slot";
-      version = "1.0.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz";
-        sha512 = "O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==";
-      };
-    };
-    "ip-1.1.8" = {
-      name = "ip";
-      packageName = "ip";
-      version = "1.1.8";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz";
-        sha512 = "PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==";
-      };
-    };
-    "is-arguments-1.1.1" = {
-      name = "is-arguments";
-      packageName = "is-arguments";
-      version = "1.1.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz";
-        sha512 = "8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==";
-      };
-    };
-    "is-arrayish-0.2.1" = {
-      name = "is-arrayish";
-      packageName = "is-arrayish";
-      version = "0.2.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz";
-        sha512 = "zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==";
-      };
-    };
-    "is-bigint-1.0.4" = {
-      name = "is-bigint";
-      packageName = "is-bigint";
-      version = "1.0.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz";
-        sha512 = "zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==";
-      };
-    };
-    "is-binary-path-2.1.0" = {
-      name = "is-binary-path";
-      packageName = "is-binary-path";
-      version = "2.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz";
-        sha512 = "ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==";
-      };
-    };
-    "is-boolean-attribute-0.0.1" = {
-      name = "is-boolean-attribute";
-      packageName = "is-boolean-attribute";
-      version = "0.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-boolean-attribute/-/is-boolean-attribute-0.0.1.tgz";
-        sha512 = "0kXT52Scokg2Miscvsn5UVqg6y1691vcLJcagie1YHJB4zOEuAhMERLX992jtvaStGy2xQTqOtJhvmG/MK1T5w==";
-      };
-    };
-    "is-boolean-object-1.1.2" = {
-      name = "is-boolean-object";
-      packageName = "is-boolean-object";
-      version = "1.1.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz";
-        sha512 = "gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==";
-      };
-    };
-    "is-buffer-1.1.6" = {
-      name = "is-buffer";
-      packageName = "is-buffer";
-      version = "1.1.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz";
-        sha512 = "NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==";
-      };
-    };
-    "is-buffer-2.0.5" = {
-      name = "is-buffer";
-      packageName = "is-buffer";
-      version = "2.0.5";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz";
-        sha512 = "i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==";
-      };
-    };
-    "is-callable-1.2.4" = {
-      name = "is-callable";
-      packageName = "is-callable";
-      version = "1.2.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz";
-        sha512 = "nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==";
-      };
-    };
-    "is-ci-2.0.0" = {
-      name = "is-ci";
-      packageName = "is-ci";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz";
-        sha512 = "YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==";
-      };
-    };
-    "is-core-module-2.9.0" = {
-      name = "is-core-module";
-      packageName = "is-core-module";
-      version = "2.9.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz";
-        sha512 = "+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==";
-      };
-    };
-    "is-date-object-1.0.5" = {
-      name = "is-date-object";
-      packageName = "is-date-object";
-      version = "1.0.5";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz";
-        sha512 = "9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==";
-      };
-    };
-    "is-docker-2.2.1" = {
-      name = "is-docker";
-      packageName = "is-docker";
-      version = "2.2.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz";
-        sha512 = "F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==";
-      };
-    };
-    "is-extglob-2.1.1" = {
-      name = "is-extglob";
-      packageName = "is-extglob";
-      version = "2.1.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz";
-        sha512 = "SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==";
-      };
-    };
-    "is-fullwidth-code-point-3.0.0" = {
-      name = "is-fullwidth-code-point";
-      packageName = "is-fullwidth-code-point";
-      version = "3.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz";
-        sha512 = "zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==";
-      };
-    };
-    "is-generator-function-1.0.10" = {
-      name = "is-generator-function";
-      packageName = "is-generator-function";
-      version = "1.0.10";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz";
-        sha512 = "jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==";
-      };
-    };
-    "is-glob-4.0.3" = {
-      name = "is-glob";
-      packageName = "is-glob";
-      version = "4.0.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz";
-        sha512 = "xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==";
-      };
-    };
-    "is-installed-globally-0.4.0" = {
-      name = "is-installed-globally";
-      packageName = "is-installed-globally";
-      version = "0.4.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz";
-        sha512 = "iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==";
-      };
-    };
-    "is-lambda-1.0.1" = {
-      name = "is-lambda";
-      packageName = "is-lambda";
-      version = "1.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz";
-        sha512 = "z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==";
-      };
-    };
-    "is-negative-zero-2.0.2" = {
-      name = "is-negative-zero";
-      packageName = "is-negative-zero";
-      version = "2.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz";
-        sha512 = "dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==";
-      };
-    };
-    "is-npm-5.0.0" = {
-      name = "is-npm";
-      packageName = "is-npm";
-      version = "5.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz";
-        sha512 = "WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==";
-      };
-    };
-    "is-number-7.0.0" = {
-      name = "is-number";
-      packageName = "is-number";
-      version = "7.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz";
-        sha512 = "41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==";
-      };
-    };
-    "is-number-object-1.0.7" = {
-      name = "is-number-object";
-      packageName = "is-number-object";
-      version = "1.0.7";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz";
-        sha512 = "k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==";
-      };
-    };
-    "is-obj-2.0.0" = {
-      name = "is-obj";
-      packageName = "is-obj";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz";
-        sha512 = "drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==";
-      };
-    };
-    "is-path-inside-3.0.3" = {
-      name = "is-path-inside";
-      packageName = "is-path-inside";
-      version = "3.0.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz";
-        sha512 = "Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==";
-      };
-    };
-    "is-plain-obj-1.1.0" = {
-      name = "is-plain-obj";
-      packageName = "is-plain-obj";
-      version = "1.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz";
-        sha512 = "yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==";
-      };
-    };
-    "is-regex-1.1.4" = {
-      name = "is-regex";
-      packageName = "is-regex";
-      version = "1.1.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz";
-        sha512 = "kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==";
-      };
-    };
-    "is-regexp-1.0.0" = {
-      name = "is-regexp";
-      packageName = "is-regexp";
-      version = "1.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz";
-        sha512 = "7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==";
-      };
-    };
-    "is-shared-array-buffer-1.0.2" = {
-      name = "is-shared-array-buffer";
-      packageName = "is-shared-array-buffer";
-      version = "1.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz";
-        sha512 = "sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==";
-      };
-    };
-    "is-stream-2.0.1" = {
-      name = "is-stream";
-      packageName = "is-stream";
-      version = "2.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz";
-        sha512 = "hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==";
-      };
-    };
-    "is-string-1.0.7" = {
-      name = "is-string";
-      packageName = "is-string";
-      version = "1.0.7";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz";
-        sha512 = "tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==";
-      };
-    };
-    "is-symbol-1.0.4" = {
-      name = "is-symbol";
-      packageName = "is-symbol";
-      version = "1.0.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz";
-        sha512 = "C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==";
-      };
-    };
-    "is-typed-array-1.1.9" = {
-      name = "is-typed-array";
-      packageName = "is-typed-array";
-      version = "1.1.9";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz";
-        sha512 = "kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==";
-      };
-    };
-    "is-typedarray-1.0.0" = {
-      name = "is-typedarray";
-      packageName = "is-typedarray";
-      version = "1.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz";
-        sha512 = "cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==";
-      };
-    };
-    "is-weakref-1.0.2" = {
-      name = "is-weakref";
-      packageName = "is-weakref";
-      version = "1.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz";
-        sha512 = "qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==";
-      };
-    };
-    "is-wsl-2.2.0" = {
-      name = "is-wsl";
-      packageName = "is-wsl";
-      version = "2.2.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz";
-        sha512 = "fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==";
-      };
-    };
-    "is-yarn-global-0.3.0" = {
-      name = "is-yarn-global";
-      packageName = "is-yarn-global";
-      version = "0.3.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz";
-        sha512 = "VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==";
-      };
-    };
-    "isarray-1.0.0" = {
-      name = "isarray";
-      packageName = "isarray";
-      version = "1.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz";
-        sha512 = "VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==";
-      };
-    };
-    "isexe-2.0.0" = {
-      name = "isexe";
-      packageName = "isexe";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz";
-        sha512 = "RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==";
-      };
-    };
-    "isstream-0.1.2" = {
-      name = "isstream";
-      packageName = "isstream";
-      version = "0.1.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz";
-        sha512 = "Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==";
-      };
-    };
-    "js-base64-2.6.4" = {
-      name = "js-base64";
-      packageName = "js-base64";
-      version = "2.6.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz";
-        sha512 = "pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==";
-      };
-    };
-    "js-tokens-4.0.0" = {
-      name = "js-tokens";
-      packageName = "js-tokens";
-      version = "4.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz";
-        sha512 = "RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==";
-      };
-    };
-    "js-yaml-4.1.0" = {
-      name = "js-yaml";
-      packageName = "js-yaml";
-      version = "4.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz";
-        sha512 = "wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==";
-      };
-    };
-    "jsbn-0.1.1" = {
-      name = "jsbn";
-      packageName = "jsbn";
-      version = "0.1.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz";
-        sha512 = "UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==";
-      };
-    };
-    "jsesc-0.5.0" = {
-      name = "jsesc";
-      packageName = "jsesc";
-      version = "0.5.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz";
-        sha512 = "uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==";
-      };
-    };
-    "jsesc-2.5.2" = {
-      name = "jsesc";
-      packageName = "jsesc";
-      version = "2.5.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz";
-        sha512 = "OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==";
-      };
-    };
-    "json-buffer-3.0.0" = {
-      name = "json-buffer";
-      packageName = "json-buffer";
-      version = "3.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz";
-        sha512 = "CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==";
-      };
-    };
-    "json-parse-even-better-errors-2.3.1" = {
-      name = "json-parse-even-better-errors";
-      packageName = "json-parse-even-better-errors";
-      version = "2.3.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz";
-        sha512 = "xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==";
-      };
-    };
-    "json-schema-0.4.0" = {
-      name = "json-schema";
-      packageName = "json-schema";
-      version = "0.4.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz";
-        sha512 = "es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==";
-      };
-    };
-    "json-schema-traverse-0.4.1" = {
-      name = "json-schema-traverse";
-      packageName = "json-schema-traverse";
-      version = "0.4.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz";
-        sha512 = "xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==";
-      };
-    };
-    "json-stable-stringify-without-jsonify-1.0.1" = {
-      name = "json-stable-stringify-without-jsonify";
-      packageName = "json-stable-stringify-without-jsonify";
-      version = "1.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz";
-        sha512 = "Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==";
-      };
-    };
-    "json-stringify-safe-5.0.1" = {
-      name = "json-stringify-safe";
-      packageName = "json-stringify-safe";
-      version = "5.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
-        sha512 = "ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==";
-      };
-    };
-    "json5-2.2.1" = {
-      name = "json5";
-      packageName = "json5";
-      version = "2.2.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz";
-        sha512 = "1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==";
-      };
-    };
-    "jsondiffpatch-0.4.1" = {
-      name = "jsondiffpatch";
-      packageName = "jsondiffpatch";
-      version = "0.4.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/jsondiffpatch/-/jsondiffpatch-0.4.1.tgz";
-        sha512 = "t0etAxTUk1w5MYdNOkZBZ8rvYYN5iL+2dHCCx/DpkFm/bW28M6y5nUS83D4XdZiHy35Fpaw6LBb+F88fHZnVCw==";
-      };
-    };
-    "jsonparse-1.3.1" = {
-      name = "jsonparse";
-      packageName = "jsonparse";
-      version = "1.3.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz";
-        sha512 = "POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==";
-      };
-    };
-    "jsprim-1.4.2" = {
-      name = "jsprim";
-      packageName = "jsprim";
-      version = "1.4.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz";
-        sha512 = "P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==";
-      };
-    };
-    "keyboardevent-from-electron-accelerator-2.0.0" = {
-      name = "keyboardevent-from-electron-accelerator";
-      packageName = "keyboardevent-from-electron-accelerator";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/keyboardevent-from-electron-accelerator/-/keyboardevent-from-electron-accelerator-2.0.0.tgz";
-        sha512 = "iQcmNA0M4ETMNi0kG/q0h/43wZk7rMeKYrXP7sqKIJbHkTU8Koowgzv+ieR/vWJbOwxx5nDC3UnudZ0aLSu4VA==";
-      };
-    };
-    "keyboardevents-areequal-0.2.2" = {
-      name = "keyboardevents-areequal";
-      packageName = "keyboardevents-areequal";
-      version = "0.2.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/keyboardevents-areequal/-/keyboardevents-areequal-0.2.2.tgz";
-        sha512 = "Nv+Kr33T0mEjxR500q+I6IWisOQ0lK1GGOncV0kWE6n4KFmpcu7RUX5/2B0EUtX51Cb0HjZ9VJsSY3u4cBa0kw==";
-      };
-    };
-    "keyboardjs-2.6.4" = {
-      name = "keyboardjs";
-      packageName = "keyboardjs";
-      version = "2.6.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/keyboardjs/-/keyboardjs-2.6.4.tgz";
-        sha512 = "xDiNwiwH3KUqap++RFJiLAXzbvRB5Yw08xliuceOgLhM1o7g1puKKR9vWy6wp9H/Bi4VP0+SQMpiWXMWWmR6rA==";
-      };
-    };
-    "keyv-3.1.0" = {
-      name = "keyv";
-      packageName = "keyv";
-      version = "3.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz";
-        sha512 = "9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==";
-      };
-    };
-    "kind-of-6.0.3" = {
-      name = "kind-of";
-      packageName = "kind-of";
-      version = "6.0.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz";
-        sha512 = "dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==";
-      };
-    };
-    "labeled-stream-splicer-2.0.2" = {
-      name = "labeled-stream-splicer";
-      packageName = "labeled-stream-splicer";
-      version = "2.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz";
-        sha512 = "Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==";
-      };
-    };
-    "latest-version-5.1.0" = {
-      name = "latest-version";
-      packageName = "latest-version";
-      version = "5.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz";
-        sha512 = "weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==";
-      };
-    };
-    "levn-0.4.1" = {
-      name = "levn";
-      packageName = "levn";
-      version = "0.4.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz";
-        sha512 = "+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==";
-      };
-    };
-    "licensify-3.1.3" = {
-      name = "licensify";
-      packageName = "licensify";
-      version = "3.1.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/licensify/-/licensify-3.1.3.tgz";
-        sha512 = "3sEEBR0Cxq8yeSrV1KGZwpjm4KJKp8Cx/WHZxBnG/YX319ZTvxGtL+NCF+A9pcXwh8KwKB4BmVrc6eRrfk/Raw==";
-      };
-    };
-    "lines-and-columns-1.2.4" = {
-      name = "lines-and-columns";
-      packageName = "lines-and-columns";
-      version = "1.2.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz";
-        sha512 = "7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==";
-      };
-    };
-    "locate-path-5.0.0" = {
-      name = "locate-path";
-      packageName = "locate-path";
-      version = "5.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz";
-        sha512 = "t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==";
-      };
-    };
-    "lodash-4.17.21" = {
-      name = "lodash";
-      packageName = "lodash";
-      version = "4.17.21";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz";
-        sha512 = "v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==";
-      };
-    };
-    "lodash.debounce-4.0.8" = {
-      name = "lodash.debounce";
-      packageName = "lodash.debounce";
-      version = "4.0.8";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz";
-        sha512 = "FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==";
-      };
-    };
-    "lodash.memoize-3.0.4" = {
-      name = "lodash.memoize";
-      packageName = "lodash.memoize";
-      version = "3.0.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz";
-        sha512 = "eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A==";
-      };
-    };
-    "lodash.merge-4.6.2" = {
-      name = "lodash.merge";
-      packageName = "lodash.merge";
-      version = "4.6.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz";
-        sha512 = "0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==";
-      };
-    };
-    "long-4.0.0" = {
-      name = "long";
-      packageName = "long";
-      version = "4.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/long/-/long-4.0.0.tgz";
-        sha512 = "XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==";
-      };
-    };
-    "loop-protect-git+https://github.com/jean-emmanuel/loop-protect#v1.0.1" = {
-      name = "loop-protect";
-      packageName = "loop-protect";
-      version = "1.0.1";
-      src = fetchgit {
-        url = "https://github.com/jean-emmanuel/loop-protect";
-        rev = "557a6d124e2bcd0463f26c0a61d035f4840a6dec";
-        sha256 = "ffb6bd78172fc7e52cf94e10467c467210bec9ee27c7ba8536b51044e5ae4b5f";
-      };
-    };
-    "lower-case-1.1.4" = {
-      name = "lower-case";
-      packageName = "lower-case";
-      version = "1.1.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz";
-        sha512 = "2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==";
-      };
-    };
-    "lowercase-keys-1.0.1" = {
-      name = "lowercase-keys";
-      packageName = "lowercase-keys";
-      version = "1.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz";
-        sha512 = "G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==";
-      };
-    };
-    "lowercase-keys-2.0.0" = {
-      name = "lowercase-keys";
-      packageName = "lowercase-keys";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz";
-        sha512 = "tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==";
-      };
-    };
-    "lru-cache-6.0.0" = {
-      name = "lru-cache";
-      packageName = "lru-cache";
-      version = "6.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz";
-        sha512 = "Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==";
-      };
-    };
-    "magic-string-0.23.2" = {
-      name = "magic-string";
-      packageName = "magic-string";
-      version = "0.23.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/magic-string/-/magic-string-0.23.2.tgz";
-        sha512 = "oIUZaAxbcxYIp4AyLafV6OVKoB3YouZs0UTCJ8mOKBHNyJgGDaMJ4TgA+VylJh6fx7EQCC52XkbURxxG9IoJXA==";
-      };
-    };
-    "make-dir-3.1.0" = {
-      name = "make-dir";
-      packageName = "make-dir";
-      version = "3.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz";
-        sha512 = "g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==";
-      };
-    };
-    "make-fetch-happen-9.1.0" = {
-      name = "make-fetch-happen";
-      packageName = "make-fetch-happen";
-      version = "9.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz";
-        sha512 = "+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==";
-      };
-    };
-    "map-obj-1.0.1" = {
-      name = "map-obj";
-      packageName = "map-obj";
-      version = "1.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz";
-        sha512 = "7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==";
-      };
-    };
-    "map-obj-4.3.0" = {
-      name = "map-obj";
-      packageName = "map-obj";
-      version = "4.3.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz";
-        sha512 = "hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==";
-      };
-    };
-    "md5.js-1.3.5" = {
-      name = "md5.js";
-      packageName = "md5.js";
-      version = "1.3.5";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz";
-        sha512 = "xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==";
-      };
-    };
-    "meow-9.0.0" = {
-      name = "meow";
-      packageName = "meow";
-      version = "9.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz";
-        sha512 = "+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==";
-      };
-    };
-    "merge-source-map-1.0.4" = {
-      name = "merge-source-map";
-      packageName = "merge-source-map";
-      version = "1.0.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz";
-        sha512 = "PGSmS0kfnTnMJCzJ16BLLCEe6oeYCamKFFdQKshi4BmM6FUwipjVOcBFGxqtQtirtAG4iZvHlqST9CpZKqlRjA==";
-      };
-    };
-    "miller-rabin-4.0.1" = {
-      name = "miller-rabin";
-      packageName = "miller-rabin";
-      version = "4.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz";
-        sha512 = "115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==";
-      };
-    };
-    "mime-1.6.0" = {
-      name = "mime";
-      packageName = "mime";
-      version = "1.6.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz";
-        sha512 = "x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==";
-      };
-    };
-    "mime-db-1.52.0" = {
-      name = "mime-db";
-      packageName = "mime-db";
-      version = "1.52.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz";
-        sha512 = "sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==";
-      };
-    };
-    "mime-types-2.1.35" = {
-      name = "mime-types";
-      packageName = "mime-types";
-      version = "2.1.35";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz";
-        sha512 = "ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==";
-      };
-    };
-    "mimic-response-1.0.1" = {
-      name = "mimic-response";
-      packageName = "mimic-response";
-      version = "1.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz";
-        sha512 = "j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==";
-      };
-    };
-    "min-indent-1.0.1" = {
-      name = "min-indent";
-      packageName = "min-indent";
-      version = "1.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz";
-        sha512 = "I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==";
-      };
-    };
-    "minimalistic-assert-1.0.1" = {
-      name = "minimalistic-assert";
-      packageName = "minimalistic-assert";
-      version = "1.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz";
-        sha512 = "UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==";
-      };
-    };
-    "minimalistic-crypto-utils-1.0.1" = {
-      name = "minimalistic-crypto-utils";
-      packageName = "minimalistic-crypto-utils";
-      version = "1.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz";
-        sha512 = "JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==";
-      };
-    };
-    "minimatch-3.0.8" = {
-      name = "minimatch";
-      packageName = "minimatch";
-      version = "3.0.8";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz";
-        sha512 = "6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==";
-      };
-    };
-    "minimatch-3.1.2" = {
-      name = "minimatch";
-      packageName = "minimatch";
-      version = "3.1.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz";
-        sha512 = "J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==";
-      };
-    };
-    "minimatch-5.1.0" = {
-      name = "minimatch";
-      packageName = "minimatch";
-      version = "5.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz";
-        sha512 = "9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==";
-      };
-    };
-    "minimist-1.2.6" = {
-      name = "minimist";
-      packageName = "minimist";
-      version = "1.2.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz";
-        sha512 = "Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==";
-      };
-    };
-    "minimist-options-4.1.0" = {
-      name = "minimist-options";
-      packageName = "minimist-options";
-      version = "4.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz";
-        sha512 = "Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==";
-      };
-    };
-    "minipass-3.3.4" = {
-      name = "minipass";
-      packageName = "minipass";
-      version = "3.3.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz";
-        sha512 = "I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==";
-      };
-    };
-    "minipass-collect-1.0.2" = {
-      name = "minipass-collect";
-      packageName = "minipass-collect";
-      version = "1.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz";
-        sha512 = "6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==";
-      };
-    };
-    "minipass-fetch-1.4.1" = {
-      name = "minipass-fetch";
-      packageName = "minipass-fetch";
-      version = "1.4.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz";
-        sha512 = "CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==";
-      };
-    };
-    "minipass-flush-1.0.5" = {
-      name = "minipass-flush";
-      packageName = "minipass-flush";
-      version = "1.0.5";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz";
-        sha512 = "JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==";
-      };
-    };
-    "minipass-pipeline-1.2.4" = {
-      name = "minipass-pipeline";
-      packageName = "minipass-pipeline";
-      version = "1.2.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz";
-        sha512 = "xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==";
-      };
-    };
-    "minipass-sized-1.0.3" = {
-      name = "minipass-sized";
-      packageName = "minipass-sized";
-      version = "1.0.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz";
-        sha512 = "MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==";
-      };
-    };
-    "minizlib-2.1.2" = {
-      name = "minizlib";
-      packageName = "minizlib";
-      version = "2.1.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz";
-        sha512 = "bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==";
-      };
-    };
-    "mkdirp-0.5.6" = {
-      name = "mkdirp";
-      packageName = "mkdirp";
-      version = "0.5.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz";
-        sha512 = "FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==";
-      };
-    };
-    "mkdirp-1.0.4" = {
-      name = "mkdirp";
-      packageName = "mkdirp";
-      version = "1.0.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz";
-        sha512 = "vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==";
-      };
-    };
-    "mkdirp-classic-0.5.3" = {
-      name = "mkdirp-classic";
-      packageName = "mkdirp-classic";
-      version = "0.5.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz";
-        sha512 = "gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==";
-      };
-    };
-    "module-deps-6.2.3" = {
-      name = "module-deps";
-      packageName = "module-deps";
-      version = "6.2.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz";
-        sha512 = "fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==";
-      };
-    };
-    "mold-source-map-0.4.0" = {
-      name = "mold-source-map";
-      packageName = "mold-source-map";
-      version = "0.4.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/mold-source-map/-/mold-source-map-0.4.0.tgz";
-        sha512 = "Y0uA/sDKVuPgLd7BmaJOai+fqzjrOlR6vZgx5cJIvturI/xOPQPgbf3X7ZbzJd6MvqQ6ucIfK8dSteFyc2Mw2w==";
-      };
-    };
-    "ms-2.0.0" = {
-      name = "ms";
-      packageName = "ms";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz";
-        sha512 = "Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==";
-      };
-    };
-    "ms-2.1.2" = {
-      name = "ms";
-      packageName = "ms";
-      version = "2.1.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz";
-        sha512 = "sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==";
-      };
-    };
-    "ms-2.1.3" = {
-      name = "ms";
-      packageName = "ms";
-      version = "2.1.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz";
-        sha512 = "6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==";
-      };
-    };
-    "multicast-dns-git+https://github.com/jean-emmanuel/multicast-dns" = {
-      name = "multicast-dns";
-      packageName = "multicast-dns";
-      version = "7.2.1";
-      src = fetchgit {
-        url = "https://github.com/jean-emmanuel/multicast-dns";
-        rev = "1bb9f6ba892eba88f2cb12ca96a1c1b3088413c0";
-        sha256 = "7c185bd09a5b28765c4dffabc82768249554ed98a8836c52264b4ba2195fcd44";
-      };
-    };
-    "multicast-dns-service-types-1.1.0" = {
-      name = "multicast-dns-service-types";
-      packageName = "multicast-dns-service-types";
-      version = "1.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz";
-        sha512 = "cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==";
-      };
-    };
-    "mutexify-1.4.0" = {
-      name = "mutexify";
-      packageName = "mutexify";
-      version = "1.4.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/mutexify/-/mutexify-1.4.0.tgz";
-        sha512 = "pbYSsOrSB/AKN5h/WzzLRMFgZhClWccf2XIB4RSMC8JbquiB0e0/SH5AIfdQMdyHmYtv4seU7yV/TvAwPLJ1Yg==";
-      };
-    };
-    "nan-2.16.0" = {
-      name = "nan";
-      packageName = "nan";
-      version = "2.16.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz";
-        sha512 = "UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==";
-      };
-    };
-    "nanoassert-1.1.0" = {
-      name = "nanoassert";
-      packageName = "nanoassert";
-      version = "1.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/nanoassert/-/nanoassert-1.1.0.tgz";
-        sha512 = "C40jQ3NzfkP53NsO8kEOFd79p4b9kDXQMwgiY1z8ZwrDZgUyom0AHwGegF4Dm99L+YoYhuaB0ceerUcXmqr1rQ==";
-      };
-    };
-    "nanobench-2.1.1" = {
-      name = "nanobench";
-      packageName = "nanobench";
-      version = "2.1.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/nanobench/-/nanobench-2.1.1.tgz";
-        sha512 = "z+Vv7zElcjN+OpzAxAquUayFLGK3JI/ubCl0Oh64YQqsTGG09CGqieJVQw4ui8huDnnAgrvTv93qi5UaOoNj8A==";
-      };
-    };
-    "nanohtml-1.10.0" = {
-      name = "nanohtml";
-      packageName = "nanohtml";
-      version = "1.10.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/nanohtml/-/nanohtml-1.10.0.tgz";
-        sha512 = "r/3AQl+jxAxUIJRiKExUjBtFcE1cm4yTOsTIdVqqlxPNtBxJh522ANrcQYzdNHhPzbPgb7j6qujq6eGehBX0kg==";
-      };
-    };
-    "nanoid-3.3.4" = {
-      name = "nanoid";
-      packageName = "nanoid";
-      version = "3.3.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz";
-        sha512 = "MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==";
-      };
-    };
-    "nanomorph-5.4.3" = {
-      name = "nanomorph";
-      packageName = "nanomorph";
-      version = "5.4.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/nanomorph/-/nanomorph-5.4.3.tgz";
-        sha512 = "uPP5y0x21KISffZCKHh1A0QW0RHZFQS0BR7LetlHBlay6UWAbjwhjiJTxOO6JeMHko5Cigl617zFoGrYFJ8ZLg==";
-      };
-    };
-    "natural-compare-1.4.0" = {
-      name = "natural-compare";
-      packageName = "natural-compare";
-      version = "1.4.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz";
-        sha512 = "OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==";
-      };
-    };
-    "negotiator-0.6.3" = {
-      name = "negotiator";
-      packageName = "negotiator";
-      version = "0.6.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz";
-        sha512 = "+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==";
-      };
-    };
-    "no-case-2.3.2" = {
-      name = "no-case";
-      packageName = "no-case";
-      version = "2.3.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz";
-        sha512 = "rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==";
-      };
-    };
-    "node-forge-1.3.1" = {
-      name = "node-forge";
-      packageName = "node-forge";
-      version = "1.3.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz";
-        sha512 = "dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==";
-      };
-    };
-    "node-gyp-8.4.1" = {
-      name = "node-gyp";
-      packageName = "node-gyp";
-      version = "8.4.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz";
-        sha512 = "olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==";
-      };
-    };
-    "node-mouse-0.0.2" = {
-      name = "node-mouse";
-      packageName = "node-mouse";
-      version = "0.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/node-mouse/-/node-mouse-0.0.2.tgz";
-        sha512 = "qqm+c/uKB1ceGMrKW+mxAxPKFTu0HD1DWoCElJHA0VQDloudzZD4bI++Z18mSDA3n5lix+RTXiOiu3XAOSYVHA==";
-      };
-    };
-    "node-releases-2.0.5" = {
-      name = "node-releases";
-      packageName = "node-releases";
-      version = "2.0.5";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz";
-        sha512 = "U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==";
-      };
-    };
-    "node-sass-7.0.1" = {
-      name = "node-sass";
-      packageName = "node-sass";
-      version = "7.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/node-sass/-/node-sass-7.0.1.tgz";
-        sha512 = "uMy+Xt29NlqKCFdFRZyXKOTqGt+QaKHexv9STj2WeLottnlqZEEWx6Bj0MXNthmFRRdM/YwyNo/8Tr46TOM0jQ==";
-      };
-    };
-    "nodemon-2.0.16" = {
-      name = "nodemon";
-      packageName = "nodemon";
-      version = "2.0.16";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/nodemon/-/nodemon-2.0.16.tgz";
-        sha512 = "zsrcaOfTWRuUzBn3P44RDliLlp263Z/76FPoHFr3cFFkOz0lTPAcIw8dCzfdVIx/t3AtDYCZRCDkoCojJqaG3w==";
-      };
-    };
-    "nopt-1.0.10" = {
-      name = "nopt";
-      packageName = "nopt";
-      version = "1.0.10";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz";
-        sha512 = "NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==";
-      };
-    };
-    "nopt-5.0.0" = {
-      name = "nopt";
-      packageName = "nopt";
-      version = "5.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz";
-        sha512 = "Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==";
-      };
-    };
-    "normalize-html-whitespace-0.2.0" = {
-      name = "normalize-html-whitespace";
-      packageName = "normalize-html-whitespace";
-      version = "0.2.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/normalize-html-whitespace/-/normalize-html-whitespace-0.2.0.tgz";
-        sha512 = "5CZAEQ4bQi8Msqw0GAT6rrkrjNN4ZKqAG3+jJMwms4O6XoMvh6ekwOueG4mRS1LbPUR1r9EdnhxxfpzMTOdzKw==";
-      };
-    };
-    "normalize-package-data-2.5.0" = {
-      name = "normalize-package-data";
-      packageName = "normalize-package-data";
-      version = "2.5.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz";
-        sha512 = "/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==";
-      };
-    };
-    "normalize-package-data-3.0.3" = {
-      name = "normalize-package-data";
-      packageName = "normalize-package-data";
-      version = "3.0.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz";
-        sha512 = "p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==";
-      };
-    };
-    "normalize-path-3.0.0" = {
-      name = "normalize-path";
-      packageName = "normalize-path";
-      version = "3.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz";
-        sha512 = "6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==";
-      };
-    };
-    "normalize-url-4.5.1" = {
-      name = "normalize-url";
-      packageName = "normalize-url";
-      version = "4.5.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz";
-        sha512 = "9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==";
-      };
-    };
-    "nosleep.js-0.12.0" = {
-      name = "nosleep.js";
-      packageName = "nosleep.js";
-      version = "0.12.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/nosleep.js/-/nosleep.js-0.12.0.tgz";
-        sha512 = "9d1HbpKLh3sdWlhXMhU6MMH+wQzKkrgfRkYV0EBdvt99YJfj0ilCJrWRDYG2130Tm4GXbEoTCx5b34JSaP+HhA==";
-      };
-    };
-    "npmlog-5.0.1" = {
-      name = "npmlog";
-      packageName = "npmlog";
-      version = "5.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz";
-        sha512 = "AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==";
-      };
-    };
-    "npmlog-6.0.2" = {
-      name = "npmlog";
-      packageName = "npmlog";
-      version = "6.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz";
-        sha512 = "/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==";
-      };
-    };
-    "oauth-sign-0.9.0" = {
-      name = "oauth-sign";
-      packageName = "oauth-sign";
-      version = "0.9.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz";
-        sha512 = "fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==";
-      };
-    };
-    "object-assign-4.1.1" = {
-      name = "object-assign";
-      packageName = "object-assign";
-      version = "4.1.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz";
-        sha512 = "rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==";
-      };
-    };
-    "object-inspect-1.12.2" = {
-      name = "object-inspect";
-      packageName = "object-inspect";
-      version = "1.12.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz";
-        sha512 = "z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==";
-      };
-    };
-    "object-is-1.1.5" = {
-      name = "object-is";
-      packageName = "object-is";
-      version = "1.1.5";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz";
-        sha512 = "3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==";
-      };
-    };
-    "object-keys-1.1.1" = {
-      name = "object-keys";
-      packageName = "object-keys";
-      version = "1.1.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz";
-        sha512 = "NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==";
-      };
-    };
-    "object.assign-4.1.2" = {
-      name = "object.assign";
-      packageName = "object.assign";
-      version = "4.1.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz";
-        sha512 = "ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==";
-      };
-    };
-    "offset-sourcemap-lines-1.0.1" = {
-      name = "offset-sourcemap-lines";
-      packageName = "offset-sourcemap-lines";
-      version = "1.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/offset-sourcemap-lines/-/offset-sourcemap-lines-1.0.1.tgz";
-        sha512 = "8giJa0GProV9hPLOp9qAobkvi6OiZnzeM6fdubVjhqcrISX8FYMk1jMVzG6R9d7HQWLysG22jyXEIF6sWu4fJw==";
-      };
-    };
-    "on-finished-2.4.1" = {
-      name = "on-finished";
-      packageName = "on-finished";
-      version = "2.4.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz";
-        sha512 = "oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==";
-      };
-    };
-    "once-1.4.0" = {
-      name = "once";
-      packageName = "once";
-      version = "1.4.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz";
-        sha512 = "lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==";
-      };
-    };
-    "open-8.4.0" = {
-      name = "open";
-      packageName = "open";
-      version = "8.4.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/open/-/open-8.4.0.tgz";
-        sha512 = "XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==";
-      };
-    };
-    "optionator-0.9.1" = {
-      name = "optionator";
-      packageName = "optionator";
-      version = "0.9.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz";
-        sha512 = "74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==";
-      };
-    };
-    "os-browserify-0.3.0" = {
-      name = "os-browserify";
-      packageName = "os-browserify";
-      version = "0.3.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz";
-        sha512 = "gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==";
-      };
-    };
-    "osc-git+https://github.com/jean-emmanuel/osc.js" = {
-      name = "osc";
-      packageName = "osc";
-      version = "2.4.2";
-      src = fetchgit {
-        url = "https://github.com/jean-emmanuel/osc.js";
-        rev = "9197739162f26086e6a72670103c3fa036e9dcd5";
-        sha256 = "ce01cbf6a7c5e47594a7587fa8a3aabcc4a7c53d6f26fcabe20edf5a060e7728";
-      };
-    };
-    "osi-licenses-0.1.1" = {
-      name = "osi-licenses";
-      packageName = "osi-licenses";
-      version = "0.1.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/osi-licenses/-/osi-licenses-0.1.1.tgz";
-        sha512 = "ZGAGO6dIxTS/mXxEJCpIdYetAoxIOOr7uYpMOoDWo4+b/6rf+2GagOjTbegL+eoMI8aYAiyNgKWUT7vWJRPl9A==";
-      };
-    };
-    "oss-license-name-to-url-1.2.1" = {
-      name = "oss-license-name-to-url";
-      packageName = "oss-license-name-to-url";
-      version = "1.2.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/oss-license-name-to-url/-/oss-license-name-to-url-1.2.1.tgz";
-        sha512 = "apFbKq0EAYi70q0pOpS0tDfSviZYdG3KM6U1GpofZPsRMwgDga0DQiPQ/GHyQx7PDDrLCGvFBNPLMLV/K4Jr4Q==";
-      };
-    };
-    "p-cancelable-1.1.0" = {
-      name = "p-cancelable";
-      packageName = "p-cancelable";
-      version = "1.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz";
-        sha512 = "s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==";
-      };
-    };
-    "p-limit-2.3.0" = {
-      name = "p-limit";
-      packageName = "p-limit";
-      version = "2.3.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz";
-        sha512 = "//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==";
-      };
-    };
-    "p-locate-4.1.0" = {
-      name = "p-locate";
-      packageName = "p-locate";
-      version = "4.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz";
-        sha512 = "R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==";
-      };
-    };
-    "p-map-4.0.0" = {
-      name = "p-map";
-      packageName = "p-map";
-      version = "4.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz";
-        sha512 = "/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==";
-      };
-    };
-    "p-try-2.2.0" = {
-      name = "p-try";
-      packageName = "p-try";
-      version = "2.2.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz";
-        sha512 = "R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==";
-      };
-    };
-    "package-json-6.5.0" = {
-      name = "package-json";
-      packageName = "package-json";
-      version = "6.5.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz";
-        sha512 = "k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==";
-      };
-    };
-    "pako-1.0.11" = {
-      name = "pako";
-      packageName = "pako";
-      version = "1.0.11";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz";
-        sha512 = "4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==";
-      };
-    };
-    "parent-module-1.0.1" = {
-      name = "parent-module";
-      packageName = "parent-module";
-      version = "1.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz";
-        sha512 = "GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==";
-      };
-    };
-    "parents-1.0.1" = {
-      name = "parents";
-      packageName = "parents";
-      version = "1.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz";
-        sha512 = "mXKF3xkoUt5td2DoxpLmtOmZvko9VfFpwRwkKDHSNvgmpLAeBo18YDhcPbBzJq+QLCHMbGOfzia2cX4U+0v9Mg==";
-      };
-    };
-    "parse-asn1-5.1.6" = {
-      name = "parse-asn1";
-      packageName = "parse-asn1";
-      version = "5.1.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz";
-        sha512 = "RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==";
-      };
-    };
-    "parse-json-5.2.0" = {
-      name = "parse-json";
-      packageName = "parse-json";
-      version = "5.2.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz";
-        sha512 = "ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==";
-      };
-    };
-    "parse-srcset-1.0.2" = {
-      name = "parse-srcset";
-      packageName = "parse-srcset";
-      version = "1.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz";
-        sha512 = "/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==";
-      };
-    };
-    "path-browserify-1.0.1" = {
-      name = "path-browserify";
-      packageName = "path-browserify";
-      version = "1.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz";
-        sha512 = "b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==";
-      };
-    };
-    "path-exists-4.0.0" = {
-      name = "path-exists";
-      packageName = "path-exists";
-      version = "4.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz";
-        sha512 = "ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==";
-      };
-    };
-    "path-is-absolute-1.0.1" = {
-      name = "path-is-absolute";
-      packageName = "path-is-absolute";
-      version = "1.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
-        sha512 = "AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==";
-      };
-    };
-    "path-key-3.1.1" = {
-      name = "path-key";
-      packageName = "path-key";
-      version = "3.1.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz";
-        sha512 = "ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==";
-      };
-    };
-    "path-parse-1.0.7" = {
-      name = "path-parse";
-      packageName = "path-parse";
-      version = "1.0.7";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz";
-        sha512 = "LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==";
-      };
-    };
-    "path-platform-0.11.15" = {
-      name = "path-platform";
-      packageName = "path-platform";
-      version = "0.11.15";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz";
-        sha512 = "Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==";
-      };
-    };
-    "pbkdf2-3.1.2" = {
-      name = "pbkdf2";
-      packageName = "pbkdf2";
-      version = "3.1.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz";
-        sha512 = "iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==";
-      };
-    };
-    "performance-now-2.1.0" = {
-      name = "performance-now";
-      packageName = "performance-now";
-      version = "2.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz";
-        sha512 = "7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==";
-      };
-    };
-    "picocolors-0.2.1" = {
-      name = "picocolors";
-      packageName = "picocolors";
-      version = "0.2.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz";
-        sha512 = "cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==";
-      };
-    };
-    "picocolors-1.0.0" = {
-      name = "picocolors";
-      packageName = "picocolors";
-      version = "1.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz";
-        sha512 = "1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==";
-      };
-    };
-    "picomatch-2.3.1" = {
-      name = "picomatch";
-      packageName = "picomatch";
-      version = "2.3.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz";
-        sha512 = "JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==";
-      };
-    };
-    "postcss-7.0.39" = {
-      name = "postcss";
-      packageName = "postcss";
-      version = "7.0.39";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz";
-        sha512 = "yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==";
-      };
-    };
-    "prelude-ls-1.2.1" = {
-      name = "prelude-ls";
-      packageName = "prelude-ls";
-      version = "1.2.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz";
-        sha512 = "vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==";
-      };
-    };
-    "prepend-http-2.0.0" = {
-      name = "prepend-http";
-      packageName = "prepend-http";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz";
-        sha512 = "ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==";
-      };
-    };
-    "pretty-hrtime-1.0.3" = {
-      name = "pretty-hrtime";
-      packageName = "pretty-hrtime";
-      version = "1.0.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz";
-        sha512 = "66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==";
-      };
-    };
-    "process-0.11.10" = {
-      name = "process";
-      packageName = "process";
-      version = "0.11.10";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/process/-/process-0.11.10.tgz";
-        sha512 = "cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==";
-      };
-    };
-    "process-nextick-args-2.0.1" = {
-      name = "process-nextick-args";
-      packageName = "process-nextick-args";
-      version = "2.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz";
-        sha512 = "3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==";
-      };
-    };
-    "promise-inflight-1.0.1" = {
-      name = "promise-inflight";
-      packageName = "promise-inflight";
-      version = "1.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz";
-        sha512 = "6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==";
-      };
-    };
-    "promise-retry-2.0.1" = {
-      name = "promise-retry";
-      packageName = "promise-retry";
-      version = "2.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz";
-        sha512 = "y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==";
-      };
-    };
-    "psl-1.9.0" = {
-      name = "psl";
-      packageName = "psl";
-      version = "1.9.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz";
-        sha512 = "E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==";
-      };
-    };
-    "pstree.remy-1.1.8" = {
-      name = "pstree.remy";
-      packageName = "pstree.remy";
-      version = "1.1.8";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz";
-        sha512 = "77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==";
-      };
-    };
-    "public-encrypt-4.0.3" = {
-      name = "public-encrypt";
-      packageName = "public-encrypt";
-      version = "4.0.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz";
-        sha512 = "zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==";
-      };
-    };
-    "pump-3.0.0" = {
-      name = "pump";
-      packageName = "pump";
-      version = "3.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz";
-        sha512 = "LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==";
-      };
-    };
-    "punycode-1.3.2" = {
-      name = "punycode";
-      packageName = "punycode";
-      version = "1.3.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz";
-        sha512 = "RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==";
-      };
-    };
-    "punycode-1.4.1" = {
-      name = "punycode";
-      packageName = "punycode";
-      version = "1.4.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz";
-        sha512 = "jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==";
-      };
-    };
-    "punycode-2.1.1" = {
-      name = "punycode";
-      packageName = "punycode";
-      version = "2.1.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz";
-        sha512 = "XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==";
-      };
-    };
-    "pupa-2.1.1" = {
-      name = "pupa";
-      packageName = "pupa";
-      version = "2.1.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz";
-        sha512 = "l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==";
-      };
-    };
-    "python-shell-3.0.1" = {
-      name = "python-shell";
-      packageName = "python-shell";
-      version = "3.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/python-shell/-/python-shell-3.0.1.tgz";
-        sha512 = "TWeotuxe1auhXa5bGRScxnc2J+0r41NBntSa6RYZtMBLtAEsvCboKrEbW6DvASosWQepVkhZZlT3B5Ei766G+Q==";
-      };
-    };
-    "qs-6.5.3" = {
-      name = "qs";
-      packageName = "qs";
-      version = "6.5.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz";
-        sha512 = "qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==";
-      };
-    };
-    "querystring-0.2.0" = {
-      name = "querystring";
-      packageName = "querystring";
-      version = "0.2.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz";
-        sha512 = "X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==";
-      };
-    };
-    "querystring-es3-0.2.1" = {
-      name = "querystring-es3";
-      packageName = "querystring-es3";
-      version = "0.2.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz";
-        sha512 = "773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==";
-      };
-    };
-    "queue-tick-1.0.0" = {
-      name = "queue-tick";
-      packageName = "queue-tick";
-      version = "1.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.0.tgz";
-        sha512 = "ULWhjjE8BmiICGn3G8+1L9wFpERNxkf8ysxkAer4+TFdRefDaXOCV5m92aMB9FtBVmn/8sETXLXY6BfW7hyaWQ==";
-      };
-    };
-    "quick-lru-4.0.1" = {
-      name = "quick-lru";
-      packageName = "quick-lru";
-      version = "4.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz";
-        sha512 = "ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==";
-      };
-    };
-    "randombytes-2.1.0" = {
-      name = "randombytes";
-      packageName = "randombytes";
-      version = "2.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz";
-        sha512 = "vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==";
-      };
-    };
-    "randomfill-1.0.4" = {
-      name = "randomfill";
-      packageName = "randomfill";
-      version = "1.0.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz";
-        sha512 = "87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==";
-      };
-    };
-    "range-parser-1.2.1" = {
-      name = "range-parser";
-      packageName = "range-parser";
-      version = "1.2.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz";
-        sha512 = "Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==";
-      };
-    };
-    "rc-1.2.8" = {
-      name = "rc";
-      packageName = "rc";
-      version = "1.2.8";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz";
-        sha512 = "y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==";
-      };
-    };
-    "read-only-stream-2.0.0" = {
-      name = "read-only-stream";
-      packageName = "read-only-stream";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz";
-        sha512 = "3ALe0bjBVZtkdWKIcThYpQCLbBMd/+Tbh2CDSrAIDO3UsZ4Xs+tnyjv2MjCOMMgBG+AsUOeuP1cgtY1INISc8w==";
-      };
-    };
-    "read-pkg-5.2.0" = {
-      name = "read-pkg";
-      packageName = "read-pkg";
-      version = "5.2.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz";
-        sha512 = "Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==";
-      };
-    };
-    "read-pkg-up-7.0.1" = {
-      name = "read-pkg-up";
-      packageName = "read-pkg-up";
-      version = "7.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz";
-        sha512 = "zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==";
-      };
-    };
-    "readable-stream-2.3.7" = {
-      name = "readable-stream";
-      packageName = "readable-stream";
-      version = "2.3.7";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz";
-        sha512 = "Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==";
-      };
-    };
-    "readable-stream-3.6.0" = {
-      name = "readable-stream";
-      packageName = "readable-stream";
-      version = "3.6.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz";
-        sha512 = "BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==";
-      };
-    };
-    "readdirp-3.6.0" = {
-      name = "readdirp";
-      packageName = "readdirp";
-      version = "3.6.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz";
-        sha512 = "hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==";
-      };
-    };
-    "redent-3.0.0" = {
-      name = "redent";
-      packageName = "redent";
-      version = "3.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz";
-        sha512 = "6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==";
-      };
-    };
-    "regenerate-1.4.2" = {
-      name = "regenerate";
-      packageName = "regenerate";
-      version = "1.4.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz";
-        sha512 = "zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==";
-      };
-    };
-    "regenerate-unicode-properties-10.0.1" = {
-      name = "regenerate-unicode-properties";
-      packageName = "regenerate-unicode-properties";
-      version = "10.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz";
-        sha512 = "vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==";
-      };
-    };
-    "regenerator-runtime-0.13.9" = {
-      name = "regenerator-runtime";
-      packageName = "regenerator-runtime";
-      version = "0.13.9";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz";
-        sha512 = "p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==";
-      };
-    };
-    "regenerator-transform-0.15.0" = {
-      name = "regenerator-transform";
-      packageName = "regenerator-transform";
-      version = "0.15.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz";
-        sha512 = "LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==";
-      };
-    };
-    "regexp.prototype.flags-1.4.3" = {
-      name = "regexp.prototype.flags";
-      packageName = "regexp.prototype.flags";
-      version = "1.4.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz";
-        sha512 = "fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==";
-      };
-    };
-    "regexpp-3.2.0" = {
-      name = "regexpp";
-      packageName = "regexpp";
-      version = "3.2.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz";
-        sha512 = "pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==";
-      };
-    };
-    "regexpu-core-5.1.0" = {
-      name = "regexpu-core";
-      packageName = "regexpu-core";
-      version = "5.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz";
-        sha512 = "bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==";
-      };
-    };
-    "registry-auth-token-4.2.2" = {
-      name = "registry-auth-token";
-      packageName = "registry-auth-token";
-      version = "4.2.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz";
-        sha512 = "PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==";
-      };
-    };
-    "registry-url-5.1.0" = {
-      name = "registry-url";
-      packageName = "registry-url";
-      version = "5.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz";
-        sha512 = "8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==";
-      };
-    };
-    "regjsgen-0.6.0" = {
-      name = "regjsgen";
-      packageName = "regjsgen";
-      version = "0.6.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz";
-        sha512 = "ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==";
-      };
-    };
-    "regjsparser-0.8.4" = {
-      name = "regjsparser";
-      packageName = "regjsparser";
-      version = "0.8.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz";
-        sha512 = "J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==";
-      };
-    };
-    "replacestream-4.0.3" = {
-      name = "replacestream";
-      packageName = "replacestream";
-      version = "4.0.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/replacestream/-/replacestream-4.0.3.tgz";
-        sha512 = "AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==";
-      };
-    };
-    "request-2.88.2" = {
-      name = "request";
-      packageName = "request";
-      version = "2.88.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/request/-/request-2.88.2.tgz";
-        sha512 = "MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==";
-      };
-    };
-    "require-directory-2.1.1" = {
-      name = "require-directory";
-      packageName = "require-directory";
-      version = "2.1.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz";
-        sha512 = "fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==";
-      };
-    };
-    "resolve-1.22.1" = {
-      name = "resolve";
-      packageName = "resolve";
-      version = "1.22.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz";
-        sha512 = "nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==";
-      };
-    };
-    "resolve-from-4.0.0" = {
-      name = "resolve-from";
-      packageName = "resolve-from";
-      version = "4.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz";
-        sha512 = "pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==";
-      };
-    };
-    "responselike-1.0.2" = {
-      name = "responselike";
-      packageName = "responselike";
-      version = "1.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz";
-        sha512 = "/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==";
-      };
-    };
-    "retry-0.12.0" = {
-      name = "retry";
-      packageName = "retry";
-      version = "0.12.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz";
-        sha512 = "9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==";
-      };
-    };
-    "rimraf-2.7.1" = {
-      name = "rimraf";
-      packageName = "rimraf";
-      version = "2.7.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz";
-        sha512 = "uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==";
-      };
-    };
-    "rimraf-3.0.2" = {
-      name = "rimraf";
-      packageName = "rimraf";
-      version = "3.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz";
-        sha512 = "JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==";
-      };
-    };
-    "ripemd160-2.0.2" = {
-      name = "ripemd160";
-      packageName = "ripemd160";
-      version = "2.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz";
-        sha512 = "ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==";
-      };
-    };
-    "safe-buffer-5.1.2" = {
-      name = "safe-buffer";
-      packageName = "safe-buffer";
-      version = "5.1.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz";
-        sha512 = "Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==";
-      };
-    };
-    "safe-buffer-5.2.1" = {
-      name = "safe-buffer";
-      packageName = "safe-buffer";
-      version = "5.2.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz";
-        sha512 = "rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==";
-      };
-    };
-    "safer-buffer-2.1.2" = {
-      name = "safer-buffer";
-      packageName = "safer-buffer";
-      version = "2.1.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz";
-        sha512 = "YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==";
-      };
-    };
-    "sanitize-html-1.27.5" = {
-      name = "sanitize-html";
-      packageName = "sanitize-html";
-      version = "1.27.5";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.27.5.tgz";
-        sha512 = "M4M5iXDAUEcZKLXkmk90zSYWEtk5NH3JmojQxKxV371fnMh+x9t1rqdmXaGoyEHw3z/X/8vnFhKjGL5xFGOJ3A==";
-      };
-    };
-    "sass-graph-4.0.0" = {
-      name = "sass-graph";
-      packageName = "sass-graph";
-      version = "4.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/sass-graph/-/sass-graph-4.0.0.tgz";
-        sha512 = "WSO/MfXqKH7/TS8RdkCX3lVkPFQzCgbqdGsmSKq6tlPU+GpGEsa/5aW18JqItnqh+lPtcjifqdZ/VmiILkKckQ==";
-      };
-    };
-    "scope-css-1.2.1" = {
-      name = "scope-css";
-      packageName = "scope-css";
-      version = "1.2.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/scope-css/-/scope-css-1.2.1.tgz";
-        sha512 = "UjLRmyEYaDNiOS673xlVkZFlVCtckJR/dKgr434VMm7Lb+AOOqXKdAcY7PpGlJYErjXXJzKN7HWo4uRPiZZG0Q==";
-      };
-    };
-    "screenfull-5.2.0" = {
-      name = "screenfull";
-      packageName = "screenfull";
-      version = "5.2.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/screenfull/-/screenfull-5.2.0.tgz";
-        sha512 = "9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==";
-      };
-    };
-    "scss-tokenizer-0.3.0" = {
-      name = "scss-tokenizer";
-      packageName = "scss-tokenizer";
-      version = "0.3.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.3.0.tgz";
-        sha512 = "14Zl9GcbBvOT9057ZKjpz5yPOyUWG2ojd9D5io28wHRYsOrs7U95Q+KNL87+32p8rc+LvDpbu/i9ZYjM9Q+FsQ==";
-      };
-    };
-    "semver-5.7.1" = {
-      name = "semver";
-      packageName = "semver";
-      version = "5.7.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz";
-        sha512 = "sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==";
-      };
-    };
-    "semver-6.3.0" = {
-      name = "semver";
-      packageName = "semver";
-      version = "6.3.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz";
-        sha512 = "b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==";
-      };
-    };
-    "semver-7.0.0" = {
-      name = "semver";
-      packageName = "semver";
-      version = "7.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz";
-        sha512 = "+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==";
-      };
-    };
-    "semver-7.3.7" = {
-      name = "semver";
-      packageName = "semver";
-      version = "7.3.7";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz";
-        sha512 = "QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==";
-      };
-    };
-    "semver-diff-3.1.1" = {
-      name = "semver-diff";
-      packageName = "semver-diff";
-      version = "3.1.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz";
-        sha512 = "GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==";
-      };
-    };
-    "send-0.18.0" = {
-      name = "send";
-      packageName = "send";
-      version = "0.18.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/send/-/send-0.18.0.tgz";
-        sha512 = "qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==";
-      };
-    };
-    "set-blocking-2.0.0" = {
-      name = "set-blocking";
-      packageName = "set-blocking";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz";
-        sha512 = "KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==";
-      };
-    };
-    "setprototypeof-1.2.0" = {
-      name = "setprototypeof";
-      packageName = "setprototypeof";
-      version = "1.2.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz";
-        sha512 = "E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==";
-      };
-    };
-    "sha.js-2.4.11" = {
-      name = "sha.js";
-      packageName = "sha.js";
-      version = "2.4.11";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz";
-        sha512 = "QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==";
-      };
-    };
-    "shasum-object-1.0.0" = {
-      name = "shasum-object";
-      packageName = "shasum-object";
-      version = "1.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz";
-        sha512 = "Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==";
-      };
-    };
-    "shebang-command-2.0.0" = {
-      name = "shebang-command";
-      packageName = "shebang-command";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz";
-        sha512 = "kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==";
-      };
-    };
-    "shebang-regex-3.0.0" = {
-      name = "shebang-regex";
-      packageName = "shebang-regex";
-      version = "3.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz";
-        sha512 = "7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==";
-      };
-    };
-    "shell-quote-1.7.3" = {
-      name = "shell-quote";
-      packageName = "shell-quote";
-      version = "1.7.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz";
-        sha512 = "Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==";
-      };
-    };
-    "side-channel-1.0.4" = {
-      name = "side-channel";
-      packageName = "side-channel";
-      version = "1.0.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz";
-        sha512 = "q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==";
-      };
-    };
-    "signal-exit-3.0.7" = {
-      name = "signal-exit";
-      packageName = "signal-exit";
-      version = "3.0.7";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz";
-        sha512 = "wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==";
-      };
-    };
-    "simple-concat-1.0.1" = {
-      name = "simple-concat";
-      packageName = "simple-concat";
-      version = "1.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz";
-        sha512 = "cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==";
-      };
-    };
-    "slip-1.0.2" = {
-      name = "slip";
-      packageName = "slip";
-      version = "1.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/slip/-/slip-1.0.2.tgz";
-        sha512 = "XrcHe3NAcyD3wO+O4I13RcS4/3AF+S9RvGNj9JhJeS02HyImwD2E3QWLrmn9hBfL+fB6yapagwxRkeyYzhk98g==";
-      };
-    };
-    "slugify-1.6.5" = {
-      name = "slugify";
-      packageName = "slugify";
-      version = "1.6.5";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/slugify/-/slugify-1.6.5.tgz";
-        sha512 = "8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ==";
-      };
-    };
-    "smart-buffer-4.2.0" = {
-      name = "smart-buffer";
-      packageName = "smart-buffer";
-      version = "4.2.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz";
-        sha512 = "94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==";
-      };
-    };
-    "socks-2.6.2" = {
-      name = "socks";
-      packageName = "socks";
-      version = "2.6.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz";
-        sha512 = "zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==";
-      };
-    };
-    "socks-proxy-agent-6.2.1" = {
-      name = "socks-proxy-agent";
-      packageName = "socks-proxy-agent";
-      version = "6.2.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz";
-        sha512 = "a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==";
-      };
-    };
-    "sortablejs-1.15.0" = {
-      name = "sortablejs";
-      packageName = "sortablejs";
-      version = "1.15.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.0.tgz";
-        sha512 = "bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w==";
-      };
-    };
-    "source-map-0.5.6" = {
-      name = "source-map";
-      packageName = "source-map";
-      version = "0.5.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz";
-        sha512 = "MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==";
-      };
-    };
-    "source-map-0.5.7" = {
-      name = "source-map";
-      packageName = "source-map";
-      version = "0.5.7";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz";
-        sha512 = "LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==";
-      };
-    };
-    "source-map-0.6.1" = {
-      name = "source-map";
-      packageName = "source-map";
-      version = "0.6.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz";
-        sha512 = "UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==";
-      };
-    };
-    "source-map-0.7.4" = {
-      name = "source-map";
-      packageName = "source-map";
-      version = "0.7.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz";
-        sha512 = "l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==";
-      };
-    };
-    "source-map-support-0.5.21" = {
-      name = "source-map-support";
-      packageName = "source-map-support";
-      version = "0.5.21";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz";
-        sha512 = "uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==";
-      };
-    };
-    "sourcemap-codec-1.4.8" = {
-      name = "sourcemap-codec";
-      packageName = "sourcemap-codec";
-      version = "1.4.8";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz";
-        sha512 = "9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==";
-      };
-    };
-    "spdx-correct-3.1.1" = {
-      name = "spdx-correct";
-      packageName = "spdx-correct";
-      version = "3.1.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz";
-        sha512 = "cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==";
-      };
-    };
-    "spdx-exceptions-2.3.0" = {
-      name = "spdx-exceptions";
-      packageName = "spdx-exceptions";
-      version = "2.3.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz";
-        sha512 = "/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==";
-      };
-    };
-    "spdx-expression-parse-3.0.1" = {
-      name = "spdx-expression-parse";
-      packageName = "spdx-expression-parse";
-      version = "3.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz";
-        sha512 = "cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==";
-      };
-    };
-    "spdx-license-ids-3.0.11" = {
-      name = "spdx-license-ids";
-      packageName = "spdx-license-ids";
-      version = "3.0.11";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz";
-        sha512 = "Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==";
-      };
-    };
-    "sshpk-1.17.0" = {
-      name = "sshpk";
-      packageName = "sshpk";
-      version = "1.17.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz";
-        sha512 = "/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==";
-      };
-    };
-    "ssri-8.0.1" = {
-      name = "ssri";
-      packageName = "ssri";
-      version = "8.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz";
-        sha512 = "97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==";
-      };
-    };
-    "stack-generator-2.0.10" = {
-      name = "stack-generator";
-      packageName = "stack-generator";
-      version = "2.0.10";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz";
-        sha512 = "mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==";
-      };
-    };
-    "stackframe-1.3.4" = {
-      name = "stackframe";
-      packageName = "stackframe";
-      version = "1.3.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz";
-        sha512 = "oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==";
-      };
-    };
-    "stacktrace-gps-3.1.2" = {
-      name = "stacktrace-gps";
-      packageName = "stacktrace-gps";
-      version = "3.1.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz";
-        sha512 = "GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==";
-      };
-    };
-    "stacktrace-js-2.0.2" = {
-      name = "stacktrace-js";
-      packageName = "stacktrace-js";
-      version = "2.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/stacktrace-js/-/stacktrace-js-2.0.2.tgz";
-        sha512 = "Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==";
-      };
-    };
-    "statuses-2.0.1" = {
-      name = "statuses";
-      packageName = "statuses";
-      version = "2.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz";
-        sha512 = "RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==";
-      };
-    };
-    "stdout-stream-1.4.1" = {
-      name = "stdout-stream";
-      packageName = "stdout-stream";
-      version = "1.4.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz";
-        sha512 = "j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==";
-      };
-    };
-    "stream-browserify-3.0.0" = {
-      name = "stream-browserify";
-      packageName = "stream-browserify";
-      version = "3.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz";
-        sha512 = "H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==";
-      };
-    };
-    "stream-combiner2-1.1.1" = {
-      name = "stream-combiner2";
-      packageName = "stream-combiner2";
-      version = "1.1.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz";
-        sha512 = "3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==";
-      };
-    };
-    "stream-http-3.2.0" = {
-      name = "stream-http";
-      packageName = "stream-http";
-      version = "3.2.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz";
-        sha512 = "Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==";
-      };
-    };
-    "stream-splicer-2.0.1" = {
-      name = "stream-splicer";
-      packageName = "stream-splicer";
-      version = "2.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz";
-        sha512 = "Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==";
-      };
-    };
-    "strictdom-1.0.1" = {
-      name = "strictdom";
-      packageName = "strictdom";
-      version = "1.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/strictdom/-/strictdom-1.0.1.tgz";
-        sha512 = "cEmp9QeXXRmjj/rVp9oyiqcvyocWab/HaoN4+bwFeZ7QzykJD6L3yD4v12K1x0tHpqRqVpJevN3gW7kyM39Bqg==";
-      };
-    };
-    "string-width-4.2.3" = {
-      name = "string-width";
-      packageName = "string-width";
-      version = "4.2.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz";
-        sha512 = "wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==";
-      };
-    };
-    "string.prototype.trimend-1.0.5" = {
-      name = "string.prototype.trimend";
-      packageName = "string.prototype.trimend";
-      version = "1.0.5";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz";
-        sha512 = "I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==";
-      };
-    };
-    "string.prototype.trimstart-1.0.5" = {
-      name = "string.prototype.trimstart";
-      packageName = "string.prototype.trimstart";
-      version = "1.0.5";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz";
-        sha512 = "THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==";
-      };
-    };
-    "string_decoder-1.1.1" = {
-      name = "string_decoder";
-      packageName = "string_decoder";
-      version = "1.1.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz";
-        sha512 = "n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==";
-      };
-    };
-    "string_decoder-1.3.0" = {
-      name = "string_decoder";
-      packageName = "string_decoder";
-      version = "1.3.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz";
-        sha512 = "hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==";
-      };
-    };
-    "strip-ansi-3.0.1" = {
-      name = "strip-ansi";
-      packageName = "strip-ansi";
-      version = "3.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz";
-        sha512 = "VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==";
-      };
-    };
-    "strip-ansi-6.0.1" = {
-      name = "strip-ansi";
-      packageName = "strip-ansi";
-      version = "6.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz";
-        sha512 = "Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==";
-      };
-    };
-    "strip-css-comments-3.0.0" = {
-      name = "strip-css-comments";
-      packageName = "strip-css-comments";
-      version = "3.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/strip-css-comments/-/strip-css-comments-3.0.0.tgz";
-        sha512 = "xJwk2yMZ6j+0Clj7ETUfqQ6frsaCIqNGg3zjTVswIt3SbiOsCQgRI1E93hdt/JgGfh5De/sTwxrnrBhhWzMwcg==";
-      };
-    };
-    "strip-indent-3.0.0" = {
-      name = "strip-indent";
-      packageName = "strip-indent";
-      version = "3.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz";
-        sha512 = "laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==";
-      };
-    };
-    "strip-json-comments-2.0.1" = {
-      name = "strip-json-comments";
-      packageName = "strip-json-comments";
-      version = "2.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz";
-        sha512 = "4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==";
-      };
-    };
-    "strip-json-comments-3.1.1" = {
-      name = "strip-json-comments";
-      packageName = "strip-json-comments";
-      version = "3.1.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz";
-        sha512 = "6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==";
-      };
-    };
-    "subarg-1.0.0" = {
-      name = "subarg";
-      packageName = "subarg";
-      version = "1.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz";
-        sha512 = "RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==";
-      };
-    };
-    "supports-color-2.0.0" = {
-      name = "supports-color";
-      packageName = "supports-color";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz";
-        sha512 = "KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==";
-      };
-    };
-    "supports-color-5.5.0" = {
-      name = "supports-color";
-      packageName = "supports-color";
-      version = "5.5.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz";
-        sha512 = "QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==";
-      };
-    };
-    "supports-color-7.2.0" = {
-      name = "supports-color";
-      packageName = "supports-color";
-      version = "7.2.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz";
-        sha512 = "qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==";
-      };
-    };
-    "supports-preserve-symlinks-flag-1.0.0" = {
-      name = "supports-preserve-symlinks-flag";
-      packageName = "supports-preserve-symlinks-flag";
-      version = "1.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz";
-        sha512 = "ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==";
-      };
-    };
-    "syntax-error-1.4.0" = {
-      name = "syntax-error";
-      packageName = "syntax-error";
-      version = "1.4.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz";
-        sha512 = "YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==";
-      };
-    };
-    "tar-6.1.11" = {
-      name = "tar";
-      packageName = "tar";
-      version = "6.1.11";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz";
-        sha512 = "an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==";
-      };
-    };
-    "terser-3.17.0" = {
-      name = "terser";
-      packageName = "terser";
-      version = "3.17.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz";
-        sha512 = "/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==";
-      };
-    };
-    "text-table-0.2.0" = {
-      name = "text-table";
-      packageName = "text-table";
-      version = "0.2.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz";
-        sha512 = "N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==";
-      };
-    };
-    "through-2.2.7" = {
-      name = "through";
-      packageName = "through";
-      version = "2.2.7";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/through/-/through-2.2.7.tgz";
-        sha512 = "JIR0m0ybkmTcR8URann+HbwKmodP+OE8UCbsifQDYMLD5J3em1Cdn3MYPpbEd5elGDwmP98T+WbqP/tvzA5Mjg==";
-      };
-    };
-    "through-2.3.8" = {
-      name = "through";
-      packageName = "through";
-      version = "2.3.8";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/through/-/through-2.3.8.tgz";
-        sha512 = "w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==";
-      };
-    };
-    "through2-2.0.5" = {
-      name = "through2";
-      packageName = "through2";
-      version = "2.0.5";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz";
-        sha512 = "/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==";
-      };
-    };
-    "thunky-1.1.0" = {
-      name = "thunky";
-      packageName = "thunky";
-      version = "1.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz";
-        sha512 = "eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==";
-      };
-    };
-    "timers-browserify-1.4.2" = {
-      name = "timers-browserify";
-      packageName = "timers-browserify";
-      version = "1.4.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz";
-        sha512 = "PIxwAupJZiYU4JmVZYwXp9FKsHMXb5h0ZEFyuXTAn8WLHOlcij+FEcbrvDsom1o5dr1YggEtFbECvGCW2sT53Q==";
-      };
-    };
-    "to-fast-properties-2.0.0" = {
-      name = "to-fast-properties";
-      packageName = "to-fast-properties";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz";
-        sha512 = "/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==";
-      };
-    };
-    "to-readable-stream-1.0.0" = {
-      name = "to-readable-stream";
-      packageName = "to-readable-stream";
-      version = "1.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz";
-        sha512 = "Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==";
-      };
-    };
-    "to-regex-range-5.0.1" = {
-      name = "to-regex-range";
-      packageName = "to-regex-range";
-      version = "5.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz";
-        sha512 = "65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==";
-      };
-    };
-    "toidentifier-1.0.1" = {
-      name = "toidentifier";
-      packageName = "toidentifier";
-      version = "1.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz";
-        sha512 = "o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==";
-      };
-    };
-    "touch-3.1.0" = {
-      name = "touch";
-      packageName = "touch";
-      version = "3.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz";
-        sha512 = "WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==";
-      };
-    };
-    "tough-cookie-2.5.0" = {
-      name = "tough-cookie";
-      packageName = "tough-cookie";
-      version = "2.5.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz";
-        sha512 = "nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==";
-      };
-    };
-    "transform-ast-2.4.4" = {
-      name = "transform-ast";
-      packageName = "transform-ast";
-      version = "2.4.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/transform-ast/-/transform-ast-2.4.4.tgz";
-        sha512 = "AxjeZAcIOUO2lev2GDe3/xZ1Q0cVGjIMk5IsriTy8zbWlsEnjeB025AhkhBJHoy997mXpLd4R+kRbvnnQVuQHQ==";
-      };
-    };
-    "trim-newlines-3.0.1" = {
-      name = "trim-newlines";
-      packageName = "trim-newlines";
-      version = "3.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz";
-        sha512 = "c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==";
-      };
-    };
-    "true-case-path-1.0.3" = {
-      name = "true-case-path";
-      packageName = "true-case-path";
-      version = "1.0.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz";
-        sha512 = "m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==";
-      };
-    };
-    "tty-browserify-0.0.1" = {
-      name = "tty-browserify";
-      packageName = "tty-browserify";
-      version = "0.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz";
-        sha512 = "C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==";
-      };
-    };
-    "tunnel-agent-0.6.0" = {
-      name = "tunnel-agent";
-      packageName = "tunnel-agent";
-      version = "0.6.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
-        sha512 = "McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==";
-      };
-    };
-    "tweetnacl-0.14.5" = {
-      name = "tweetnacl";
-      packageName = "tweetnacl";
-      version = "0.14.5";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz";
-        sha512 = "KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==";
-      };
-    };
-    "type-check-0.4.0" = {
-      name = "type-check";
-      packageName = "type-check";
-      version = "0.4.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz";
-        sha512 = "XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==";
-      };
-    };
-    "type-fest-0.18.1" = {
-      name = "type-fest";
-      packageName = "type-fest";
-      version = "0.18.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz";
-        sha512 = "OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==";
-      };
-    };
-    "type-fest-0.20.2" = {
-      name = "type-fest";
-      packageName = "type-fest";
-      version = "0.20.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz";
-        sha512 = "Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==";
-      };
-    };
-    "type-fest-0.6.0" = {
-      name = "type-fest";
-      packageName = "type-fest";
-      version = "0.6.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz";
-        sha512 = "q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==";
-      };
-    };
-    "type-fest-0.8.1" = {
-      name = "type-fest";
-      packageName = "type-fest";
-      version = "0.8.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz";
-        sha512 = "4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==";
-      };
-    };
-    "type-name-2.0.2" = {
-      name = "type-name";
-      packageName = "type-name";
-      version = "2.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/type-name/-/type-name-2.0.2.tgz";
-        sha512 = "kkgkuqR/jKdKO5oh/I2SMu2dGbLXoJq0zkdgbxaqYK+hr9S9edwVVGf+tMUFTx2gH9TN2+Zu9JZ/Njonb3cjhA==";
-      };
-    };
-    "typedarray-0.0.6" = {
-      name = "typedarray";
-      packageName = "typedarray";
-      version = "0.0.6";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz";
-        sha512 = "/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==";
-      };
-    };
-    "typedarray-to-buffer-3.1.5" = {
-      name = "typedarray-to-buffer";
-      packageName = "typedarray-to-buffer";
-      version = "3.1.5";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz";
-        sha512 = "zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==";
-      };
-    };
-    "uglifyify-5.0.2" = {
-      name = "uglifyify";
-      packageName = "uglifyify";
-      version = "5.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/uglifyify/-/uglifyify-5.0.2.tgz";
-        sha512 = "NcSk6pgoC+IgwZZ2tVLVHq+VNKSvLPlLkF5oUiHPVOJI0s/OlSVYEGXG9PCAH0hcyFZLyvt4KBdPAQBRlVDn1Q==";
-      };
-    };
-    "umd-3.0.3" = {
-      name = "umd";
-      packageName = "umd";
-      version = "3.0.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz";
-        sha512 = "4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==";
-      };
-    };
-    "unbox-primitive-1.0.2" = {
-      name = "unbox-primitive";
-      packageName = "unbox-primitive";
-      version = "1.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz";
-        sha512 = "61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==";
-      };
-    };
-    "undeclared-identifiers-1.1.3" = {
-      name = "undeclared-identifiers";
-      packageName = "undeclared-identifiers";
-      version = "1.1.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz";
-        sha512 = "pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==";
-      };
-    };
-    "undefsafe-2.0.5" = {
-      name = "undefsafe";
-      packageName = "undefsafe";
-      version = "2.0.5";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz";
-        sha512 = "WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==";
-      };
-    };
-    "unicode-canonical-property-names-ecmascript-2.0.0" = {
-      name = "unicode-canonical-property-names-ecmascript";
-      packageName = "unicode-canonical-property-names-ecmascript";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz";
-        sha512 = "yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==";
-      };
-    };
-    "unicode-match-property-ecmascript-2.0.0" = {
-      name = "unicode-match-property-ecmascript";
-      packageName = "unicode-match-property-ecmascript";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz";
-        sha512 = "5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==";
-      };
-    };
-    "unicode-match-property-value-ecmascript-2.0.0" = {
-      name = "unicode-match-property-value-ecmascript";
-      packageName = "unicode-match-property-value-ecmascript";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz";
-        sha512 = "7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==";
-      };
-    };
-    "unicode-property-aliases-ecmascript-2.0.0" = {
-      name = "unicode-property-aliases-ecmascript";
-      packageName = "unicode-property-aliases-ecmascript";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz";
-        sha512 = "5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==";
-      };
-    };
-    "unique-filename-1.1.1" = {
-      name = "unique-filename";
-      packageName = "unique-filename";
-      version = "1.1.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz";
-        sha512 = "Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==";
-      };
-    };
-    "unique-slug-2.0.2" = {
-      name = "unique-slug";
-      packageName = "unique-slug";
-      version = "2.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz";
-        sha512 = "zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==";
-      };
-    };
-    "unique-string-2.0.0" = {
-      name = "unique-string";
-      packageName = "unique-string";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz";
-        sha512 = "uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==";
-      };
-    };
-    "unix-crypt-td-js-1.1.4" = {
-      name = "unix-crypt-td-js";
-      packageName = "unix-crypt-td-js";
-      version = "1.1.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/unix-crypt-td-js/-/unix-crypt-td-js-1.1.4.tgz";
-        sha512 = "8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw==";
-      };
-    };
-    "update-browserslist-db-1.0.4" = {
-      name = "update-browserslist-db";
-      packageName = "update-browserslist-db";
-      version = "1.0.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz";
-        sha512 = "jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==";
-      };
-    };
-    "update-notifier-5.1.0" = {
-      name = "update-notifier";
-      packageName = "update-notifier";
-      version = "5.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz";
-        sha512 = "ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==";
-      };
-    };
-    "upper-case-1.1.3" = {
-      name = "upper-case";
-      packageName = "upper-case";
-      version = "1.1.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz";
-        sha512 = "WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==";
-      };
-    };
-    "uri-js-4.4.1" = {
-      name = "uri-js";
-      packageName = "uri-js";
-      version = "4.4.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz";
-        sha512 = "7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==";
-      };
-    };
-    "url-0.11.0" = {
-      name = "url";
-      packageName = "url";
-      version = "0.11.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/url/-/url-0.11.0.tgz";
-        sha512 = "kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==";
-      };
-    };
-    "url-parse-lax-3.0.0" = {
-      name = "url-parse-lax";
-      packageName = "url-parse-lax";
-      version = "3.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz";
-        sha512 = "NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==";
-      };
-    };
-    "util-0.10.3" = {
-      name = "util";
-      packageName = "util";
-      version = "0.10.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/util/-/util-0.10.3.tgz";
-        sha512 = "5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==";
-      };
-    };
-    "util-0.12.4" = {
-      name = "util";
-      packageName = "util";
-      version = "0.12.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/util/-/util-0.12.4.tgz";
-        sha512 = "bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==";
-      };
-    };
-    "util-deprecate-1.0.2" = {
-      name = "util-deprecate";
-      packageName = "util-deprecate";
-      version = "1.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz";
-        sha512 = "EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==";
-      };
-    };
-    "uuid-3.4.0" = {
-      name = "uuid";
-      packageName = "uuid";
-      version = "3.4.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz";
-        sha512 = "HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==";
-      };
-    };
-    "uuid-8.3.2" = {
-      name = "uuid";
-      packageName = "uuid";
-      version = "8.3.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz";
-        sha512 = "+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==";
-      };
-    };
-    "v8-compile-cache-2.3.0" = {
-      name = "v8-compile-cache";
-      packageName = "v8-compile-cache";
-      version = "2.3.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz";
-        sha512 = "l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==";
-      };
-    };
-    "validate-npm-package-license-3.0.4" = {
-      name = "validate-npm-package-license";
-      packageName = "validate-npm-package-license";
-      version = "3.0.4";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz";
-        sha512 = "DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==";
-      };
-    };
-    "verror-1.10.0" = {
-      name = "verror";
-      packageName = "verror";
-      version = "1.10.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz";
-        sha512 = "ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==";
-      };
-    };
-    "vm-browserify-1.1.2" = {
-      name = "vm-browserify";
-      packageName = "vm-browserify";
-      version = "1.1.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz";
-        sha512 = "2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==";
-      };
-    };
-    "webworkify-1.5.0" = {
-      name = "webworkify";
-      packageName = "webworkify";
-      version = "1.5.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/webworkify/-/webworkify-1.5.0.tgz";
-        sha512 = "AMcUeyXAhbACL8S2hqqdqOLqvJ8ylmIbNwUIqQujRSouf4+eUFaXbG6F1Rbu+srlJMmxQWsiU7mOJi0nMBfM1g==";
-      };
-    };
-    "which-2.0.2" = {
-      name = "which";
-      packageName = "which";
-      version = "2.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/which/-/which-2.0.2.tgz";
-        sha512 = "BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==";
-      };
-    };
-    "which-boxed-primitive-1.0.2" = {
-      name = "which-boxed-primitive";
-      packageName = "which-boxed-primitive";
-      version = "1.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz";
-        sha512 = "bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==";
-      };
-    };
-    "which-typed-array-1.1.8" = {
-      name = "which-typed-array";
-      packageName = "which-typed-array";
-      version = "1.1.8";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz";
-        sha512 = "Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==";
-      };
-    };
-    "wide-align-1.1.5" = {
-      name = "wide-align";
-      packageName = "wide-align";
-      version = "1.1.5";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz";
-        sha512 = "eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==";
-      };
-    };
-    "widest-line-3.1.0" = {
-      name = "widest-line";
-      packageName = "widest-line";
-      version = "3.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz";
-        sha512 = "NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==";
-      };
-    };
-    "wolfy87-eventemitter-5.2.9" = {
-      name = "wolfy87-eventemitter";
-      packageName = "wolfy87-eventemitter";
-      version = "5.2.9";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/wolfy87-eventemitter/-/wolfy87-eventemitter-5.2.9.tgz";
-        sha512 = "P+6vtWyuDw+MB01X7UeF8TaHBvbCovf4HPEMF/SV7BdDc1SMTiBy13SRD71lQh4ExFTG1d/WNzDGDCyOKSMblw==";
-      };
-    };
-    "word-wrap-1.2.3" = {
-      name = "word-wrap";
-      packageName = "word-wrap";
-      version = "1.2.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz";
-        sha512 = "Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==";
-      };
-    };
-    "wrap-ansi-7.0.0" = {
-      name = "wrap-ansi";
-      packageName = "wrap-ansi";
-      version = "7.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz";
-        sha512 = "YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==";
-      };
-    };
-    "wrappy-1.0.2" = {
-      name = "wrappy";
-      packageName = "wrappy";
-      version = "1.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz";
-        sha512 = "l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==";
-      };
-    };
-    "write-file-atomic-3.0.3" = {
-      name = "write-file-atomic";
-      packageName = "write-file-atomic";
-      version = "3.0.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz";
-        sha512 = "AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==";
-      };
-    };
-    "ws-7.5.3" = {
-      name = "ws";
-      packageName = "ws";
-      version = "7.5.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz";
-        sha512 = "kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==";
-      };
-    };
-    "ws-8.6.0" = {
-      name = "ws";
-      packageName = "ws";
-      version = "8.6.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz";
-        sha512 = "AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==";
-      };
-    };
-    "xdg-basedir-4.0.0" = {
-      name = "xdg-basedir";
-      packageName = "xdg-basedir";
-      version = "4.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz";
-        sha512 = "PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==";
-      };
-    };
-    "xtend-4.0.2" = {
-      name = "xtend";
-      packageName = "xtend";
-      version = "4.0.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz";
-        sha512 = "LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==";
-      };
-    };
-    "y18n-5.0.8" = {
-      name = "y18n";
-      packageName = "y18n";
-      version = "5.0.8";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz";
-        sha512 = "0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==";
-      };
-    };
-    "yallist-4.0.0" = {
-      name = "yallist";
-      packageName = "yallist";
-      version = "4.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz";
-        sha512 = "3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==";
-      };
-    };
-    "yargs-17.5.1" = {
-      name = "yargs";
-      packageName = "yargs";
-      version = "17.5.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz";
-        sha512 = "t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==";
-      };
-    };
-    "yargs-parser-20.2.9" = {
-      name = "yargs-parser";
-      packageName = "yargs-parser";
-      version = "20.2.9";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz";
-        sha512 = "y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==";
-      };
-    };
-    "yargs-parser-21.0.1" = {
-      name = "yargs-parser";
-      packageName = "yargs-parser";
-      version = "21.0.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz";
-        sha512 = "9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==";
-      };
-    };
-  };
-  args = {
-    name = "open-stage-control";
-    packageName = "open-stage-control";
-    version = "1.17.0";
-    src = ./.;
-    dependencies = [
-      sources."@ampproject/remapping-2.2.0"
-      sources."@babel/code-frame-7.18.6"
-      sources."@babel/compat-data-7.18.6"
-      (sources."@babel/core-7.18.0" // {
-        dependencies = [
-          sources."semver-6.3.0"
-        ];
-      })
-      (sources."@babel/eslint-parser-7.17.0" // {
-        dependencies = [
-          sources."semver-6.3.0"
-        ];
-      })
-      (sources."@babel/generator-7.18.7" // {
-        dependencies = [
-          sources."@jridgewell/gen-mapping-0.3.2"
-        ];
-      })
-      sources."@babel/helper-annotate-as-pure-7.18.6"
-      sources."@babel/helper-builder-binary-assignment-operator-visitor-7.18.6"
-      (sources."@babel/helper-compilation-targets-7.18.6" // {
-        dependencies = [
-          sources."semver-6.3.0"
-        ];
-      })
-      sources."@babel/helper-create-class-features-plugin-7.18.6"
-      sources."@babel/helper-create-regexp-features-plugin-7.18.6"
-      (sources."@babel/helper-define-polyfill-provider-0.3.1" // {
-        dependencies = [
-          sources."semver-6.3.0"
-        ];
-      })
-      sources."@babel/helper-environment-visitor-7.18.6"
-      sources."@babel/helper-explode-assignable-expression-7.18.6"
-      sources."@babel/helper-function-name-7.18.6"
-      sources."@babel/helper-hoist-variables-7.18.6"
-      sources."@babel/helper-member-expression-to-functions-7.18.6"
-      sources."@babel/helper-module-imports-7.18.6"
-      sources."@babel/helper-module-transforms-7.18.6"
-      sources."@babel/helper-optimise-call-expression-7.18.6"
-      sources."@babel/helper-plugin-utils-7.18.6"
-      sources."@babel/helper-remap-async-to-generator-7.18.6"
-      sources."@babel/helper-replace-supers-7.18.6"
-      sources."@babel/helper-simple-access-7.18.6"
-      sources."@babel/helper-skip-transparent-expression-wrappers-7.18.6"
-      sources."@babel/helper-split-export-declaration-7.18.6"
-      sources."@babel/helper-validator-identifier-7.18.6"
-      sources."@babel/helper-validator-option-7.18.6"
-      sources."@babel/helper-wrap-function-7.18.6"
-      sources."@babel/helpers-7.18.6"
-      sources."@babel/highlight-7.18.6"
-      sources."@babel/parser-7.18.6"
-      sources."@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6"
-      sources."@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.6"
-      sources."@babel/plugin-proposal-async-generator-functions-7.18.6"
-      sources."@babel/plugin-proposal-class-properties-7.18.6"
-      sources."@babel/plugin-proposal-class-static-block-7.18.6"
-      sources."@babel/plugin-proposal-dynamic-import-7.18.6"
-      sources."@babel/plugin-proposal-export-namespace-from-7.18.6"
-      sources."@babel/plugin-proposal-json-strings-7.18.6"
-      sources."@babel/plugin-proposal-logical-assignment-operators-7.18.6"
-      sources."@babel/plugin-proposal-nullish-coalescing-operator-7.18.6"
-      sources."@babel/plugin-proposal-numeric-separator-7.18.6"
-      sources."@babel/plugin-proposal-object-rest-spread-7.18.0"
-      sources."@babel/plugin-proposal-optional-catch-binding-7.18.6"
-      sources."@babel/plugin-proposal-optional-chaining-7.18.6"
-      sources."@babel/plugin-proposal-private-methods-7.18.6"
-      sources."@babel/plugin-proposal-private-property-in-object-7.18.6"
-      sources."@babel/plugin-proposal-unicode-property-regex-7.18.6"
-      sources."@babel/plugin-syntax-async-generators-7.8.4"
-      sources."@babel/plugin-syntax-class-properties-7.12.13"
-      sources."@babel/plugin-syntax-class-static-block-7.14.5"
-      sources."@babel/plugin-syntax-dynamic-import-7.8.3"
-      sources."@babel/plugin-syntax-export-namespace-from-7.8.3"
-      sources."@babel/plugin-syntax-import-assertions-7.18.6"
-      sources."@babel/plugin-syntax-json-strings-7.8.3"
-      sources."@babel/plugin-syntax-logical-assignment-operators-7.10.4"
-      sources."@babel/plugin-syntax-nullish-coalescing-operator-7.8.3"
-      sources."@babel/plugin-syntax-numeric-separator-7.10.4"
-      sources."@babel/plugin-syntax-object-rest-spread-7.8.3"
-      sources."@babel/plugin-syntax-optional-catch-binding-7.8.3"
-      sources."@babel/plugin-syntax-optional-chaining-7.8.3"
-      sources."@babel/plugin-syntax-private-property-in-object-7.14.5"
-      sources."@babel/plugin-syntax-top-level-await-7.14.5"
-      sources."@babel/plugin-transform-arrow-functions-7.18.6"
-      sources."@babel/plugin-transform-async-to-generator-7.18.6"
-      sources."@babel/plugin-transform-block-scoped-functions-7.18.6"
-      sources."@babel/plugin-transform-block-scoping-7.18.6"
-      sources."@babel/plugin-transform-classes-7.18.6"
-      sources."@babel/plugin-transform-computed-properties-7.18.6"
-      sources."@babel/plugin-transform-destructuring-7.18.6"
-      sources."@babel/plugin-transform-dotall-regex-7.18.6"
-      sources."@babel/plugin-transform-duplicate-keys-7.18.6"
-      sources."@babel/plugin-transform-exponentiation-operator-7.18.6"
-      sources."@babel/plugin-transform-for-of-7.18.6"
-      sources."@babel/plugin-transform-function-name-7.18.6"
-      sources."@babel/plugin-transform-literals-7.18.6"
-      sources."@babel/plugin-transform-member-expression-literals-7.18.6"
-      sources."@babel/plugin-transform-modules-amd-7.18.6"
-      sources."@babel/plugin-transform-modules-commonjs-7.18.6"
-      sources."@babel/plugin-transform-modules-systemjs-7.18.6"
-      sources."@babel/plugin-transform-modules-umd-7.18.6"
-      sources."@babel/plugin-transform-named-capturing-groups-regex-7.18.6"
-      sources."@babel/plugin-transform-new-target-7.18.6"
-      sources."@babel/plugin-transform-object-super-7.18.6"
-      sources."@babel/plugin-transform-parameters-7.18.6"
-      sources."@babel/plugin-transform-property-literals-7.18.6"
-      sources."@babel/plugin-transform-regenerator-7.18.6"
-      sources."@babel/plugin-transform-reserved-words-7.18.6"
-      sources."@babel/plugin-transform-shorthand-properties-7.18.6"
-      sources."@babel/plugin-transform-spread-7.18.6"
-      sources."@babel/plugin-transform-sticky-regex-7.18.6"
-      sources."@babel/plugin-transform-template-literals-7.18.6"
-      sources."@babel/plugin-transform-typeof-symbol-7.18.6"
-      sources."@babel/plugin-transform-unicode-escapes-7.18.6"
-      sources."@babel/plugin-transform-unicode-regex-7.18.6"
-      (sources."@babel/polyfill-7.12.1" // {
-        dependencies = [
-          sources."core-js-2.6.12"
-        ];
-      })
-      (sources."@babel/preset-env-7.18.0" // {
-        dependencies = [
-          sources."semver-6.3.0"
-        ];
-      })
-      sources."@babel/preset-modules-0.1.5"
-      sources."@babel/runtime-7.18.6"
-      sources."@babel/template-7.18.6"
-      sources."@babel/traverse-7.18.6"
-      sources."@babel/types-7.18.7"
-      sources."@electron/remote-2.0.8"
-      (sources."@eslint/eslintrc-1.3.0" // {
-        dependencies = [
-          sources."globals-13.16.0"
-          sources."minimatch-3.1.2"
-        ];
-      })
-      sources."@gar/promisify-1.1.3"
-      (sources."@humanwhocodes/config-array-0.9.5" // {
-        dependencies = [
-          sources."minimatch-3.1.2"
-        ];
-      })
-      sources."@humanwhocodes/object-schema-1.2.1"
-      sources."@jridgewell/gen-mapping-0.1.1"
-      sources."@jridgewell/resolve-uri-3.0.8"
-      sources."@jridgewell/set-array-1.1.2"
-      sources."@jridgewell/sourcemap-codec-1.4.14"
-      sources."@jridgewell/trace-mapping-0.3.14"
-      sources."@npmcli/fs-1.1.1"
-      (sources."@npmcli/move-file-1.1.2" // {
-        dependencies = [
-          sources."mkdirp-1.0.4"
-          sources."rimraf-3.0.2"
-        ];
-      })
-      sources."@sindresorhus/is-0.14.0"
-      sources."@szmarczak/http-timer-1.1.2"
-      sources."@tootallnate/once-1.1.2"
-      sources."@types/minimist-1.2.2"
-      sources."@types/normalize-package-data-2.4.1"
-      sources."JSONStream-1.3.5"
-      sources."abbrev-1.1.1"
-      sources."acorn-7.4.1"
-      sources."acorn-jsx-5.3.2"
-      sources."acorn-node-1.8.2"
-      sources."acorn-walk-7.2.0"
-      sources."agent-base-6.0.2"
-      sources."agentkeepalive-4.2.1"
-      sources."aggregate-error-3.1.0"
-      sources."ajv-6.12.6"
-      sources."ansi-align-3.0.1"
-      sources."ansi-html-0.0.9"
-      sources."ansi-regex-5.0.1"
-      sources."ansi-styles-3.2.1"
-      sources."anymatch-3.1.2"
-      sources."apache-crypt-1.2.5"
-      sources."apache-md5-1.1.7"
-      sources."aproba-2.0.0"
-      (sources."are-we-there-yet-3.0.0" // {
-        dependencies = [
-          sources."readable-stream-3.6.0"
-        ];
-      })
-      sources."argparse-2.0.1"
-      sources."array-flatten-2.1.2"
-      sources."arrify-1.0.1"
-      sources."asn1-0.2.6"
-      (sources."asn1.js-5.4.1" // {
-        dependencies = [
-          sources."bn.js-4.12.0"
-        ];
-      })
-      (sources."assert-1.5.0" // {
-        dependencies = [
-          sources."inherits-2.0.1"
-          sources."util-0.10.3"
-        ];
-      })
-      sources."assert-plus-1.0.0"
-      sources."async-foreach-0.1.3"
-      sources."asynckit-0.4.0"
-      sources."available-typed-arrays-1.0.5"
-      sources."aws-sign2-0.7.0"
-      sources."aws4-1.11.0"
-      sources."babel-plugin-dynamic-import-node-2.3.3"
-      (sources."babel-plugin-polyfill-corejs2-0.3.1" // {
-        dependencies = [
-          sources."semver-6.3.0"
-        ];
-      })
-      sources."babel-plugin-polyfill-corejs3-0.5.2"
-      sources."babel-plugin-polyfill-regenerator-0.3.1"
-      sources."babelify-10.0.0"
-      sources."balanced-match-2.0.0"
-      sources."base64-js-1.5.1"
-      sources."bcrypt-pbkdf-1.0.2"
-      sources."bcryptjs-2.4.3"
-      sources."binary-extensions-2.2.0"
-      sources."bn.js-5.2.1"
-      sources."bonjour-git+https://github.com/jean-emmanuel/bonjour"
-      (sources."boxen-5.1.2" // {
-        dependencies = [
-          sources."ansi-styles-4.3.0"
-          sources."camelcase-6.3.0"
-          sources."chalk-4.1.2"
-          sources."color-convert-2.0.1"
-          sources."color-name-1.1.4"
-          sources."has-flag-4.0.0"
-          sources."supports-color-7.2.0"
-        ];
-      })
-      sources."brace-0.11.1"
-      (sources."brace-expansion-1.1.11" // {
-        dependencies = [
-          sources."balanced-match-1.0.2"
-        ];
-      })
-      sources."braces-3.0.2"
-      sources."brorand-1.1.0"
-      sources."browser-pack-6.1.0"
-      sources."browser-process-hrtime-0.1.3"
-      sources."browser-resolve-2.0.0"
-      sources."browserify-17.0.0"
-      sources."browserify-aes-1.2.0"
-      sources."browserify-cipher-1.0.1"
-      sources."browserify-des-1.0.2"
-      sources."browserify-rsa-4.1.0"
-      (sources."browserify-sign-4.2.1" // {
-        dependencies = [
-          sources."readable-stream-3.6.0"
-          sources."safe-buffer-5.2.1"
-        ];
-      })
-      sources."browserify-zlib-0.2.0"
-      sources."browserslist-4.21.1"
-      sources."buffer-5.2.1"
-      sources."buffer-from-1.1.2"
-      sources."buffer-indexof-1.1.1"
-      sources."buffer-xor-1.0.3"
-      sources."builtin-status-codes-3.0.0"
-      (sources."cacache-15.3.0" // {
-        dependencies = [
-          sources."mkdirp-1.0.4"
-          sources."rimraf-3.0.2"
-        ];
-      })
-      (sources."cacheable-request-6.1.0" // {
-        dependencies = [
-          sources."get-stream-5.2.0"
-          sources."lowercase-keys-2.0.0"
-        ];
-      })
-      sources."cached-path-relative-1.1.0"
-      sources."call-bind-1.0.2"
-      sources."callsites-3.1.0"
-      sources."camel-case-3.0.0"
-      sources."camelcase-5.3.1"
-      sources."camelcase-keys-6.2.2"
-      sources."caniuse-lite-1.0.30001363"
-      sources."caseless-0.12.0"
-      sources."chalk-2.4.2"
-      sources."chokidar-3.5.3"
-      sources."chownr-2.0.0"
-      sources."chroma-js-2.4.2"
-      sources."ci-info-2.0.0"
-      sources."cipher-base-1.0.4"
-      sources."clean-stack-2.2.0"
-      sources."cli-boxes-2.2.1"
-      sources."cliui-7.0.4"
-      sources."clone-response-1.0.2"
-      sources."color-convert-1.9.3"
-      sources."color-name-1.1.3"
-      sources."color-support-1.1.3"
-      (sources."combine-source-map-0.8.0" // {
-        dependencies = [
-          sources."convert-source-map-1.1.3"
-        ];
-      })
-      sources."combined-stream-1.0.8"
-      sources."commander-2.20.3"
-      sources."concat-map-0.0.1"
-      sources."concat-stream-1.6.2"
-      sources."configstore-5.0.1"
-      sources."console-browserify-1.2.0"
-      sources."console-control-strings-1.1.0"
-      sources."constants-browserify-1.0.0"
-      sources."convert-source-map-1.8.0"
-      sources."core-js-3.22.5"
-      (sources."core-js-compat-3.23.3" // {
-        dependencies = [
-          sources."semver-7.0.0"
-        ];
-      })
-      sources."core-util-is-1.0.3"
-      sources."cpr-3.0.1"
-      (sources."create-ecdh-4.0.4" // {
-        dependencies = [
-          sources."bn.js-4.12.0"
-        ];
-      })
-      sources."create-hash-1.2.0"
-      sources."create-hmac-1.1.7"
-      sources."cross-spawn-7.0.3"
-      sources."crypto-browserify-3.12.0"
-      sources."crypto-random-string-2.0.0"
-      sources."dash-ast-1.0.0"
-      sources."dashdash-1.14.1"
-      sources."debug-4.3.4"
-      sources."decamelize-1.2.0"
-      (sources."decamelize-keys-1.1.0" // {
-        dependencies = [
-          sources."map-obj-1.0.1"
-        ];
-      })
-      sources."decompress-response-3.3.0"
-      sources."deep-equal-1.1.1"
-      sources."deep-extend-0.6.0"
-      sources."deep-is-0.1.4"
-      sources."defer-to-connect-1.1.3"
-      sources."define-lazy-prop-2.0.0"
-      sources."define-properties-1.1.4"
-      sources."defined-1.0.0"
-      sources."delayed-stream-1.0.0"
-      sources."delegates-1.0.0"
-      sources."depd-1.1.2"
-      sources."deps-sort-2.0.1"
-      sources."des.js-1.0.1"
-      sources."destroy-1.2.0"
-      sources."detective-5.2.1"
-      sources."diff-match-patch-1.0.5"
-      (sources."diffie-hellman-5.0.3" // {
-        dependencies = [
-          sources."bn.js-4.12.0"
-        ];
-      })
-      sources."dns-equal-1.0.0"
-      sources."dns-packet-1.3.4"
-      sources."dns-txt-git+https://github.com/jean-emmanuel/dns-txt#v2.0.3"
-      sources."doctrine-3.0.0"
-      (sources."dom-serializer-1.4.1" // {
-        dependencies = [
-          sources."domhandler-4.3.1"
-        ];
-      })
-      sources."domain-browser-1.2.0"
-      sources."domelementtype-2.3.0"
-      sources."domhandler-3.3.0"
-      (sources."domutils-2.8.0" // {
-        dependencies = [
-          sources."domhandler-4.3.1"
-        ];
-      })
-      sources."dot-prop-5.3.0"
-      sources."duplexer2-0.1.4"
-      sources."duplexer3-0.1.4"
-      sources."ecc-jsbn-0.1.2"
-      sources."ee-first-1.1.1"
-      sources."electron-is-accelerator-0.1.2"
-      sources."electron-localshortcut-3.2.1"
-      sources."electron-to-chromium-1.4.179"
-      (sources."elliptic-6.5.4" // {
-        dependencies = [
-          sources."bn.js-4.12.0"
-        ];
-      })
-      sources."emoji-regex-8.0.0"
-      sources."encodeurl-1.0.2"
-      sources."encoding-0.1.13"
-      sources."end-of-stream-1.4.4"
-      sources."entities-2.2.0"
-      sources."env-paths-2.2.1"
-      sources."err-code-2.0.3"
-      sources."error-ex-1.3.2"
-      sources."error-stack-parser-2.1.4"
-      sources."es-abstract-1.20.1"
-      sources."es-to-primitive-1.2.1"
-      sources."escalade-3.1.1"
-      sources."escape-goat-2.1.1"
-      sources."escape-html-1.0.3"
-      sources."escape-string-regexp-1.0.5"
-      sources."escaper-2.5.3"
-      (sources."eslint-8.16.0" // {
-        dependencies = [
-          sources."ansi-styles-4.3.0"
-          sources."chalk-4.1.2"
-          sources."color-convert-2.0.1"
-          sources."color-name-1.1.4"
-          sources."escape-string-regexp-4.0.0"
-          sources."eslint-scope-7.1.1"
-          sources."eslint-visitor-keys-3.3.0"
-          sources."estraverse-5.3.0"
-          sources."glob-parent-6.0.2"
-          sources."globals-13.16.0"
-          sources."has-flag-4.0.0"
-          sources."minimatch-3.1.2"
-          sources."supports-color-7.2.0"
-        ];
-      })
-      sources."eslint-scope-5.1.1"
-      sources."eslint-utils-3.0.0"
-      sources."eslint-visitor-keys-2.1.0"
-      (sources."espree-9.3.2" // {
-        dependencies = [
-          sources."acorn-8.7.1"
-          sources."eslint-visitor-keys-3.3.0"
-        ];
-      })
-      (sources."esquery-1.4.0" // {
-        dependencies = [
-          sources."estraverse-5.3.0"
-        ];
-      })
-      (sources."esrecurse-4.3.0" // {
-        dependencies = [
-          sources."estraverse-5.3.0"
-        ];
-      })
-      sources."estraverse-4.3.0"
-      sources."estree-is-member-expression-1.0.0"
-      sources."esutils-2.0.3"
-      sources."etag-1.8.1"
-      sources."events-3.3.0"
-      sources."evp_bytestokey-1.0.3"
-      (sources."exorcist-2.0.0" // {
-        dependencies = [
-          sources."mkdirp-1.0.4"
-        ];
-      })
-      sources."extend-3.0.2"
-      sources."extsprintf-1.3.0"
-      sources."fast-deep-equal-3.1.3"
-      sources."fast-json-stable-stringify-2.1.0"
-      sources."fast-levenshtein-2.0.6"
-      sources."fast-safe-stringify-2.1.1"
-      sources."fastdom-1.0.10"
-      sources."file-entry-cache-6.0.1"
-      sources."file-saver-2.0.5"
-      sources."fill-range-7.0.1"
-      sources."find-up-4.1.0"
-      (sources."flat-cache-3.0.4" // {
-        dependencies = [
-          sources."rimraf-3.0.2"
-        ];
-      })
-      sources."flatted-3.2.6"
-      sources."for-each-0.3.3"
-      sources."forever-agent-0.6.1"
-      sources."form-data-2.3.3"
-      sources."fresh-0.5.2"
-      sources."fs-minipass-2.1.0"
-      sources."fs.realpath-1.0.0"
-      sources."fsevents-2.3.2"
-      sources."function-bind-1.1.1"
-      sources."function.prototype.name-1.1.5"
-      sources."functional-red-black-tree-1.0.1"
-      sources."functions-have-names-1.2.3"
-      sources."gauge-4.0.4"
-      sources."gaze-1.1.3"
-      sources."gensync-1.0.0-beta.2"
-      sources."get-assigned-identifiers-1.2.0"
-      sources."get-caller-file-2.0.5"
-      sources."get-intrinsic-1.1.2"
-      sources."get-stdin-4.0.1"
-      sources."get-stream-4.1.0"
-      sources."get-symbol-description-1.0.0"
-      sources."getpass-0.1.7"
-      (sources."glob-7.2.3" // {
-        dependencies = [
-          sources."minimatch-3.1.2"
-        ];
-      })
-      sources."glob-parent-5.1.2"
-      sources."global-dirs-3.0.0"
-      sources."globals-11.12.0"
-      (sources."globule-1.3.4" // {
-        dependencies = [
-          sources."glob-7.1.7"
-          sources."minimatch-3.0.8"
-        ];
-      })
-      sources."got-9.6.0"
-      sources."graceful-fs-4.2.10"
-      sources."gyronorm-2.0.6"
-      sources."har-schema-2.0.0"
-      sources."har-validator-5.1.5"
-      sources."hard-rejection-2.1.0"
-      sources."has-1.0.3"
-      (sources."has-ansi-2.0.0" // {
-        dependencies = [
-          sources."ansi-regex-2.1.1"
-        ];
-      })
-      sources."has-bigints-1.0.2"
-      sources."has-flag-3.0.0"
-      sources."has-property-descriptors-1.0.0"
-      sources."has-symbols-1.0.3"
-      sources."has-tostringtag-1.0.0"
-      sources."has-unicode-2.0.1"
-      sources."has-yarn-2.1.0"
-      (sources."hash-base-3.1.0" // {
-        dependencies = [
-          sources."readable-stream-3.6.0"
-          sources."safe-buffer-5.2.1"
-        ];
-      })
-      sources."hash.js-1.1.7"
-      sources."hmac-drbg-1.0.1"
-      sources."hosted-git-info-4.1.0"
-      sources."htmlescape-1.1.1"
-      sources."htmlparser2-4.1.0"
-      sources."http-auth-4.1.9"
-      sources."http-cache-semantics-4.1.0"
-      (sources."http-errors-2.0.0" // {
-        dependencies = [
-          sources."depd-2.0.0"
-        ];
-      })
-      sources."http-proxy-agent-4.0.1"
-      sources."http-signature-1.2.0"
-      sources."https-browserify-1.0.0"
-      sources."https-proxy-agent-5.0.1"
-      sources."humanize-ms-1.2.1"
-      sources."hyperscript-attribute-to-property-1.0.2"
-      sources."hyperx-2.5.4"
-      sources."iconv-lite-0.6.3"
-      sources."ieee754-1.2.1"
-      sources."ignore-5.2.0"
-      sources."ignore-by-default-1.0.1"
-      sources."import-fresh-3.3.0"
-      sources."import-lazy-2.1.0"
-      sources."imurmurhash-0.1.4"
-      sources."indent-string-4.0.0"
-      sources."infer-owner-1.0.4"
-      sources."inflight-1.0.6"
-      sources."inherits-2.0.4"
-      sources."ini-2.0.0"
-      sources."inline-source-map-0.6.2"
-      sources."insert-module-globals-7.2.1"
-      sources."internal-slot-1.0.3"
-      sources."ip-1.1.8"
-      sources."is-arguments-1.1.1"
-      sources."is-arrayish-0.2.1"
-      sources."is-bigint-1.0.4"
-      sources."is-binary-path-2.1.0"
-      sources."is-boolean-attribute-0.0.1"
-      sources."is-boolean-object-1.1.2"
-      sources."is-buffer-1.1.6"
-      sources."is-callable-1.2.4"
-      sources."is-ci-2.0.0"
-      sources."is-core-module-2.9.0"
-      sources."is-date-object-1.0.5"
-      sources."is-docker-2.2.1"
-      sources."is-extglob-2.1.1"
-      sources."is-fullwidth-code-point-3.0.0"
-      sources."is-generator-function-1.0.10"
-      sources."is-glob-4.0.3"
-      sources."is-installed-globally-0.4.0"
-      sources."is-lambda-1.0.1"
-      sources."is-negative-zero-2.0.2"
-      sources."is-npm-5.0.0"
-      sources."is-number-7.0.0"
-      sources."is-number-object-1.0.7"
-      sources."is-obj-2.0.0"
-      sources."is-path-inside-3.0.3"
-      sources."is-plain-obj-1.1.0"
-      sources."is-regex-1.1.4"
-      sources."is-regexp-1.0.0"
-      sources."is-shared-array-buffer-1.0.2"
-      sources."is-stream-2.0.1"
-      sources."is-string-1.0.7"
-      sources."is-symbol-1.0.4"
-      sources."is-typed-array-1.1.9"
-      sources."is-typedarray-1.0.0"
-      sources."is-weakref-1.0.2"
-      sources."is-wsl-2.2.0"
-      sources."is-yarn-global-0.3.0"
-      sources."isarray-1.0.0"
-      sources."isexe-2.0.0"
-      sources."isstream-0.1.2"
-      sources."js-base64-2.6.4"
-      sources."js-tokens-4.0.0"
-      sources."js-yaml-4.1.0"
-      sources."jsbn-0.1.1"
-      sources."jsesc-2.5.2"
-      sources."json-buffer-3.0.0"
-      sources."json-parse-even-better-errors-2.3.1"
-      sources."json-schema-0.4.0"
-      sources."json-schema-traverse-0.4.1"
-      sources."json-stable-stringify-without-jsonify-1.0.1"
-      sources."json-stringify-safe-5.0.1"
-      sources."json5-2.2.1"
-      sources."jsondiffpatch-0.4.1"
-      sources."jsonparse-1.3.1"
-      sources."jsprim-1.4.2"
-      sources."keyboardevent-from-electron-accelerator-2.0.0"
-      sources."keyboardevents-areequal-0.2.2"
-      sources."keyboardjs-2.6.4"
-      sources."keyv-3.1.0"
-      sources."kind-of-6.0.3"
-      sources."labeled-stream-splicer-2.0.2"
-      sources."latest-version-5.1.0"
-      sources."levn-0.4.1"
-      sources."licensify-3.1.3"
-      sources."lines-and-columns-1.2.4"
-      sources."locate-path-5.0.0"
-      sources."lodash-4.17.21"
-      sources."lodash.debounce-4.0.8"
-      sources."lodash.memoize-3.0.4"
-      sources."lodash.merge-4.6.2"
-      sources."long-4.0.0"
-      sources."loop-protect-git+https://github.com/jean-emmanuel/loop-protect#v1.0.1"
-      sources."lower-case-1.1.4"
-      sources."lowercase-keys-1.0.1"
-      sources."lru-cache-6.0.0"
-      sources."magic-string-0.23.2"
-      (sources."make-dir-3.1.0" // {
-        dependencies = [
-          sources."semver-6.3.0"
-        ];
-      })
-      sources."make-fetch-happen-9.1.0"
-      sources."map-obj-4.3.0"
-      sources."md5.js-1.3.5"
-      (sources."meow-9.0.0" // {
-        dependencies = [
-          sources."type-fest-0.18.1"
-        ];
-      })
-      sources."merge-source-map-1.0.4"
-      (sources."miller-rabin-4.0.1" // {
-        dependencies = [
-          sources."bn.js-4.12.0"
-        ];
-      })
-      sources."mime-1.6.0"
-      sources."mime-db-1.52.0"
-      sources."mime-types-2.1.35"
-      sources."mimic-response-1.0.1"
-      sources."min-indent-1.0.1"
-      sources."minimalistic-assert-1.0.1"
-      sources."minimalistic-crypto-utils-1.0.1"
-      (sources."minimatch-5.1.0" // {
-        dependencies = [
-          sources."balanced-match-1.0.2"
-          sources."brace-expansion-2.0.1"
-        ];
-      })
-      sources."minimist-1.2.6"
-      sources."minimist-options-4.1.0"
-      sources."minipass-3.3.4"
-      sources."minipass-collect-1.0.2"
-      sources."minipass-fetch-1.4.1"
-      sources."minipass-flush-1.0.5"
-      sources."minipass-pipeline-1.2.4"
-      sources."minipass-sized-1.0.3"
-      sources."minizlib-2.1.2"
-      sources."mkdirp-0.5.6"
-      sources."mkdirp-classic-0.5.3"
-      sources."module-deps-6.2.3"
-      (sources."mold-source-map-0.4.0" // {
-        dependencies = [
-          sources."through-2.2.7"
-        ];
-      })
-      sources."ms-2.1.2"
-      sources."multicast-dns-git+https://github.com/jean-emmanuel/multicast-dns"
-      sources."multicast-dns-service-types-1.1.0"
-      sources."mutexify-1.4.0"
-      sources."nan-2.16.0"
-      sources."nanoassert-1.1.0"
-      (sources."nanobench-2.1.1" // {
-        dependencies = [
-          sources."ansi-regex-2.1.1"
-          sources."ansi-styles-2.2.1"
-          sources."chalk-1.1.3"
-          sources."strip-ansi-3.0.1"
-          sources."supports-color-2.0.0"
-        ];
-      })
-      sources."nanohtml-1.10.0"
-      sources."nanoid-3.3.4"
-      sources."nanomorph-5.4.3"
-      sources."natural-compare-1.4.0"
-      sources."negotiator-0.6.3"
-      sources."no-case-2.3.2"
-      sources."node-forge-1.3.1"
-      (sources."node-gyp-8.4.1" // {
-        dependencies = [
-          sources."npmlog-6.0.2"
-          sources."rimraf-3.0.2"
-        ];
-      })
-      sources."node-mouse-0.0.2"
-      sources."node-releases-2.0.5"
-      (sources."node-sass-7.0.1" // {
-        dependencies = [
-          sources."ansi-styles-4.3.0"
-          sources."chalk-4.1.2"
-          sources."color-convert-2.0.1"
-          sources."color-name-1.1.4"
-          sources."has-flag-4.0.0"
-          sources."supports-color-7.2.0"
-        ];
-      })
-      (sources."nodemon-2.0.16" // {
-        dependencies = [
-          sources."debug-3.2.7"
-          sources."minimatch-3.1.2"
-          sources."semver-5.7.1"
-        ];
-      })
-      sources."nopt-5.0.0"
-      sources."normalize-html-whitespace-0.2.0"
-      sources."normalize-package-data-3.0.3"
-      sources."normalize-path-3.0.0"
-      sources."normalize-url-4.5.1"
-      sources."nosleep.js-0.12.0"
-      (sources."npmlog-5.0.1" // {
-        dependencies = [
-          sources."are-we-there-yet-2.0.0"
-          sources."gauge-3.0.2"
-          sources."readable-stream-3.6.0"
-        ];
-      })
-      sources."oauth-sign-0.9.0"
-      sources."object-assign-4.1.1"
-      sources."object-inspect-1.12.2"
-      sources."object-is-1.1.5"
-      sources."object-keys-1.1.1"
-      sources."object.assign-4.1.2"
-      sources."offset-sourcemap-lines-1.0.1"
-      sources."on-finished-2.4.1"
-      sources."once-1.4.0"
-      sources."open-8.4.0"
-      sources."optionator-0.9.1"
-      sources."os-browserify-0.3.0"
-      (sources."osc-git+https://github.com/jean-emmanuel/osc.js" // {
-        dependencies = [
-          sources."ws-7.5.3"
-        ];
-      })
-      sources."osi-licenses-0.1.1"
-      sources."oss-license-name-to-url-1.2.1"
-      sources."p-cancelable-1.1.0"
-      sources."p-limit-2.3.0"
-      sources."p-locate-4.1.0"
-      sources."p-map-4.0.0"
-      sources."p-try-2.2.0"
-      (sources."package-json-6.5.0" // {
-        dependencies = [
-          sources."semver-6.3.0"
-        ];
-      })
-      sources."pako-1.0.11"
-      sources."parent-module-1.0.1"
-      sources."parents-1.0.1"
-      sources."parse-asn1-5.1.6"
-      sources."parse-json-5.2.0"
-      sources."parse-srcset-1.0.2"
-      sources."path-browserify-1.0.1"
-      sources."path-exists-4.0.0"
-      sources."path-is-absolute-1.0.1"
-      sources."path-key-3.1.1"
-      sources."path-parse-1.0.7"
-      sources."path-platform-0.11.15"
-      sources."pbkdf2-3.1.2"
-      sources."performance-now-2.1.0"
-      sources."picocolors-1.0.0"
-      sources."picomatch-2.3.1"
-      (sources."postcss-7.0.39" // {
-        dependencies = [
-          sources."picocolors-0.2.1"
-          sources."source-map-0.6.1"
-        ];
-      })
-      sources."prelude-ls-1.2.1"
-      sources."prepend-http-2.0.0"
-      sources."pretty-hrtime-1.0.3"
-      sources."process-0.11.10"
-      sources."process-nextick-args-2.0.1"
-      sources."promise-inflight-1.0.1"
-      sources."promise-retry-2.0.1"
-      sources."psl-1.9.0"
-      sources."pstree.remy-1.1.8"
-      (sources."public-encrypt-4.0.3" // {
-        dependencies = [
-          sources."bn.js-4.12.0"
-        ];
-      })
-      sources."pump-3.0.0"
-      sources."punycode-1.4.1"
-      sources."pupa-2.1.1"
-      sources."python-shell-3.0.1"
-      sources."qs-6.5.3"
-      sources."querystring-0.2.0"
-      sources."querystring-es3-0.2.1"
-      sources."queue-tick-1.0.0"
-      sources."quick-lru-4.0.1"
-      sources."randombytes-2.1.0"
-      sources."randomfill-1.0.4"
-      sources."range-parser-1.2.1"
-      (sources."rc-1.2.8" // {
-        dependencies = [
-          sources."ini-1.3.8"
-          sources."strip-json-comments-2.0.1"
-        ];
-      })
-      sources."read-only-stream-2.0.0"
-      (sources."read-pkg-5.2.0" // {
-        dependencies = [
-          sources."hosted-git-info-2.8.9"
-          sources."normalize-package-data-2.5.0"
-          sources."semver-5.7.1"
-          sources."type-fest-0.6.0"
-        ];
-      })
-      (sources."read-pkg-up-7.0.1" // {
-        dependencies = [
-          sources."type-fest-0.8.1"
-        ];
-      })
-      (sources."readable-stream-2.3.7" // {
-        dependencies = [
-          sources."string_decoder-1.1.1"
-        ];
-      })
-      sources."readdirp-3.6.0"
-      sources."redent-3.0.0"
-      sources."regenerate-1.4.2"
-      sources."regenerate-unicode-properties-10.0.1"
-      sources."regenerator-runtime-0.13.9"
-      sources."regenerator-transform-0.15.0"
-      sources."regexp.prototype.flags-1.4.3"
-      sources."regexpp-3.2.0"
-      sources."regexpu-core-5.1.0"
-      sources."registry-auth-token-4.2.2"
-      sources."registry-url-5.1.0"
-      sources."regjsgen-0.6.0"
-      (sources."regjsparser-0.8.4" // {
-        dependencies = [
-          sources."jsesc-0.5.0"
-        ];
-      })
-      sources."replacestream-4.0.3"
-      (sources."request-2.88.2" // {
-        dependencies = [
-          sources."uuid-3.4.0"
-        ];
-      })
-      sources."require-directory-2.1.1"
-      sources."resolve-1.22.1"
-      sources."resolve-from-4.0.0"
-      sources."responselike-1.0.2"
-      sources."retry-0.12.0"
-      sources."rimraf-2.7.1"
-      sources."ripemd160-2.0.2"
-      sources."safe-buffer-5.1.2"
-      sources."safer-buffer-2.1.2"
-      sources."sanitize-html-1.27.5"
-      sources."sass-graph-4.0.0"
-      sources."scope-css-1.2.1"
-      sources."screenfull-5.2.0"
-      (sources."scss-tokenizer-0.3.0" // {
-        dependencies = [
-          sources."source-map-0.7.4"
-        ];
-      })
-      sources."semver-7.3.7"
-      (sources."semver-diff-3.1.1" // {
-        dependencies = [
-          sources."semver-6.3.0"
-        ];
-      })
-      (sources."send-0.18.0" // {
-        dependencies = [
-          (sources."debug-2.6.9" // {
-            dependencies = [
-              sources."ms-2.0.0"
-            ];
-          })
-          sources."depd-2.0.0"
-          sources."ms-2.1.3"
-        ];
-      })
-      sources."set-blocking-2.0.0"
-      sources."setprototypeof-1.2.0"
-      sources."sha.js-2.4.11"
-      sources."shasum-object-1.0.0"
-      sources."shebang-command-2.0.0"
-      sources."shebang-regex-3.0.0"
-      sources."shell-quote-1.7.3"
-      sources."side-channel-1.0.4"
-      sources."signal-exit-3.0.7"
-      sources."simple-concat-1.0.1"
-      sources."slip-1.0.2"
-      sources."slugify-1.6.5"
-      sources."smart-buffer-4.2.0"
-      sources."socks-2.6.2"
-      sources."socks-proxy-agent-6.2.1"
-      sources."sortablejs-1.15.0"
-      sources."source-map-0.5.7"
-      (sources."source-map-support-0.5.21" // {
-        dependencies = [
-          sources."source-map-0.6.1"
-        ];
-      })
-      sources."sourcemap-codec-1.4.8"
-      sources."spdx-correct-3.1.1"
-      sources."spdx-exceptions-2.3.0"
-      sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.11"
-      sources."sshpk-1.17.0"
-      sources."ssri-8.0.1"
-      sources."stack-generator-2.0.10"
-      sources."stackframe-1.3.4"
-      (sources."stacktrace-gps-3.1.2" // {
-        dependencies = [
-          sources."source-map-0.5.6"
-        ];
-      })
-      sources."stacktrace-js-2.0.2"
-      sources."statuses-2.0.1"
-      sources."stdout-stream-1.4.1"
-      (sources."stream-browserify-3.0.0" // {
-        dependencies = [
-          sources."readable-stream-3.6.0"
-        ];
-      })
-      sources."stream-combiner2-1.1.1"
-      (sources."stream-http-3.2.0" // {
-        dependencies = [
-          sources."readable-stream-3.6.0"
-        ];
-      })
-      sources."stream-splicer-2.0.1"
-      sources."strictdom-1.0.1"
-      sources."string-width-4.2.3"
-      sources."string.prototype.trimend-1.0.5"
-      sources."string.prototype.trimstart-1.0.5"
-      (sources."string_decoder-1.3.0" // {
-        dependencies = [
-          sources."safe-buffer-5.2.1"
-        ];
-      })
-      sources."strip-ansi-6.0.1"
-      sources."strip-css-comments-3.0.0"
-      sources."strip-indent-3.0.0"
-      sources."strip-json-comments-3.1.1"
-      sources."subarg-1.0.0"
-      sources."supports-color-5.5.0"
-      sources."supports-preserve-symlinks-flag-1.0.0"
-      sources."syntax-error-1.4.0"
-      (sources."tar-6.1.11" // {
-        dependencies = [
-          sources."mkdirp-1.0.4"
-        ];
-      })
-      (sources."terser-3.17.0" // {
-        dependencies = [
-          sources."source-map-0.6.1"
-        ];
-      })
-      sources."text-table-0.2.0"
-      sources."through-2.3.8"
-      sources."through2-2.0.5"
-      sources."thunky-1.1.0"
-      sources."timers-browserify-1.4.2"
-      sources."to-fast-properties-2.0.0"
-      sources."to-readable-stream-1.0.0"
-      sources."to-regex-range-5.0.1"
-      sources."toidentifier-1.0.1"
-      (sources."touch-3.1.0" // {
-        dependencies = [
-          sources."nopt-1.0.10"
-        ];
-      })
-      (sources."tough-cookie-2.5.0" // {
-        dependencies = [
-          sources."punycode-2.1.1"
-        ];
-      })
-      (sources."transform-ast-2.4.4" // {
-        dependencies = [
-          sources."is-buffer-2.0.5"
-        ];
-      })
-      sources."trim-newlines-3.0.1"
-      sources."true-case-path-1.0.3"
-      sources."tty-browserify-0.0.1"
-      sources."tunnel-agent-0.6.0"
-      sources."tweetnacl-0.14.5"
-      sources."type-check-0.4.0"
-      sources."type-fest-0.20.2"
-      sources."type-name-2.0.2"
-      sources."typedarray-0.0.6"
-      sources."typedarray-to-buffer-3.1.5"
-      (sources."uglifyify-5.0.2" // {
-        dependencies = [
-          sources."convert-source-map-1.1.3"
-          sources."minimatch-3.1.2"
-        ];
-      })
-      sources."umd-3.0.3"
-      sources."unbox-primitive-1.0.2"
-      sources."undeclared-identifiers-1.1.3"
-      sources."undefsafe-2.0.5"
-      sources."unicode-canonical-property-names-ecmascript-2.0.0"
-      sources."unicode-match-property-ecmascript-2.0.0"
-      sources."unicode-match-property-value-ecmascript-2.0.0"
-      sources."unicode-property-aliases-ecmascript-2.0.0"
-      sources."unique-filename-1.1.1"
-      sources."unique-slug-2.0.2"
-      sources."unique-string-2.0.0"
-      sources."unix-crypt-td-js-1.1.4"
-      sources."update-browserslist-db-1.0.4"
-      (sources."update-notifier-5.1.0" // {
-        dependencies = [
-          sources."ansi-styles-4.3.0"
-          sources."chalk-4.1.2"
-          sources."color-convert-2.0.1"
-          sources."color-name-1.1.4"
-          sources."has-flag-4.0.0"
-          sources."supports-color-7.2.0"
-        ];
-      })
-      sources."upper-case-1.1.3"
-      (sources."uri-js-4.4.1" // {
-        dependencies = [
-          sources."punycode-2.1.1"
-        ];
-      })
-      (sources."url-0.11.0" // {
-        dependencies = [
-          sources."punycode-1.3.2"
-        ];
-      })
-      sources."url-parse-lax-3.0.0"
-      sources."util-0.12.4"
-      sources."util-deprecate-1.0.2"
-      sources."uuid-8.3.2"
-      sources."v8-compile-cache-2.3.0"
-      sources."validate-npm-package-license-3.0.4"
-      (sources."verror-1.10.0" // {
-        dependencies = [
-          sources."core-util-is-1.0.2"
-        ];
-      })
-      sources."vm-browserify-1.1.2"
-      sources."webworkify-1.5.0"
-      sources."which-2.0.2"
-      sources."which-boxed-primitive-1.0.2"
-      sources."which-typed-array-1.1.8"
-      sources."wide-align-1.1.5"
-      sources."widest-line-3.1.0"
-      sources."wolfy87-eventemitter-5.2.9"
-      sources."word-wrap-1.2.3"
-      (sources."wrap-ansi-7.0.0" // {
-        dependencies = [
-          sources."ansi-styles-4.3.0"
-          sources."color-convert-2.0.1"
-          sources."color-name-1.1.4"
-        ];
-      })
-      sources."wrappy-1.0.2"
-      sources."write-file-atomic-3.0.3"
-      sources."ws-8.6.0"
-      sources."xdg-basedir-4.0.0"
-      sources."xtend-4.0.2"
-      sources."y18n-5.0.8"
-      sources."yallist-4.0.0"
-      (sources."yargs-17.5.1" // {
-        dependencies = [
-          sources."yargs-parser-21.0.1"
-        ];
-      })
-      sources."yargs-parser-20.2.9"
-    ];
-    buildInputs = globalBuildInputs;
-    meta = {
-      description = "Libre and modular OSC / MIDI controller";
-      homepage = "http://openstagecontrol.ammd.net/";
-      license = "GPL-3.0";
-    };
-    production = true;
-    bypassCache = true;
-    reconstructLock = true;
-  };
-in
-{
-  args = args;
-  sources = sources;
-  tarball = nodeEnv.buildNodeSourceDist args;
-  package = nodeEnv.buildNodePackage args;
-  shell = nodeEnv.buildNodeShell args;
-  nodeDependencies = nodeEnv.buildNodeDependencies (lib.overrideExisting args {
-    src = stdenv.mkDerivation {
-      name = args.name + "-package-json";
-      src = nix-gitignore.gitignoreSourcePure [
-        "*"
-        "!package.json"
-        "!package-lock.json"
-      ] args.src;
-      dontBuild = true;
-      installPhase = "mkdir -p $out; cp -r ./* $out;";
-    };
-  });
-}
diff --git a/nixpkgs/pkgs/applications/audio/opusfile/default.nix b/nixpkgs/pkgs/applications/audio/opusfile/default.nix
index a6683904cb1d..47d7a64e3c20 100644
--- a/nixpkgs/pkgs/applications/audio/opusfile/default.nix
+++ b/nixpkgs/pkgs/applications/audio/opusfile/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, pkg-config, openssl, libogg, libopus }:
+{ lib, stdenv, fetchurl, pkg-config, openssl, libogg, libopus, fetchpatch }:
 
 stdenv.mkDerivation rec {
   pname = "opusfile";
@@ -11,7 +11,15 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ pkg-config ];
   buildInputs = [ openssl libogg ];
   propagatedBuildInputs = [ libopus ];
-  patches = [ ./include-multistream.patch ]
+  outputs = [ "out" "dev" ];
+  patches = [
+    ./include-multistream.patch
+    (fetchpatch {
+      name = "CVE-2022-47021.patch";
+      url = "https://github.com/xiph/opusfile/commit/0a4cd796df5b030cb866f3f4a5e41a4b92caddf5.patch";
+      sha256 = "sha256-XThI/ys5caB+OncFVfxm5IsvQPy1MbLQKwIlYjPvTJQ=";
+    })
+  ]
     # fixes problem with openssl 1.1 dependency
     # see https://github.com/xiph/opusfile/issues/13
     ++ lib.optionals stdenv.hostPlatform.isWindows [ ./disable-cert-store.patch ];
diff --git a/nixpkgs/pkgs/applications/audio/opustags/default.nix b/nixpkgs/pkgs/applications/audio/opustags/default.nix
index 83cf44853a5a..895691fde9ef 100644
--- a/nixpkgs/pkgs/applications/audio/opustags/default.nix
+++ b/nixpkgs/pkgs/applications/audio/opustags/default.nix
@@ -3,13 +3,13 @@
 
 stdenv.mkDerivation rec {
   pname = "opustags";
-  version = "1.6.0";
+  version = "1.8.0";
 
   src = fetchFromGitHub {
     owner = "fmang";
     repo = "opustags";
     rev = version;
-    sha256 = "1wsfw713rhi2gg5xc04cx5i31hlw0l3wdflj3r1y8w45bdk6ag1z";
+    sha256 = "sha256-qxtTJ4Hl2ccL+rhONeoOfV6ZyJaWaVDPMsXYJkXCWkY=";
   };
 
   buildInputs = [ libogg ];
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
 
   doCheck = true;
 
-  checkInputs = [ ffmpeg glibcLocales perl ] ++ (with perlPackages; [ ListMoreUtils ]);
+  nativeCheckInputs = [ ffmpeg glibcLocales perl ] ++ (with perlPackages; [ ListMoreUtils ]);
 
   checkPhase = ''
     export LANG="en_US.UTF-8"
diff --git a/nixpkgs/pkgs/applications/audio/osdlyrics/default.nix b/nixpkgs/pkgs/applications/audio/osdlyrics/default.nix
index 0c14b8be2b6b..e6e748cf4483 100644
--- a/nixpkgs/pkgs/applications/audio/osdlyrics/default.nix
+++ b/nixpkgs/pkgs/applications/audio/osdlyrics/default.nix
@@ -17,13 +17,13 @@
 
 stdenv.mkDerivation rec {
   pname = "osdlyrics";
-  version = "0.5.10";
+  version = "0.5.13";
 
   src = fetchFromGitHub {
     owner = "osdlyrics";
     repo = "osdlyrics";
     rev = version;
-    sha256 = "sha256-x9gIT1JkfPIc4RmmQJLv9rOG2WqAftoTK5uiRlS65zU=";
+    sha256 = "sha256-E4pVXopqQYJW+a5nUf9dMabxJ9nYPu3C2ti8LlY470c=";
   };
 
   nativeBuildInputs = [
@@ -81,7 +81,7 @@ stdenv.mkDerivation rec {
     description = "Standalone lyrics fetcher/displayer";
     homepage = "https://github.com/osdlyrics/osdlyrics";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ jtojnar ];
+    maintainers = with maintainers; [ ];
     platforms = platforms.linux;
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/oxefmsynth/default.nix b/nixpkgs/pkgs/applications/audio/oxefmsynth/default.nix
index 0e3e801d18ca..81cdc29be7a4 100644
--- a/nixpkgs/pkgs/applications/audio/oxefmsynth/default.nix
+++ b/nixpkgs/pkgs/applications/audio/oxefmsynth/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, fetchFromGitHub, unzip, fetchzip, libX11 }:
+{ stdenv, lib, fetchFromGitHub, fetchzip, libX11 }:
 
 let
 
@@ -22,7 +22,7 @@ in stdenv.mkDerivation rec {
     sha256 = "1rk71ls33a38wx8i22plsi7d89cqqxrfxknq5i4f9igsw1ipm4gn";
   };
 
-  NIX_CFLAGS_COMPILE = [ "-Wno-narrowing" ];
+  env.NIX_CFLAGS_COMPILE = toString [ "-Wno-narrowing" ];
 
   buildFlags = [ "VSTSDK_PATH=${vst-sdk}/VST2_SDK" ];
 
diff --git a/nixpkgs/pkgs/applications/audio/pamixer/default.nix b/nixpkgs/pkgs/applications/audio/pamixer/default.nix
index ac3df5c5f958..65d58ffd5774 100644
--- a/nixpkgs/pkgs/applications/audio/pamixer/default.nix
+++ b/nixpkgs/pkgs/applications/audio/pamixer/default.nix
@@ -1,19 +1,28 @@
-{ lib, stdenv, fetchFromGitHub, boost, libpulseaudio }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, boost
+, cxxopts
+, libpulseaudio
+, meson
+, ninja
+, pkg-config
+}:
 
 stdenv.mkDerivation rec {
   pname = "pamixer";
-  version = "1.5";
+  version = "1.6";
 
   src = fetchFromGitHub {
     owner = "cdemoulins";
     repo = "pamixer";
     rev = version;
-    sha256 = "sha256-7VNhHAQ1CecQPlqb8SMKK0U1SsFZxDuS+QkPqJfMqrQ=";
+    hash = "sha256-LbRhsW2MiTYWSH6X9Pz9XdJdH9Na0QCO8CFmlzZmDjQ=";
   };
 
-  buildInputs = [ boost libpulseaudio ];
+  nativeBuildInputs = [ pkg-config meson ninja ];
 
-  makeFlags = [ "PREFIX=$(out)" ];
+  buildInputs = [ boost cxxopts libpulseaudio ];
 
   meta = with lib; {
     description = "Pulseaudio command line mixer";
diff --git a/nixpkgs/pkgs/applications/audio/parlatype/default.nix b/nixpkgs/pkgs/applications/audio/parlatype/default.nix
new file mode 100644
index 000000000000..6aa92a3a99fa
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/parlatype/default.nix
@@ -0,0 +1,85 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, appstream-glib
+, dbus
+, desktop-file-utils
+, gettext
+, glib
+, gobject-introspection
+, gsettings-desktop-schemas
+, gst_all_1
+, gtk3
+, hicolor-icon-theme
+, isocodes
+, itstool
+, libxml2
+, meson
+, ninja
+, pkg-config
+, python3
+, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "parlatype";
+  version = "3.1";
+
+  src = fetchFromGitHub {
+    owner = "gkarsay";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1a4xlsbszb50vnz1g7kf7hl7aywp7s7xaravkcx13csn0a7l3x45";
+  };
+
+  nativeBuildInputs = [
+    appstream-glib
+    desktop-file-utils
+    gettext
+    gobject-introspection
+    itstool
+    libxml2
+    meson
+    ninja
+    pkg-config
+    python3
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    dbus
+    glib
+    gsettings-desktop-schemas
+    gst_all_1.gst-libav
+    gst_all_1.gst-plugins-bad
+    gst_all_1.gst-plugins-base
+    gst_all_1.gst-plugins-good
+    gst_all_1.gst-plugins-ugly
+    gst_all_1.gstreamer
+    gtk3
+    hicolor-icon-theme
+    isocodes
+  ];
+
+  postPatch = ''
+    patchShebangs data/meson_post_install.py
+    patchShebangs libparlatype/tests/data/generate_config_data
+  '';
+
+  doCheck = false;
+
+  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. It plays audio sources to
+      transcribe them in your favourite text application. It’s intended to be
+      useful for journalists, students, scientists and whoever needs to
+      transcribe audio files.
+    '';
+    homepage = "https://www.parlatype.org/";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ alexshpilkin melchips ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/patchage/default.nix b/nixpkgs/pkgs/applications/audio/patchage/default.nix
index fffa05915a8e..99bbdf693a9c 100644
--- a/nixpkgs/pkgs/applications/audio/patchage/default.nix
+++ b/nixpkgs/pkgs/applications/audio/patchage/default.nix
@@ -15,16 +15,17 @@
 
 stdenv.mkDerivation rec {
   pname = "patchage";
-  version = "1.0.4";
+  version = "1.0.6";
 
   src = fetchFromGitLab {
     owner = "drobilla";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-feQXACsn2i2pJXs0EA9tIbtpl9Lxx5K4G7eG5VWuDV0=";
+    hash = "sha256-LzN6RyF/VT4LUVeR0904BnLuNMFZjFTDu9oDIKYG2Yo=";
     fetchSubmodules = true;
   };
 
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [
     alsa-lib
     boost
@@ -33,7 +34,6 @@ stdenv.mkDerivation rec {
     glibmm
     gtkmm2
     libjack2
-    pkg-config
     python3
     wafHook
   ];
diff --git a/nixpkgs/pkgs/applications/audio/patchance/default.nix b/nixpkgs/pkgs/applications/audio/patchance/default.nix
new file mode 100644
index 000000000000..99e622bcf70c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/patchance/default.nix
@@ -0,0 +1,41 @@
+{ lib, fetchurl, buildPythonApplication, libjack2, pyqt5, qttools, which }:
+
+buildPythonApplication rec {
+  pname = "patchance";
+  version = "1.0.0";
+
+  src = fetchurl {
+    url = "https://github.com/Houston4444/Patchance/releases/download/v${version}/Patchance-${version}-source.tar.gz";
+    sha256 = "sha256-8Zn6xcDv4hBFXnaXK9xslYEB8uHEfIP+1NKvcPAyHj0=";
+  };
+
+  format = "other";
+
+  nativeBuildInputs = [
+    pyqt5   # pyuic5 and pyrcc5 to build resources.
+    qttools # lrelease to build translations.
+    which   # which to find lrelease.
+  ];
+  buildInputs = [ libjack2 ];
+  propagatedBuildInputs = [ pyqt5 ];
+
+  dontWrapQtApps = true; # The program is a python script.
+
+  installFlags = [ "PREFIX=$(out)" ];
+
+  makeWrapperArgs = [
+    "--prefix" "LD_LIBRARY_PATH" ":" (lib.makeLibraryPath [ libjack2 ])
+  ];
+
+  postFixup = ''
+    wrapPythonProgramsIn "$out/share/patchance/src" "$out $pythonPath"
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/Houston4444/Patchance";
+    description = "JACK Patchbay GUI";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ orivej ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/paulstretch/default.nix b/nixpkgs/pkgs/applications/audio/paulstretch/default.nix
index 1d701004622e..5e781a9f5115 100644
--- a/nixpkgs/pkgs/applications/audio/paulstretch/default.nix
+++ b/nixpkgs/pkgs/applications/audio/paulstretch/default.nix
@@ -52,7 +52,7 @@ stdenv.mkDerivation {
       special effects by "spectral smoothing" the sounds.
       It can transform any sound/music to a texture.
     '';
-    homepage = "http://hypermammut.sourceforge.net/paulstretch/";
+    homepage = "https://hypermammut.sourceforge.net/paulstretch/";
     platforms = platforms.linux;
     license = licenses.gpl2;
   };
diff --git a/nixpkgs/pkgs/applications/audio/pavucontrol/default.nix b/nixpkgs/pkgs/applications/audio/pavucontrol/default.nix
index 41e5eeb8229a..d57c56a2adb7 100644
--- a/nixpkgs/pkgs/applications/audio/pavucontrol/default.nix
+++ b/nixpkgs/pkgs/applications/audio/pavucontrol/default.nix
@@ -1,5 +1,4 @@
 { fetchurl
-, fetchpatch
 , lib
 , stdenv
 , pkg-config
@@ -35,6 +34,8 @@ stdenv.mkDerivation rec {
 
   configureFlags = [ "--disable-lynx" ];
 
+  enableParallelBuilding = true;
+
   meta = with lib; {
     description = "PulseAudio Volume Control";
 
diff --git a/nixpkgs/pkgs/applications/audio/pbpctrl/default.nix b/nixpkgs/pkgs/applications/audio/pbpctrl/default.nix
new file mode 100644
index 000000000000..15f75813f851
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/pbpctrl/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, rustPlatform
+, fetchFromGitHub
+, pkg-config
+, dbus
+, protobuf
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "pbpctrl";
+  version = "0.1.3";
+
+  src = fetchFromGitHub {
+    owner = "qzed";
+    repo = "${pname}";
+    rev = "v${version}";
+    hash = "sha256-CYroQb6x2d4ay3RZUSiSrcGDF0IL3ETZtHAFt18sa5s=";
+  };
+
+  cargoHash = "sha256-+YtnPKbxZENL6/u36RFFZA6F+19qHDAVx6Q8FSB/LCU=";
+
+  nativeBuildInputs = [ pkg-config protobuf ];
+  buildInputs = [ dbus ];
+
+  meta = with lib; {
+    description = "Control Google Pixel Buds Pro from the Linux command line.";
+    homepage = "https://github.com/qzed/pbpctrl";
+    license = with licenses; [ asl20 mit ];
+    maintainers = [ maintainers.vanilla ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/pd-plugins/gem/default.nix b/nixpkgs/pkgs/applications/audio/pd-plugins/gem/default.nix
index aeb58911623b..fc4c08a63aa3 100644
--- a/nixpkgs/pkgs/applications/audio/pd-plugins/gem/default.nix
+++ b/nixpkgs/pkgs/applications/audio/pd-plugins/gem/default.nix
@@ -1,6 +1,5 @@
 { lib, stdenv
 , fetchFromGitHub
-, fetchpatch
 , autoreconfHook
 , pkg-config
 , puredata
diff --git a/nixpkgs/pkgs/applications/audio/pd-plugins/puremapping/default.nix b/nixpkgs/pkgs/applications/audio/pd-plugins/puremapping/default.nix
index 811b8c2ee9aa..5aef92ab61fb 100644
--- a/nixpkgs/pkgs/applications/audio/pd-plugins/puremapping/default.nix
+++ b/nixpkgs/pkgs/applications/audio/pd-plugins/puremapping/default.nix
@@ -25,7 +25,7 @@ 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 = lib.licenses.gpl1;
+    license = lib.licenses.gpl1Only;
     maintainers = [ lib.maintainers.magnetophon ];
     platforms = lib.platforms.linux;
   };
diff --git a/nixpkgs/pkgs/applications/audio/petrifoo/default.nix b/nixpkgs/pkgs/applications/audio/petrifoo/default.nix
index 10362e04d550..49ed6dfd9842 100644
--- a/nixpkgs/pkgs/applications/audio/petrifoo/default.nix
+++ b/nixpkgs/pkgs/applications/audio/petrifoo/default.nix
@@ -29,7 +29,7 @@ stdenv.mkDerivation  rec {
   meta = with lib; {
     description = "MIDI controllable audio sampler";
     longDescription = "a fork of Specimen";
-    homepage = "http://petri-foo.sourceforge.net";
+    homepage = "https://petri-foo.sourceforge.net";
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
     maintainers = [ maintainers.goibhniu ];
diff --git a/nixpkgs/pkgs/applications/audio/pianobooster/default.nix b/nixpkgs/pkgs/applications/audio/pianobooster/default.nix
index 2c58ecc5dcbb..7d62aa61d6b0 100644
--- a/nixpkgs/pkgs/applications/audio/pianobooster/default.nix
+++ b/nixpkgs/pkgs/applications/audio/pianobooster/default.nix
@@ -1,29 +1,69 @@
-{ lib, stdenv, fetchFromGitHub, cmake, pkg-config, qttools
-, alsa-lib, ftgl, libGLU, libjack2, qtbase, rtmidi, wrapQtAppsHook
+{ lib
+, stdenv
+, fetchFromGitHub
+, cmake
+, pkg-config
+, qttools
+, alsa-lib
+, ftgl
+, libGLU
+, qtbase
+, rtmidi
+, libjack2
+, fluidsynth
+, soundfont-fluid
+, unzip
+, wrapQtAppsHook
 }:
 
 stdenv.mkDerivation rec {
   pname = "pianobooster";
-  version = "0.7.2b";
+  version = "1.0.0";
 
   src = fetchFromGitHub {
-    owner = "captnfab";
+    owner = "pianobooster";
     repo = "PianoBooster";
     rev = "v${version}";
-    sha256 = "03xcdnlpsij22ca3i6xj19yqzn3q2ch0d32r73v0c96nm04gvhjj";
+    hash = "sha256-1WOlAm/HXSL6QK0Kd1mnFEZxxpMseTG+6WzgMNWt+RA=";
   };
 
-  nativeBuildInputs = [ cmake pkg-config qttools wrapQtAppsHook ];
+  postPatch = ''
+    substituteInPlace src/Settings.cpp src/GuiMidiSetupDialog.cpp \
+      --replace "/usr/share/soundfonts" "${soundfont-fluid}/share/soundfonts" \
+      --replace "FluidR3_GM.sf2" "FluidR3_GM2-2.sf2"
+  '';
 
-  buildInputs = [ alsa-lib ftgl libGLU libjack2 qtbase rtmidi ];
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    qttools
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    alsa-lib
+    ftgl
+    libGLU
+    qtbase
+    rtmidi
+    libjack2
+    fluidsynth
+  ];
 
   cmakeFlags = [
     "-DOpenGL_GL_PREFERENCE=GLVND"
+    "-DUSE_JACK=ON"
   ];
 
+  postInstall = ''
+    qtWrapperArgs+=(
+      --prefix PATH : "${lib.makeBinPath [ unzip ]}"
+    )
+  '';
+
   meta = with lib; {
     description = "A MIDI file player that teaches you how to play the piano";
-    homepage = "https://github.com/captnfab/PianoBooster";
+    homepage = "https://github.com/pianobooster/PianoBooster";
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
     maintainers = with maintainers; [ goibhniu orivej ];
diff --git a/nixpkgs/pkgs/applications/audio/pianoteq/default.nix b/nixpkgs/pkgs/applications/audio/pianoteq/default.nix
index 26c62f3e30bf..e528cc8ade8d 100644
--- a/nixpkgs/pkgs/applications/audio/pianoteq/default.nix
+++ b/nixpkgs/pkgs/applications/audio/pianoteq/default.nix
@@ -1,8 +1,8 @@
-{ lib, stdenv, curl, gnugrep, jq, xorg, alsa-lib, freetype, p7zip, autoPatchelfHook, writeShellScript, zlib, libjack2, makeWrapper }:
+{ lib, stdenv, curl, jq, htmlq, xorg, alsa-lib, freetype, p7zip, autoPatchelfHook, writeShellScript, zlib, libjack2, makeWrapper }:
 let
   versionForFile = v: builtins.replaceStrings ["."] [""] v;
 
-  mkPianoteq = { name, src, version, archdir, ... }:
+  mkPianoteq = { name, src, version, archdir ? if (stdenv.hostPlatform.system == "aarch64-linux") then "arm-64bit" else "x86-64bit", ... }:
     stdenv.mkDerivation rec {
       inherit src version;
 
@@ -47,7 +47,7 @@ let
         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?
+        platforms = [ "x86_64-linux" "aarch64-linux" ];
         maintainers = [ maintainers.mausch ];
       };
     };
@@ -93,26 +93,32 @@ let
     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 \
+        html=$(
+          "''${curl[@]}" --silent --request GET \
             --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"
+            --header "accept: */*" \
+            'https://www.modartt.com/try?file=${name}'
+        )
+
+        signature="$(echo "$html" | ${htmlq}/bin/htmlq '#download-form' --attribute action | cut -f2 -d'&' | cut -f2 -d=)"
+
+        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", "signature": "'"$signature"'"}' \
+          https://www.modartt.com/api/0/download
+        )
+
+        url=$(echo $json | ${jq}/bin/jq -r .url)
+        if [ "$url" == "null"  ]; then
+          echo "Could not get download URL, open an issue on https://github.com/NixOS/nixpkgs"
+          return 1
+        fi
+        "''${curl[@]}" --progress-bar --cookie cookies -o $out "$url"
       '';
     };
 
@@ -140,7 +146,7 @@ let
           --header "content-type: application/json; charset=UTF-8" \
           --header "accept: application/json, text/javascript, */*" \
           --data @login.json \
-          https://www.modartt.com/json/session
+          https://www.modartt.com/api/0/session
 
         json=$(
           "''${curl[@]}" --silent --request POST \
@@ -150,10 +156,10 @@ let
           --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
+          https://www.modartt.com/api/0/download
         )
-        url=$(echo $json | ${jq}/bin/jq -r .url)
 
+        url=$(echo $json | ${jq}/bin/jq -r .url)
         "''${curl[@]}" --progress-bar --cookie cookies -o $out "$url"
       '';
     };
@@ -162,26 +168,24 @@ in {
   # TODO currently can't install more than one because `lame` clashes
   stage-trial = mkPianoteq rec {
     name = "stage-trial";
-    version = "7.5.4";
-    archdir = "x86-64bit";
+    version = "8.0.8";
     src = fetchPianoteqTrial {
       name = "pianoteq_stage_linux_trial_v${versionForFile version}.7z";
-      sha256 = "sha256-ybtq+hjnaQxpLxv2KE0ZcbQXtn5DJJsnMwCmh3rlrIc=";
+      sha256 = "sha256-dp0bTzzh4aQ2KQ3z9zk+3meKQY4YRYQ86rccHd3+hAQ=";
     };
   };
   standard-trial = mkPianoteq rec {
     name = "standard-trial";
-    version = "7.5.4";
-    archdir = "x86-64bit";
+    version = "8.0.8";
     src = fetchPianoteqTrial {
       name = "pianoteq_linux_trial_v${versionForFile version}.7z";
-      sha256 = "sha256-3a3+SKTEhvDtqK5Kg4E6KiLvn5+j6JN6ntIb72u2bdQ=";
+      sha256 = "sha256-LSrnrjkEhsX9TirUUFs9tNqH2A3cTt3I7YTfcTT6EP8=";
     };
   };
   stage-6 = mkPianoteq rec {
     name = "stage-6";
     version = "6.7.3";
-    archdir = "amd64";
+    archdir = if (stdenv.hostPlatform.system == "aarch64-linux") then throw "Pianoteq stage-6 is not supported on aarch64-linux" else "amd64";
     src = fetchPianoteqWithLogin {
       name = "pianoteq_stage_linux_v${versionForFile version}.7z";
       sha256 = "0jy0hkdynhwv0zhrqkby0hdphgmcc09wxmy74rhg9afm1pzl91jy";
@@ -190,7 +194,6 @@ in {
   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";
diff --git a/nixpkgs/pkgs/applications/audio/pianotrans/default.nix b/nixpkgs/pkgs/applications/audio/pianotrans/default.nix
new file mode 100644
index 000000000000..e5848de03dac
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/pianotrans/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, fetchFromGitHub
+, python3
+, ffmpeg
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "pianotrans";
+  version = "1.0.1";
+  format = "setuptools";
+
+  src = fetchFromGitHub {
+    owner = "azuwis";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-gRbyUQmPtGvx5QKAyrmeJl0stp7hwLBWwjSbJajihdE=";
+  };
+
+  propagatedBuildInputs = with python3.pkgs; [
+    piano-transcription-inference
+    torch
+    tkinter
+  ];
+
+  # Project has no tests
+  doCheck = false;
+
+  makeWrapperArgs = [
+    ''--prefix PATH : "${lib.makeBinPath [ ffmpeg ]}"''
+  ];
+
+  meta = with lib; {
+    description = "Simple GUI for ByteDance's Piano Transcription with Pedals";
+    homepage = "https://github.com/azuwis/pianotrans";
+    license = licenses.mit;
+    maintainers = with maintainers; [ azuwis ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/picard/default.nix b/nixpkgs/pkgs/applications/audio/picard/default.nix
index 481f151ed561..983457530ad1 100644
--- a/nixpkgs/pkgs/applications/audio/picard/default.nix
+++ b/nixpkgs/pkgs/applications/audio/picard/default.nix
@@ -18,25 +18,31 @@ let
 in
 pythonPackages.buildPythonApplication rec {
   pname = "picard";
-  version = "2.8.1";
+  version = "2.8.5";
 
   src = fetchFromGitHub {
     owner = "metabrainz";
     repo = pname;
     rev = "refs/tags/release-${version}";
-    sha256 = "sha256-KEKOouTNmmZiPyKo8xCQv6Zkreidtz2DaEbHjuwJJvY=";
+    sha256 = "sha256-ukqlAXGaqX89U77cM9Ux0RYquT31Ho8ri1Ue7S3+MwQ=";
   };
 
-  nativeBuildInputs = [ gettext qt5.wrapQtAppsHook qt5.qtbase ]
-  ++ lib.optionals (pyqt5.multimediaEnabled) [
-    qt5.qtmultimedia.bin
+  nativeBuildInputs = [
+    gettext
+    qt5.wrapQtAppsHook
+  ] ++ lib.optionals (pyqt5.multimediaEnabled) [
     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
-  ]
-  ;
+  ];
+  buildInputs = [
+    qt5.qtbase
+    qt5.qtwayland
+  ] ++ lib.optionals (pyqt5.multimediaEnabled) [
+    qt5.qtmultimedia.bin
+  ];
 
   propagatedBuildInputs = with pythonPackages; [
     chromaprint
@@ -61,6 +67,7 @@ pythonPackages.buildPythonApplication rec {
 
   meta = with lib; {
     homepage = "https://picard.musicbrainz.org/";
+    changelog = "https://picard.musicbrainz.org/changelog/";
     description = "The official MusicBrainz tagger";
     maintainers = with maintainers; [ ehmry ];
     license = licenses.gpl2Plus;
diff --git a/nixpkgs/pkgs/applications/audio/picoloop/default.nix b/nixpkgs/pkgs/applications/audio/picoloop/default.nix
index bd956963a468..8f11ec809c3a 100644
--- a/nixpkgs/pkgs/applications/audio/picoloop/default.nix
+++ b/nixpkgs/pkgs/applications/audio/picoloop/default.nix
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
 
   makeFlags = [ "-f Makefile.PatternPlayer_debian_RtAudio_sdl20" ];
 
-  NIX_CFLAGS_COMPILE = [ "-I${SDL2.dev}/include/SDL2" ];
+  env.NIX_CFLAGS_COMPILE = toString [ "-I${SDL2.dev}/include/SDL2" ];
 
   hardeningDisable = [ "format" ];
 
diff --git a/nixpkgs/pkgs/applications/audio/pipecontrol/default.nix b/nixpkgs/pkgs/applications/audio/pipecontrol/default.nix
index a2abab72ec69..60226952820d 100644
--- a/nixpkgs/pkgs/applications/audio/pipecontrol/default.nix
+++ b/nixpkgs/pkgs/applications/audio/pipecontrol/default.nix
@@ -16,13 +16,13 @@
 
 stdenv.mkDerivation rec {
   pname = "pipecontrol";
-  version = "0.2.4";
+  version = "0.2.10";
 
   src = fetchFromGitHub {
     owner = "portaloffreedom";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-F3faJMkvjAY6A5ieNpAxjk6BHPb6uCvYYfwrI9/Iskg=";
+    sha256 = "sha256-MSm9rW41x8qvPuDermOPIYpxgblk5hlKIQsUEAvCzMo=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/audio/pithos/default.nix b/nixpkgs/pkgs/applications/audio/pithos/default.nix
index e6bca6869dd2..ed861f12468b 100644
--- a/nixpkgs/pkgs/applications/audio/pithos/default.nix
+++ b/nixpkgs/pkgs/applications/audio/pithos/default.nix
@@ -4,13 +4,13 @@
 
 pythonPackages.buildPythonApplication rec {
   pname = "pithos";
-  version = "1.5.1";
+  version = "1.6.0";
 
   src = fetchFromGitHub {
     owner = pname;
     repo  = pname;
     rev = version;
-    sha256 = "03j04b1mk2fq0ni2ydpw40fdd36k545z8a1pq9x5c779080cwpla";
+    hash = "sha256-cFmsdQXfGxgpKe32dw1lgoANU9Drhu5Mecyz37BVP4g=";
   };
 
   format = "other";
@@ -22,6 +22,10 @@ pythonPackages.buildPythonApplication rec {
 
   nativeBuildInputs = [ meson ninja pkg-config appstream-glib wrapGAppsHook ];
 
+  propagatedNativeBuildInputs = [
+    gobject-introspection
+  ];
+
   propagatedBuildInputs =
     [ 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 ]) ++
diff --git a/nixpkgs/pkgs/applications/audio/plexamp/default.nix b/nixpkgs/pkgs/applications/audio/plexamp/default.nix
index ed20c1d7a731..5c1325819730 100644
--- a/nixpkgs/pkgs/applications/audio/plexamp/default.nix
+++ b/nixpkgs/pkgs/applications/audio/plexamp/default.nix
@@ -2,12 +2,12 @@
 
 let
   pname = "plexamp";
-  version = "4.3.0";
+  version = "4.7.4";
 
   src = fetchurl {
     url = "https://plexamp.plex.tv/plexamp.plex.tv/desktop/Plexamp-${version}.AppImage";
     name="${pname}-${version}.AppImage";
-    sha512 = "c9d2rp7tibb73tZdoFONW7eoy+u+GaUZ0RPhYWCBk5MYwtY81xrsdka64x60xzxOopWZ6JkmGs9AWI1XifqBTQ==";
+    sha512 = "TZ7JNSrUtsqnH+fWIcd1v4fY0jPnMV7nqV/QsbD7ZpqIBCkN3R9WQvc/E9gah163Ab40g9CmdghTGo3v8VW2Rw==";
   };
 
   appimageContents = appimageTools.extractType2 {
@@ -33,7 +33,7 @@ in appimageTools.wrapType2 {
   meta = with lib; {
     description = "A beautiful Plex music player for audiophiles, curators, and hipsters";
     homepage = "https://plexamp.com/";
-    changelog = "https://forums.plex.tv/t/plexamp-release-notes/221280/45";
+    changelog = "https://forums.plex.tv/t/plexamp-release-notes/221280/50";
     license = licenses.unfree;
     maintainers = with maintainers; [ killercup synthetica ];
     platforms = [ "x86_64-linux" ];
diff --git a/nixpkgs/pkgs/applications/audio/pms/default.nix b/nixpkgs/pkgs/applications/audio/pms/default.nix
new file mode 100644
index 000000000000..bb6d018efe4a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/pms/default.nix
@@ -0,0 +1,22 @@
+{ lib, fetchFromGitHub, buildGoModule }:
+
+buildGoModule {
+  pname = "pms";
+  version = "unstable-2022-11-12";
+
+  src = fetchFromGitHub {
+    owner = "ambientsound";
+    repo = "pms";
+    rev = "40d6e37111293187ab4542c7a64bd73d1b13974f";
+    sha256 = "sha256-294MiS4c2PO2lFSSRrg8ns7sXzZsEUAqPG3q2z3TRUg=";
+  };
+
+  vendorHash = "sha256-XNFzG4hGDUN0wWbpBoQWUH1bWIgoYcyP4tNRGSV4ro4=";
+
+  meta = with lib; {
+    description = "An interactive Vim-like console client for MPD";
+    homepage = "https://ambientsound.github.io/pms/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ deejayem ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/pocket-casts/default.nix b/nixpkgs/pkgs/applications/audio/pocket-casts/default.nix
index 7b7bf50a2f83..576124d96844 100644
--- a/nixpkgs/pkgs/applications/audio/pocket-casts/default.nix
+++ b/nixpkgs/pkgs/applications/audio/pocket-casts/default.nix
@@ -1,56 +1,59 @@
-{ lib, stdenv, fetchurl, dpkg, autoPatchelfHook, makeWrapper, electron
-, alsa-lib, gtk3, libXScrnSaver, libXtst, mesa, nss }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, electron
+, copyDesktopItems
+, makeDesktopItem
+, makeWrapper
+}:
 
 stdenv.mkDerivation rec {
   pname = "pocket-casts";
-  version = "0.5.0";
+  version = "0.6.0";
 
-  src = fetchurl {
-    url = "https://github.com/felicianotech/pocket-casts-desktop-app/releases/download/v${version}/${pname}_${version}_amd64.deb";
-    sha256 = "sha256-frBtIxwRO/6k6j0itqN10t+9AyNadqXm8vC1YP960ts=";
+  src = fetchFromGitHub {
+    owner = "felicianotech";
+    repo = "pocket-casts-desktop-app";
+    rev = "v${version}";
+    sha256 = "sha256-WMv2G4b7kYnWy0pz8YyI2eTdefs1mtWau+HQLiRygjE=";
   };
 
+  desktopItems = [
+    (makeDesktopItem {
+      name = pname;
+      desktopName = "Pocket Casts";
+      genericName = "Podcasts Listener";
+      exec = "pocket-casts";
+      icon = "pocket-casts";
+      comment = meta.description;
+    })
+  ];
+
   nativeBuildInputs = [
-    dpkg
-    autoPatchelfHook
+    copyDesktopItems
     makeWrapper
   ];
 
-  buildInputs = [ alsa-lib gtk3 libXScrnSaver libXtst mesa nss ];
-
-  dontBuild = true;
-  dontConfigure = true;
-
-  unpackPhase = ''
-    dpkg-deb -x ${src} ./
-  '';
-
   installPhase = ''
     runHook preInstall
 
-    mv usr $out
-    mv opt $out
-    mv "$out/opt/Pocket Casts" $out/opt/pocket-casts
-    mv $out/share/icons/hicolor/0x0 $out/share/icons/hicolor/256x256
+    mkdir -p $out/bin $out/opt/pocket-casts $out/share/pixmaps
 
-    runHook postInstall
-  '';
+    cp -r main.js tray-icon.png LICENSE $out/opt/pocket-casts
+    install -Dm644 icon.png $out/share/pixmaps/pocket-casts.png
+    install -Dm644 icon-x360.png $out/share/pixmaps/pocket-casts-x360.png
 
-  postFixup = ''
-    substituteInPlace $out/share/applications/pocket-casts.desktop \
-      --replace '"/opt/Pocket Casts/pocket-casts"' $out/bin/pocket-casts \
-      --replace '/usr/share/icons/hicolor/0x0/apps/pocket-casts.png' "pocket-casts"
-    makeWrapper ${electron}/bin/electron \
-      $out/bin/pocket-casts \
-      --add-flags $out/opt/pocket-casts/resources/app.asar
+    makeWrapper ${electron}/bin/electron $out/bin/pocket-casts \
+      --add-flags $out/opt/pocket-casts/main.js
+
+    runHook postInstall
   '';
 
   meta = with lib; {
     description = "Pocket Casts webapp, packaged for the Linux Desktop";
     homepage = "https://github.com/felicianotech/pocket-casts-desktop-app";
-    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = licenses.mit;
     maintainers = with maintainers; [ wolfangaukang ];
-    platforms = [ "x86_64-linux" ];
+    platforms = platforms.linux;
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/polyphone/default.nix b/nixpkgs/pkgs/applications/audio/polyphone/default.nix
index 5e7c3f2b85ce..f7008bf66bba 100644
--- a/nixpkgs/pkgs/applications/audio/polyphone/default.nix
+++ b/nixpkgs/pkgs/applications/audio/polyphone/default.nix
@@ -1,14 +1,14 @@
-{ stdenv, lib, mkDerivation, fetchFromGitHub, qmake, pkg-config, alsa-lib, libjack2, portaudio, libogg, flac, libvorbis, rtmidi, qtsvg }:
+{ stdenv, lib, mkDerivation, fetchFromGitHub, qmake, pkg-config, alsa-lib, libjack2, portaudio, libogg, flac, libvorbis, rtmidi, qtsvg, qttools }:
 
 mkDerivation rec {
-  version = "2.2.0";
+  version = "2.3.0";
   pname = "polyphone";
 
   src = fetchFromGitHub {
     owner = "davy7125";
     repo = "polyphone";
     rev = version;
-    sha256 = "0w5pidzhpwpggjn5la384fvjzkvprvrnidb06068whci11kgpbp7";
+    sha256 = "09habv51pw71wrb39shqi80i2w39dx5a39klzswsald5j9sia0ir";
   };
 
   buildInputs = [
@@ -22,7 +22,7 @@ mkDerivation rec {
     qtsvg
   ];
 
-  nativeBuildInputs = [ qmake pkg-config ];
+  nativeBuildInputs = [ qmake qttools pkg-config ];
 
   preConfigure = ''
     cd ./sources/
@@ -36,7 +36,6 @@ mkDerivation rec {
   qmakeFlags = [
     "DEFINES+=USE_LOCAL_STK"
     "DEFINES+=USE_LOCAL_QCUSTOMPLOT"
-    "INCLUDEPATH+=${libjack2}/include/jack"
   ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/applications/audio/praat/default.nix b/nixpkgs/pkgs/applications/audio/praat/default.nix
index 8c63212dc2a7..7faa8fcc6b13 100644
--- a/nixpkgs/pkgs/applications/audio/praat/default.nix
+++ b/nixpkgs/pkgs/applications/audio/praat/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "praat";
-  version = "6.2.10";
+  version = "6.3.10";
 
   src = fetchFromGitHub {
     owner = "praat";
     repo = "praat";
     rev = "v${version}";
-    sha256 = "sha256-IYbPMjKWDQQrF+JiqBQ2wsjY+Ms93tEdsG75CxipwaI=";
+    sha256 = "sha256-wnw8GKMukiraZgMMzd3S2NldC/cnRSILNo+D1Rqhr4k=";
   };
 
   configurePhase = ''
diff --git a/nixpkgs/pkgs/applications/audio/pragha/default.nix b/nixpkgs/pkgs/applications/audio/pragha/default.nix
index da5a64f708eb..8e039f05927f 100644
--- a/nixpkgs/pkgs/applications/audio/pragha/default.nix
+++ b/nixpkgs/pkgs/applications/audio/pragha/default.nix
@@ -83,7 +83,7 @@ mkDerivation rec {
 
   CFLAGS = [ "-DHAVE_PARANOIA_NEW_INCLUDES" ];
 
-  NIX_CFLAGS_COMPILE = "-I${lib.getDev gst_all_1.gst-plugins-base}/include/gstreamer-1.0";
+  env.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")
diff --git a/nixpkgs/pkgs/applications/audio/proteus/default.nix b/nixpkgs/pkgs/applications/audio/proteus/default.nix
new file mode 100644
index 000000000000..b536af040d78
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/proteus/default.nix
@@ -0,0 +1,52 @@
+{ lib, stdenv, fetchFromGitHub, autoPatchelfHook, cmake, pkg-config
+, alsa-lib, freetype, libjack2
+, libX11, libXext, libXcursor, libXinerama, libXrandr, libXrender
+}:
+
+stdenv.mkDerivation rec {
+  pname = "proteus";
+  version = "1.2";
+
+  src = fetchFromGitHub {
+    owner = "GuitarML";
+    repo = "Proteus";
+    rev = "v${version}";
+    fetchSubmodules = true;
+    hash = "sha256-WhJh+Sx64JYxQQ1LXpDUwXeodFU1EZ0TmMhn+6w0hQg=";
+  };
+
+  nativeBuildInputs = [ autoPatchelfHook cmake pkg-config ];
+  buildInputs = [
+    alsa-lib freetype libjack2
+    libX11 libXext libXcursor libXinerama libXrandr libXrender
+  ];
+  # JUCE loads most dependencies at runtime:
+  runtimeDependencies = map lib.getLib buildInputs;
+
+  env.NIX_CFLAGS_COMPILE = toString [
+    # Support JACK output in the standalone application:
+    "-DJUCE_JACK"
+    # Accommodate -flto:
+    "-ffat-lto-objects"
+  ];
+
+  # The default "make install" only installs JUCE, which should not be installed, and does not install proteus.
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/lib
+    cp -rT Proteus_artefacts/*/Standalone $out/bin
+    cp -rT Proteus_artefacts/*/LV2 $out/lib/lv2
+    cp -rT Proteus_artefacts/*/VST3 $out/lib/vst3
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Guitar amp and pedal capture plugin using neural networks";
+    homepage = "https://github.com/GuitarML/Proteus";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ orivej ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/psst/Cargo.lock b/nixpkgs/pkgs/applications/audio/psst/Cargo.lock
new file mode 100644
index 000000000000..ebc2db1d2d74
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/psst/Cargo.lock
@@ -0,0 +1,4053 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "adler"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
+
+[[package]]
+name = "aes"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "433cfd6710c9986c576a25ca913c39d66a6474107b406f34f91d4a8923395241"
+dependencies = [
+ "cfg-if",
+ "cipher",
+ "cpufeatures",
+]
+
+[[package]]
+name = "aho-corasick"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67fc08ce920c31afb70f013dcce1bfc3a3195de6a228474e45e1f145b36f8d04"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "alsa"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8512c9117059663fb5606788fbca3619e2a91dac0e3fe516242eab1fa6be5e44"
+dependencies = [
+ "alsa-sys",
+ "bitflags 1.3.2",
+ "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 = "android_system_properties"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "anyhow"
+version = "1.0.71"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8"
+
+[[package]]
+name = "arrayvec"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
+
+[[package]]
+name = "associative-cache"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "46016233fc1bb55c23b856fe556b7db6ccd05119a0a392e04f0b3b7c79058f16"
+
+[[package]]
+name = "atk"
+version = "0.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39991bc421ddf72f70159011b323ff49b0f783cc676a7287c59453da2e2531cf"
+dependencies = [
+ "atk-sys",
+ "bitflags 1.3.2",
+ "glib",
+ "libc",
+]
+
+[[package]]
+name = "atk-sys"
+version = "0.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "11ad703eb64dc058024f0e57ccfa069e15a413b98dbd50a1a950e743b7f11148"
+dependencies = [
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "audio_thread_priority"
+version = "0.27.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "171919e42cac3c2b837b5749bc9c4abc4b96def2a5be344ce207e0404e25c839"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "log",
+ "mach",
+ "winapi",
+]
+
+[[package]]
+name = "autocfg"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+
+[[package]]
+name = "base64"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
+
+[[package]]
+name = "bindgen"
+version = "0.64.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4243e6031260db77ede97ad86c27e501d646a27ab57b59a574f725d98ab1fb4"
+dependencies = [
+ "bitflags 1.3.2",
+ "cexpr",
+ "clang-sys",
+ "lazy_static",
+ "lazycell",
+ "peeking_take_while",
+ "proc-macro2",
+ "quote",
+ "regex",
+ "rustc-hash",
+ "shlex",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "bit_field"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61"
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "bitflags"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24a6904aef64d73cf10ab17ebace7befb918b82164785cb89907993be7f83813"
+
+[[package]]
+name = "bitmaps"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "031043d04099746d8db04daf1fa424b2bc8bd69d92b25962dcde24da39ab64a2"
+dependencies = [
+ "typenum",
+]
+
+[[package]]
+name = "block"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
+
+[[package]]
+name = "block-buffer"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "bstr"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3d4260bcc2e8fc9df1eac4919a720effeb63a3f0952f5bf4944adfa18897f09"
+dependencies = [
+ "memchr",
+ "once_cell",
+ "regex-automata",
+ "serde",
+]
+
+[[package]]
+name = "btoi"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9dd6407f73a9b8b6162d8a2ef999fe6afd7cc15902ebf42c5cd296addf17e0ad"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "bumpalo"
+version = "3.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b1ce199063694f33ffb7dd4e0ee620741495c32833cde5aa08f02a0bf96f0c8"
+
+[[package]]
+name = "bytemuck"
+version = "1.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea"
+
+[[package]]
+name = "byteorder"
+version = "1.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
+
+[[package]]
+name = "bytes"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be"
+
+[[package]]
+name = "cairo-rs"
+version = "0.16.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f3125b15ec28b84c238f6f476c6034016a5f6cc0221cb514ca46c532139fc97d"
+dependencies = [
+ "bitflags 1.3.2",
+ "cairo-sys-rs",
+ "glib",
+ "libc",
+ "once_cell",
+ "thiserror",
+]
+
+[[package]]
+name = "cairo-sys-rs"
+version = "0.16.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c48f4af05fabdcfa9658178e1326efa061853f040ce7d72e33af6885196f421"
+dependencies = [
+ "glib-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "cc"
+version = "1.0.79"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
+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.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
+dependencies = [
+ "nom",
+]
+
+[[package]]
+name = "cfg-expr"
+version = "0.15.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8790cf1286da485c72cf5fc7aeba308438800036ec67d89425924c4807268c9"
+dependencies = [
+ "smallvec",
+ "target-lexicon",
+]
+
+[[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.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b"
+dependencies = [
+ "iana-time-zone",
+ "js-sys",
+ "num-integer",
+ "num-traits",
+ "time 0.1.45",
+ "wasm-bindgen",
+ "winapi",
+]
+
+[[package]]
+name = "cipher"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad"
+dependencies = [
+ "crypto-common",
+ "inout",
+]
+
+[[package]]
+name = "clang-sys"
+version = "1.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f"
+dependencies = [
+ "glob",
+ "libc",
+ "libloading",
+]
+
+[[package]]
+name = "cmake"
+version = "0.1.50"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "cocoa"
+version = "0.24.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a"
+dependencies = [
+ "bitflags 1.3.2",
+ "block",
+ "cocoa-foundation",
+ "core-foundation",
+ "core-graphics",
+ "foreign-types",
+ "libc",
+ "objc",
+]
+
+[[package]]
+name = "cocoa-foundation"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "931d3837c286f56e3c58423ce4eba12d08db2374461a785c86f672b08b5650d6"
+dependencies = [
+ "bitflags 1.3.2",
+ "block",
+ "core-foundation",
+ "core-graphics-types",
+ "foreign-types",
+ "libc",
+ "objc",
+]
+
+[[package]]
+name = "codespan-reporting"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e"
+dependencies = [
+ "termcolor",
+ "unicode-width",
+]
+
+[[package]]
+name = "color_quant"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b"
+
+[[package]]
+name = "combine"
+version = "4.6.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4"
+dependencies = [
+ "bytes",
+ "memchr",
+]
+
+[[package]]
+name = "console_error_panic_hook"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc"
+dependencies = [
+ "cfg-if",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "core-foundation"
+version = "0.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146"
+dependencies = [
+ "core-foundation-sys 0.8.4",
+ "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.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa"
+
+[[package]]
+name = "core-graphics"
+version = "0.22.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb"
+dependencies = [
+ "bitflags 1.3.2",
+ "core-foundation",
+ "core-graphics-types",
+ "foreign-types",
+ "libc",
+]
+
+[[package]]
+name = "core-graphics-types"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b"
+dependencies = [
+ "bitflags 1.3.2",
+ "core-foundation",
+ "foreign-types",
+ "libc",
+]
+
+[[package]]
+name = "core-text"
+version = "19.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "99d74ada66e07c1cefa18f8abfba765b486f250de2e4a999e5727fc0dd4b4a25"
+dependencies = [
+ "core-foundation",
+ "core-graphics",
+ "foreign-types",
+ "libc",
+]
+
+[[package]]
+name = "coreaudio-rs"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb17e2d1795b1996419648915df94bc7103c28f7b48062d7acf4652fc371b2ff"
+dependencies = [
+ "bitflags 1.3.2",
+ "core-foundation-sys 0.6.2",
+ "coreaudio-sys",
+]
+
+[[package]]
+name = "coreaudio-sys"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f034b2258e6c4ade2f73bf87b21047567fb913ee9550837c2316d139b0262b24"
+dependencies = [
+ "bindgen",
+]
+
+[[package]]
+name = "cpal"
+version = "0.15.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d959d90e938c5493000514b446987c07aed46c668faaa7d34d6c7a67b1a578c"
+dependencies = [
+ "alsa",
+ "core-foundation-sys 0.8.4",
+ "coreaudio-rs",
+ "dasp_sample",
+ "jni 0.19.0",
+ "js-sys",
+ "libc",
+ "mach2",
+ "ndk",
+ "ndk-context",
+ "oboe",
+ "once_cell",
+ "parking_lot",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+ "windows 0.46.0",
+]
+
+[[package]]
+name = "cpufeatures"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3e4c1eaa2012c47becbbad2ab175484c2a84d1185b566fb2cc5b8707343dfe58"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "crc32fast"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "crossbeam-channel"
+version = "0.5.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200"
+dependencies = [
+ "cfg-if",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-deque"
+version = "0.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
+dependencies = [
+ "cfg-if",
+ "crossbeam-epoch",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-epoch"
+version = "0.9.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695"
+dependencies = [
+ "autocfg",
+ "cfg-if",
+ "crossbeam-utils",
+ "memoffset",
+ "scopeguard",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "crunchy"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
+
+[[package]]
+name = "crypto-common"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+dependencies = [
+ "generic-array",
+ "typenum",
+]
+
+[[package]]
+name = "ctr"
+version = "0.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835"
+dependencies = [
+ "cipher",
+]
+
+[[package]]
+name = "cubeb"
+version = "0.10.3"
+source = "git+https://github.com/mozilla/cubeb-rs#f0d2a875e40dfa64648fd381445a24bc6e45fa5c"
+dependencies = [
+ "cubeb-core",
+]
+
+[[package]]
+name = "cubeb-core"
+version = "0.10.3"
+source = "git+https://github.com/mozilla/cubeb-rs#f0d2a875e40dfa64648fd381445a24bc6e45fa5c"
+dependencies = [
+ "bitflags 1.3.2",
+ "cubeb-sys",
+]
+
+[[package]]
+name = "cubeb-sys"
+version = "0.10.3"
+source = "git+https://github.com/mozilla/cubeb-rs#f0d2a875e40dfa64648fd381445a24bc6e45fa5c"
+dependencies = [
+ "cmake",
+ "pkg-config",
+]
+
+[[package]]
+name = "cxx"
+version = "1.0.94"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f61f1b6389c3fe1c316bf8a4dccc90a38208354b330925bce1f74a6c4756eb93"
+dependencies = [
+ "cc",
+ "cxxbridge-flags",
+ "cxxbridge-macro",
+ "link-cplusplus",
+]
+
+[[package]]
+name = "cxx-build"
+version = "1.0.94"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "12cee708e8962df2aeb38f594aae5d827c022b6460ac71a7a3e2c3c2aae5a07b"
+dependencies = [
+ "cc",
+ "codespan-reporting",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "scratch",
+ "syn 2.0.15",
+]
+
+[[package]]
+name = "cxxbridge-flags"
+version = "1.0.94"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7944172ae7e4068c533afbb984114a56c46e9ccddda550499caa222902c7f7bb"
+
+[[package]]
+name = "cxxbridge-macro"
+version = "1.0.94"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2345488264226bf682893e25de0769f3360aac9957980ec49361b083ddaa5bc5"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.15",
+]
+
+[[package]]
+name = "dasp_sample"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f"
+
+[[package]]
+name = "dbus"
+version = "0.9.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bb21987b9fb1613058ba3843121dd18b163b254d8a6e797e144cbac14d96d1b"
+dependencies = [
+ "libc",
+ "libdbus-sys",
+ "winapi",
+]
+
+[[package]]
+name = "dbus-crossroads"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3a4c83437187544ba5142427746835061b330446ca8902eabd70e4afb8f76de0"
+dependencies = [
+ "dbus",
+]
+
+[[package]]
+name = "digest"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f"
+dependencies = [
+ "block-buffer",
+ "crypto-common",
+ "subtle",
+]
+
+[[package]]
+name = "dirs"
+version = "4.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059"
+dependencies = [
+ "dirs-sys",
+]
+
+[[package]]
+name = "dirs-next"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf36e65a80337bea855cd4ef9b8401ffce06a7baedf2e85ec467b1ac3f6e82b6"
+dependencies = [
+ "cfg-if",
+ "dirs-sys-next",
+]
+
+[[package]]
+name = "dirs-sys"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6"
+dependencies = [
+ "libc",
+ "redox_users",
+ "winapi",
+]
+
+[[package]]
+name = "dirs-sys-next"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"
+dependencies = [
+ "libc",
+ "redox_users",
+ "winapi",
+]
+
+[[package]]
+name = "dispatch"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b"
+
+[[package]]
+name = "displaydoc"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.15",
+]
+
+[[package]]
+name = "druid"
+version = "0.8.3"
+source = "git+https://github.com/jpochyla/druid?branch=psst#230f7dd869bcab68a911f9fc05ac898e5a9b6e07"
+dependencies = [
+ "console_error_panic_hook",
+ "druid-derive",
+ "druid-shell",
+ "fluent-bundle",
+ "fluent-langneg",
+ "fluent-syntax",
+ "fnv",
+ "im",
+ "instant",
+ "tracing",
+ "tracing-subscriber",
+ "tracing-wasm",
+ "unic-langid",
+ "unicode-segmentation",
+ "xi-unicode",
+]
+
+[[package]]
+name = "druid-derive"
+version = "0.5.0"
+source = "git+https://github.com/jpochyla/druid?branch=psst#230f7dd869bcab68a911f9fc05ac898e5a9b6e07"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "druid-enums"
+version = "0.1.0"
+source = "git+https://github.com/jpochyla/druid-enums#a492fab38d86beb199e83aadfd8753fc7d65a387"
+dependencies = [
+ "heck 0.3.3",
+ "log",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "druid-shell"
+version = "0.8.3"
+source = "git+https://github.com/jpochyla/druid?branch=psst#230f7dd869bcab68a911f9fc05ac898e5a9b6e07"
+dependencies = [
+ "anyhow",
+ "bitflags 1.3.2",
+ "block",
+ "cairo-rs",
+ "cfg-if",
+ "cocoa",
+ "core-graphics",
+ "foreign-types",
+ "gdk-sys",
+ "glib-sys",
+ "gtk",
+ "gtk-sys",
+ "instant",
+ "js-sys",
+ "keyboard-types",
+ "objc",
+ "once_cell",
+ "piet-common",
+ "raw-window-handle",
+ "scopeguard",
+ "time 0.3.21",
+ "tracing",
+ "wasm-bindgen",
+ "web-sys",
+ "winapi",
+ "wio",
+]
+
+[[package]]
+name = "dwrote"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "439a1c2ba5611ad3ed731280541d36d2e9c4ac5e7fb818a27b604bdc5a6aa65b"
+dependencies = [
+ "lazy_static",
+ "libc",
+ "winapi",
+ "wio",
+]
+
+[[package]]
+name = "either"
+version = "1.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
+
+[[package]]
+name = "encoding_rs"
+version = "0.8.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "env_logger"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0"
+dependencies = [
+ "humantime",
+ "is-terminal",
+ "log",
+ "regex",
+ "termcolor",
+]
+
+[[package]]
+name = "errno"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a"
+dependencies = [
+ "errno-dragonfly",
+ "libc",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "errno-dragonfly"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
+dependencies = [
+ "cc",
+ "libc",
+]
+
+[[package]]
+name = "exr"
+version = "1.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bdd2162b720141a91a054640662d3edce3d50a944a50ffca5313cd951abb35b4"
+dependencies = [
+ "bit_field",
+ "flume",
+ "half",
+ "lebe",
+ "miniz_oxide 0.6.2",
+ "rayon-core",
+ "smallvec",
+ "zune-inflate",
+]
+
+[[package]]
+name = "fastrand"
+version = "1.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"
+dependencies = [
+ "instant",
+]
+
+[[package]]
+name = "fdeflate"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d329bdeac514ee06249dabc27877490f17f5d371ec693360768b838e19f3ae10"
+dependencies = [
+ "simd-adler32",
+]
+
+[[package]]
+name = "field-offset"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3cf3a800ff6e860c863ca6d4b16fd999db8b752819c1606884047b73e468535"
+dependencies = [
+ "memoffset",
+ "rustc_version",
+]
+
+[[package]]
+name = "flate2"
+version = "1.0.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743"
+dependencies = [
+ "crc32fast",
+ "miniz_oxide 0.7.1",
+]
+
+[[package]]
+name = "fluent-bundle"
+version = "0.15.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e242c601dec9711505f6d5bbff5bedd4b61b2469f2e8bb8e57ee7c9747a87ffd"
+dependencies = [
+ "fluent-langneg",
+ "fluent-syntax",
+ "intl-memoizer",
+ "intl_pluralrules",
+ "rustc-hash",
+ "self_cell",
+ "smallvec",
+ "unic-langid",
+]
+
+[[package]]
+name = "fluent-langneg"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c4ad0989667548f06ccd0e306ed56b61bd4d35458d54df5ec7587c0e8ed5e94"
+dependencies = [
+ "unic-langid",
+]
+
+[[package]]
+name = "fluent-syntax"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0abed97648395c902868fee9026de96483933faa54ea3b40d652f7dfe61ca78"
+dependencies = [
+ "thiserror",
+]
+
+[[package]]
+name = "flume"
+version = "0.10.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577"
+dependencies = [
+ "futures-core",
+ "futures-sink",
+ "nanorand",
+ "pin-project",
+ "spin 0.9.8",
+]
+
+[[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.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
+dependencies = [
+ "percent-encoding",
+]
+
+[[package]]
+name = "fs_extra"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"
+
+[[package]]
+name = "futures-channel"
+version = "0.3.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2"
+dependencies = [
+ "futures-core",
+]
+
+[[package]]
+name = "futures-core"
+version = "0.3.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c"
+
+[[package]]
+name = "futures-executor"
+version = "0.3.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0"
+dependencies = [
+ "futures-core",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-io"
+version = "0.3.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964"
+
+[[package]]
+name = "futures-macro"
+version = "0.3.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.15",
+]
+
+[[package]]
+name = "futures-sink"
+version = "0.3.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e"
+
+[[package]]
+name = "futures-task"
+version = "0.3.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65"
+
+[[package]]
+name = "futures-util"
+version = "0.3.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533"
+dependencies = [
+ "futures-core",
+ "futures-macro",
+ "futures-task",
+ "pin-project-lite",
+ "pin-utils",
+ "slab",
+]
+
+[[package]]
+name = "gdk"
+version = "0.16.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa9cb33da481c6c040404a11f8212d193889e9b435db2c14fd86987f630d3ce1"
+dependencies = [
+ "bitflags 1.3.2",
+ "cairo-rs",
+ "gdk-pixbuf",
+ "gdk-sys",
+ "gio",
+ "glib",
+ "libc",
+ "pango",
+]
+
+[[package]]
+name = "gdk-pixbuf"
+version = "0.16.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3578c60dee9d029ad86593ed88cb40f35c1b83360e12498d055022385dd9a05"
+dependencies = [
+ "bitflags 1.3.2",
+ "gdk-pixbuf-sys",
+ "gio",
+ "glib",
+ "libc",
+]
+
+[[package]]
+name = "gdk-pixbuf-sys"
+version = "0.16.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3092cf797a5f1210479ea38070d9ae8a5b8e9f8f1be9f32f4643c529c7d70016"
+dependencies = [
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "gdk-sys"
+version = "0.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d76354f97a913e55b984759a997b693aa7dc71068c9e98bcce51aa167a0a5c5a"
+dependencies = [
+ "cairo-sys-rs",
+ "gdk-pixbuf-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "pango-sys",
+ "pkg-config",
+ "system-deps",
+]
+
+[[package]]
+name = "generic-array"
+version = "0.14.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+dependencies = [
+ "typenum",
+ "version_check",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "libc",
+ "wasi 0.11.0+wasi-snapshot-preview1",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "gif"
+version = "0.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "80792593675e051cf94a4b111980da2ba60d4a83e43e0048c5693baab3977045"
+dependencies = [
+ "color_quant",
+ "weezl",
+]
+
+[[package]]
+name = "gio"
+version = "0.16.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2a1c84b4534a290a29160ef5c6eff2a9c95833111472e824fc5cb78b513dd092"
+dependencies = [
+ "bitflags 1.3.2",
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-util",
+ "gio-sys",
+ "glib",
+ "libc",
+ "once_cell",
+ "pin-project-lite",
+ "smallvec",
+ "thiserror",
+]
+
+[[package]]
+name = "gio-sys"
+version = "0.16.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e9b693b8e39d042a95547fc258a7b07349b1f0b48f4b2fa3108ba3c51c0b5229"
+dependencies = [
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps",
+ "winapi",
+]
+
+[[package]]
+name = "git-version"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6b0decc02f4636b9ccad390dcbe77b722a77efedfa393caf8379a51d5c61899"
+dependencies = [
+ "git-version-macro",
+ "proc-macro-hack",
+]
+
+[[package]]
+name = "git-version-macro"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fe69f1cbdb6e28af2bac214e943b99ce8a0a06b447d15d3e61161b0423139f3f"
+dependencies = [
+ "proc-macro-hack",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "gix-actor"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "848efa0f1210cea8638f95691c82a46f98a74b9e3524f01d4955ebc25a8f84f3"
+dependencies = [
+ "bstr",
+ "btoi",
+ "gix-date",
+ "itoa",
+ "nom",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-config"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d252a0eddb6df74600d3d8872dc9fe98835a7da43110411d705b682f49d4ac1"
+dependencies = [
+ "bstr",
+ "gix-config-value",
+ "gix-features",
+ "gix-glob",
+ "gix-path",
+ "gix-ref",
+ "gix-sec",
+ "log",
+ "memchr",
+ "nom",
+ "once_cell",
+ "smallvec",
+ "thiserror",
+ "unicode-bom",
+]
+
+[[package]]
+name = "gix-config-value"
+version = "0.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "786861e84a5793ad5f863d846de5eb064cd23b87e61ad708c8c402608202e7be"
+dependencies = [
+ "bitflags 2.2.1",
+ "bstr",
+ "gix-path",
+ "libc",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-date"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "99056f37270715f5c7584fd8b46899a2296af9cae92463bf58b8bd1f5a78e553"
+dependencies = [
+ "bstr",
+ "itoa",
+ "thiserror",
+ "time 0.3.21",
+]
+
+[[package]]
+name = "gix-features"
+version = "0.29.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf69b0f5c701cc3ae22d3204b671907668f6437ca88862d355eaf9bc47a4f897"
+dependencies = [
+ "gix-hash",
+ "libc",
+ "sha1_smol",
+ "walkdir",
+]
+
+[[package]]
+name = "gix-fs"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b37a1832f691fdc09910bd267f9a2e413737c1f9ec68c6e31f9e802616278a9"
+dependencies = [
+ "gix-features",
+]
+
+[[package]]
+name = "gix-glob"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c07c98204529ac3f24b34754540a852593d2a4c7349008df389240266627a72a"
+dependencies = [
+ "bitflags 2.2.1",
+ "bstr",
+ "gix-features",
+ "gix-path",
+]
+
+[[package]]
+name = "gix-hash"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "078eec3ac2808cc03f0bddd2704cb661da5c5dc33b41a9d7947b141d499c7c42"
+dependencies = [
+ "hex",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-lock"
+version = "5.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c693d7f05730fa74a7c467150adc7cea393518410c65f0672f80226b8111555"
+dependencies = [
+ "gix-tempfile",
+ "gix-utils",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-object"
+version = "0.29.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c9bb30ce0818d37096daa29efe361a4bc6dd0b51a5726598898be7e9a40a01e1"
+dependencies = [
+ "bstr",
+ "btoi",
+ "gix-actor",
+ "gix-features",
+ "gix-hash",
+ "gix-validate",
+ "hex",
+ "itoa",
+ "nom",
+ "smallvec",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-path"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4fc78f47095a0c15aea0e66103838f0748f4494bf7a9555dfe0f00425400396c"
+dependencies = [
+ "bstr",
+ "home",
+ "once_cell",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-ref"
+version = "0.29.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e03989e9d49954368e1b526578230fc7189d1634acdfbe79e9ba1de717e15d5"
+dependencies = [
+ "gix-actor",
+ "gix-features",
+ "gix-fs",
+ "gix-hash",
+ "gix-lock",
+ "gix-object",
+ "gix-path",
+ "gix-tempfile",
+ "gix-validate",
+ "memmap2",
+ "nom",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-sec"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "794520043d5a024dfeac335c6e520cb616f6963e30dab995892382e998c12897"
+dependencies = [
+ "bitflags 2.2.1",
+ "gix-path",
+ "libc",
+ "windows 0.48.0",
+]
+
+[[package]]
+name = "gix-tempfile"
+version = "5.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d71a0d32f34e71e86586124225caefd78dabc605d0486de580d717653addf182"
+dependencies = [
+ "gix-fs",
+ "libc",
+ "once_cell",
+ "parking_lot",
+ "tempfile",
+]
+
+[[package]]
+name = "gix-utils"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c10b69beac219acb8df673187a1f07dde2d74092f974fb3f9eb385aeb667c909"
+dependencies = [
+ "fastrand",
+]
+
+[[package]]
+name = "gix-validate"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7bd629d3680773e1785e585d76fd4295b740b559cad9141517300d99a0c8c049"
+dependencies = [
+ "bstr",
+ "thiserror",
+]
+
+[[package]]
+name = "glib"
+version = "0.16.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ddd4df61a866ed7259d6189b8bcb1464989a77f1d85d25d002279bbe9dd38b2f"
+dependencies = [
+ "bitflags 1.3.2",
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-task",
+ "futures-util",
+ "gio-sys",
+ "glib-macros",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "once_cell",
+ "smallvec",
+ "thiserror",
+]
+
+[[package]]
+name = "glib-macros"
+version = "0.16.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fb1a9325847aa46f1e96ffea37611b9d51fc4827e67f79e7de502a297560a67b"
+dependencies = [
+ "anyhow",
+ "heck 0.4.1",
+ "proc-macro-crate",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "glib-sys"
+version = "0.16.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c61a4f46316d06bfa33a7ac22df6f0524c8be58e3db2d9ca99ccb1f357b62a65"
+dependencies = [
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "glob"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
+
+[[package]]
+name = "gobject-sys"
+version = "0.16.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3520bb9c07ae2a12c7f2fbb24d4efc11231c8146a86956413fb1a79bb760a0f1"
+dependencies = [
+ "glib-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "gtk"
+version = "0.16.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e4d3507d43908c866c805f74c9dd593c0ce7ba5c38e576e41846639cdcd4bee6"
+dependencies = [
+ "atk",
+ "bitflags 1.3.2",
+ "cairo-rs",
+ "field-offset",
+ "futures-channel",
+ "gdk",
+ "gdk-pixbuf",
+ "gio",
+ "glib",
+ "gtk-sys",
+ "gtk3-macros",
+ "libc",
+ "once_cell",
+ "pango",
+ "pkg-config",
+]
+
+[[package]]
+name = "gtk-sys"
+version = "0.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "89b5f8946685d5fe44497007786600c2f368ff6b1e61a16251c89f72a97520a3"
+dependencies = [
+ "atk-sys",
+ "cairo-sys-rs",
+ "gdk-pixbuf-sys",
+ "gdk-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "pango-sys",
+ "system-deps",
+]
+
+[[package]]
+name = "gtk3-macros"
+version = "0.16.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "096eb63c6fedf03bafe65e5924595785eaf1bcb7200dac0f2cbe9c9738f05ad8"
+dependencies = [
+ "anyhow",
+ "proc-macro-crate",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "half"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "02b4af3693f1b705df946e9fe5631932443781d0aabb423b62fcd4d73f6d2fd0"
+dependencies = [
+ "crunchy",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+
+[[package]]
+name = "heck"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
+dependencies = [
+ "unicode-segmentation",
+]
+
+[[package]]
+name = "heck"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+
+[[package]]
+name = "hermit-abi"
+version = "0.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "hermit-abi"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286"
+
+[[package]]
+name = "hex"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
+
+[[package]]
+name = "hmac"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
+dependencies = [
+ "digest",
+]
+
+[[package]]
+name = "home"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb"
+dependencies = [
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "humantime"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
+
+[[package]]
+name = "iana-time-zone"
+version = "0.1.56"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0722cd7114b7de04316e7ea5456a0bbb20e4adb46fd27a3697adb812cff0f37c"
+dependencies = [
+ "android_system_properties",
+ "core-foundation-sys 0.8.4",
+ "iana-time-zone-haiku",
+ "js-sys",
+ "wasm-bindgen",
+ "windows 0.48.0",
+]
+
+[[package]]
+name = "iana-time-zone-haiku"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca"
+dependencies = [
+ "cxx",
+ "cxx-build",
+]
+
+[[package]]
+name = "idna"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
+dependencies = [
+ "unicode-bidi",
+ "unicode-normalization",
+]
+
+[[package]]
+name = "im"
+version = "15.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d0acd33ff0285af998aaf9b57342af478078f53492322fafc47450e09397e0e9"
+dependencies = [
+ "bitmaps",
+ "rand_core",
+ "rand_xoshiro",
+ "serde",
+ "sized-chunks",
+ "typenum",
+ "version_check",
+]
+
+[[package]]
+name = "image"
+version = "0.24.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "527909aa81e20ac3a44803521443a765550f09b5130c2c2fa1ea59c2f8f50a3a"
+dependencies = [
+ "bytemuck",
+ "byteorder",
+ "color_quant",
+ "exr",
+ "gif",
+ "jpeg-decoder",
+ "num-rational",
+ "num-traits",
+ "png",
+ "qoi",
+ "tiff",
+]
+
+[[package]]
+name = "indexmap"
+version = "1.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
+dependencies = [
+ "autocfg",
+ "hashbrown",
+]
+
+[[package]]
+name = "inout"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "instant"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "intl-memoizer"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c310433e4a310918d6ed9243542a6b83ec1183df95dff8f23f87bb88a264a66f"
+dependencies = [
+ "type-map",
+ "unic-langid",
+]
+
+[[package]]
+name = "intl_pluralrules"
+version = "7.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "078ea7b7c29a2b4df841a7f6ac8775ff6074020c6776d48491ce2268e068f972"
+dependencies = [
+ "unic-langid",
+]
+
+[[package]]
+name = "io-lifetimes"
+version = "1.0.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220"
+dependencies = [
+ "hermit-abi 0.3.1",
+ "libc",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "is-docker"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3"
+dependencies = [
+ "once_cell",
+]
+
+[[package]]
+name = "is-terminal"
+version = "0.4.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f"
+dependencies = [
+ "hermit-abi 0.3.1",
+ "io-lifetimes",
+ "rustix",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "is-wsl"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5"
+dependencies = [
+ "is-docker",
+ "once_cell",
+]
+
+[[package]]
+name = "itertools"
+version = "0.10.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
+
+[[package]]
+name = "jni"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c6df18c2e3db7e453d3c6ac5b3e9d5182664d28788126d39b91f2d1e22b017ec"
+dependencies = [
+ "cesu8",
+ "combine",
+ "jni-sys",
+ "log",
+ "thiserror",
+ "walkdir",
+]
+
+[[package]]
+name = "jni"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "039022cdf4d7b1cf548d31f60ae783138e5fd42013f6271049d7df7afadef96c"
+dependencies = [
+ "cesu8",
+ "combine",
+ "jni-sys",
+ "log",
+ "thiserror",
+ "walkdir",
+]
+
+[[package]]
+name = "jni"
+version = "0.21.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97"
+dependencies = [
+ "cesu8",
+ "cfg-if",
+ "combine",
+ "jni-sys",
+ "log",
+ "thiserror",
+ "walkdir",
+ "windows-sys 0.45.0",
+]
+
+[[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.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "jpeg-decoder"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc0000e42512c92e31c2252315bda326620a4e034105e900c98ec492fa077b3e"
+dependencies = [
+ "rayon",
+]
+
+[[package]]
+name = "js-sys"
+version = "0.3.61"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
+dependencies = [
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "keyboard-types"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b7668b7cff6a51fe61cdde64cd27c8a220786f399501b57ebe36f7d8112fd68"
+dependencies = [
+ "bitflags 1.3.2",
+]
+
+[[package]]
+name = "kurbo"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d676038719d1c892f91e6e85121550143c75880b42f7feff6d413a078cf91fb3"
+dependencies = [
+ "arrayvec",
+ "serde",
+]
+
+[[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 = "lebe"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8"
+
+[[package]]
+name = "libc"
+version = "0.2.143"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edc207893e85c5d6be840e969b496b53d94cec8be2d501b214f50daa97fa8024"
+
+[[package]]
+name = "libdbus-sys"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06085512b750d640299b79be4bad3d2fa90a9c00b1fd9e1b46364f66f0485c72"
+dependencies = [
+ "pkg-config",
+]
+
+[[package]]
+name = "libloading"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f"
+dependencies = [
+ "cfg-if",
+ "winapi",
+]
+
+[[package]]
+name = "libsamplerate"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bcbb68a750265482d1b1f70e3b4505da140c73960f8068726e2fd1ffb792c300"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "link-cplusplus"
+version = "1.0.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "linked-hash-map"
+version = "0.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ece97ea872ece730aed82664c424eb4c8291e1ff2480247ccf7409044bc6479f"
+
+[[package]]
+name = "lock_api"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df"
+dependencies = [
+ "autocfg",
+ "scopeguard",
+]
+
+[[package]]
+name = "log"
+version = "0.4.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "lru-cache"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c"
+dependencies = [
+ "linked-hash-map",
+]
+
+[[package]]
+name = "mach"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "mach2"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d0d1830bcd151a6fc4aea1369af235b36c1528fe976b8ff678683c9995eade8"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "malloc_buf"
+version = "0.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "matches"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5"
+
+[[package]]
+name = "memchr"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+
+[[package]]
+name = "memmap2"
+version = "0.5.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "memoffset"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "minimal-lexical"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+
+[[package]]
+name = "miniz_oxide"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa"
+dependencies = [
+ "adler",
+]
+
+[[package]]
+name = "miniz_oxide"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
+dependencies = [
+ "adler",
+ "simd-adler32",
+]
+
+[[package]]
+name = "nanorand"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3"
+dependencies = [
+ "getrandom",
+]
+
+[[package]]
+name = "ndk"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0"
+dependencies = [
+ "bitflags 1.3.2",
+ "jni-sys",
+ "ndk-sys",
+ "num_enum",
+ "raw-window-handle",
+ "thiserror",
+]
+
+[[package]]
+name = "ndk-context"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b"
+
+[[package]]
+name = "ndk-sys"
+version = "0.4.1+23.1.7779620"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3cf2aae958bd232cac5069850591667ad422d263686d75b52a065f9badeee5a3"
+dependencies = [
+ "jni-sys",
+]
+
+[[package]]
+name = "nix"
+version = "0.24.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069"
+dependencies = [
+ "bitflags 1.3.2",
+ "cfg-if",
+ "libc",
+]
+
+[[package]]
+name = "nom"
+version = "7.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+dependencies = [
+ "memchr",
+ "minimal-lexical",
+]
+
+[[package]]
+name = "nu-ansi-term"
+version = "0.46.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
+dependencies = [
+ "overload",
+ "winapi",
+]
+
+[[package]]
+name = "num-bigint"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f"
+dependencies = [
+ "autocfg",
+ "num-integer",
+ "num-traits",
+ "rand",
+]
+
+[[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 1.0.109",
+]
+
+[[package]]
+name = "num-integer"
+version = "0.1.45"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
+dependencies = [
+ "autocfg",
+ "num-traits",
+]
+
+[[package]]
+name = "num-rational"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
+dependencies = [
+ "autocfg",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "num_cpus"
+version = "1.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
+dependencies = [
+ "hermit-abi 0.2.6",
+ "libc",
+]
+
+[[package]]
+name = "num_enum"
+version = "0.5.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9"
+dependencies = [
+ "num_enum_derive",
+]
+
+[[package]]
+name = "num_enum_derive"
+version = "0.5.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799"
+dependencies = [
+ "proc-macro-crate",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "num_threads"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "objc"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1"
+dependencies = [
+ "malloc_buf",
+]
+
+[[package]]
+name = "oboe"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8868cc237ee02e2d9618539a23a8d228b9bb3fc2e7a5b11eed3831de77c395d0"
+dependencies = [
+ "jni 0.20.0",
+ "ndk",
+ "ndk-context",
+ "num-derive",
+ "num-traits",
+ "oboe-sys",
+]
+
+[[package]]
+name = "oboe-sys"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f44155e7fb718d3cfddcf70690b2b51ac4412f347cd9e4fbe511abe9cd7b5f2"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.17.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
+
+[[package]]
+name = "open"
+version = "4.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d16814a067484415fda653868c9be0ac5f2abd2ef5d951082a5f2fe1b3662944"
+dependencies = [
+ "is-wsl",
+ "pathdiff",
+]
+
+[[package]]
+name = "overload"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
+
+[[package]]
+name = "pango"
+version = "0.16.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cdff66b271861037b89d028656184059e03b0b6ccb36003820be19f7200b1e94"
+dependencies = [
+ "bitflags 1.3.2",
+ "gio",
+ "glib",
+ "libc",
+ "once_cell",
+ "pango-sys",
+]
+
+[[package]]
+name = "pango-sys"
+version = "0.16.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e134909a9a293e04d2cc31928aa95679c5e4df954d0b85483159bd20d8f047f"
+dependencies = [
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "pangocairo"
+version = "0.16.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "16ad2ec87789371b551fd2367c10aa37060412ffd3e60abd99491b21b93a3f9b"
+dependencies = [
+ "bitflags 1.3.2",
+ "cairo-rs",
+ "glib",
+ "libc",
+ "pango",
+ "pangocairo-sys",
+]
+
+[[package]]
+name = "pangocairo-sys"
+version = "0.16.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "848d2df9b7f1a8c7a19d994de443bcbe5d4382610ccb8e64247f932be74fcf76"
+dependencies = [
+ "cairo-sys-rs",
+ "glib-sys",
+ "libc",
+ "pango-sys",
+ "system-deps",
+]
+
+[[package]]
+name = "parking_lot"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
+dependencies = [
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.9.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall 0.2.16",
+ "smallvec",
+ "windows-sys 0.45.0",
+]
+
+[[package]]
+name = "pathdiff"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd"
+
+[[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.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
+
+[[package]]
+name = "piet"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e381186490a3e2017a506d62b759ea8eaf4be14666b13ed53973e8ae193451b1"
+dependencies = [
+ "image",
+ "kurbo",
+ "unic-bidi",
+]
+
+[[package]]
+name = "piet-cairo"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "12dc0b38ac300c79deb9bfc8c7f91a08f2b080338648f7202981094b22321bb9"
+dependencies = [
+ "cairo-rs",
+ "pango",
+ "pangocairo",
+ "piet",
+ "unicode-segmentation",
+ "xi-unicode",
+]
+
+[[package]]
+name = "piet-common"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9dd8497cc0bcfecb1e14e027428c5e3eaf9af6e14761176e1212006d8bdba387"
+dependencies = [
+ "cairo-rs",
+ "cairo-sys-rs",
+ "cfg-if",
+ "core-graphics",
+ "piet",
+ "piet-cairo",
+ "piet-coregraphics",
+ "piet-direct2d",
+ "piet-web",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "piet-coregraphics"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a819b41d2ddb1d8abf3e45e49422f866cba281b4abb5e2fb948bba06e2c3d3f7"
+dependencies = [
+ "associative-cache",
+ "core-foundation",
+ "core-foundation-sys 0.8.4",
+ "core-graphics",
+ "core-text",
+ "foreign-types",
+ "piet",
+]
+
+[[package]]
+name = "piet-direct2d"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd00e91df4f987be40eb13042afe6ee9e54468466bdb7486390b40d4fef0993e"
+dependencies = [
+ "associative-cache",
+ "dwrote",
+ "piet",
+ "utf16_lit",
+ "winapi",
+ "wio",
+]
+
+[[package]]
+name = "piet-web"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3a560232a94e535979923d49062d1c6d5407b3804bcd0d0b4cb9e25a9b41db1e"
+dependencies = [
+ "js-sys",
+ "piet",
+ "unicode-segmentation",
+ "wasm-bindgen",
+ "web-sys",
+ "xi-unicode",
+]
+
+[[package]]
+name = "pin-project"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc"
+dependencies = [
+ "pin-project-internal",
+]
+
+[[package]]
+name = "pin-project-internal"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "pin-project-lite"
+version = "0.2.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
+
+[[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.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964"
+
+[[package]]
+name = "platform-dirs"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e188d043c1a692985f78b5464853a263f1a27e5bd6322bad3a4078ee3c998a38"
+dependencies = [
+ "dirs-next",
+]
+
+[[package]]
+name = "png"
+version = "0.17.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aaeebc51f9e7d2c150d3f3bfeb667f2aa985db5ef1e3d212847bdedb488beeaa"
+dependencies = [
+ "bitflags 1.3.2",
+ "crc32fast",
+ "fdeflate",
+ "flate2",
+ "miniz_oxide 0.7.1",
+]
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+
+[[package]]
+name = "proc-macro-crate"
+version = "1.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
+dependencies = [
+ "once_cell",
+ "toml_edit",
+]
+
+[[package]]
+name = "proc-macro-error"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
+dependencies = [
+ "proc-macro-error-attr",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro-error-attr"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro-hack"
+version = "0.5.20+deprecated"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068"
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.56"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "psst-cli"
+version = "0.1.0"
+dependencies = [
+ "env_logger",
+ "log",
+ "psst-core",
+]
+
+[[package]]
+name = "psst-core"
+version = "0.1.0"
+dependencies = [
+ "aes",
+ "audio_thread_priority",
+ "byteorder",
+ "chrono",
+ "cpal",
+ "crossbeam-channel",
+ "ctr",
+ "cubeb",
+ "git-version",
+ "gix-config",
+ "hmac",
+ "libsamplerate",
+ "log",
+ "num-bigint",
+ "num-traits",
+ "once_cell",
+ "parking_lot",
+ "psst-protocol",
+ "quick-protobuf",
+ "rand",
+ "rangemap",
+ "rb",
+ "serde",
+ "serde_json",
+ "sha-1",
+ "shannon",
+ "socks",
+ "symphonia",
+ "tempfile",
+ "ureq",
+ "url",
+ "windows 0.48.0",
+]
+
+[[package]]
+name = "psst-gui"
+version = "0.1.0"
+dependencies = [
+ "crossbeam-channel",
+ "druid",
+ "druid-enums",
+ "druid-shell",
+ "env_logger",
+ "fs_extra",
+ "image",
+ "itertools",
+ "log",
+ "lru-cache",
+ "once_cell",
+ "open",
+ "parking_lot",
+ "platform-dirs",
+ "psst-core",
+ "rand",
+ "raw-window-handle",
+ "regex",
+ "serde",
+ "serde_json",
+ "souvlaki",
+ "threadpool",
+ "time 0.3.21",
+ "time-humanize",
+ "ureq",
+ "url",
+ "webbrowser",
+ "winres",
+]
+
+[[package]]
+name = "psst-protocol"
+version = "0.1.0"
+dependencies = [
+ "quick-protobuf",
+]
+
+[[package]]
+name = "qoi"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001"
+dependencies = [
+ "bytemuck",
+]
+
+[[package]]
+name = "quick-protobuf"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d6da84cc204722a989e01ba2f6e1e276e190f22263d0cb6ce8526fcdb0d2e1f"
+dependencies = [
+ "byteorder",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom",
+]
+
+[[package]]
+name = "rand_xoshiro"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa"
+dependencies = [
+ "rand_core",
+]
+
+[[package]]
+name = "rangemap"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b9283c6b06096b47afc7109834fdedab891175bb5241ee5d4f7d2546549f263"
+
+[[package]]
+name = "raw-window-handle"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9"
+
+[[package]]
+name = "rayon"
+version = "1.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
+dependencies = [
+ "either",
+ "rayon-core",
+]
+
+[[package]]
+name = "rayon-core"
+version = "1.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
+dependencies = [
+ "crossbeam-channel",
+ "crossbeam-deque",
+ "crossbeam-utils",
+ "num_cpus",
+]
+
+[[package]]
+name = "rb"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56cf8381505b60ae18a4097f1d0be093287ca3bf4fbb23d36ac5ad3bba335daa"
+
+[[package]]
+name = "redox_syscall"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
+dependencies = [
+ "bitflags 1.3.2",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
+dependencies = [
+ "bitflags 1.3.2",
+]
+
+[[package]]
+name = "redox_users"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"
+dependencies = [
+ "getrandom",
+ "redox_syscall 0.2.16",
+ "thiserror",
+]
+
+[[package]]
+name = "regex"
+version = "1.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af83e617f331cc6ae2da5443c602dfa5af81e517212d9d611a5b3ba1777b5370"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
+
+[[package]]
+name = "regex-syntax"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a5996294f19bd3aae0453a862ad728f60e6600695733dd5df01da90c54363a3c"
+
+[[package]]
+name = "ring"
+version = "0.16.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc"
+dependencies = [
+ "cc",
+ "libc",
+ "once_cell",
+ "spin 0.5.2",
+ "untrusted",
+ "web-sys",
+ "winapi",
+]
+
+[[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.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
+dependencies = [
+ "semver",
+]
+
+[[package]]
+name = "rustix"
+version = "0.37.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "acf8729d8542766f1b2cf77eb034d52f40d375bb8b615d0b147089946e16613d"
+dependencies = [
+ "bitflags 1.3.2",
+ "errno",
+ "io-lifetimes",
+ "libc",
+ "linux-raw-sys",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "rustls"
+version = "0.20.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f"
+dependencies = [
+ "log",
+ "ring",
+ "sct",
+ "webpki",
+]
+
+[[package]]
+name = "ryu"
+version = "1.0.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
+
+[[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 = "scopeguard"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+
+[[package]]
+name = "scratch"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1"
+
+[[package]]
+name = "sct"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4"
+dependencies = [
+ "ring",
+ "untrusted",
+]
+
+[[package]]
+name = "self_cell"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1ef965a420fe14fdac7dd018862966a4c14094f900e1650bbc71ddd7d580c8af"
+
+[[package]]
+name = "semver"
+version = "1.0.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed"
+
+[[package]]
+name = "serde"
+version = "1.0.162"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "71b2f6e1ab5c2b98c05f0f35b236b22e8df7ead6ffbf51d7808da7f8817e7ab6"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.162"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2a0814352fd64b58489904a44ea8d90cb1a91dcb6b4f5ebabc32c8318e93cb6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.15",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.96"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1"
+dependencies = [
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_spanned"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0efd8caf556a6cebd3b285caf480045fcc1ac04f6bd786b09a6f11af30c4fcf4"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "sha-1"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "digest",
+]
+
+[[package]]
+name = "sha1_smol"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012"
+
+[[package]]
+name = "shannon"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ea5b41c9427b56caa7b808cb548a04fb50bb5b9e98590b53f28064ff4174561"
+dependencies = [
+ "byteorder",
+]
+
+[[package]]
+name = "sharded-slab"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31"
+dependencies = [
+ "lazy_static",
+]
+
+[[package]]
+name = "shlex"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3"
+
+[[package]]
+name = "simd-adler32"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "238abfbb77c1915110ad968465608b68e869e0772622c9656714e73e5a1a522f"
+
+[[package]]
+name = "sized-chunks"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "16d69225bde7a69b235da73377861095455d298f2b970996eec25ddbb42b3d1e"
+dependencies = [
+ "bitmaps",
+ "typenum",
+]
+
+[[package]]
+name = "slab"
+version = "0.4.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "smallvec"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
+
+[[package]]
+name = "socks"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f0c3dbbd9ae980613c6dd8e28a9407b50509d3803b57624d5dfe8315218cd58b"
+dependencies = [
+ "byteorder",
+ "libc",
+ "winapi",
+]
+
+[[package]]
+name = "souvlaki"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d38261efc06252ecdb5874507378369a2d3f948c13be2bf63d329c5be915ca0f"
+dependencies = [
+ "block",
+ "cocoa",
+ "core-graphics",
+ "dbus",
+ "dbus-crossroads",
+ "dispatch",
+ "objc",
+ "windows 0.44.0",
+]
+
+[[package]]
+name = "spin"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
+
+[[package]]
+name = "spin"
+version = "0.9.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
+dependencies = [
+ "lock_api",
+]
+
+[[package]]
+name = "subtle"
+version = "2.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601"
+
+[[package]]
+name = "symphonia"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3671dd6f64f4f9d5c87179525054cfc1f60de23ba1f193bd6ceab812737403f1"
+dependencies = [
+ "lazy_static",
+ "symphonia-bundle-mp3",
+ "symphonia-codec-vorbis",
+ "symphonia-core",
+ "symphonia-format-ogg",
+ "symphonia-metadata",
+]
+
+[[package]]
+name = "symphonia-bundle-mp3"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "55a0846e7a2c9a8081ff799fc83a975170417ad2a143f644a77ec2e3e82a2b73"
+dependencies = [
+ "bitflags 1.3.2",
+ "lazy_static",
+ "log",
+ "symphonia-core",
+ "symphonia-metadata",
+]
+
+[[package]]
+name = "symphonia-codec-vorbis"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7dfed6f7b6bfa21d7cef1acefc8eae5db80df1608a1aca91871b07cbd28d7b74"
+dependencies = [
+ "log",
+ "symphonia-core",
+ "symphonia-utils-xiph",
+]
+
+[[package]]
+name = "symphonia-core"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6b9567e2d8a5f866b2f94f5d366d811e0c6826babcff6d37de9e1a6690d38869"
+dependencies = [
+ "arrayvec",
+ "bitflags 1.3.2",
+ "bytemuck",
+ "lazy_static",
+ "log",
+]
+
+[[package]]
+name = "symphonia-format-ogg"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "474df6e86b871dcb56913130bada1440245f483057c4a2d8a2981455494c4439"
+dependencies = [
+ "log",
+ "symphonia-core",
+ "symphonia-metadata",
+ "symphonia-utils-xiph",
+]
+
+[[package]]
+name = "symphonia-metadata"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "acd35c263223ef6161000be79b124a75de3e065eea563bf3ef169b3e94c7bb2e"
+dependencies = [
+ "encoding_rs",
+ "lazy_static",
+ "log",
+ "symphonia-core",
+]
+
+[[package]]
+name = "symphonia-utils-xiph"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce340a6c33ac06cb42de01220308ec056e8a2a3d5cc664aaf34567392557136b"
+dependencies = [
+ "symphonia-core",
+ "symphonia-metadata",
+]
+
+[[package]]
+name = "syn"
+version = "1.0.109"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "system-deps"
+version = "6.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d0fe581ad25d11420b873cf9aedaca0419c2b411487b134d4d21065f3d092055"
+dependencies = [
+ "cfg-expr",
+ "heck 0.4.1",
+ "pkg-config",
+ "toml 0.7.3",
+ "version-compare",
+]
+
+[[package]]
+name = "target-lexicon"
+version = "0.12.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fd1ba337640d60c3e96bc6f0638a939b9c9a7f2c316a1598c279828b3d1dc8c5"
+
+[[package]]
+name = "tempfile"
+version = "3.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998"
+dependencies = [
+ "cfg-if",
+ "fastrand",
+ "redox_syscall 0.3.5",
+ "rustix",
+ "windows-sys 0.45.0",
+]
+
+[[package]]
+name = "termcolor"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.15",
+]
+
+[[package]]
+name = "thread_local"
+version = "1.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+]
+
+[[package]]
+name = "threadpool"
+version = "1.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa"
+dependencies = [
+ "num_cpus",
+]
+
+[[package]]
+name = "tiff"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7449334f9ff2baf290d55d73983a7d6fa15e01198faef72af07e2a8db851e471"
+dependencies = [
+ "flate2",
+ "jpeg-decoder",
+ "weezl",
+]
+
+[[package]]
+name = "time"
+version = "0.1.45"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a"
+dependencies = [
+ "libc",
+ "wasi 0.10.0+wasi-snapshot-preview1",
+ "winapi",
+]
+
+[[package]]
+name = "time"
+version = "0.3.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f3403384eaacbca9923fa06940178ac13e4edb725486d70e8e15881d0c836cc"
+dependencies = [
+ "itoa",
+ "libc",
+ "num_threads",
+ "serde",
+ "time-core",
+ "time-macros",
+]
+
+[[package]]
+name = "time-core"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb"
+
+[[package]]
+name = "time-humanize"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3e32d019b4f7c100bcd5494e40a27119d45b71fba2b07a4684153129279a4647"
+
+[[package]]
+name = "time-macros"
+version = "0.2.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "372950940a5f07bf38dbe211d7283c9e6d7327df53794992d293e534c733d09b"
+dependencies = [
+ "time-core",
+]
+
+[[package]]
+name = "tinystr"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ac3f5b6856e931e15e07b478e98c8045239829a65f9156d4fa7e7788197a5ef"
+dependencies = [
+ "displaydoc",
+]
+
+[[package]]
+name = "tinyvec"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+dependencies = [
+ "tinyvec_macros",
+]
+
+[[package]]
+name = "tinyvec_macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+
+[[package]]
+name = "toml"
+version = "0.5.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b403acf6f2bb0859c93c7f0d967cb4a75a7ac552100f9322faf64dc047669b21"
+dependencies = [
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "toml_edit",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.19.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
+dependencies = [
+ "indexmap",
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "winnow",
+]
+
+[[package]]
+name = "tracing"
+version = "0.1.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
+dependencies = [
+ "cfg-if",
+ "pin-project-lite",
+ "tracing-attributes",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-attributes"
+version = "0.1.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0f57e3ca2a01450b1a921183a9c9cbfda207fd822cef4ccb00a65402cbba7a74"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.15",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a"
+dependencies = [
+ "once_cell",
+]
+
+[[package]]
+name = "tracing-subscriber"
+version = "0.3.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77"
+dependencies = [
+ "nu-ansi-term",
+ "sharded-slab",
+ "thread_local",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-wasm"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4575c663a174420fa2d78f4108ff68f65bf2fbb7dd89f33749b6e826b3626e07"
+dependencies = [
+ "tracing",
+ "tracing-subscriber",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "type-map"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6d3364c5e96cb2ad1603037ab253ddd34d7fb72a58bdddf4b7350760fc69a46"
+dependencies = [
+ "rustc-hash",
+]
+
+[[package]]
+name = "typenum"
+version = "1.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba"
+
+[[package]]
+name = "unic-bidi"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1356b759fb6a82050666f11dce4b6fe3571781f1449f3ef78074e408d468ec09"
+dependencies = [
+ "matches",
+ "unic-ucd-bidi",
+]
+
+[[package]]
+name = "unic-char-property"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221"
+dependencies = [
+ "unic-char-range",
+]
+
+[[package]]
+name = "unic-char-range"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc"
+
+[[package]]
+name = "unic-common"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc"
+
+[[package]]
+name = "unic-langid"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "398f9ad7239db44fd0f80fe068d12ff22d78354080332a5077dc6f52f14dcf2f"
+dependencies = [
+ "unic-langid-impl",
+]
+
+[[package]]
+name = "unic-langid-impl"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e35bfd2f2b8796545b55d7d3fd3e89a0613f68a0d1c8bc28cb7ff96b411a35ff"
+dependencies = [
+ "tinystr",
+]
+
+[[package]]
+name = "unic-ucd-bidi"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d1d568b51222484e1f8209ce48caa6b430bf352962b877d592c29ab31fb53d8c"
+dependencies = [
+ "unic-char-property",
+ "unic-char-range",
+ "unic-ucd-version",
+]
+
+[[package]]
+name = "unic-ucd-version"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4"
+dependencies = [
+ "unic-common",
+]
+
+[[package]]
+name = "unicode-bidi"
+version = "0.3.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
+
+[[package]]
+name = "unicode-bom"
+version = "2.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "98e90c70c9f0d4d1ee6d0a7d04aa06cb9bbd53d8cfbdd62a0269a7c2eb640552"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
+
+[[package]]
+name = "unicode-normalization"
+version = "0.1.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
+dependencies = [
+ "tinyvec",
+]
+
+[[package]]
+name = "unicode-segmentation"
+version = "1.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
+
+[[package]]
+name = "unicode-width"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
+
+[[package]]
+name = "untrusted"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a"
+
+[[package]]
+name = "ureq"
+version = "2.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "338b31dd1314f68f3aabf3ed57ab922df95ffcd902476ca7ba3c4ce7b908c46d"
+dependencies = [
+ "base64",
+ "flate2",
+ "log",
+ "once_cell",
+ "rustls",
+ "serde",
+ "serde_json",
+ "socks",
+ "url",
+ "webpki",
+ "webpki-roots",
+]
+
+[[package]]
+name = "url"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
+dependencies = [
+ "form_urlencoded",
+ "idna",
+ "percent-encoding",
+]
+
+[[package]]
+name = "utf16_lit"
+version = "2.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "14706d2a800ee8ff38c1d3edb873cd616971ea59eb7c0d046bb44ef59b06a1ae"
+
+[[package]]
+name = "version-compare"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29"
+
+[[package]]
+name = "version_check"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+
+[[package]]
+name = "walkdir"
+version = "2.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
+dependencies = [
+ "same-file",
+ "winapi-util",
+]
+
+[[package]]
+name = "wasi"
+version = "0.10.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f"
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.84"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
+dependencies = [
+ "cfg-if",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.84"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
+dependencies = [
+ "bumpalo",
+ "log",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-futures"
+version = "0.4.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.84"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.84"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.84"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
+
+[[package]]
+name = "web-sys"
+version = "0.3.61"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "webbrowser"
+version = "0.8.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b692165700260bbd40fbc5ff23766c03e339fbaca907aeea5cb77bf0a553ca83"
+dependencies = [
+ "core-foundation",
+ "dirs",
+ "jni 0.21.1",
+ "log",
+ "ndk-context",
+ "objc",
+ "raw-window-handle",
+ "url",
+ "web-sys",
+]
+
+[[package]]
+name = "webpki"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd"
+dependencies = [
+ "ring",
+ "untrusted",
+]
+
+[[package]]
+name = "webpki-roots"
+version = "0.22.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87"
+dependencies = [
+ "webpki",
+]
+
+[[package]]
+name = "weezl"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb"
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-util"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+dependencies = [
+ "winapi",
+]
+
+[[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 = "windows"
+version = "0.44.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e745dab35a0c4c77aa3ce42d595e13d2003d6902d6b08c9ef5fc326d08da12b"
+dependencies = [
+ "windows-targets 0.42.2",
+]
+
+[[package]]
+name = "windows"
+version = "0.46.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cdacb41e6a96a052c6cb63a144f24900236121c6f63f4f8219fef5977ecb0c25"
+dependencies = [
+ "windows-targets 0.42.2",
+]
+
+[[package]]
+name = "windows"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f"
+dependencies = [
+ "windows-targets 0.48.0",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.45.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
+dependencies = [
+ "windows-targets 0.42.2",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+dependencies = [
+ "windows-targets 0.48.0",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
+dependencies = [
+ "windows_aarch64_gnullvm 0.42.2",
+ "windows_aarch64_msvc 0.42.2",
+ "windows_i686_gnu 0.42.2",
+ "windows_i686_msvc 0.42.2",
+ "windows_x86_64_gnu 0.42.2",
+ "windows_x86_64_gnullvm 0.42.2",
+ "windows_x86_64_msvc 0.42.2",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5"
+dependencies = [
+ "windows_aarch64_gnullvm 0.48.0",
+ "windows_aarch64_msvc 0.48.0",
+ "windows_i686_gnu 0.48.0",
+ "windows_i686_msvc 0.48.0",
+ "windows_x86_64_gnu 0.48.0",
+ "windows_x86_64_gnullvm 0.48.0",
+ "windows_x86_64_msvc 0.48.0",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
+
+[[package]]
+name = "winnow"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61de7bac303dc551fe038e2b3cef0f571087a47571ea6e79a87692ac99b99699"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "winres"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b68db261ef59e9e52806f688020631e987592bd83619edccda9c47d42cde4f6c"
+dependencies = [
+ "toml 0.5.11",
+]
+
+[[package]]
+name = "wio"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d129932f4644ac2396cb456385cbf9e63b5b30c6e8dc4820bdca4eb082037a5"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "xi-unicode"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a67300977d3dc3f8034dae89778f502b6ba20b269527b3223ba59c0cf393bb8a"
+
+[[package]]
+name = "zune-inflate"
+version = "0.2.54"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02"
+dependencies = [
+ "simd-adler32",
+]
diff --git a/nixpkgs/pkgs/applications/audio/psst/default.nix b/nixpkgs/pkgs/applications/audio/psst/default.nix
index 5d41661b6d53..235ca89ed216 100644
--- a/nixpkgs/pkgs/applications/audio/psst/default.nix
+++ b/nixpkgs/pkgs/applications/audio/psst/default.nix
@@ -1,17 +1,38 @@
-{ lib, fetchFromGitHub, rustPlatform, alsa-lib, atk, cairo, dbus, gdk-pixbuf, glib, gtk3, pango, pkg-config }:
+{ lib, fetchFromGitHub, rustPlatform, alsa-lib, atk, cairo, dbus, gdk-pixbuf, glib, gtk3, pango, pkg-config, makeDesktopItem }:
 
+let
+  desktopItem = makeDesktopItem {
+    name = "Psst";
+    exec = "psst-gui";
+    comment = "Fast and multi-platform Spotify client with native GUI";
+    desktopName = "Psst";
+    type = "Application";
+    categories = [ "Audio" "AudioVideo" ];
+    icon = "psst";
+    terminal = false;
+    startupWMClass = "psst-gui";
+  };
+
+in
 rustPlatform.buildRustPackage rec {
   pname = "psst";
-  version = "unstable-2022-05-19";
+  version = "unstable-2023-05-13";
 
   src = fetchFromGitHub {
     owner = "jpochyla";
     repo = pname;
-    rev = "e403609e0916fe664fb1f28c7a259d01fa69b0e9";
-    sha256 = "sha256-hpAP/m9aJsfh9FtwLqaKFZllnCQn9OSYLWuNZakZJnk=";
+    rev = "f94af14aa9fdd3d59cd92849fa7f076103b37a70";
+    hash = "sha256-Cmpdyec1xe7j10LDm+iCaKlBICHkmmbhKz2nDeOFOF8=";
   };
 
-  cargoSha256 = "sha256-gQ0iI2wTS5n5pItmQCmFXDs5L8nA2w5ZrZyZtpMlUro=";
+  cargoLock = {
+    lockFile = ./Cargo.lock;
+    outputHashes = {
+      "cubeb-0.10.3" = "sha256-3eHW+kIJydF6nF0EkB/vglOvksfol+xIKoqFsKg3omI=";
+      "druid-0.8.3" = "sha256-hTB9PQf2TAhcLr64VjjQIr18mczwcNogDSRSN5dQULA=";
+      "druid-enums-0.1.0" = "sha256-KJvAgKxicx/g+4QRZq3iHt6MGVQbfOpyN+EhS6CyDZk=";
+    };
+  };
   # specify the subdirectory of the binary crate to build from the workspace
   buildAndTestSubdir = "psst-gui";
 
@@ -28,10 +49,20 @@ rustPlatform.buildRustPackage rec {
     pango
   ];
 
+  patches = [
+    # Use a fixed build time, hard-code upstream URL instead of trying to read `.git`
+    ./make-build-reproducible.patch
+  ];
+
   postInstall = ''
-    install -Dm444 psst-gui/assets/logo_512.png $out/share/icons/${pname}.png
+    install -Dm444 psst-gui/assets/logo_512.png $out/share/icons/hicolor/512x512/apps/${pname}.png
+    install -Dm444 -t $out/share/applications ${desktopItem}/share/applications/*
   '';
 
+  passthru = {
+    updateScript = ./update.sh;
+  };
+
   meta = with lib; {
     description = "Fast and multi-platform Spotify client with native GUI";
     homepage = "https://github.com/jpochyla/psst";
diff --git a/nixpkgs/pkgs/applications/audio/psst/make-build-reproducible.patch b/nixpkgs/pkgs/applications/audio/psst/make-build-reproducible.patch
new file mode 100644
index 000000000000..0c68b621b65c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/psst/make-build-reproducible.patch
@@ -0,0 +1,59 @@
+diff --git a/psst-core/build.rs b/psst-core/build.rs
+deleted file mode 100644
+index 1057827..0000000
+--- a/psst-core/build.rs
++++ /dev/null
+@@ -1,37 +0,0 @@
+-use std::{env, fs, io::Write};
+-
+-fn main() {
+-    let outdir = env::var("OUT_DIR").unwrap();
+-    let outfile = format!("{}/build-time.txt", outdir);
+-
+-    let mut fh = fs::File::create(outfile).unwrap();
+-    write!(fh, r#""{}""#, chrono::Local::now()).ok();
+-
+-    let git_config = gix_config::File::from_git_dir("../.git/").expect("Git Config not found!");
+-    // Get Git's 'Origin' URL
+-    let mut remote_url = git_config
+-        .raw_value("remote", Some("origin".as_ref()), "url")
+-        .expect("Couldn't extract origin url!")
+-        .to_string();
+-    // Check whether origin is accessed via ssh
+-    if remote_url.contains('@') {
+-        // If yes, strip the `git@` prefix and split the domain and path
+-        let mut split = remote_url
+-            .strip_prefix("git@")
+-            .unwrap_or(&remote_url)
+-            .split(':');
+-        let domain = split
+-            .next()
+-            .expect("Couldn't extract domain from ssh-style origin");
+-        let path = split
+-            .next()
+-            .expect("Couldn't expect path from ssh-style origin");
+-
+-        // And construct the http-style url
+-        remote_url = format!("https://{domain}/{path}");
+-    }
+-    remote_url = remote_url.trim_end_matches(".git").to_owned();
+-    let outfile = format!("{}/remote-url.txt", outdir);
+-    let mut file = fs::File::create(outfile).unwrap();
+-    write!(file, r#""{}""#, remote_url).ok();
+-}
+diff --git a/psst-core/src/lib.rs b/psst-core/src/lib.rs
+index fcbd491..2d71ee3 100644
+--- a/psst-core/src/lib.rs
++++ b/psst-core/src/lib.rs
+@@ -3,8 +3,8 @@
+ use git_version::git_version;
+ 
+-pub const GIT_VERSION: &str = git_version!();
+-pub const BUILD_TIME: &str = include!(concat!(env!("OUT_DIR"), "/build-time.txt"));
+-pub const REMOTE_URL: &str = include!(concat!(env!("OUT_DIR"), "/remote-url.txt"));
++pub const GIT_VERSION: &str = "f94af14aa9fdd3d59cd92849fa7f076103b37a70";
++pub const BUILD_TIME: &str = "1970-01-01 00:00:00";
++pub const REMOTE_URL: &str = "https://github.com/jpochyla/psst";
+ 
+ pub mod actor;
+ pub mod audio;
diff --git a/nixpkgs/pkgs/applications/audio/psst/update.sh b/nixpkgs/pkgs/applications/audio/psst/update.sh
new file mode 100755
index 000000000000..9671ccab0262
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/psst/update.sh
@@ -0,0 +1,44 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p nix wget nix-prefetch-github jq coreutils
+
+# shellcheck shell=bash
+
+if [ -n "$GITHUB_TOKEN" ]; then
+    TOKEN_ARGS=(--header "Authorization: token $GITHUB_TOKEN")
+fi
+
+if [[ $# -gt 1 || $1 == -* ]]; then
+    echo "Regenerates packaging data for psst."
+    echo "Usage: $0 [git commit]"
+    exit 1
+fi
+
+set -x
+
+cd "$(dirname "$0")"
+rev="$1"
+
+set -euo pipefail
+
+if [ -z "$rev" ]; then
+    rev="$(wget -O- "${TOKEN_ARGS[@]}" "https://api.github.com/repos/jpochyla/psst/commits?per_page=1" | jq -r '.[0].sha')"
+fi
+
+version="unstable-$(date +%F)"
+
+# Sources
+src_hash=$(nix-prefetch-github jpochyla psst --rev "$rev" | jq -r .sha256)
+
+# Cargo.lock
+src="https://raw.githubusercontent.com/jpochyla/psst/$rev"
+wget "${TOKEN_ARGS[@]}" "$src/Cargo.lock" -O Cargo.lock
+
+# Use friendlier hashes
+src_hash=$(nix hash to-sri --type sha256 "$src_hash")
+
+sed -i -E -e "s#version = \".*\"#version = \"$version\"#" default.nix
+sed -i -E -e "s#rev = \".*\"#rev = \"$rev\"#" default.nix
+sed -i -E -e "s#hash = \".*\"#hash = \"$src_hash\"#" default.nix
+
+# Also update the git hash shown in the UI
+sed -i -E -e "s#GIT_VERSION = \".*\"#GIT_VERSION = \"$rev\"#" make-build-reproducible.patch
diff --git a/nixpkgs/pkgs/applications/audio/pt2-clone/default.nix b/nixpkgs/pkgs/applications/audio/pt2-clone/default.nix
index c51d50fdc42b..61cc703bb0ce 100644
--- a/nixpkgs/pkgs/applications/audio/pt2-clone/default.nix
+++ b/nixpkgs/pkgs/applications/audio/pt2-clone/default.nix
@@ -8,13 +8,13 @@
 
 stdenv.mkDerivation rec {
   pname = "pt2-clone";
-  version = "1.50";
+  version = "1.58";
 
   src = fetchFromGitHub {
     owner = "8bitbubsy";
     repo = "pt2-clone";
     rev = "v${version}";
-    sha256 = "sha256-IZakhYVtVXmcKwUMl/v1w6Huu5XWQfaBCatTN4hQAbM=";
+    sha256 = "sha256-5i892C5aJWgouIgD3FkojJfEhN08Jf1d7HDMvdT82aU=";
   };
 
   nativeBuildInputs = [ cmake ];
diff --git a/nixpkgs/pkgs/applications/audio/ptcollab/default.nix b/nixpkgs/pkgs/applications/audio/ptcollab/default.nix
index b2faf62b0fe0..9f35ea4c4e71 100644
--- a/nixpkgs/pkgs/applications/audio/ptcollab/default.nix
+++ b/nixpkgs/pkgs/applications/audio/ptcollab/default.nix
@@ -13,13 +13,13 @@
 
 mkDerivation rec {
   pname = "ptcollab";
-  version = "0.6.1.1";
+  version = "0.6.4.5";
 
   src = fetchFromGitHub {
     owner = "yuxshao";
     repo = "ptcollab";
     rev = "v${version}";
-    sha256 = "sha256-ydn3qKOK0GwA/mBPbGwSIac09b9cz6YOFbuDFFV8jJs=";
+    sha256 = "sha256-O7CNPMS0eRcqt2xAtyEFyLSV8U2xbxuV1DpBxZAFwQs=";
   };
 
   nativeBuildInputs = [ qmake pkg-config ];
@@ -38,9 +38,7 @@ mkDerivation rec {
   '';
 
   passthru = {
-    updateScript = nix-update-script {
-      attrPath = pname;
-    };
+    updateScript = nix-update-script { };
   };
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/applications/audio/puddletag/default.nix b/nixpkgs/pkgs/applications/audio/puddletag/default.nix
index 7af273564293..128d5c59c78e 100644
--- a/nixpkgs/pkgs/applications/audio/puddletag/default.nix
+++ b/nixpkgs/pkgs/applications/audio/puddletag/default.nix
@@ -1,4 +1,8 @@
-{ lib, fetchFromGitHub, python3Packages, wrapQtAppsHook }:
+{ lib
+, fetchFromGitHub
+, python3
+, wrapQtAppsHook
+}:
 
 # As of 2.1, puddletag has started pinning versions of all dependencies that it
 # was built against which is an issue as the chances of us having the exact same
@@ -14,18 +18,11 @@
 # ignoring the pinned versions, it's just something we will have to accept
 # unless we want to vendor those versions.
 
-let
-  # NOTE: check if we can drop any of these overrides when bumping the version
-  overrideVersions = [
-    "lxml"
-    "pyparsing"
-    "pyqt5"
-  ];
 
-in
-python3Packages.buildPythonApplication rec {
+python3.pkgs.buildPythonApplication rec {
   pname = "puddletag";
   version = "2.2.0";
+  format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "puddletag";
@@ -34,33 +31,38 @@ python3Packages.buildPythonApplication rec {
     hash = "sha256-KaFfpOWI9u2ZC/3kuCLneWOOKSmAaIuHPFHptkKMH/g=";
   };
 
+  pythonRelaxDeps = true;
+
+  pythonRemoveDeps = [
+    "chromaprint"
+    "pyqt5-qt5"
+  ];
+
   postPatch = ''
     substituteInPlace setup.py \
       --replace share/pixmaps share/icons
+  '';
 
-    cp requirements.in requirements.txt
-  '' + lib.concatMapStringsSep "\n"
-    (e: ''
-      sed -i requirements.txt -e 's/^${e}.*/${e}/'
-    '')
-    overrideVersions;
-
-  nativeBuildInputs = [ wrapQtAppsHook ];
+  nativeBuildInputs = [
+    python3.pkgs.pythonRelaxDepsHook
+    wrapQtAppsHook
+  ];
 
-  propagatedBuildInputs = with python3Packages; [
-    pyacoustid
-    chromaprint
+  propagatedBuildInputs = with python3.pkgs; [
     configobj
     levenshtein
     lxml
     mutagen
+    pyacoustid
     pyparsing
     pyqt5
     rapidfuzz
   ];
 
+  # the file should be executable but it isn't so our wrapper doesn't run
   preFixup = ''
-    makeWrapperArgs+=("''${qtWrapperArgs[@]}")
+    chmod 555 $out/bin/puddletag
+    wrapQtApp $out/bin/puddletag
   '';
 
   doCheck = false; # there are no tests
diff --git a/nixpkgs/pkgs/applications/audio/pulseaudio-dlna/default.nix b/nixpkgs/pkgs/applications/audio/pulseaudio-dlna/default.nix
index 384718f1db54..5358750b13e2 100644
--- a/nixpkgs/pkgs/applications/audio/pulseaudio-dlna/default.nix
+++ b/nixpkgs/pkgs/applications/audio/pulseaudio-dlna/default.nix
@@ -43,7 +43,7 @@ python3Packages.buildPythonApplication {
     notify2
     pyroute2
     pygobject3
-    PyChromecast
+    pychromecast
     lxml
     setuptools
     zeroconf
diff --git a/nixpkgs/pkgs/applications/audio/pulseeffects-legacy/default.nix b/nixpkgs/pkgs/applications/audio/pulseeffects-legacy/default.nix
index 2a775369d26a..7d255b7a71e2 100644
--- a/nixpkgs/pkgs/applications/audio/pulseeffects-legacy/default.nix
+++ b/nixpkgs/pkgs/applications/audio/pulseeffects-legacy/default.nix
@@ -45,13 +45,13 @@ let
   ];
 in stdenv.mkDerivation rec {
   pname = "pulseeffects";
-  version = "4.8.4";
+  version = "4.8.7";
 
   src = fetchFromGitHub {
     owner = "wwmm";
     repo = "pulseeffects";
     rev = "v${version}";
-    sha256 = "19sndxvszafbd1l2033g2irpx2jrwi5bpbx8r35047wi0z7djiag";
+    sha256 = "sha256-ldvcA8aTHOgaascH6MF4CzmJ8I2rYOiR0eAkCZzvK/M=";
   };
 
   nativeBuildInputs = [
@@ -110,6 +110,5 @@ in stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ ];
     platforms = platforms.linux;
-    badPlatforms = [ "aarch64-linux" ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/pyradio/default.nix b/nixpkgs/pkgs/applications/audio/pyradio/default.nix
index 9309ea2f8152..2fc911222da9 100644
--- a/nixpkgs/pkgs/applications/audio/pyradio/default.nix
+++ b/nixpkgs/pkgs/applications/audio/pyradio/default.nix
@@ -1,17 +1,23 @@
-{ lib, python3Packages, fetchFromGitHub, installShellFiles }:
+{ lib
+, python3Packages
+, fetchFromGitHub
+, installShellFiles
+}:
 
 python3Packages.buildPythonApplication rec {
   pname = "pyradio";
-  version = "0.8.9.22";
+  version = "0.9.1";
 
   src = fetchFromGitHub {
     owner = "coderholic";
     repo = pname;
     rev = "refs/tags/${version}";
-    sha256 = "sha256-QBgXg2SNEQX1ngY+cEWqStC0zsFZ0Er81tuhTszbHWM=";
+    hash = "sha256-tu/qlrbTcUCIRF15x9ATKHH+LDy1OsGJpo5x+CerTKg=";
   };
 
-  nativeBuildInputs = [ installShellFiles ];
+  nativeBuildInputs = [
+    installShellFiles
+  ];
 
   propagatedBuildInputs = with python3Packages; [
     requests
@@ -30,6 +36,7 @@ python3Packages.buildPythonApplication rec {
   meta = with lib; {
     homepage = "http://www.coderholic.com/pyradio/";
     description = "Curses based internet radio player";
+    changelog = "https://github.com/coderholic/pyradio/releases/tag/${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ contrun ];
   };
diff --git a/nixpkgs/pkgs/applications/audio/qjackctl/default.nix b/nixpkgs/pkgs/applications/audio/qjackctl/default.nix
index 6c7bfff86b1b..140fb9fef0c5 100644
--- a/nixpkgs/pkgs/applications/audio/qjackctl/default.nix
+++ b/nixpkgs/pkgs/applications/audio/qjackctl/default.nix
@@ -5,7 +5,7 @@
 }:
 
 mkDerivation rec {
-  version = "0.9.6";
+  version = "0.9.10";
   pname = "qjackctl";
 
   # some dependencies such as killall have to be installed additionally
@@ -13,8 +13,8 @@ mkDerivation rec {
   src = fetchFromGitHub {
     owner = "rncbc";
     repo = "qjackctl";
-    rev = "${pname}_${lib.replaceChars ["."] ["_"] version}";
-    sha256 = "sha256-8oVnUe+/y4p1WeHMEhKMIl0/ax3PT0pN4f1UJaBmZBw=";
+    rev = "${pname}_${lib.replaceStrings ["."] ["_"] version}";
+    sha256 = "sha256-XF5v+VgSCqqV2ft9qw1NTNzeYOv1OuhljJGdgikPLEo=";
   };
 
   buildInputs = [
diff --git a/nixpkgs/pkgs/applications/audio/qmidiarp/default.nix b/nixpkgs/pkgs/applications/audio/qmidiarp/default.nix
index 487f86cf660f..4c2de70efc0f 100644
--- a/nixpkgs/pkgs/applications/audio/qmidiarp/default.nix
+++ b/nixpkgs/pkgs/applications/audio/qmidiarp/default.nix
@@ -1,6 +1,5 @@
 { lib, stdenv
 , fetchgit
-, automake
 , autoreconfHook
 , lv2
 , pkg-config
@@ -11,11 +10,11 @@
 
 stdenv.mkDerivation rec {
   pname = "qmidiarp";
-  version = "0.6.5";
+  version = "0.7.0";
 
   src = fetchgit {
     url = "https://git.code.sf.net/p/qmidiarp/code";
-    sha256 = "1g2143gzfbihqr2zi3k2v1yn1x3mwfbb2khmcd4m4cq3hcwhhlx9";
+    sha256 = "sha256-oUdgff2xsXTis+C2Blv0tspWNIMGSODrKxWDpMDYnEU=";
     rev = "qmidiarp-${version}";
   };
 
@@ -41,7 +40,7 @@ stdenv.mkDerivation rec {
       parallel.
     '';
 
-    homepage = "http://qmidiarp.sourceforge.net";
+    homepage = "https://qmidiarp.sourceforge.net";
     license = licenses.gpl2;
     platforms = platforms.linux;
     maintainers = with maintainers; [ sjfloat ];
diff --git a/nixpkgs/pkgs/applications/audio/qmmp/default.nix b/nixpkgs/pkgs/applications/audio/qmmp/default.nix
index bed02f77e7b2..35b1b26a1974 100644
--- a/nixpkgs/pkgs/applications/audio/qmmp/default.nix
+++ b/nixpkgs/pkgs/applications/audio/qmmp/default.nix
@@ -1,22 +1,18 @@
-{ lib, mkDerivation, fetchurl, cmake, pkg-config, xlibsWrapper
-, qtbase, qttools, qtmultimedia, qtx11extras
+{ lib, stdenv, fetchurl, cmake, pkg-config
+, qtbase, qttools, qtmultimedia, wrapQtAppsHook
 # transports
 , curl, libmms
 # input plugins
 , libmad, taglib, libvorbis, libogg, flac, libmpcdec, libmodplug, libsndfile
-, libcdio, cdparanoia, libcddb, faad2, ffmpeg, wildmidi
+, libcdio, cdparanoia, libcddb, faad2, ffmpeg, wildmidi, libbs2b, game-music-emu
+, libarchive, opusfile, soxr, wavpack
 # output plugins
-, alsa-lib, libpulseaudio
+, alsa-lib, libpulseaudio, pipewire, libjack2
 # effect plugins
 , libsamplerate
 }:
 
 # Additional plugins that can be added:
-#  wavpack (https://www.wavpack.com/)
-#  gme (Game music support)
-#  Ogg Opus support
-#  BS2B effect plugin (http://bs2b.sourceforge.net/)
-#  JACK audio support
 #  ProjectM visualization plugin
 
 # To make MIDI work we must tell Qmmp what instrument configuration to use (and
@@ -28,26 +24,28 @@
 # Qmmp installs working .desktop file(s) all by itself, so we don't need to
 # handle that.
 
-mkDerivation rec {
+stdenv.mkDerivation rec {
   pname = "qmmp";
-  version = "1.4.4";
+  version = "2.1.3";
 
   src = fetchurl {
-    url = "https://qmmp.ylsoftware.com/files/${pname}-${version}.tar.bz2";
-    sha256 = "sha256-sZRZVhCf2ceETuV4AULA0kVkuIMn3C+aYdKThqvPnVQ=";
+    url = "https://qmmp.ylsoftware.com/files/qmmp/2.1/${pname}-${version}.tar.bz2";
+    hash = "sha256-+bHnvwXUmdBbQcO3Unybqou/MZgcf6CXhlAcBjNFCNQ=";
   };
 
-  nativeBuildInputs = [ cmake pkg-config ];
+  nativeBuildInputs = [ cmake pkg-config wrapQtAppsHook ];
+
   buildInputs =
     [ # basic requirements
-      qtbase qttools qtmultimedia qtx11extras xlibsWrapper
+      qtbase qttools qtmultimedia
       # transports
       curl libmms
       # input plugins
       libmad taglib libvorbis libogg flac libmpcdec libmodplug libsndfile
-      libcdio cdparanoia libcddb faad2 ffmpeg wildmidi
+      libcdio cdparanoia libcddb faad2 ffmpeg wildmidi libbs2b game-music-emu
+      libarchive opusfile soxr wavpack
       # output plugins
-      alsa-lib libpulseaudio
+      alsa-lib libpulseaudio pipewire libjack2
       # effect plugins
       libsamplerate
     ];
diff --git a/nixpkgs/pkgs/applications/audio/qpwgraph/default.nix b/nixpkgs/pkgs/applications/audio/qpwgraph/default.nix
index 71d05ac2f37a..7269e218f503 100644
--- a/nixpkgs/pkgs/applications/audio/qpwgraph/default.nix
+++ b/nixpkgs/pkgs/applications/audio/qpwgraph/default.nix
@@ -5,14 +5,14 @@
 
 mkDerivation rec {
   pname = "qpwgraph";
-  version = "0.3.4";
+  version = "0.4.2";
 
   src = fetchFromGitLab {
     domain = "gitlab.freedesktop.org";
     owner = "rncbc";
     repo = "qpwgraph";
     rev = "v${version}";
-    sha256 = "sha256-JCnvwSredXO1WrTu4BIUaUTTjPcd5U/ZZcRbI/GiFfc=";
+    sha256 = "sha256-MkPPr9gvEeW94fXH8K9GVYdYpuG1LDgKD16l2pNFvkA=";
   };
 
   nativeBuildInputs = [ cmake pkg-config ];
diff --git a/nixpkgs/pkgs/applications/audio/qsynth/default.nix b/nixpkgs/pkgs/applications/audio/qsynth/default.nix
index f9eaa890c57f..a24625ca7de8 100644
--- a/nixpkgs/pkgs/applications/audio/qsynth/default.nix
+++ b/nixpkgs/pkgs/applications/audio/qsynth/default.nix
@@ -16,6 +16,10 @@ mkDerivation  rec {
   buildInputs = [ alsa-lib fluidsynth libjack2 qtbase qttools qtx11extras ];
 
   enableParallelBuilding = true;
+  # Missing install depends:
+  #   lrelease error: Parse error at src/translations/qsynth_ru.ts:1503:33: Premature end of document.
+  #   make: *** [Makefile:107: src/translations/qsynth_ru.qm] Error 1
+  enableParallelInstalling = false;
 
   meta = with lib; {
     description = "Fluidsynth GUI";
diff --git a/nixpkgs/pkgs/applications/audio/qtscrobbler/default.nix b/nixpkgs/pkgs/applications/audio/qtscrobbler/default.nix
index f013c338e765..081b0c928892 100644
--- a/nixpkgs/pkgs/applications/audio/qtscrobbler/default.nix
+++ b/nixpkgs/pkgs/applications/audio/qtscrobbler/default.nix
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
       It is able to gather this information from Apple iPods or DAPs running the Rockbox replacement firmware.
     '';
 
-    homepage = "http://qtscrob.sourceforge.net";
+    homepage = "https://qtscrob.sourceforge.net";
     license = licenses.gpl2;
     maintainers = [ maintainers.vanzef ];
     platforms = platforms.linux;
diff --git a/nixpkgs/pkgs/applications/audio/quodlibet/default.nix b/nixpkgs/pkgs/applications/audio/quodlibet/default.nix
index 49b320703d13..f0dc71aa4775 100644
--- a/nixpkgs/pkgs/applications/audio/quodlibet/default.nix
+++ b/nixpkgs/pkgs/applications/audio/quodlibet/default.nix
@@ -1,66 +1,169 @@
-{ 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, 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 = lib.optionals; in
+{ lib
+, fetchFromGitHub
+, fetchpatch
+, tag ? ""
+
+# build time
+, gettext
+, gobject-introspection
+, wrapGAppsHook
+
+# runtime
+, adwaita-icon-theme
+, gdk-pixbuf
+, glib
+, glib-networking
+, gtk3
+, gtksourceview
+, kakasi
+, keybinder3
+, libappindicator-gtk3
+, libmodplug
+, librsvg
+, libsoup
+, webkitgtk
+
+# optional features
+, withDbusPython ? false
+, withPypresence ? false
+, withPyInotify ? false
+, withMusicBrainzNgs ? false
+, withPahoMqtt ? false
+, withSoco ? false
+
+# backends
+, withGstreamerBackend ? true, gst_all_1
+, withGstPlugins ? withGstreamerBackend
+, withXineBackend ? true, xine-lib
+
+# tests
+, dbus
+, glibcLocales
+, hicolor-icon-theme
+, python3
+, xvfb-run
+}:
+
 python3.pkgs.buildPythonApplication rec {
   pname = "quodlibet${tag}";
   version = "4.5.0";
+  format = "pyproject";
 
-  src = fetchurl {
-    url = "https://github.com/quodlibet/quodlibet/releases/download/release-${version}/quodlibet-${version}.tar.gz";
-    sha256 = "sha256-MBYVgp9lLLr+2zVTkjcWKli8HucaVn0kn3eJ2SaCRbw=";
+  src = fetchFromGitHub {
+    owner = "quodlibet";
+    repo = "quodlibet";
+    rev = "refs/tags/release-${version}";
+    hash = "sha256-G6zcdnHkevbVCrMoseWoSia5ajEor8nZhee6NeZIs8Q=";
   };
 
-  nativeBuildInputs = [ wrapGAppsHook gettext ];
+  patches = [
+    (fetchpatch {
+      # Fixes cover globbing under python 3.10.5+
+      url = "https://github.com/quodlibet/quodlibet/commit/5eb7c30766e1dcb30663907664855ee94a3accc0.patch";
+      hash = "sha256-bDyEOE7Vs4df4BeN4QMvt6niisVEpvc1onmX5rtoAWc=";
+    })
+  ];
+
+  outputs = [
+    "out"
+    "doc"
+  ];
 
-  checkInputs = [ gdk-pixbuf hicolor-icon-theme ] ++ (with python3.pkgs; [ pytest pytest-xdist polib xvfb-run dbus.daemon glibcLocales ]);
+  nativeBuildInputs = [
+    gettext
+    gobject-introspection
+    wrapGAppsHook
+  ] ++ (with python3.pkgs; [
+    sphinxHook
+    sphinx-rtd-theme
+  ]);
 
-  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 ]);
+  buildInputs = [
+    adwaita-icon-theme
+    gdk-pixbuf
+    glib
+    glib-networking
+    gtk3
+    gtksourceview
+    kakasi
+    keybinder3
+    libappindicator-gtk3
+    libmodplug
+    libsoup
+    webkitgtk
+  ] ++ lib.optionals (withXineBackend) [
+    xine-lib
+  ] ++ lib.optionals (withGstreamerBackend) (with gst_all_1; [
+    gst-plugins-base
+    gstreamer
+  ] ++ lib.optionals (withGstPlugins) [
+    gst-libav
+    gst-plugins-bad
+    gst-plugins-good
+    gst-plugins-ugly
+  ]);
 
-  propagatedBuildInputs = with python3.pkgs; [ pygobject3 pycairo mutagen gst-python feedparser ]
-      ++ optionals withDbusPython [ dbus-python ]
-      ++ optionals withPyInotify [ pyinotify ]
-      ++ optionals withMusicBrainzNgs [ musicbrainzngs ]
-      ++ optionals withPahoMqtt [ paho-mqtt ];
+  propagatedBuildInputs = with python3.pkgs; [
+    feedparser
+    gst-python
+    mutagen
+    pycairo
+    pygobject3
+  ]
+  ++ lib.optionals withDbusPython [ dbus-python ]
+  ++ lib.optionals withPypresence [ pypresence ]
+  ++ lib.optionals withPyInotify [ pyinotify ]
+  ++ lib.optionals withMusicBrainzNgs [ musicbrainzngs ]
+  ++ lib.optionals withPahoMqtt [ paho-mqtt ]
+  ++ lib.optionals withSoco [ soco ];
 
   LC_ALL = "en_US.UTF-8";
 
-  pytestFlags = lib.optionals (xineBackend || !withGstPlugins) [
-    "--ignore=tests/plugin/test_replaygain.py"
-  ] ++ [
+  nativeCheckInputs = [
+    dbus
+    gdk-pixbuf
+    glibcLocales
+    hicolor-icon-theme
+    xvfb-run
+  ] ++ (with python3.pkgs; [
+    polib
+    pytest
+    pytest-xdist
+  ]);
+
+  pytestFlags = [
     # requires networking
-    "--ignore=tests/test_browsers_iradio.py"
-    # the default theme doesn't have the required icons
-    "--ignore=tests/plugin/test_trayicon.py"
+    "--deselect=tests/test_browsers_iradio.py::TIRFile::test_download_tags"
+    # missing translation strings in potfiles
+    "--deselect=tests/test_po.py::TPOTFILESIN::test_missing"
     # upstream does actually not enforce source code linting
     "--ignore=tests/quality"
     # build failure on Arch Linux
     # https://github.com/NixOS/nixpkgs/pull/77796#issuecomment-575841355
     "--ignore=tests/test_operon.py"
+  ] ++ lib.optionals (withXineBackend || !withGstPlugins) [
+    "--ignore=tests/plugin/test_replaygain.py"
   ];
 
+  preCheck = ''
+    export XDG_DATA_DIRS="$out/share:${gtk3}/share/gsettings-schemas/${gtk3.name}:$XDG_ICON_DIRS:$XDG_DATA_DIRS"
+    export GDK_PIXBUF_MODULE_FILE=${librsvg}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache
+    export HOME=$(mktemp -d)
+  '';
+
   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 \
-        py.test $pytestFlags
+
+    xvfb-run -s '-screen 0 1920x1080x24' \
+      dbus-run-session --config-file=${dbus}/share/dbus-1/session.conf \
+      pytest $pytestFlags
+
     runHook postCheck
   '';
 
-  preFixup = lib.optionalString (kakasi != null) "gappsWrapperArgs+=(--prefix PATH : ${kakasi}/bin)";
+  preFixup = lib.optionalString (kakasi != null) ''
+    gappsWrapperArgs+=(--prefix PATH : ${kakasi}/bin)
+  '';
 
   meta = with lib; {
     description = "GTK-based audio player written in Python, using the Mutagen tagging library";
diff --git a/nixpkgs/pkgs/applications/audio/r128gain/default.nix b/nixpkgs/pkgs/applications/audio/r128gain/default.nix
index af22a9dce67c..8cf6871a76b4 100644
--- a/nixpkgs/pkgs/applications/audio/r128gain/default.nix
+++ b/nixpkgs/pkgs/applications/audio/r128gain/default.nix
@@ -26,13 +26,13 @@ python3Packages.buildPythonApplication rec {
   ];
 
   propagatedBuildInputs = with python3Packages; [ crcmod ffmpeg-python mutagen tqdm ];
-  checkInputs = with python3Packages; [ requests sox ];
+  nativeCheckInputs = with python3Packages; [ requests sox ];
 
   # Testing downloads media files for testing, which requires the
   # sandbox to be disabled.
   doCheck = false;
 
-  passthru.updateScript = gitUpdater { inherit pname version; };
+  passthru.updateScript = gitUpdater { };
 
   meta = with lib; {
     description = "Fast audio loudness scanner & tagger (ReplayGain v2 / R128)";
diff --git a/nixpkgs/pkgs/applications/audio/radioboat/default.nix b/nixpkgs/pkgs/applications/audio/radioboat/default.nix
index e12152715207..3dc97a84b62f 100644
--- a/nixpkgs/pkgs/applications/audio/radioboat/default.nix
+++ b/nixpkgs/pkgs/applications/audio/radioboat/default.nix
@@ -11,16 +11,16 @@
 
 buildGoModule rec {
   pname = "radioboat";
-  version = "0.2.2";
+  version = "0.3.0";
 
   src = fetchFromGitHub {
     owner = "slashformotion";
     repo = "radioboat";
     rev = "v${version}";
-    sha256 = "sha256-e6SZv5gb7NOpCU3blFsH7A6ETWL8QlxtpDmmk8DKn8I=";
+    hash = "sha256-4k+WK2Cxu1yBWgvEW9LMD2RGfiY7XDAe0qqph82zvlI=";
   };
 
-  vendorSha256 = "sha256-X3KiqaiOQYQBfVckh50C+4oxIVN6gXyNuQtBwGvjdFQ=";
+  vendorHash = "sha256-H2vo5gngXUcrem25tqz/1MhOgpNZcN+IcaQHZrGyjW8=";
 
   ldflags = [
     "-s"
@@ -42,11 +42,10 @@ buildGoModule rec {
   '';
 
   passthru = {
-    updateScript = nix-update-script { attrPath = pname; };
+    updateScript = nix-update-script { };
     tests.version = testers.testVersion {
       package = radioboat;
       command = "radioboat version";
-      version = version;
     };
   };
 
diff --git a/nixpkgs/pkgs/applications/audio/radiotray-ng/default.nix b/nixpkgs/pkgs/applications/audio/radiotray-ng/default.nix
index dd3ba17e6334..3196d492fb50 100644
--- a/nixpkgs/pkgs/applications/audio/radiotray-ng/default.nix
+++ b/nixpkgs/pkgs/applications/audio/radiotray-ng/default.nix
@@ -80,7 +80,10 @@ stdenv.mkDerivation rec {
     "-DBUILD_TESTS=${if doCheck then "ON" else "OFF"}"
   ];
 
-  checkInputs = [ gtest ];
+  # 'wxFont::wxFont(int, int, int, int, bool, const wxString&, wxFontEncoding)' is deprecated
+  env.NIX_CFLAGS_COMPILE = "-Wno-error=deprecated-declarations";
+
+  nativeCheckInputs = [ gtest ];
   doCheck = !stdenv.isAarch64; # single failure that I can't explain
 
   preFixup = ''
@@ -93,6 +96,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/ebruck/radiotray-ng";
     license = licenses.gpl3;
     maintainers = with maintainers; [ dtzWill ];
-    platforms = platforms.all;
+    platforms = platforms.linux;
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/rakarrack/default.nix b/nixpkgs/pkgs/applications/audio/rakarrack/default.nix
index 6d5d1ca860d0..e78502eb23f7 100644
--- a/nixpkgs/pkgs/applications/audio/rakarrack/default.nix
+++ b/nixpkgs/pkgs/applications/audio/rakarrack/default.nix
@@ -19,7 +19,7 @@ stdenv.mkDerivation  rec {
 
   meta = with lib; {
     description = "Multi-effects processor emulating a guitar effects pedalboard";
-    homepage = "http://rakarrack.sourceforge.net";
+    homepage = "https://rakarrack.sourceforge.net";
     license = licenses.gpl2;
     platforms = platforms.linux;
     maintainers = [ maintainers.goibhniu ];
diff --git a/nixpkgs/pkgs/applications/audio/raysession/default.nix b/nixpkgs/pkgs/applications/audio/raysession/default.nix
new file mode 100644
index 000000000000..279d0f85b218
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/raysession/default.nix
@@ -0,0 +1,48 @@
+{ lib, fetchurl, buildPythonApplication, libjack2, pydbus, pyliblo, pyqt5, qttools, which, bash }:
+
+buildPythonApplication rec {
+  pname = "raysession";
+  version = "0.13.1";
+
+  src = fetchurl {
+    url = "https://github.com/Houston4444/RaySession/releases/download/v${version}/RaySession-${version}-source.tar.gz";
+    sha256 = "sha256-iiFRtX43u9BHe7a4ojza7kav+dMW9e05dPi7Gf9d1GM=";
+  };
+
+  postPatch = ''
+    # Fix installation path of xdg schemas.
+    substituteInPlace Makefile --replace '$(DESTDIR)/' '$(DESTDIR)$(PREFIX)/'
+    # Do not wrap an importable module with a shell script.
+    chmod -x src/daemon/desktops_memory.py
+  '';
+
+  format = "other";
+
+  nativeBuildInputs = [
+    pyqt5   # pyuic5 and pyrcc5 to build resources.
+    qttools # lrelease to build translations.
+    which   # which to find lrelease.
+  ];
+  buildInputs = [ libjack2 bash ];
+  propagatedBuildInputs = [ pydbus pyliblo pyqt5 ];
+
+  dontWrapQtApps = true; # The program is a python script.
+
+  installFlags = [ "PREFIX=$(out)" ];
+
+  makeWrapperArgs = [
+    "--prefix" "LD_LIBRARY_PATH" ":" (lib.makeLibraryPath [ libjack2 ])
+  ];
+
+  postFixup = ''
+    wrapPythonProgramsIn "$out/share/raysession/src" "$out $pythonPath"
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/Houston4444/RaySession";
+    description = "Session manager for Linux musical programs";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ orivej ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/reaper/default.nix b/nixpkgs/pkgs/applications/audio/reaper/default.nix
index 47a50f2a855a..ef0c514bce9f 100644
--- a/nixpkgs/pkgs/applications/audio/reaper/default.nix
+++ b/nixpkgs/pkgs/applications/audio/reaper/default.nix
@@ -4,11 +4,14 @@
 , makeWrapper
 
 , alsa-lib
+, curl
 , gtk3
 , lame
+, libxml2
 , ffmpeg
 , vlc
 , xdg-utils
+, xdotool
 , which
 
 , jackSupport ? true
@@ -17,15 +20,18 @@
 , libpulseaudio
 }:
 
+let
+  url_for_platform = version: arch: "https://www.reaper.fm/files/${lib.versions.major version}.x/reaper${builtins.replaceStrings ["."] [""] version}_linux_${arch}.tar.xz";
+in
 stdenv.mkDerivation rec {
   pname = "reaper";
-  version = "6.61";
+  version = "6.80";
 
   src = fetchurl {
-    url = "https://www.reaper.fm/files/${lib.versions.major version}.x/reaper${builtins.replaceStrings ["."] [""] version}_linux_${stdenv.hostPlatform.qemuArch}.tar.xz";
+    url = url_for_platform version stdenv.hostPlatform.qemuArch;
     hash = {
-      x86_64-linux = "sha256-Lp2EVky1+ruc86LdMmvhZIisoYl0OxdkVnN3h/u09IQ=";
-      aarch64-linux = "sha256-sPLCMA//xAdWXjY7++R6eLWS56Zi0u+9ju7JlICGvVc=";
+      x86_64-linux = "sha256-By97OxGC9YO7yEHzSjDAZHCtVaub1wNwWMOn4F+Qzpg=";
+      aarch64-linux = "sha256-11DiFfqULIi4tespho+yOH+Qy4s+lithCt19kb4RfhI=";
     }.${stdenv.hostPlatform.system};
   };
 
@@ -65,8 +71,9 @@ stdenv.mkDerivation rec {
     # 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.
+    # Note that libcurl and libxml2 are needed for ReaPack to run.
     wrapProgram $out/opt/REAPER/reaper \
-      --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ lame ffmpeg vlc ]}"
+      --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ curl lame libxml2 ffmpeg vlc xdotool stdenv.cc.cc.lib ]}"
 
     mkdir $out/bin
     ln -s $out/opt/REAPER/reaper $out/bin/
@@ -75,6 +82,8 @@ stdenv.mkDerivation rec {
     runHook postInstall
   '';
 
+  passthru.updateScript = ./updater.sh;
+
   meta = with lib; {
     description = "Digital audio workstation";
     homepage = "https://www.reaper.fm/";
diff --git a/nixpkgs/pkgs/applications/audio/reaper/updater.sh b/nixpkgs/pkgs/applications/audio/reaper/updater.sh
new file mode 100755
index 000000000000..750bea346bbc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/reaper/updater.sh
@@ -0,0 +1,18 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p curl common-updater-scripts
+
+set -euo pipefail
+
+reaper_ver=$(curl -Ls https://www.reaper.fm/download.php | grep -o 'Version [0-9]\.[0-9]*' | head -n1 | cut -d' ' -f2)
+
+function set_hash_for_arch() {
+  local arch=$1
+  pkg_hash=$(nix-prefetch-url https://www.reaper.fm/files/${reaper_ver%.*}.x/reaper${reaper_ver/./}_linux_$arch.tar.xz)
+  pkg_hash=$(nix hash to-sri "sha256:$pkg_hash")
+  # reset the version so the second architecture update doesn't get ignored
+  update-source-version reaper 0 "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" --system=$arch-linux
+  update-source-version reaper "${reaper_ver}" "$pkg_hash" --system=$arch-linux
+}
+
+set_hash_for_arch aarch64
+set_hash_for_arch x86_64
diff --git a/nixpkgs/pkgs/applications/audio/renoise/default.nix b/nixpkgs/pkgs/applications/audio/renoise/default.nix
index 1be3f53dce5f..44dbff6077bc 100644
--- a/nixpkgs/pkgs/applications/audio/renoise/default.nix
+++ b/nixpkgs/pkgs/applications/audio/renoise/default.nix
@@ -1,15 +1,13 @@
 { lib, stdenv, fetchurl, libX11, libXext, libXcursor, libXrandr, libjack2, alsa-lib
 , mpg123, releasePath ? null }:
 
-with lib;
-
 # To use the full release version:
 # 1) Sign into https://backstage.renoise.com and download the release version to some stable location.
 # 2) Override the releasePath attribute to point to the location of the newly downloaded bundle.
 # Note: Renoise creates an individual build for each license which screws somewhat with the
 # use of functions like requireFile as the hash will be different for every user.
 let
-  urlVersion = replaceStrings [ "." ] [ "_" ];
+  urlVersion = lib.replaceStrings [ "." ] [ "_" ];
 in
 
 stdenv.mkDerivation rec {
@@ -80,7 +78,7 @@ stdenv.mkDerivation rec {
     description = "Modern tracker-based DAW";
     homepage = "https://www.renoise.com/";
     sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
-    license = licenses.unfree;
+    license = lib.licenses.unfree;
     maintainers = [];
     platforms = [ "x86_64-linux" ];
   };
diff --git a/nixpkgs/pkgs/applications/audio/rhvoice/honor_nix_environment.patch b/nixpkgs/pkgs/applications/audio/rhvoice/honor_nix_environment.patch
index fed5a2ea5e1d..0b2cab3975e5 100644
--- a/nixpkgs/pkgs/applications/audio/rhvoice/honor_nix_environment.patch
+++ b/nixpkgs/pkgs/applications/audio/rhvoice/honor_nix_environment.patch
@@ -1,5 +1,3 @@
-diff --git a/SConstruct b/SConstruct
-index 3ad4d9a..fb02365 100644
 --- a/SConstruct
 +++ b/SConstruct
 @@ -94,11 +94,8 @@ def CheckWiX(context):
@@ -16,13 +14,15 @@ index 3ad4d9a..fb02365 100644
  
  def validate_spd_version(key,val,env):
      m=re.match(r"^\d+\.\d+",val)
-@@ -208,9 +205,9 @@ def create_base_env(user_vars):
+@@ -207,10 +204,10 @@ def create_base_env(user_vars):
+     env_args["LIBS"]=[]
      env_args["package_name"]="RHVoice"
      env_args["CPPDEFINES"]=[("RHVOICE","1")]
-     env=Environment(**env_args)
+-    env=Environment(**env_args)
 -    if env["dev"]:
 -        env["prefix"]=os.path.abspath("local")
 -        env["RPATH"]=env.Dir("$libdir").abspath
++    env=Environment(ENV = os.environ, **env_args)
 +    env.PrependENVPath("PATH", os.environ["PATH"])
 +    env["ENV"]["PKG_CONFIG_PATH"]=os.environ["PKG_CONFIG_PATH"]
 +    env["RPATH"]=env.Dir("$libdir").abspath
diff --git a/nixpkgs/pkgs/applications/audio/rhythmbox/default.nix b/nixpkgs/pkgs/applications/audio/rhythmbox/default.nix
index 853613c9a5f5..9cd6b0d9ae05 100644
--- a/nixpkgs/pkgs/applications/audio/rhythmbox/default.nix
+++ b/nixpkgs/pkgs/applications/audio/rhythmbox/default.nix
@@ -10,7 +10,7 @@
 , glib
 , gtk3
 , libpeas
-, libsoup
+, libsoup_3
 , libxml2
 , libsecret
 , libnotify
@@ -36,11 +36,11 @@
 
 stdenv.mkDerivation rec {
   pname = "rhythmbox";
-  version = "3.4.6";
+  version = "3.4.7";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "+VaCEM5V5BHpKcj7leERohHb0ZzEf1ePKRxdMZtesDQ=";
+    sha256 = "L21WwT/BpkxTT1AHiPtIKTbOVHs0PtkMZ94fK84M+n4=";
   };
 
   nativeBuildInputs = [
@@ -56,7 +56,7 @@ stdenv.mkDerivation rec {
 
   buildInputs = [
     python3
-    libsoup
+    libsoup_3
     libxml2
     tdb
     json-glib
@@ -87,11 +87,12 @@ stdenv.mkDerivation rec {
     libnotify
   ] ++ gst_plugins;
 
-  checkInputs = [
+  nativeCheckInputs = [
     check
   ];
 
   mesonFlags = [
+    "-Ddaap=enabled"
     "-Dtests=disabled"
   ];
 
diff --git a/nixpkgs/pkgs/applications/audio/roomeqwizard/default.nix b/nixpkgs/pkgs/applications/audio/roomeqwizard/default.nix
index b02ab65cd87c..acb7ae6e43a1 100644
--- a/nixpkgs/pkgs/applications/audio/roomeqwizard/default.nix
+++ b/nixpkgs/pkgs/applications/audio/roomeqwizard/default.nix
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
   version = "5.20.5";
 
   src = fetchurl {
-    url = "https://www.roomeqwizard.com/installers/REW_linux_${lib.replaceChars [ "." ] [ "_" ] version}.sh";
+    url = "https://www.roomeqwizard.com/installers/REW_linux_${lib.replaceStrings [ "." ] [ "_" ] version}.sh";
     sha256 = "NYTRiOZmwkni4k+jI2SV84z5umO7+l+eKpwPCdlDD3U=";
   };
 
diff --git a/nixpkgs/pkgs/applications/audio/rosegarden/default.nix b/nixpkgs/pkgs/applications/audio/rosegarden/default.nix
index dd0112d82162..0a82a4671db2 100644
--- a/nixpkgs/pkgs/applications/audio/rosegarden/default.nix
+++ b/nixpkgs/pkgs/applications/audio/rosegarden/default.nix
@@ -23,11 +23,11 @@
 
 stdenv.mkDerivation rec {
   pname = "rosegarden";
-  version = "20.12";
+  version = "22.12.1";
 
   src = fetchurl {
     url = "mirror://sourceforge/rosegarden/${pname}-${version}.tar.bz2";
-    sha256 = "sha256-iGaEr8WFipV4I00fhFGI2xMBFPf784IIxNXs2hUTHFs=";
+    sha256 = "sha256-fqeif37lxJeBcI+cYVpRkZuJImSlmeZO3yzSNzPZkgY=";
   };
 
   postPhase = ''
diff --git a/nixpkgs/pkgs/applications/audio/sayonara/default.nix b/nixpkgs/pkgs/applications/audio/sayonara/default.nix
index 12a7ab0325eb..e7efb7896be7 100644
--- a/nixpkgs/pkgs/applications/audio/sayonara/default.nix
+++ b/nixpkgs/pkgs/applications/audio/sayonara/default.nix
@@ -56,16 +56,14 @@ mkDerivation rec {
   ];
 
   # gstreamer cannot otherwise be found
-  NIX_CFLAGS_COMPILE = "-I${gst_all_1.gst-plugins-base.dev}/include/gstreamer-1.0";
+  env.NIX_CFLAGS_COMPILE = "-I${gst_all_1.gst-plugins-base.dev}/include/gstreamer-1.0";
 
   postInstall = ''
     qtWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0")
   '';
 
   passthru = {
-    updateScript = nix-update-script {
-      attrPath = pname;
-    };
+    updateScript = nix-update-script { };
   };
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/applications/audio/sc68/default.nix b/nixpkgs/pkgs/applications/audio/sc68/default.nix
index 3f6bb032ec4f..a779576d05d9 100644
--- a/nixpkgs/pkgs/applications/audio/sc68/default.nix
+++ b/nixpkgs/pkgs/applications/audio/sc68/default.nix
@@ -13,21 +13,32 @@
 
 stdenv.mkDerivation rec {
   pname = "sc68";
-  version = "unstable-2021-08-23";
+  version = "unstable-2022-11-24";
 
   src = fetchsvn {
     url = "svn://svn.code.sf.net/p/sc68/code/";
-    rev = "694";
-    sha256 = "1yycnr4ndzfhbmki41c30zskwyizpb9wb8sf0gxcprllmbq6a421";
+    rev = "695";
+    sha256 = "sha256-RO3Yhjalu49BUM0fYOZtI2l6KbuUuw03whRxlKneabo=";
   };
 
   preConfigure = "tools/svn-bootstrap.sh";
 
   enableParallelBuilding = true;
 
-  nativeBuildInputs = [ pkg-config which autoconf automake libtool hexdump ];
+  nativeBuildInputs = [
+    autoconf
+    automake
+    hexdump
+    libtool
+    pkg-config
+    which
+  ];
 
-  buildInputs = [ libao zlib curl ];
+  buildInputs = [
+    curl
+    libao
+    zlib
+  ];
 
   meta = with lib; {
     description = "Atari ST and Amiga music player";
diff --git a/nixpkgs/pkgs/applications/audio/schismtracker/default.nix b/nixpkgs/pkgs/applications/audio/schismtracker/default.nix
index 7439e566da26..c491d8ef2468 100644
--- a/nixpkgs/pkgs/applications/audio/schismtracker/default.nix
+++ b/nixpkgs/pkgs/applications/audio/schismtracker/default.nix
@@ -9,13 +9,13 @@
 
 stdenv.mkDerivation rec {
   pname = "schismtracker";
-  version = "20220125";
+  version = "20220506";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = version;
-    sha256 = "sha256-Hqbm5+YyCde/6QuyIy4NE/jG4xNDzeNjEefMr60GEZM=";
+    sha256 = "sha256-fK0FBn9e7l1Y/A7taFlaoas6ZPREFhEmskVBqjda6q0=";
   };
 
   configureFlags = [ "--enable-dependency-tracking" ]
diff --git a/nixpkgs/pkgs/applications/audio/scream/default.nix b/nixpkgs/pkgs/applications/audio/scream/default.nix
index f2526903f368..6d2eae52e5e8 100644
--- a/nixpkgs/pkgs/applications/audio/scream/default.nix
+++ b/nixpkgs/pkgs/applications/audio/scream/default.nix
@@ -1,29 +1,32 @@
 { stdenv, lib, config, fetchFromGitHub, cmake, pkg-config
 , alsaSupport ? stdenv.isLinux, alsa-lib
 , pulseSupport ? config.pulseaudio or stdenv.isLinux, libpulseaudio
-, jackSupport ? false, libjack2
+, jackSupport ? false, libjack2, soxr
+, pcapSupport ? false, libpcap
 }:
 
 stdenv.mkDerivation rec {
   pname = "scream";
-  version = "3.9";
+  version = "4.0";
 
   src = fetchFromGitHub {
     owner = "duncanthrax";
     repo = pname;
     rev = version;
-    sha256 = "sha256-JxDR7UhS4/+oGQ9Fwm4f+yBM9OyX0Srvr9n/vaZVvxQ=";
+    sha256 = "sha256-lP5mdNhZjkEVjgQUEsisPy+KXUqsE6xj6dFWcgD+VGM=";
   };
 
   buildInputs = lib.optional pulseSupport libpulseaudio
-    ++ lib.optional jackSupport libjack2
-    ++ lib.optional alsaSupport alsa-lib;
+    ++ lib.optionals jackSupport [ libjack2 soxr ]
+    ++ lib.optional alsaSupport alsa-lib
+    ++ lib.optional pcapSupport libpcap;
   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"}"
+    "-DPCAP_ENABLE=${if pcapSupport then "ON" else "OFF"}"
   ];
 
   cmakeDir = "../Receivers/unix";
diff --git a/nixpkgs/pkgs/applications/audio/setbfree/default.nix b/nixpkgs/pkgs/applications/audio/setbfree/default.nix
index 7cad39b63ea7..1d43d11c60cf 100644
--- a/nixpkgs/pkgs/applications/audio/setbfree/default.nix
+++ b/nixpkgs/pkgs/applications/audio/setbfree/default.nix
@@ -4,19 +4,19 @@
 
 stdenv.mkDerivation  rec {
   pname = "setbfree";
-  version = "0.8.11";
+  version = "0.8.12";
 
   src = fetchFromGitHub {
     owner = "pantherb";
     repo = "setBfree";
     rev = "v${version}";
-    sha256 = "sha256-OYrsq3zVaotmS1KUgDIQbVQgxpfweMKiB17/PC1iXDA=";
+    sha256 = "sha256-e/cvD/CtT8dY1lYcsZ21DC8pNqKXqKfC/eRXX8k01eI=";
   };
 
   postPatch = ''
-    sed 's#/usr/local#$(out)#g' -i common.mak
-    sed 's#/usr/share/fonts/truetype/ttf-bitstream-vera#${ttf_bitstream_vera}/share/fonts/truetype#g' \
-      -i b_synth/Makefile
+    substituteInPlace common.mak \
+      --replace /usr/local "$out" \
+      --replace /usr/share/fonts/truetype/ttf-bitstream-vera "${ttf_bitstream_vera}/share/fonts/truetype"
   '';
 
   nativeBuildInputs = [ pkg-config ];
@@ -25,6 +25,15 @@ stdenv.mkDerivation  rec {
     ttf_bitstream_vera
   ];
 
+  doInstallCheck = true;
+
+  installCheckPhase = ''(
+    set -x
+    test -e $out/bin/setBfreeUI
+  )'';
+
+  enableParallelBuilding = true;
+
   meta = with lib; {
     description = "A DSP tonewheel organ emulator";
     homepage = "https://setbfree.org";
diff --git a/nixpkgs/pkgs/applications/audio/sfizz/default.nix b/nixpkgs/pkgs/applications/audio/sfizz/default.nix
index aaa79bd3e392..05957bf38f2b 100644
--- a/nixpkgs/pkgs/applications/audio/sfizz/default.nix
+++ b/nixpkgs/pkgs/applications/audio/sfizz/default.nix
@@ -5,13 +5,13 @@
 
 stdenv.mkDerivation rec {
   pname = "sfizz";
-  version = "1.2.0";
+  version = "1.2.1";
 
   src = fetchFromGitHub {
     owner = "sfztools";
     repo = pname;
     rev = version;
-    sha256 = "sha256-biHsB49Ym9NU4tMOVnUNuIxPtpcIi6oCAS7JBPhxwec=";
+    sha256 = "sha256-/G9tvJ4AcBSTmo44xDDKf6et1nSn/FV5m27ztDu10kI=";
     fetchSubmodules = true;
   };
 
diff --git a/nixpkgs/pkgs/applications/audio/shortwave/default.nix b/nixpkgs/pkgs/applications/audio/shortwave/default.nix
index 4642565e678e..b64e4bf5e50e 100644
--- a/nixpkgs/pkgs/applications/audio/shortwave/default.nix
+++ b/nixpkgs/pkgs/applications/audio/shortwave/default.nix
@@ -1,6 +1,7 @@
 { stdenv
 , lib
 , fetchFromGitLab
+, cargo
 , dbus
 , desktop-file-utils
 , gdk-pixbuf
@@ -15,6 +16,7 @@
 , openssl
 , pkg-config
 , rustPlatform
+, rustc
 , sqlite
 , wrapGAppsHook4
 , cmake
@@ -23,20 +25,20 @@
 
 stdenv.mkDerivation rec {
   pname = "shortwave";
-  version = "3.0.0";
+  version = "3.2.0";
 
   src = fetchFromGitLab {
     domain = "gitlab.gnome.org";
     owner = "World";
     repo = "Shortwave";
     rev = version;
-    sha256 = "sha256-qwk63o9pfqpAm6l9ioj3RccacemQU8R6LF6El4yHkjQ";
+    sha256 = "sha256-ESZ1yD1IuBar8bv83xMczZbtPtHbWRpe2yMVyr7K5gQ=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     name = "${pname}-${version}";
-    hash = "sha256-YrB322nv9CgZqt5//VMvVwjWA51ePlX2PI6raRJGBxA=";
+    hash = "sha256-8W46bGAitR2YbZbnsigAZMW5pSFTkDAe5JNaNOH5JfA=";
   };
 
   nativeBuildInputs = [
@@ -47,9 +49,9 @@ stdenv.mkDerivation rec {
     meson
     ninja
     pkg-config
-    rustPlatform.rust.cargo
+    cargo
     rustPlatform.cargoSetupHook
-    rustPlatform.rust.rustc
+    rustc
     wrapGAppsHook4
     cmake
   ];
diff --git a/nixpkgs/pkgs/applications/audio/sidplayfp/default.nix b/nixpkgs/pkgs/applications/audio/sidplayfp/default.nix
index 9aef427f509f..3e485e9de4c3 100644
--- a/nixpkgs/pkgs/applications/audio/sidplayfp/default.nix
+++ b/nixpkgs/pkgs/applications/audio/sidplayfp/default.nix
@@ -16,13 +16,13 @@
 
 stdenv.mkDerivation rec {
   pname = "sidplayfp";
-  version = "2.2.3";
+  version = "2.5.0";
 
   src = fetchFromGitHub {
     owner = "libsidplayfp";
     repo = "sidplayfp";
     rev = "v${version}";
-    sha256 = "sha256-R60Dh19GYM157ysmN8EOJ47eO8a7sdkEEF1TObG1xzk=";
+    sha256 = "sha256-ECHtHJrkJ5Y0YvDNdMM3VB+s7I/8JCPZiwsPYLM/oig=";
   };
 
   nativeBuildInputs = [ autoreconfHook perl pkg-config ];
@@ -39,9 +39,7 @@ stdenv.mkDerivation rec {
   enableParallelBuilding = true;
 
   passthru = {
-    updateScript = nix-update-script {
-      attrPath = pname;
-    };
+    updateScript = nix-update-script { };
   };
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/applications/audio/sisco.lv2/default.nix b/nixpkgs/pkgs/applications/audio/sisco.lv2/default.nix
index 5aa407a15023..8fd514abea51 100644
--- a/nixpkgs/pkgs/applications/audio/sisco.lv2/default.nix
+++ b/nixpkgs/pkgs/applications/audio/sisco.lv2/default.nix
@@ -38,7 +38,7 @@ stdenv.mkDerivation rec {
     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;
-    maintainers = [ maintainers.e-user ];
+    maintainers = [ ];
     platforms = platforms.linux;
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/snapcast/default.nix b/nixpkgs/pkgs/applications/audio/snapcast/default.nix
index 19016b700fdc..aef561e692a6 100644
--- a/nixpkgs/pkgs/applications/audio/snapcast/default.nix
+++ b/nixpkgs/pkgs/applications/audio/snapcast/default.nix
@@ -1,49 +1,21 @@
 { stdenv, lib, fetchFromGitHub, cmake, pkg-config
 , alsa-lib, asio, avahi, boost17x, flac, libogg, libvorbis, soxr
+, IOKit, AudioToolbox
+, aixlog, popl
 , pulseaudioSupport ? false, libpulseaudio
 , nixosTests }:
 
 assert pulseaudioSupport -> libpulseaudio != null;
 
-let
-
-  dependency = { name, version, sha256 }:
-  stdenv.mkDerivation {
-    name = "${name}-${version}";
-
-    src = fetchFromGitHub {
-      owner = "badaix";
-      repo  = name;
-      rev   = "v${version}";
-      inherit sha256;
-    };
-
-    nativeBuildInputs = [ cmake ];
-  };
-
-  aixlog = dependency {
-    name    = "aixlog";
-    version = "1.5.0";
-    sha256  = "09mnkrans9zmwfxsiwgkm0rba66c11kg5zby9x3rjic34gnmw6ay";
-  };
-
-  popl = dependency {
-    name    = "popl";
-    version = "1.2.0";
-    sha256  = "1z6z7fwffs3d9h56mc2m24d5gp4fc5bi8836zyfb276s6fjyfcai";
-  };
-
-in
-
 stdenv.mkDerivation rec {
   pname = "snapcast";
-  version = "0.26.0";
+  version = "0.27.0";
 
   src = fetchFromGitHub {
     owner  = "badaix";
     repo   = "snapcast";
     rev    = "v${version}";
-    sha256 = "sha256-CCifn9OEFM//Hk1PJj8T3MXIV8pXCTdBBXPsHuZwLyQ=";
+    sha256 = "sha256-dlK1xQQqst4VQjioC7MZzqXwMC+JfqtvnD5lrOqGhYI=";
   };
 
   nativeBuildInputs = [ cmake pkg-config ];
@@ -51,9 +23,13 @@ stdenv.mkDerivation rec {
   # not needed
   buildInputs = [
     boost17x
-    alsa-lib asio avahi flac libogg libvorbis
+    asio avahi flac libogg libvorbis
     aixlog popl soxr
-  ] ++ lib.optional pulseaudioSupport libpulseaudio;
+  ] ++ lib.optional pulseaudioSupport libpulseaudio
+  ++ lib.optional stdenv.isLinux alsa-lib
+  ++ lib.optionals stdenv.isDarwin [ IOKit AudioToolbox ];
+
+  TARGET=lib.optionalString stdenv.isDarwin "MACOS";
 
   # Upstream systemd unit files are pretty awful, so we provide our own in a
   # NixOS module. It might make sense to get that upstreamed...
@@ -68,6 +44,7 @@ stdenv.mkDerivation rec {
     description = "Synchronous multi-room audio player";
     homepage = "https://github.com/badaix/snapcast";
     maintainers = with maintainers; [ fpletz ];
+    platforms = platforms.linux ++ platforms.darwin;
     license = licenses.gpl3Plus;
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/snd/default.nix b/nixpkgs/pkgs/applications/audio/snd/default.nix
index bcb254ad87cc..9916723b9b0e 100644
--- a/nixpkgs/pkgs/applications/audio/snd/default.nix
+++ b/nixpkgs/pkgs/applications/audio/snd/default.nix
@@ -5,11 +5,11 @@
 
 stdenv.mkDerivation rec {
   pname = "snd";
-  version = "22.5";
+  version = "23.3";
 
   src = fetchurl {
     url = "mirror://sourceforge/snd/snd-${version}.tar.gz";
-    sha256 = "sha256-a/nYq6Cfbx93jfA6I8it+U0U36dOAFSpRis32spPks4=";
+    sha256 = "sha256-YuvTgpa006n+WlQHEtVRfoJl7IBoyevzURz0Suis5sE=";
   };
 
   nativeBuildInputs = [ pkg-config ];
diff --git a/nixpkgs/pkgs/applications/audio/sonata/default.nix b/nixpkgs/pkgs/applications/audio/sonata/default.nix
index 9eae394488e2..78c17d09e0de 100644
--- a/nixpkgs/pkgs/applications/audio/sonata/default.nix
+++ b/nixpkgs/pkgs/applications/audio/sonata/default.nix
@@ -39,10 +39,6 @@ in buildPythonApplication rec {
     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
diff --git a/nixpkgs/pkgs/applications/audio/songrec/default.nix b/nixpkgs/pkgs/applications/audio/songrec/default.nix
index 03cfae066b2c..30e6ba9b2fa7 100644
--- a/nixpkgs/pkgs/applications/audio/songrec/default.nix
+++ b/nixpkgs/pkgs/applications/audio/songrec/default.nix
@@ -11,16 +11,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "songrec";
-  version = "0.3.0";
+  version = "0.3.2";
 
   src = fetchFromGitHub {
     owner = "marin-m";
     repo = pname;
     rev = version;
-    sha256 = "sha256-aHZH3sQNUUPcMRySy8Di0XUoFo4qjGi2pi0phLwORaA=";
+    sha256 = "sha256-cUiy8ApeUv1K8SEH4APMTvbieGTt4kZYhyB9iGJd/IY=";
   };
 
-  cargoSha256 = "sha256-EpkB43rMUJO6ouUV9TmQ+RSnGhX32DZHpKic1E6lUyU=";
+  cargoSha256 = "sha256-Tlq4qDp56PXP4N1UyHjtQoRgDrc/19vIv8uml/lAqqc=";
 
   nativeBuildInputs = [ pkg-config ];
 
diff --git a/nixpkgs/pkgs/applications/audio/sonic-lineup/default.nix b/nixpkgs/pkgs/applications/audio/sonic-lineup/default.nix
index 711444651c33..6ea4bcd6628d 100644
--- a/nixpkgs/pkgs/applications/audio/sonic-lineup/default.nix
+++ b/nixpkgs/pkgs/applications/audio/sonic-lineup/default.nix
@@ -1,7 +1,8 @@
-{ lib, stdenv, fetchurl, alsa-lib, boost, bzip2, fftw, fftwFloat, libfishsound
+{ lib, stdenv, fetchurl, fetchpatch2, alsa-lib, boost, bzip2, fftw, fftwFloat, libfishsound
 , libid3tag, liblo, libmad, liboggz, libpulseaudio, libsamplerate
 , libsndfile, lrdf, opusfile, portaudio, rubberband, serd, sord, capnproto
 , wrapQtAppsHook, pkg-config
+, libjack2
 }:
 
 stdenv.mkDerivation rec {
@@ -13,10 +14,21 @@ stdenv.mkDerivation rec {
     sha256 = "0k45k9fawcm4s5yy05x00pgww7j8m7k2cxcc7g0fn9vqy7vcbq9h";
   };
 
+  patches = [
+    (fetchpatch2 {
+      url = "https://github.com/sonic-visualiser/svcore/commit/5a7b517e43b7f0b3f03b7fc3145102cf4e5b0ffc.patch";
+      stripLen = 1;
+      extraPrefix = "svcore/";
+      sha256 = "sha256-DOCdQqCihkR0g/6m90DbJxw00QTpyVmFzCxagrVWKiI=";
+    })
+    ./match-vamp.patch
+  ];
+
   buildInputs =
     [ alsa-lib boost bzip2 fftw fftwFloat libfishsound libid3tag liblo
       libmad liboggz libpulseaudio libsamplerate libsndfile lrdf opusfile
       portaudio rubberband serd sord capnproto
+      libjack2
     ];
 
   nativeBuildInputs = [ pkg-config wrapQtAppsHook ];
diff --git a/nixpkgs/pkgs/applications/audio/sonic-lineup/match-vamp.patch b/nixpkgs/pkgs/applications/audio/sonic-lineup/match-vamp.patch
new file mode 100644
index 000000000000..03e9b54acd94
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/sonic-lineup/match-vamp.patch
@@ -0,0 +1,11 @@
+--- a/match/src/FullDTW.h
++++ b/match/src/FullDTW.h
+@@ -83,7 +83,7 @@
+      * against the best-matching subsequence of s1; otherwise it is
+      * against the whole of s1.
+      */
+-    std::vector<size_t> align(const featureseq_t &s1,
++    std::vector<std::size_t> align(const featureseq_t &s1,
+                               const featureseq_t &s2);
+ 
+ private:
diff --git a/nixpkgs/pkgs/applications/audio/sonic-pi/default.nix b/nixpkgs/pkgs/applications/audio/sonic-pi/default.nix
index 051a326c607d..1d288f049b78 100644
--- a/nixpkgs/pkgs/applications/audio/sonic-pi/default.nix
+++ b/nixpkgs/pkgs/applications/audio/sonic-pi/default.nix
@@ -39,13 +39,13 @@
 
 stdenv.mkDerivation rec {
   pname = "sonic-pi";
-  version = "4.0.3";
+  version = "4.3.0";
 
   src = fetchFromGitHub {
     owner = "sonic-pi-net";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-kTuW+i/kdPhyG3L6SkgQTE9UvADY49KahJcw3+5Uz4k=";
+    hash = "sha256-R+nmjIIDLoGOoCkDvJqejE1DaweHSAV8M2RvdwN5qAQ=";
   };
 
   mixFodDeps = beamPackages.fetchMixDeps {
@@ -53,7 +53,7 @@ stdenv.mkDerivation rec {
     pname = "mix-deps-${pname}";
     mixEnv = "test";
     src = "${src}/app/server/beam/tau";
-    sha256 = "sha256-MvwUyVTS23vQKLpGxz46tEVCs/OyYk5dDaBlv+kYg1M=";
+    hash = "sha256-MvwUyVTS23vQKLpGxz46tEVCs/OyYk5dDaBlv+kYg1M=";
   };
 
   strictDeps = true;
@@ -61,10 +61,9 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [
     wrapQtAppsHook
     copyDesktopItems
-
     cmake
     pkg-config
-
+    ruby
     erlang
     elixir
     beamPackages.hex
@@ -94,9 +93,8 @@ stdenv.mkDerivation rec {
     fmt
   ];
 
-  checkInputs = [
+  nativeCheckInputs = [
     parallel
-    ruby
     supercollider-with-sc3-plugins
     jack2
   ];
@@ -218,6 +216,8 @@ stdenv.mkDerivation rec {
     })
   ];
 
+  passthru.updateScript = ./update.sh;
+
   meta = with lib; {
     homepage = "https://sonic-pi.net/";
     description = "Free live coding synth for everyone originally designed to support computing and music lessons within schools";
diff --git a/nixpkgs/pkgs/applications/audio/sonic-pi/update.sh b/nixpkgs/pkgs/applications/audio/sonic-pi/update.sh
new file mode 100755
index 000000000000..014af49e73a8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/sonic-pi/update.sh
@@ -0,0 +1,50 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p nix jq common-updater-scripts
+
+set -euo pipefail
+
+nixpkgs="$(git rev-parse --show-toplevel || (printf 'Could not find root of nixpkgs repo\nAre we running from within the nixpkgs git repo?\n' >&2; exit 1))"
+
+stripwhitespace() {
+    sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//'
+}
+
+nixeval() {
+    nix --extra-experimental-features nix-command eval --json --impure -f "$nixpkgs" "$1" | jq -r .
+}
+
+vendorhash() {
+    (nix --extra-experimental-features nix-command build --impure --argstr nixpkgs "$nixpkgs" --argstr attr "$1" --expr '{ nixpkgs, attr }: let pkgs = import nixpkgs {}; in with pkgs.lib; (getAttrFromPath (splitString "." attr) pkgs).overrideAttrs (attrs: { outputHash = fakeHash; })' --no-link 2>&1 >/dev/null | tail -n3 | grep -F got: | cut -d: -f2- | stripwhitespace) 2>/dev/null || true
+}
+
+findpath() {
+    path="$(nix --extra-experimental-features nix-command eval --json --impure -f "$nixpkgs" "$1.meta.position" | jq -r . | cut -d: -f1)"
+    outpath="$(nix --extra-experimental-features nix-command eval --json --impure --expr "builtins.fetchGit \"$nixpkgs\"")"
+
+    if [ -n "$outpath" ]; then
+        path="${path/$(echo "$outpath" | jq -r .)/$nixpkgs}"
+    fi
+
+    echo "$path"
+}
+
+attr="${UPDATE_NIX_ATTR_PATH:-sonic-pi}"
+version="$(cd "$nixpkgs" && list-git-tags --pname="$(nixeval "$attr".pname)" --attr-path="$attr" | grep '^v' | sed -e 's|^v||' | sort -V | tail -n1)"
+
+pkgpath="$(findpath "$attr")"
+
+updated="$(cd "$nixpkgs" && update-source-version "$attr" "$version" --file="$pkgpath" --print-changes | jq -r length)"
+
+if [ "$updated" -eq 0 ]; then
+    echo 'update.sh: Package version not updated, nothing to do.'
+    exit 0
+fi
+
+curhash="$(nixeval "$attr.mixFodDeps.outputHash")"
+newhash="$(vendorhash "$attr.mixFodDeps")"
+
+if [ -n "$newhash" ] && [ "$curhash" != "$newhash" ]; then
+    sed -i -e "s|\"$curhash\"|\"$newhash\"|" "$pkgpath"
+else
+    echo 'update.sh: New vendorHash same as old vendorHash, nothing to do.'
+fi
diff --git a/nixpkgs/pkgs/applications/audio/sonic-visualiser/default.nix b/nixpkgs/pkgs/applications/audio/sonic-visualiser/default.nix
index 43254e6c2b0e..cc24f396f56f 100644
--- a/nixpkgs/pkgs/applications/audio/sonic-visualiser/default.nix
+++ b/nixpkgs/pkgs/applications/audio/sonic-visualiser/default.nix
@@ -5,19 +5,19 @@
 , libsndfile, pkg-config, libpulseaudio, qtbase, qtsvg, redland
 , rubberband, serd, sord, vamp-plugin-sdk, fftwFloat
 , capnproto, liboggz, libfishsound, libid3tag, opusfile
-, wrapQtAppsHook
+, wrapQtAppsHook, meson, ninja, cmake
 }:
 
 stdenv.mkDerivation rec {
   pname = "sonic-visualiser";
-  version = "4.2";
+  version = "4.5.1";
 
   src = fetchurl {
-    url = "https://code.soundsoftware.ac.uk/attachments/download/2755/${pname}-${version}.tar.gz";
-    sha256 = "1wsvranhvdl21ksbinbgb55qvs3g2d4i57ssj1vx2aln6m01ms9q";
+    url = "https://code.soundsoftware.ac.uk/attachments/download/2841/${pname}-${version}.tar.gz";
+    sha256 = "1sgg4m3035a03ldipgysz7zqfa9pqaqa4j024gyvvcwh4ml8iasr";
   };
 
-  nativeBuildInputs = [ pkg-config wrapQtAppsHook ];
+  nativeBuildInputs = [ meson ninja cmake pkg-config wrapQtAppsHook ];
   buildInputs =
     [ libsndfile qtbase qtsvg fftw fftwFloat bzip2 lrdf rubberband
       libsamplerate vamp-plugin-sdk alsa-lib librdf_raptor librdf_rasqal redland
@@ -37,11 +37,6 @@ stdenv.mkDerivation rec {
       opusfile
     ];
 
-  # comment out the tests
-  preConfigure = ''
-    sed -i 's/sub_test_svcore_/#sub_test_svcore_/' sonic-visualiser.pro
-  '';
-
   enableParallelBuilding = true;
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/applications/audio/sonixd/default.nix b/nixpkgs/pkgs/applications/audio/sonixd/default.nix
index 38110df29157..d13c398eabd8 100644
--- a/nixpkgs/pkgs/applications/audio/sonixd/default.nix
+++ b/nixpkgs/pkgs/applications/audio/sonixd/default.nix
@@ -3,17 +3,25 @@
 , appimageTools
 }:
 
-appimageTools.wrapType2 rec {
+let
   pname = "sonixd";
-  version = "0.15.3";
-
+  version = "0.15.5";
   src = fetchurl {
     url = "https://github.com/jeffvli/sonixd/releases/download/v${version}/Sonixd-${version}-linux-x86_64.AppImage";
-    sha256 = "sha256-+4L3XAuR7T/z5a58SXre6yUiVi7TvSAs8vPgEC7hcIw=";
+    sha256 = "sha256-j8B+o/CJ5SsZPMNbugyP3T9Kb+xuxlVxH02loxlwwDg=";
   };
+  appimageContents = appimageTools.extractType2 { inherit pname version src; };
+in
+appimageTools.wrapType2 rec {
+  inherit pname version src;
 
   extraInstallCommands = ''
-    mv $out/bin/sonixd-${version} $out/bin/sonixd
+    mv $out/bin/${pname}-${version} $out/bin/${pname}
+
+    install -m 444 -D ${appimageContents}/${pname}.desktop -t $out/share/applications
+    substituteInPlace $out/share/applications/${pname}.desktop \
+      --replace 'Exec=AppRun --no-sandbox %U' 'Exec=${pname}'
+    cp -r ${appimageContents}/usr/share/icons $out/share
   '';
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/applications/audio/sonobus/default.nix b/nixpkgs/pkgs/applications/audio/sonobus/default.nix
new file mode 100644
index 000000000000..da82fcc5a86e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/sonobus/default.nix
@@ -0,0 +1,83 @@
+{ lib
+, pkg-config
+, stdenv
+, fetchFromGitHub
+, autoPatchelfHook
+, alsa-lib
+, cmake
+, freetype
+, libGL
+, libX11
+, libXcursor
+, libXext
+, libXinerama
+, libXrandr
+, libjack2
+, libopus
+, curl
+, gtk3
+, webkitgtk
+}:
+
+stdenv.mkDerivation rec {
+  pname = "sonobus";
+  version = "1.6.2";
+
+  src = fetchFromGitHub {
+    owner = "sonosaurus";
+    repo = "sonobus";
+    rev = version;
+    sha256 = "sha256-/Pb+PYmoCYA6Qcy/tR1Ejyt+rZ3pfJeWV4j7bQWYE58=";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [
+    autoPatchelfHook
+    cmake
+    pkg-config
+  ];
+
+  buildInputs = [
+    alsa-lib
+    freetype
+    libjack2
+    libopus
+    curl
+    gtk3
+    webkitgtk
+  ];
+
+  runtimeDependencies = [
+    libGL
+    libX11
+    libXcursor
+    libXext
+    libXinerama
+    libXrandr
+  ];
+
+  postPatch = lib.optionalString (stdenv.isLinux) ''
+    # needs special setup on Linux, dunno if it can work on Darwin
+    # https://github.com/NixOS/nixpkgs/issues/19098
+    # Also, I get issues with linking without that, not sure why
+    sed -i -e '/juce::juce_recommended_lto_flags/d' CMakeLists.txt
+    patchShebangs linux/install.sh
+  '';
+
+  # The program does not provide any CMake install instructions
+  installPhase = lib.optionalString (stdenv.isLinux) ''
+    runHook preInstall
+    cd ../linux
+    ./install.sh "$out"
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "High-quality network audio streaming";
+    homepage = "https://sonobus.net/";
+    license = with licenses; [ gpl3Plus ];
+    maintainers = with maintainers; [ PowerUser64 ];
+    platforms = platforms.unix;
+    broken = stdenv.isDarwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/sony-headphones-client/default.nix b/nixpkgs/pkgs/applications/audio/sony-headphones-client/default.nix
index 127b2a5b1a93..72d22e9fb7e4 100644
--- a/nixpkgs/pkgs/applications/audio/sony-headphones-client/default.nix
+++ b/nixpkgs/pkgs/applications/audio/sony-headphones-client/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "SonyHeadphonesClient";
-  version = "1.2";
+  version = "1.3.2";
 
   src = fetchFromGitHub {
     owner = "Plutoberth";
     repo = "SonyHeadphonesClient";
     rev = "v${version}";
-    sha256 = "sha256-oejXrs9X+R6Jydro0XIw2XifzFA7asDhpobtaE3//Hc=";
+    hash = "sha256-vhI97KheKzr87exCh4xNN7NDefcagdMu1tWSt67vLiU=";
     fetchSubmodules = true;
   };
 
@@ -19,8 +19,6 @@ stdenv.mkDerivation rec {
 
   cmakeFlags = [ "-Wno-dev" ];
 
-  patches = [ ./gcc.patch ];
-
   postPatch = ''
     substituteInPlace Constants.h \
       --replace "UNKNOWN = -1" "// UNKNOWN removed since it doesn't fit in char"
diff --git a/nixpkgs/pkgs/applications/audio/sony-headphones-client/gcc.patch b/nixpkgs/pkgs/applications/audio/sony-headphones-client/gcc.patch
deleted file mode 100644
index 31050e4789e7..000000000000
--- a/nixpkgs/pkgs/applications/audio/sony-headphones-client/gcc.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-diff --git a/SingleInstanceFuture.h b/SingleInstanceFuture.h
-index 8af733f..d2e6c49 100644
---- a/SingleInstanceFuture.h
-+++ b/SingleInstanceFuture.h
-@@ -12,13 +12,13 @@ template <class T>
- class SingleInstanceFuture : public std::future<T>
- {
- public:
--	SingleInstanceFuture<T>() = default;
-+	SingleInstanceFuture(void) = default;
- 	template<class Func, class... Args>
- 	void setFromAsync(Func func, Args&&... args) noexcept(false);
- 	bool ready();
- 
- private:
--	SingleInstanceFuture<T>(std::future<T> other);
-+	SingleInstanceFuture(std::future<T> other);
- 	SingleInstanceFuture<T> operator=(std::future<T>& other);
- };
diff --git a/nixpkgs/pkgs/applications/audio/sooperlooper/default.nix b/nixpkgs/pkgs/applications/audio/sooperlooper/default.nix
index 1cad71ae2973..35fb524ab301 100644
--- a/nixpkgs/pkgs/applications/audio/sooperlooper/default.nix
+++ b/nixpkgs/pkgs/applications/audio/sooperlooper/default.nix
@@ -1,5 +1,7 @@
-{ lib, stdenv
+{ lib
+, stdenv
 , fetchFromGitHub
+, fetchpatch
 , autoreconfHook
 , pkg-config
 , which
@@ -8,7 +10,7 @@
 , libxml2
 , libjack2
 , libsndfile
-, wxGTK30
+, wxGTK32
 , libsigcxx
 , libsamplerate
 , rubberband
@@ -20,28 +22,41 @@
 
 stdenv.mkDerivation rec {
   pname = "sooperlooper";
-  version = "1.7.4";
+  version = "1.7.8";
 
   src = fetchFromGitHub {
     owner = "essej";
     repo = "sooperlooper";
-    rev = "v${builtins.replaceStrings [ "." ] [ "_" ] version}";
-    sha256 = "1jng9bkb7iikad0dy1fkiq9wjjdhh1xi1p0cp2lvnz1dsc4yk6iw";
+    rev = "v${version}";
+    sha256 = "sha256-Lrsz/UDCgoac63FJ3CaPVaYwvBtzkGQQRLhUi6lUusE=";
   };
 
+  patches = [
+    (fetchpatch {
+      name = "10-build_with_wx_32.patch";
+      url = "https://sources.debian.org/data/main/s/sooperlooper/1.7.8~dfsg0-2/debian/patches/10-build_with_wx_32.patch";
+      sha256 = "sha256-NF/w+zgRBNkSTqUJhfH9kQogXSYEF70pCN+loR0hjpg=";
+    })
+  ];
+
   autoreconfPhase = ''
     patchShebangs ./autogen.sh
     ./autogen.sh
   '';
 
-  nativeBuildInputs = [ autoreconfHook pkg-config which libtool ];
+  nativeBuildInputs = [
+    autoreconfHook
+    pkg-config
+    which
+    libtool
+  ];
 
   buildInputs = [
     liblo
     libxml2
     libjack2
     libsndfile
-    wxGTK30
+    wxGTK32
     libsigcxx
     libsamplerate
     rubberband
@@ -62,7 +77,7 @@ stdenv.mkDerivation rec {
       However, this kind of live performance looping tool is most effectively used via hardware (midi footpedals, etc)
       and the engine can be run standalone on a computer without a monitor.
     '';
-    homepage = "http://essej.net/sooperlooper/"; # https is broken
+    homepage = "https://sonosaurus.com/sooperlooper/";
     license = licenses.gpl2;
     maintainers = with maintainers; [ magnetophon ];
     platforms = platforms.linux;
diff --git a/nixpkgs/pkgs/applications/audio/soundconverter/default.nix b/nixpkgs/pkgs/applications/audio/soundconverter/default.nix
index c0966e9ab3fd..208d50a2773c 100644
--- a/nixpkgs/pkgs/applications/audio/soundconverter/default.nix
+++ b/nixpkgs/pkgs/applications/audio/soundconverter/default.nix
@@ -37,7 +37,7 @@ python3Packages.buildPythonApplication rec {
     python3Packages.pygobject3
   ];
 
-  checkInputs = [
+  nativeCheckInputs = [
     xvfb-run
   ];
 
diff --git a/nixpkgs/pkgs/applications/audio/soundscape-renderer/default.nix b/nixpkgs/pkgs/applications/audio/soundscape-renderer/default.nix
index 3ec2cda4280b..7a6399ff3c66 100644
--- a/nixpkgs/pkgs/applications/audio/soundscape-renderer/default.nix
+++ b/nixpkgs/pkgs/applications/audio/soundscape-renderer/default.nix
@@ -30,7 +30,7 @@ stdenv.mkDerivation {
   # Without it doesn't find all of the boost libraries.
   BOOST_LIB_DIR = "${boost}/lib";
   # uses the deprecated get_generic_category() in boost_system
-  NIX_CFLAGS_COMPILE = "-DBOOST_SYSTEM_ENABLE_DEPRECATED=1";
+  env.NIX_CFLAGS_COMPILE = "-DBOOST_SYSTEM_ENABLE_DEPRECATED=1";
 
   LC_ALL = "en_US.UTF-8";
 
diff --git a/nixpkgs/pkgs/applications/audio/soundtracker/default.nix b/nixpkgs/pkgs/applications/audio/soundtracker/default.nix
index 251725ea6b29..48acd5517179 100644
--- a/nixpkgs/pkgs/applications/audio/soundtracker/default.nix
+++ b/nixpkgs/pkgs/applications/audio/soundtracker/default.nix
@@ -12,7 +12,7 @@
 
 stdenv.mkDerivation rec {
   pname = "soundtracker";
-  version = "1.0.2.1";
+  version = "1.0.3";
 
   src = fetchurl {
     # Past releases get moved to the "old releases" directory.
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
     # 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.xz";
-    sha256 = "0nh0dwz8nldc040q6n06vlazhss8ms42r2dffhjcrqj3hbrvfx82";
+    sha256 = "sha256-k+TB1DIauOIeQSCVV5uYu69wwRx7vCRAlSCTAtDguKo=";
   };
 
   postPatch = lib.optionalString stdenv.hostPlatform.isDarwin ''
diff --git a/nixpkgs/pkgs/applications/audio/soundux/default.nix b/nixpkgs/pkgs/applications/audio/soundux/default.nix
new file mode 100644
index 000000000000..ea9ea3322b55
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/soundux/default.nix
@@ -0,0 +1,144 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, cmake
+, pkg-config
+, makeBinaryWrapper
+, pipewire
+, libpulseaudio
+, libappindicator
+, libstartup_notification
+, openssl
+, libwnck
+, pcre
+, util-linux
+, libselinux
+, libsepol
+, libthai
+, libdatrie
+, xorg
+, libxkbcommon
+, libepoxy
+, dbus
+, at-spi2-core
+, nlohmann_json
+, fancypp
+, httplib
+, semver-cpp
+, webkitgtk
+, yt-dlp
+, ffmpeg
+, lsb-release
+}:
+
+stdenv.mkDerivation rec {
+  pname = "soundux";
+  version = "0.2.7";
+
+  src = fetchFromGitHub {
+    owner = "Soundux";
+    repo = "Soundux";
+    rev = version;
+    sha256 = "sha256-aSCsg6nJt6F+6O7UeXnvYva0vllTfsxK/cjaeOhObZY=";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    makeBinaryWrapper
+  ];
+
+  buildInputs = [
+    pipewire
+    libpulseaudio
+    libappindicator
+    openssl
+    libwnck
+    pcre
+    util-linux
+    libselinux
+    libsepol
+    libthai
+    libdatrie
+    xorg.libXdmcp
+    xorg.libXtst
+    xorg.libXres
+    libxkbcommon
+    libepoxy
+    dbus
+    at-spi2-core
+    nlohmann_json
+    fancypp
+    httplib
+    semver-cpp
+    libstartup_notification
+    webkitgtk
+    yt-dlp
+    ffmpeg
+  ];
+
+  postPatch = ''
+    # cannot be overwritten with variables
+    substituteInPlace CMakeLists.txt \
+      --replace "set(CMAKE_INSTALL_PREFIX \"/opt/soundux\" CACHE PATH \"Install path prefix, prepended onto install directories.\" FORCE)" "" \
+      --replace "/usr/share" "$out/usr/share"
+    substituteInPlace src/ui/impl/webview/webview.cpp \
+      --replace "/usr/share/pixmaps/soundux.png" "$out/share/pixmaps/soundux.png"
+  '';
+
+  # We need to append /opt to our CMAKE_INSTALL_PREFIX
+  dontAddPrefix = true;
+
+  preConfigure = ''
+    # This needs to be set in preConfigure to access the $prefix variable
+    export cmakeFlags="-DCMAKE_INSTALL_PREFIX=$prefix/opt $cmakeFlags"
+
+    # Replace some fetched submodules with symlinks nix packages.
+    rm -rf \
+      lib/json \
+      lib/fancypp \
+      lib/lib-httplib \
+      lib/semver
+
+    ln -s ${nlohmann_json} lib/json
+    ln -s ${fancypp} lib/fancypp
+    ln -s ${httplib} lib/lib-httplib
+    ln -s ${semver-cpp} lib/semver
+  '';
+
+  NIX_CFLAGS_COMPILE = [ "-Wno-error=deprecated-declarations" ];
+
+  # Somehow some of the install destination paths in the build system still
+  # gets transformed to point to /var/empty/share, even though they are at least
+  # relative to the nix output directory with our earlier patching.
+  postInstall = ''
+    mv "$out/var/empty/share" "$out"
+    rm -rf "$out/var"
+    mkdir "$out/bin"
+    ln -s "$out/opt/soundux" "$out/bin"
+    substituteInPlace "$out/share/applications/soundux.desktop" \
+      --replace "/opt/soundux/soundux" "soundux"
+  '';
+
+  postFixup = let
+    rpaths = lib.makeLibraryPath [libwnck pipewire libpulseaudio];
+  in ''
+    # Wnck, PipeWire, and PulseAudio are dlopen-ed by Soundux, so they do
+    # not end up on the RPATH during the build process.
+    patchelf --add-rpath "${rpaths}" "$out/opt/soundux-${version}"
+
+    # Work around upstream bug https://github.com/Soundux/Soundux/issues/435
+    wrapProgram "$out/bin/soundux" \
+      --set WEBKIT_DISABLE_COMPOSITING_MODE 1 \
+      --prefix PATH : ${lib.makeBinPath [ yt-dlp ffmpeg lsb-release ]} \
+  '';
+
+  meta = with lib; {
+    description = "A cross-platform soundboard.";
+    homepage = "https://soundux.rocks/";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ aidalgol ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/spek/default.nix b/nixpkgs/pkgs/applications/audio/spek/default.nix
index 1a73b8adea72..f54e661b4c74 100644
--- a/nixpkgs/pkgs/applications/audio/spek/default.nix
+++ b/nixpkgs/pkgs/applications/audio/spek/default.nix
@@ -1,22 +1,19 @@
-{ lib, stdenv, fetchFromGitHub, autoreconfHook, intltool, pkg-config, ffmpeg, wxGTK30-gtk3, wrapGAppsHook }:
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, intltool, pkg-config, ffmpeg, wxGTK32, gtk3, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   pname = "spek";
-  version = "unstable-2018-12-29";
+  version = "0.8.5";
 
   src = fetchFromGitHub {
     owner = "alexkay";
     repo = "spek";
-    rev = "f071c2956176ad53c7c8059e5c00e694ded31ded";
-    sha256 = "1l9gj9c1n92zlcjnyjyk211h83dk0idk644xnm5rs7q40p2zliy5";
+    rev = "v${version}";
+    sha256 = "sha256-VYt2so2k3Rk3sLSV1Tf1G2pESYiXygrKr9Koop8ChCg=";
   };
 
-  # needed for autoreconfHook
-  AUTOPOINT="intltoolize --automake --copy";
-
   nativeBuildInputs = [ autoreconfHook intltool pkg-config wrapGAppsHook ];
 
-  buildInputs = [ ffmpeg wxGTK30-gtk3 wxGTK30-gtk3.gtk ];
+  buildInputs = [ ffmpeg wxGTK32 gtk3 ];
 
   meta = with lib; {
     description = "Analyse your audio files by showing their spectrogram";
diff --git a/nixpkgs/pkgs/applications/audio/spot/default.nix b/nixpkgs/pkgs/applications/audio/spot/default.nix
index e995f8cfa1b9..1935b3fcf22d 100644
--- a/nixpkgs/pkgs/applications/audio/spot/default.nix
+++ b/nixpkgs/pkgs/applications/audio/spot/default.nix
@@ -7,7 +7,9 @@
 , gettext
 , python3
 , desktop-file-utils
+, cargo
 , rustPlatform
+, rustc
 , pkg-config
 , glib
 , libadwaita
@@ -16,24 +18,24 @@
 , openssl
 , alsa-lib
 , libpulseaudio
-, wrapGAppsHook
+, wrapGAppsHook4
 }:
 
 stdenv.mkDerivation rec {
   pname = "spot";
-  version = "0.3.3";
+  version = "0.4.0";
 
   src = fetchFromGitHub {
     owner = "xou816";
     repo = "spot";
     rev = version;
-    hash = "sha256-0iuLZq9FSxaOchxx6LzGwpY8qnOq2APl/qkBYzEV2uw=";
+    hash = "sha256-K6wGWhAUUGsbE4O+z0TmJcJyGarvHgZteY527jfAa90=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     name = "${pname}-${version}";
-    hash = "sha256-g46BkrTv6tdrGe/p245O4cBoPjbvyRP7U6hH1Hp4ja0=";
+    hash = "sha256-eM2XLumn4dr2YtyUzBZJADlqdexc1iOaNJUudMlfSUc=";
   };
 
   nativeBuildInputs = [
@@ -45,10 +47,10 @@ stdenv.mkDerivation rec {
     gtk4 # for gtk-update-icon-cache
     glib # for glib-compile-schemas
     desktop-file-utils
-    rustPlatform.rust.cargo
+    cargo
     rustPlatform.cargoSetupHook
-    rustPlatform.rust.rustc
-    wrapGAppsHook
+    rustc
+    wrapGAppsHook4
   ];
 
   buildInputs = [
@@ -67,19 +69,19 @@ stdenv.mkDerivation rec {
   postPatch = ''
     chmod +x build-aux/cargo.sh
     patchShebangs build-aux/cargo.sh build-aux/meson/postinstall.py
+    substituteInPlace build-aux/meson/postinstall.py \
+      --replace gtk-update-icon-cache gtk4-update-icon-cache
   '';
 
   passthru = {
-    updateScript = nix-update-script {
-      attrPath = pname;
-    };
+    updateScript = nix-update-script { };
   };
 
   meta = with lib; {
     description = "Native Spotify client for the GNOME desktop";
     homepage = "https://github.com/xou816/spot";
     license = licenses.mit;
-    maintainers = with maintainers; [ jtojnar tomfitzhenry ];
+    maintainers = with maintainers; [ tomfitzhenry ];
     platforms = platforms.linux;
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/spotify-cli-linux/default.nix b/nixpkgs/pkgs/applications/audio/spotify-cli-linux/default.nix
index e473d97ce56c..c3717cd49938 100644
--- a/nixpkgs/pkgs/applications/audio/spotify-cli-linux/default.nix
+++ b/nixpkgs/pkgs/applications/audio/spotify-cli-linux/default.nix
@@ -1,9 +1,9 @@
-{ lib, python3Packages, dbus }:
+{ lib, python3Packages, fetchPypi, dbus }:
 python3Packages.buildPythonApplication rec {
   pname = "spotify-cli-linux";
   version = "1.6.0";
 
-  src = python3Packages.fetchPypi {
+  src = fetchPypi {
     inherit pname version;
     sha256 = "0slyc3jfrj3rwq8rv6p5aqkw487aw7a87kmf1fb6n4vnvcf08v7w";
   };
diff --git a/nixpkgs/pkgs/applications/audio/spotify-player/default.nix b/nixpkgs/pkgs/applications/audio/spotify-player/default.nix
new file mode 100644
index 000000000000..0e75f373dc2c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/spotify-player/default.nix
@@ -0,0 +1,60 @@
+{ lib
+, rustPlatform
+, fetchFromGitHub
+, pkg-config
+, openssl
+, cmake
+, alsa-lib
+, dbus
+, fontconfig
+, libsixel
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "spotify-player";
+  version = "0.14.1";
+
+  src = fetchFromGitHub {
+    owner = "aome510";
+    repo = pname;
+    rev = "refs/tags/v${version}";
+    hash = "sha256-+YPtu3hsKvk2KskVSpqcFufnWL5PxN8+xbkcz/JXW6g=";
+  };
+
+  cargoHash = "sha256-WgQ+v9dJyriqq7+WpXpPhjdwm2Sr0jozA1oW2inSPik=";
+
+  nativeBuildInputs = [
+    pkg-config
+    cmake
+  ];
+
+  buildInputs = [
+    openssl
+    alsa-lib
+    dbus
+    fontconfig
+    libsixel
+  ];
+
+  buildNoDefaultFeatures = true;
+
+  buildFeatures = [
+    "rodio-backend"
+    "media-control"
+    "image"
+    "lyric-finder"
+    "daemon"
+    "notify"
+    "streaming"
+    "sixel"
+  ];
+
+  meta = with lib; {
+    description = "A command driven spotify player";
+    homepage = "https://github.com/aome510/spotify-player";
+    changelog = "https://github.com/aome510/spotify-player/releases/tag/v${version}";
+    mainProgram = "spotify_player";
+    license = licenses.mit;
+    maintainers = with maintainers; [ dit7ya ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/spotify-qt/default.nix b/nixpkgs/pkgs/applications/audio/spotify-qt/default.nix
index 45ff1bebc79e..65a921ed5bf2 100644
--- a/nixpkgs/pkgs/applications/audio/spotify-qt/default.nix
+++ b/nixpkgs/pkgs/applications/audio/spotify-qt/default.nix
@@ -9,13 +9,13 @@
 
 mkDerivation rec {
    pname = "spotify-qt";
-   version = "3.8";
+   version = "3.9";
 
    src = fetchFromGitHub {
       owner = "kraxarn";
       repo = pname;
       rev = "v${version}";
-      sha256 = "sha256-Rgtw+nrM8YUBHPIIe9zVhLij/ep07piPf/2MSmTVQKk=";
+      sha256 = "sha256-8rLpasgXiaL2KpGnYMQdNN2ayjcSkmz5hDkNBnKNWHk=";
    };
 
    buildInputs = [ libxcb qtbase qtsvg ];
@@ -30,7 +30,7 @@ mkDerivation rec {
     description = "Lightweight unofficial Spotify client using Qt";
     homepage = "https://github.com/kraxarn/spotify-qt";
     license = licenses.gpl3Only;
-    maintainers = with maintainers; [ kiyengar ];
+    maintainers = with maintainers; [ ];
     platforms = platforms.unix;
    };
 }
diff --git a/nixpkgs/pkgs/applications/audio/spotify-tui/Cargo.lock b/nixpkgs/pkgs/applications/audio/spotify-tui/Cargo.lock
new file mode 100644
index 000000000000..22ab43406c48
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/spotify-tui/Cargo.lock
@@ -0,0 +1,2704 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "addr2line"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97"
+dependencies = [
+ "gimli",
+]
+
+[[package]]
+name = "adler"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
+
+[[package]]
+name = "adler32"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234"
+
+[[package]]
+name = "aho-corasick"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67fc08ce920c31afb70f013dcce1bfc3a3195de6a228474e45e1f145b36f8d04"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "android_system_properties"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "ansi_term"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
+dependencies = [
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "anyhow"
+version = "1.0.71"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8"
+
+[[package]]
+name = "arboard"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "47044a1809e2953fe6d084312b81dcb7d9ffc24fee45aa39e5b938f66f75b8a8"
+dependencies = [
+ "clipboard-win",
+ "core-graphics",
+ "image",
+ "log",
+ "objc",
+ "objc-foundation",
+ "objc_id",
+ "once_cell",
+ "parking_lot",
+ "scopeguard",
+ "thiserror",
+ "winapi 0.3.9",
+ "x11rb",
+]
+
+[[package]]
+name = "atty"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
+dependencies = [
+ "hermit-abi 0.1.19",
+ "libc",
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "autocfg"
+version = "0.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0dde43e75fd43e8a1bf86103336bc699aa8d17ad1be60c76c0bdfd4828e19b78"
+dependencies = [
+ "autocfg 1.1.0",
+]
+
+[[package]]
+name = "autocfg"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+
+[[package]]
+name = "backtrace"
+version = "0.3.67"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca"
+dependencies = [
+ "addr2line",
+ "cc",
+ "cfg-if 1.0.0",
+ "libc",
+ "miniz_oxide 0.6.2",
+ "object",
+ "rustc-demangle",
+]
+
+[[package]]
+name = "base64"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e"
+dependencies = [
+ "byteorder",
+]
+
+[[package]]
+name = "base64"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
+
+[[package]]
+name = "bitflags"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
+
+[[package]]
+name = "block"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
+
+[[package]]
+name = "bumpalo"
+version = "3.12.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c6ed94e98ecff0c12dd1b04c15ec0d7d9458ca8fe806cea6f12954efe74c63b"
+
+[[package]]
+name = "bytemuck"
+version = "1.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea"
+
+[[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.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be"
+
+[[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.79"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
+
+[[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.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b"
+dependencies = [
+ "iana-time-zone",
+ "js-sys",
+ "num-integer",
+ "num-traits",
+ "rustc-serialize",
+ "serde",
+ "time",
+ "wasm-bindgen",
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "clap"
+version = "2.34.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
+dependencies = [
+ "ansi_term",
+ "atty",
+ "bitflags",
+ "strsim 0.8.0",
+ "textwrap",
+ "unicode-width",
+ "vec_map",
+]
+
+[[package]]
+name = "clipboard-win"
+version = "4.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7191c27c2357d9b7ef96baac1773290d4ca63b24205b82a3fd8a0637afcf0362"
+dependencies = [
+ "error-code",
+ "str-buf",
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "cloudabi"
+version = "0.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"
+dependencies = [
+ "bitflags",
+]
+
+[[package]]
+name = "color_quant"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b"
+
+[[package]]
+name = "core-foundation"
+version = "0.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "core-foundation-sys"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa"
+
+[[package]]
+name = "core-graphics"
+version = "0.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52a67c4378cf203eace8fb6567847eb641fd6ff933c1145a115c6ee820ebb978"
+dependencies = [
+ "bitflags",
+ "core-foundation",
+ "foreign-types",
+ "libc",
+]
+
+[[package]]
+name = "crc32fast"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
+dependencies = [
+ "cfg-if 1.0.0",
+]
+
+[[package]]
+name = "crossterm"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0ebde6a9dd5e331cd6c6f48253254d117642c31653baa475e394657c59c1f7d"
+dependencies = [
+ "bitflags",
+ "crossterm_winapi",
+ "libc",
+ "mio 0.7.14",
+ "parking_lot",
+ "signal-hook",
+ "signal-hook-mio",
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "crossterm_winapi"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3a6966607622438301997d3dac0d2f6e9a90c68bb6bc1785ea98456ab93c0507"
+dependencies = [
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "darling"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fcfbcb0c5961907597a7d1148e3af036268f2b773886b8bb3eeb1e1281d3d3d6"
+dependencies = [
+ "darling_core",
+ "darling_macro",
+]
+
+[[package]]
+name = "darling_core"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6afc018370c3bff3eb51f89256a6bdb18b4fdcda72d577982a14954a7a0b402c"
+dependencies = [
+ "fnv",
+ "ident_case",
+ "proc-macro2 0.4.30",
+ "quote 0.6.13",
+ "strsim 0.7.0",
+ "syn 0.15.44",
+]
+
+[[package]]
+name = "darling_macro"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c6d8dac1c6f1d29a41c4712b4400f878cb4fcc4c7628f298dd75038e024998d1"
+dependencies = [
+ "darling_core",
+ "quote 0.6.13",
+ "syn 0.15.44",
+]
+
+[[package]]
+name = "deflate"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73770f8e1fe7d64df17ca66ad28994a0a623ea497fa69486e14984e715c5d174"
+dependencies = [
+ "adler32",
+ "byteorder",
+]
+
+[[package]]
+name = "derive_builder"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3ac53fa6a3cda160df823a9346442525dcaf1e171999a1cf23e67067e4fd64d4"
+dependencies = [
+ "darling",
+ "derive_builder_core",
+ "proc-macro2 0.4.30",
+ "quote 0.6.13",
+ "syn 0.15.44",
+]
+
+[[package]]
+name = "derive_builder_core"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0288a23da9333c246bb18c143426074a6ae96747995c5819d2947b64cd942b37"
+dependencies = [
+ "darling",
+ "proc-macro2 0.4.30",
+ "quote 0.6.13",
+ "syn 0.15.44",
+]
+
+[[package]]
+name = "dirs"
+version = "3.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "30baa043103c9d0c2a57cf537cc2f35623889dc0d405e6c3cccfadbc81c71309"
+dependencies = [
+ "dirs-sys",
+]
+
+[[package]]
+name = "dirs-sys"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6"
+dependencies = [
+ "libc",
+ "redox_users",
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "dotenv"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0d0a1279c96732bc6800ce6337b6a614697b0e74ae058dc03c62ebeb78b4d86"
+dependencies = [
+ "failure",
+ "lazy_static",
+ "regex",
+]
+
+[[package]]
+name = "either"
+version = "1.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
+
+[[package]]
+name = "encoding_rs"
+version = "0.8.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394"
+dependencies = [
+ "cfg-if 1.0.0",
+]
+
+[[package]]
+name = "env_logger"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aafcde04e90a5226a6443b7aabdb016ba2f8307c847d524724bd9b346dd1a2d3"
+dependencies = [
+ "atty",
+ "humantime",
+ "log",
+ "regex",
+ "termcolor",
+]
+
+[[package]]
+name = "errno"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a"
+dependencies = [
+ "errno-dragonfly",
+ "libc",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "errno-dragonfly"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
+dependencies = [
+ "cc",
+ "libc",
+]
+
+[[package]]
+name = "error-code"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "64f18991e7bf11e7ffee451b5318b5c1a73c52d0d0ada6e5a3017c8c1ced6a21"
+dependencies = [
+ "libc",
+ "str-buf",
+]
+
+[[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 1.0.56",
+ "quote 1.0.27",
+ "syn 1.0.109",
+ "synstructure",
+]
+
+[[package]]
+name = "fastrand"
+version = "1.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"
+dependencies = [
+ "instant",
+]
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "foreign-types"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
+dependencies = [
+ "foreign-types-shared",
+]
+
+[[package]]
+name = "foreign-types-shared"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
+
+[[package]]
+name = "form_urlencoded"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
+dependencies = [
+ "percent-encoding 2.2.0",
+]
+
+[[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",
+ "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.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-io",
+ "futures-sink",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-channel"
+version = "0.3.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2"
+dependencies = [
+ "futures-core",
+ "futures-sink",
+]
+
+[[package]]
+name = "futures-core"
+version = "0.3.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c"
+
+[[package]]
+name = "futures-executor"
+version = "0.3.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0"
+dependencies = [
+ "futures-core",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-io"
+version = "0.3.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964"
+
+[[package]]
+name = "futures-macro"
+version = "0.3.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
+dependencies = [
+ "proc-macro2 1.0.56",
+ "quote 1.0.27",
+ "syn 2.0.15",
+]
+
+[[package]]
+name = "futures-sink"
+version = "0.3.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e"
+
+[[package]]
+name = "futures-task"
+version = "0.3.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65"
+
+[[package]]
+name = "futures-util"
+version = "0.3.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-macro",
+ "futures-sink",
+ "futures-task",
+ "memchr",
+ "pin-project-lite 0.2.9",
+ "pin-utils",
+ "slab",
+]
+
+[[package]]
+name = "gethostname"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e"
+dependencies = [
+ "libc",
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4"
+dependencies = [
+ "cfg-if 1.0.0",
+ "libc",
+ "wasi 0.11.0+wasi-snapshot-preview1",
+]
+
+[[package]]
+name = "gimli"
+version = "0.27.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4"
+
+[[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.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+
+[[package]]
+name = "hermit-abi"
+version = "0.1.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "hermit-abi"
+version = "0.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "hermit-abi"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286"
+
+[[package]]
+name = "http"
+version = "0.2.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482"
+dependencies = [
+ "bytes 1.4.0",
+ "fnv",
+ "itoa 1.0.6",
+]
+
+[[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.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
+
+[[package]]
+name = "httpdate"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47"
+
+[[package]]
+name = "humantime"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f"
+dependencies = [
+ "quick-error",
+]
+
+[[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 0.4.8",
+ "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 = "iana-time-zone"
+version = "0.1.56"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0722cd7114b7de04316e7ea5456a0bbb20e4adb46fd27a3697adb812cff0f37c"
+dependencies = [
+ "android_system_properties",
+ "core-foundation-sys",
+ "iana-time-zone-haiku",
+ "js-sys",
+ "wasm-bindgen",
+ "windows",
+]
+
+[[package]]
+name = "iana-time-zone-haiku"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
+dependencies = [
+ "cc",
+]
+
+[[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.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e"
+dependencies = [
+ "matches",
+ "unicode-bidi",
+ "unicode-normalization",
+]
+
+[[package]]
+name = "idna"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
+dependencies = [
+ "unicode-bidi",
+ "unicode-normalization",
+]
+
+[[package]]
+name = "image"
+version = "0.23.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24ffcb7e7244a9bf19d35bf2883b9c080c4ced3c07a9895572178cdb8f13f6a1"
+dependencies = [
+ "bytemuck",
+ "byteorder",
+ "color_quant",
+ "num-iter",
+ "num-rational",
+ "num-traits",
+ "png",
+ "tiff",
+]
+
+[[package]]
+name = "indexmap"
+version = "1.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
+dependencies = [
+ "autocfg 1.1.0",
+ "hashbrown",
+]
+
+[[package]]
+name = "instant"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+dependencies = [
+ "cfg-if 1.0.0",
+]
+
+[[package]]
+name = "io-lifetimes"
+version = "1.0.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220"
+dependencies = [
+ "hermit-abi 0.3.1",
+ "libc",
+ "windows-sys 0.48.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.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "12b6ee2129af8d4fb011108c73d99a1b83a85977f23b82460c0ae2e25bb4b57f"
+
+[[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.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4"
+
+[[package]]
+name = "itoa"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
+
+[[package]]
+name = "jpeg-decoder"
+version = "0.1.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "229d53d58899083193af11e15917b5640cd40b29ff475a1fe4ef725deb02d0f2"
+
+[[package]]
+name = "js-sys"
+version = "0.3.62"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68c16e1bfd491478ab155fd8b4896b86f9ede344949b641e61501e07c2b8b4d5"
+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 = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+
+[[package]]
+name = "libc"
+version = "0.2.144"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b00cc1c228a6782d0f076e7b232802e0c5689d41bb5df366f2a6b6621cfdfe1"
+
+[[package]]
+name = "linked-hash-map"
+version = "0.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ece97ea872ece730aed82664c424eb4c8291e1ff2480247ccf7409044bc6479f"
+
+[[package]]
+name = "lock_api"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df"
+dependencies = [
+ "autocfg 1.1.0",
+ "scopeguard",
+]
+
+[[package]]
+name = "log"
+version = "0.4.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
+dependencies = [
+ "cfg-if 1.0.0",
+]
+
+[[package]]
+name = "malloc_buf"
+version = "0.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "matches"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5"
+
+[[package]]
+name = "memchr"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+
+[[package]]
+name = "memoffset"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
+dependencies = [
+ "autocfg 1.1.0",
+]
+
+[[package]]
+name = "mime"
+version = "0.3.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
+
+[[package]]
+name = "mime_guess"
+version = "2.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef"
+dependencies = [
+ "mime",
+ "unicase",
+]
+
+[[package]]
+name = "miniz_oxide"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "791daaae1ed6889560f8c4359194f56648355540573244a5448a83ba1ecc7435"
+dependencies = [
+ "adler32",
+]
+
+[[package]]
+name = "miniz_oxide"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b"
+dependencies = [
+ "adler",
+ "autocfg 1.1.0",
+]
+
+[[package]]
+name = "miniz_oxide"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa"
+dependencies = [
+ "adler",
+]
+
+[[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 0.2.2",
+ "net2",
+ "slab",
+ "winapi 0.2.8",
+]
+
+[[package]]
+name = "mio"
+version = "0.7.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc"
+dependencies = [
+ "libc",
+ "log",
+ "miow 0.3.7",
+ "ntapi",
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "mio-named-pipes"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0840c1c50fd55e521b247f949c241c9997709f23bd7f023b9762cd561e935656"
+dependencies = [
+ "log",
+ "mio 0.6.23",
+ "miow 0.3.7",
+ "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",
+ "libc",
+ "mio 0.6.23",
+]
+
+[[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 = "miow"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21"
+dependencies = [
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "native-tls"
+version = "0.2.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e"
+dependencies = [
+ "lazy_static",
+ "libc",
+ "log",
+ "openssl",
+ "openssl-probe",
+ "openssl-sys",
+ "schannel",
+ "security-framework",
+ "security-framework-sys",
+ "tempfile",
+]
+
+[[package]]
+name = "net2"
+version = "0.2.38"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74d0df99cfcd2530b2e694f6e17e7f37b8e26bb23983ac530c0c97408837c631"
+dependencies = [
+ "cfg-if 0.1.10",
+ "libc",
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "nix"
+version = "0.20.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f5e06129fb611568ef4e868c14b326274959aa70ff7776e9d55323531c374945"
+dependencies = [
+ "bitflags",
+ "cc",
+ "cfg-if 1.0.0",
+ "libc",
+ "memoffset",
+]
+
+[[package]]
+name = "ntapi"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f"
+dependencies = [
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "num-integer"
+version = "0.1.45"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
+dependencies = [
+ "autocfg 1.1.0",
+ "num-traits",
+]
+
+[[package]]
+name = "num-iter"
+version = "0.1.43"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252"
+dependencies = [
+ "autocfg 1.1.0",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-rational"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07"
+dependencies = [
+ "autocfg 1.1.0",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+dependencies = [
+ "autocfg 1.1.0",
+]
+
+[[package]]
+name = "num_cpus"
+version = "1.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
+dependencies = [
+ "hermit-abi 0.2.6",
+ "libc",
+]
+
+[[package]]
+name = "objc"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1"
+dependencies = [
+ "malloc_buf",
+]
+
+[[package]]
+name = "objc-foundation"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9"
+dependencies = [
+ "block",
+ "objc",
+ "objc_id",
+]
+
+[[package]]
+name = "objc_id"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b"
+dependencies = [
+ "objc",
+]
+
+[[package]]
+name = "object"
+version = "0.30.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.17.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
+
+[[package]]
+name = "openssl"
+version = "0.10.52"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "01b8574602df80f7b85fdfc5392fa884a4e3b3f4f35402c070ab34c3d3f78d56"
+dependencies = [
+ "bitflags",
+ "cfg-if 1.0.0",
+ "foreign-types",
+ "libc",
+ "once_cell",
+ "openssl-macros",
+ "openssl-sys",
+]
+
+[[package]]
+name = "openssl-macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
+dependencies = [
+ "proc-macro2 1.0.56",
+ "quote 1.0.27",
+ "syn 2.0.15",
+]
+
+[[package]]
+name = "openssl-probe"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
+
+[[package]]
+name = "openssl-sys"
+version = "0.9.87"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e17f59264b2809d77ae94f0e1ebabc434773f370d6ca667bd223ea10e06cc7e"
+dependencies = [
+ "cc",
+ "libc",
+ "pkg-config",
+ "vcpkg",
+]
+
+[[package]]
+name = "parking_lot"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99"
+dependencies = [
+ "instant",
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc"
+dependencies = [
+ "cfg-if 1.0.0",
+ "instant",
+ "libc",
+ "redox_syscall 0.2.16",
+ "smallvec",
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "percent-encoding"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831"
+
+[[package]]
+name = "percent-encoding"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
+
+[[package]]
+name = "pin-project"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc"
+dependencies = [
+ "pin-project-internal",
+]
+
+[[package]]
+name = "pin-project-internal"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55"
+dependencies = [
+ "proc-macro2 1.0.56",
+ "quote 1.0.27",
+ "syn 1.0.109",
+]
+
+[[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.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
+
+[[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.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964"
+
+[[package]]
+name = "png"
+version = "0.16.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c3287920cb847dee3de33d301c463fba14dda99db24214ddf93f83d3021f4c6"
+dependencies = [
+ "bitflags",
+ "crc32fast",
+ "deflate",
+ "miniz_oxide 0.3.7",
+]
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+
+[[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",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.56"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435"
+dependencies = [
+ "unicode-ident",
+]
+
+[[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",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f4f29d145265ec1c483c7c654450edde0bfe043d3938d6972630663356d9500"
+dependencies = [
+ "proc-macro2 1.0.56",
+]
+
+[[package]]
+name = "rand"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca"
+dependencies = [
+ "autocfg 0.1.8",
+ "libc",
+ "rand_chacha 0.1.1",
+ "rand_core 0.4.2",
+ "rand_hc",
+ "rand_isaac",
+ "rand_jitter",
+ "rand_os",
+ "rand_pcg",
+ "rand_xorshift",
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha 0.3.1",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef"
+dependencies = [
+ "autocfg 0.1.8",
+ "rand_core 0.3.1",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core 0.6.4",
+]
+
+[[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",
+]
+
+[[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.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "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",
+]
+
+[[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",
+]
+
+[[package]]
+name = "rand_jitter"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b"
+dependencies = [
+ "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",
+ "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.8",
+ "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",
+]
+
+[[package]]
+name = "random"
+version = "0.12.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97d13a3485349981c90c79112a11222c3e6e75de1d52b87a7525b3bf5361420f"
+
+[[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",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
+dependencies = [
+ "bitflags",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
+dependencies = [
+ "bitflags",
+]
+
+[[package]]
+name = "redox_users"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"
+dependencies = [
+ "getrandom",
+ "redox_syscall 0.2.16",
+ "thiserror",
+]
+
+[[package]]
+name = "regex"
+version = "1.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af83e617f331cc6ae2da5443c602dfa5af81e517212d9d611a5b3ba1777b5370"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a5996294f19bd3aae0453a862ad728f60e6600695733dd5df01da90c54363a3c"
+
+[[package]]
+name = "reqwest"
+version = "0.10.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0718f81a8e14c4dbb3b34cf23dc6aaf9ab8a0dfec160c534b3dbca1aaa21f47c"
+dependencies = [
+ "base64 0.13.1",
+ "bytes 0.5.6",
+ "encoding_rs",
+ "futures-core",
+ "futures-util",
+ "http",
+ "http-body",
+ "hyper",
+ "hyper-tls",
+ "ipnet",
+ "js-sys",
+ "lazy_static",
+ "log",
+ "mime",
+ "mime_guess",
+ "native-tls",
+ "percent-encoding 2.2.0",
+ "pin-project-lite 0.2.9",
+ "serde",
+ "serde_json",
+ "serde_urlencoded",
+ "tokio",
+ "tokio-socks",
+ "tokio-tls",
+ "url 2.3.1",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+ "winreg",
+]
+
+[[package]]
+name = "rspotify"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eefd7bb58b714606b30a490f751d7926942e2874eef5e82934d60d7a4a68dca4"
+dependencies = [
+ "base64 0.10.1",
+ "chrono",
+ "derive_builder",
+ "dotenv",
+ "env_logger",
+ "failure",
+ "itertools",
+ "lazy_static",
+ "log",
+ "percent-encoding 1.0.1",
+ "rand 0.6.5",
+ "random",
+ "reqwest",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "url 1.7.2",
+ "webbrowser",
+]
+
+[[package]]
+name = "rustc-demangle"
+version = "0.1.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
+
+[[package]]
+name = "rustc-serialize"
+version = "0.3.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda"
+
+[[package]]
+name = "rustix"
+version = "0.37.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f79bef90eb6d984c72722595b5b1348ab39275a5e5123faca6863bf07d75a4e0"
+dependencies = [
+ "bitflags",
+ "errno",
+ "io-lifetimes",
+ "libc",
+ "linux-raw-sys",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "ryu"
+version = "1.0.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
+
+[[package]]
+name = "schannel"
+version = "0.1.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3"
+dependencies = [
+ "windows-sys 0.42.0",
+]
+
+[[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.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23a2ac85147a3a11d77ecf1bc7166ec0b92febfa4461c37944e180f319ece467"
+dependencies = [
+ "bitflags",
+ "core-foundation",
+ "core-foundation-sys",
+ "libc",
+ "security-framework-sys",
+]
+
+[[package]]
+name = "security-framework-sys"
+version = "2.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "31c9bb296072e961fcbd8853511dd39c2d8be2deb1e17c6860b1d30732b323b4"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "serde"
+version = "1.0.163"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2113ab51b87a539ae008b5c6c02dc020ffa39afd2d83cffcb3f4eb2722cebec2"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.163"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c805777e3930c8883389c602315a24224bcc738b63905ef87cd1420353ea93e"
+dependencies = [
+ "proc-macro2 1.0.56",
+ "quote 1.0.27",
+ "syn 2.0.15",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.96"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1"
+dependencies = [
+ "itoa 1.0.6",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_urlencoded"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
+dependencies = [
+ "form_urlencoded",
+ "itoa 1.0.6",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_yaml"
+version = "0.8.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b"
+dependencies = [
+ "indexmap",
+ "ryu",
+ "serde",
+ "yaml-rust",
+]
+
+[[package]]
+name = "signal-hook"
+version = "0.3.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "732768f1176d21d09e076c23a93123d40bba92d50c4058da34d45c8de8e682b9"
+dependencies = [
+ "libc",
+ "signal-hook-registry",
+]
+
+[[package]]
+name = "signal-hook-mio"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af"
+dependencies = [
+ "libc",
+ "mio 0.7.14",
+ "signal-hook",
+]
+
+[[package]]
+name = "signal-hook-registry"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "slab"
+version = "0.4.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
+dependencies = [
+ "autocfg 1.1.0",
+]
+
+[[package]]
+name = "smallvec"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
+
+[[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 = "spotify-tui"
+version = "0.25.0"
+dependencies = [
+ "anyhow",
+ "arboard",
+ "backtrace",
+ "clap",
+ "crossterm",
+ "dirs",
+ "rand 0.8.5",
+ "rspotify",
+ "serde",
+ "serde_json",
+ "serde_yaml",
+ "tokio",
+ "tui",
+ "unicode-width",
+]
+
+[[package]]
+name = "str-buf"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e08d8363704e6c71fc928674353e6b7c23dcea9d82d7012c8faf2a3a025f8d0"
+
+[[package]]
+name = "strsim"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550"
+
+[[package]]
+name = "strsim"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
+
+[[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",
+ "quote 0.6.13",
+ "unicode-xid 0.1.0",
+]
+
+[[package]]
+name = "syn"
+version = "1.0.109"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+dependencies = [
+ "proc-macro2 1.0.56",
+ "quote 1.0.27",
+ "unicode-ident",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822"
+dependencies = [
+ "proc-macro2 1.0.56",
+ "quote 1.0.27",
+ "unicode-ident",
+]
+
+[[package]]
+name = "synstructure"
+version = "0.12.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
+dependencies = [
+ "proc-macro2 1.0.56",
+ "quote 1.0.27",
+ "syn 1.0.109",
+ "unicode-xid 0.2.4",
+]
+
+[[package]]
+name = "tempfile"
+version = "3.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998"
+dependencies = [
+ "cfg-if 1.0.0",
+ "fastrand",
+ "redox_syscall 0.3.5",
+ "rustix",
+ "windows-sys 0.45.0",
+]
+
+[[package]]
+name = "termcolor"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "textwrap"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
+dependencies = [
+ "unicode-width",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
+dependencies = [
+ "proc-macro2 1.0.56",
+ "quote 1.0.27",
+ "syn 2.0.15",
+]
+
+[[package]]
+name = "tiff"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a53f4706d65497df0c4349241deddf35f84cee19c87ed86ea8ca590f4464437"
+dependencies = [
+ "jpeg-decoder",
+ "miniz_oxide 0.4.4",
+ "weezl",
+]
+
+[[package]]
+name = "time"
+version = "0.1.45"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a"
+dependencies = [
+ "libc",
+ "wasi 0.10.0+wasi-snapshot-preview1",
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "tinyvec"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+dependencies = [
+ "tinyvec_macros",
+]
+
+[[package]]
+name = "tinyvec_macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+
+[[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",
+ "libc",
+ "memchr",
+ "mio 0.6.23",
+ "mio-named-pipes",
+ "mio-uds",
+ "num_cpus",
+ "pin-project-lite 0.1.12",
+ "signal-hook-registry",
+ "slab",
+ "tokio-macros",
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "tokio-macros"
+version = "0.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e44da00bfc73a25f814cd8d7e57a68a5c31b74b3152a0a1d1f590c97ed06265a"
+dependencies = [
+ "proc-macro2 1.0.56",
+ "quote 1.0.27",
+ "syn 1.0.109",
+]
+
+[[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 = "tower-service"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
+
+[[package]]
+name = "tracing"
+version = "0.1.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
+dependencies = [
+ "cfg-if 1.0.0",
+ "log",
+ "pin-project-lite 0.2.9",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a"
+dependencies = [
+ "once_cell",
+]
+
+[[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.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed"
+
+[[package]]
+name = "tui"
+version = "0.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39c8ce4e27049eed97cfa363a5048b09d995e209994634a0efc26a14ab6c0c23"
+dependencies = [
+ "bitflags",
+ "cassowary",
+ "crossterm",
+ "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",
+]
+
+[[package]]
+name = "unicode-bidi"
+version = "0.3.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
+
+[[package]]
+name = "unicode-normalization"
+version = "0.1.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
+dependencies = [
+ "tinyvec",
+]
+
+[[package]]
+name = "unicode-segmentation"
+version = "1.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
+
+[[package]]
+name = "unicode-width"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
+
+[[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.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
+
+[[package]]
+name = "url"
+version = "1.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a"
+dependencies = [
+ "idna 0.1.5",
+ "matches",
+ "percent-encoding 1.0.1",
+]
+
+[[package]]
+name = "url"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
+dependencies = [
+ "form_urlencoded",
+ "idna 0.3.0",
+ "percent-encoding 2.2.0",
+]
+
+[[package]]
+name = "vcpkg"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
+
+[[package]]
+name = "vec_map"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
+
+[[package]]
+name = "version_check"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+
+[[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.10.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f"
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.85"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b6cb788c4e39112fbe1822277ef6fb3c55cd86b95cb3d3c4c1c9597e4ac74b4"
+dependencies = [
+ "cfg-if 1.0.0",
+ "serde",
+ "serde_json",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.85"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "35e522ed4105a9d626d885b35d62501b30d9666283a5c8be12c14a8bdafe7822"
+dependencies = [
+ "bumpalo",
+ "log",
+ "once_cell",
+ "proc-macro2 1.0.56",
+ "quote 1.0.27",
+ "syn 2.0.15",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-futures"
+version = "0.4.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "083abe15c5d88556b77bdf7aef403625be9e327ad37c62c4e4129af740168163"
+dependencies = [
+ "cfg-if 1.0.0",
+ "js-sys",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.85"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "358a79a0cb89d21db8120cbfb91392335913e4890665b1a7981d9e956903b434"
+dependencies = [
+ "quote 1.0.27",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.85"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4783ce29f09b9d93134d41297aded3a712b7b979e9c6f28c32cb88c973a94869"
+dependencies = [
+ "proc-macro2 1.0.56",
+ "quote 1.0.27",
+ "syn 2.0.15",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.85"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a901d592cafaa4d711bc324edfaff879ac700b19c3dfd60058d2b445be2691eb"
+
+[[package]]
+name = "web-sys"
+version = "0.3.62"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "16b5f940c7edfdc6d12126d98c9ef4d1b3d470011c47c76a6581df47ad9ba721"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "webbrowser"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ecad156490d6b620308ed411cfee90d280b3cbd13e189ea0d3fada8acc89158a"
+dependencies = [
+ "web-sys",
+ "widestring",
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "weezl"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb"
+
+[[package]]
+name = "widestring"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c168940144dd21fd8046987c16a46a33d5fc84eec29ef9dcddc2ac9e31526b7c"
+
+[[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-wsapoll"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44c17110f57155602a80dca10be03852116403c9ff3cd25b079d666f2aa3df6e"
+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 = "windows"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f"
+dependencies = [
+ "windows-targets 0.48.0",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
+dependencies = [
+ "windows_aarch64_gnullvm 0.42.2",
+ "windows_aarch64_msvc 0.42.2",
+ "windows_i686_gnu 0.42.2",
+ "windows_i686_msvc 0.42.2",
+ "windows_x86_64_gnu 0.42.2",
+ "windows_x86_64_gnullvm 0.42.2",
+ "windows_x86_64_msvc 0.42.2",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.45.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
+dependencies = [
+ "windows-targets 0.42.2",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+dependencies = [
+ "windows-targets 0.48.0",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
+dependencies = [
+ "windows_aarch64_gnullvm 0.42.2",
+ "windows_aarch64_msvc 0.42.2",
+ "windows_i686_gnu 0.42.2",
+ "windows_i686_msvc 0.42.2",
+ "windows_x86_64_gnu 0.42.2",
+ "windows_x86_64_gnullvm 0.42.2",
+ "windows_x86_64_msvc 0.42.2",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5"
+dependencies = [
+ "windows_aarch64_gnullvm 0.48.0",
+ "windows_aarch64_msvc 0.48.0",
+ "windows_i686_gnu 0.48.0",
+ "windows_i686_msvc 0.48.0",
+ "windows_x86_64_gnu 0.48.0",
+ "windows_x86_64_gnullvm 0.48.0",
+ "windows_x86_64_msvc 0.48.0",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
+
+[[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 = "x11rb"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ffb080b3f2f616242a4eb8e7d325035312127901025b0052bc3154a282d0f19"
+dependencies = [
+ "gethostname",
+ "nix",
+ "winapi 0.3.9",
+ "winapi-wsapoll",
+]
+
+[[package]]
+name = "yaml-rust"
+version = "0.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85"
+dependencies = [
+ "linked-hash-map",
+]
diff --git a/nixpkgs/pkgs/applications/audio/spotify-tui/Cargo.lock.patch b/nixpkgs/pkgs/applications/audio/spotify-tui/Cargo.lock.patch
deleted file mode 100644
index 7509d6c35c41..000000000000
--- a/nixpkgs/pkgs/applications/audio/spotify-tui/Cargo.lock.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/Cargo.lock	2022-04-27 17:25:49.017415644 +0300
-+++ b/Cargo.lock	2022-04-27 17:25:51.307433984 +0300
-@@ -1722,8 +1722,6 @@
- [[package]]
- name = "rspotify"
- version = "0.10.0"
--source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "eefd7bb58b714606b30a490f751d7926942e2874eef5e82934d60d7a4a68dca4"
- dependencies = [
-  "base64 0.10.1",
-  "chrono",
diff --git a/nixpkgs/pkgs/applications/audio/spotify-tui/Cargo.toml.patch b/nixpkgs/pkgs/applications/audio/spotify-tui/Cargo.toml.patch
deleted file mode 100644
index 606f69ca7488..000000000000
--- a/nixpkgs/pkgs/applications/audio/spotify-tui/Cargo.toml.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- a/Cargo.toml	2022-04-25 18:20:04.329712912 +0200
-+++ b/Cargo.toml	2022-04-25 18:20:44.296429608 +0200
-@@ -29,6 +29,9 @@
- rand = "0.8.3"
- anyhow = "1.0.43"
- 
-+[patch.crates-io]
-+rspotify = { path = "./rspotify-0.10.0" }
-+
- [[bin]]
- bench = false
- path = "src/main.rs"
diff --git a/nixpkgs/pkgs/applications/audio/spotify-tui/default.nix b/nixpkgs/pkgs/applications/audio/spotify-tui/default.nix
index 2b1d114964bf..bca06406eba9 100644
--- a/nixpkgs/pkgs/applications/audio/spotify-tui/default.nix
+++ b/nixpkgs/pkgs/applications/audio/spotify-tui/default.nix
@@ -1,4 +1,15 @@
-{ lib, stdenv, fetchFromGitHub, fetchCrate, rustPlatform, installShellFiles, pkg-config, openssl, python3, libxcb, AppKit, Security }:
+{ lib
+, rustPlatform
+, fetchFromGitHub
+, stdenv
+, installShellFiles
+, pkg-config
+, openssl
+, python3
+, libxcb
+, AppKit
+, Security
+}:
 
 rustPlatform.buildRustPackage rec {
   pname = "spotify-tui";
@@ -8,49 +19,28 @@ rustPlatform.buildRustPackage rec {
     owner = "Rigellute";
     repo = "spotify-tui";
     rev = "v${version}";
-    sha256 = "sha256-L5gg6tjQuYoAC89XfKE38KCFONwSAwfNoFEUPH4jNAI=";
+    hash = "sha256-L5gg6tjQuYoAC89XfKE38KCFONwSAwfNoFEUPH4jNAI=";
   };
 
-  # Use patched rspotify
-  cargoPatches = [
-    ./Cargo.lock.patch
-  ];
-  patches = [
-    ./Cargo.toml.patch
-  ];
-
-  preBuild = let
-    rspotify = stdenv.mkDerivation rec {
-      pname = "rspotify";
-      version = "0.10.0";
-
-      src = fetchCrate {
-        inherit pname version;
-        sha256 = "sha256-KDtqjVQlMHlhL1xXP3W1YG/YuX9pdCjwW/7g18469Ts=";
-      };
-
-      dontBuild = true;
-      installPhase = ''
-        mkdir $out
-        cp -R . $out
-      '';
-
-      patches = [
-        # add `collection` variant
-        ./0001-Add-Collection-SearchType.patch
-      ];
-    };
-  in ''
-    ln -s ${rspotify} ./rspotify-${rspotify.version}
-  '';
-
-  cargoSha256 = "sha256-S8zuVYcyYvrwggIvlpxNydhoN9kx6xLBwYJSHcbEK40=";
+  cargoLock = {
+    lockFile = ./Cargo.lock;
+  };
 
   nativeBuildInputs = [ installShellFiles ] ++ lib.optionals stdenv.isLinux [ pkg-config python3 ];
   buildInputs = [ ]
     ++ lib.optionals stdenv.isLinux [ openssl libxcb ]
     ++ lib.optionals stdenv.isDarwin [ AppKit Security ];
 
+  postPatch = ''
+    # update Cargo.lock to fix build
+    ln -sf ${./Cargo.lock} Cargo.lock
+
+    # Add patch adding the collection variant to rspotify used by spotify-tu
+    # This fixes the issue of getting an error when playing liked songs
+    # see https://github.com/NixOS/nixpkgs/pull/170915
+    patch -p1 -d $cargoDepsCopy/rspotify-0.10.0 < ${./0001-Add-Collection-SearchType.patch}
+  '';
+
   postInstall = ''
     for shell in bash fish zsh; do
       $out/bin/spt --completions $shell > spt.$shell
@@ -62,7 +52,7 @@ rustPlatform.buildRustPackage rec {
     description = "Spotify for the terminal written in Rust";
     homepage = "https://github.com/Rigellute/spotify-tui";
     changelog = "https://github.com/Rigellute/spotify-tui/blob/v${version}/CHANGELOG.md";
-    license = licenses.mit;
+    license = with licenses; [ mit /* or */ asl20 ];
     maintainers = with maintainers; [ jwijenbergh ];
     mainProgram = "spt";
   };
diff --git a/nixpkgs/pkgs/applications/audio/spotify/darwin.nix b/nixpkgs/pkgs/applications/audio/spotify/darwin.nix
new file mode 100644
index 000000000000..7fcb3aad7167
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/spotify/darwin.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, pname
+, meta
+, fetchurl
+, undmg
+, lib
+}:
+
+stdenv.mkDerivation {
+  inherit pname;
+
+  version = "1.1.97.962.g24733a46";
+
+  src = if stdenv.isAarch64 then (
+    fetchurl {
+      url = "https://web.archive.org/web/20221101120432/https://download.scdn.co/SpotifyARM64.dmg";
+      sha256 = "sha256-8WDeVRgaZXuUa95PNa15Cuul95ynklBaZpuq+U1eGTU=";
+    })
+  else (
+    fetchurl {
+      url = "https://web.archive.org/web/20221101120647/https://download.scdn.co/Spotify.dmg";
+      sha256 = "sha256-uPpD8Hv70FlaSjtt9rq5ntI64agxG8+/LNEvRe4ocJ4=";
+    });
+
+  nativeBuildInputs = [ undmg ];
+
+  sourceRoot = ".";
+
+  installPhase = ''
+    mkdir -p $out/Applications
+    cp -r *.app $out/Applications
+  '';
+
+  meta = meta // {
+    maintainers = with lib.maintainers; [ Enzime ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/spotify/default.nix b/nixpkgs/pkgs/applications/audio/spotify/default.nix
index ecbdaec7f28a..398d3a6ad970 100644
--- a/nixpkgs/pkgs/applications/audio/spotify/default.nix
+++ b/nixpkgs/pkgs/applications/audio/spotify/default.nix
@@ -1,175 +1,22 @@
-{ 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, curlWithGnuTls, zlib, gnome
-, at-spi2-atk, at-spi2-core, libpulseaudio, libdrm, mesa, libxkbcommon
-}:
+{ lib
+, stdenv
+, callPackage
+, ...
+}@args:
 
 let
-  # TO UPDATE: just execute the ./update.sh script (won't do anything if there is no update)
-  # "rev" decides what is actually being downloaded
-  # 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.84.716.gc5f8b819";
-  # 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 = "60";
+  extraArgs = removeAttrs args [ "callPackage" ];
 
-  deps = [
-    alsa-lib
-    at-spi2-atk
-    at-spi2-core
-    atk
-    cairo
-    cups
-    curlWithGnuTls
-    dbus
-    expat
-    ffmpeg
-    fontconfig
-    freetype
-    gdk-pixbuf
-    glib
-    gtk3
-    libdrm
-    libgcrypt
-    libnotify
-    libpng
-    libpulseaudio
-    libxkbcommon
-    mesa
-    nss
-    pango
-    stdenv.cc.cc
-    systemd
-    xorg.libICE
-    xorg.libSM
-    xorg.libX11
-    xorg.libxcb
-    xorg.libXcomposite
-    xorg.libXcursor
-    xorg.libXdamage
-    xorg.libXext
-    xorg.libXfixes
-    xorg.libXi
-    xorg.libXrandr
-    xorg.libXrender
-    xorg.libXScrnSaver
-    xorg.libxshmfence
-    xorg.libXtst
-    zlib
-  ];
-
-in
-
-stdenv.mkDerivation {
-  pname = "spotify-unwrapped";
-  inherit version;
-
-  # fetch from snapcraft instead of the debian repository most repos fetch from.
-  # That is a bit more cumbersome. But the debian repository only keeps the last
-  # two versions, while snapcraft should provide versions indefinately:
-  # https://forum.snapcraft.io/t/how-can-a-developer-remove-her-his-app-from-snap-store/512
-
-  # This is the next-best thing, since we're not allowed to re-distribute
-  # spotify ourselves:
-  # 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 = "1209b956822d8bb661daa2c88616bed403ec26dc22c6b866cecff59235c56112284c2f99aa06352fc0df6fcd15225a6ad60afd3b4ff4d7b948ab83e70ab31a71";
-  };
-
-  nativeBuildInputs = [ makeWrapper wrapGAppsHook squashfsTools ];
-
-  dontStrip = true;
-  dontPatchELF = true;
-
-  unpackPhase = ''
-    runHook preUnpack
-    unsquashfs "$src" '/usr/share/spotify' '/usr/bin/spotify' '/meta/snap.yaml'
-    cd squashfs-root
-    if ! grep -q 'grade: stable' meta/snap.yaml; then
-      # Unfortunately this check is not reliable: At the moment (2018-07-26) the
-      # latest version in the "edge" channel is also marked as stable.
-      echo "The snap package is marked as unstable:"
-      grep 'grade: ' meta/snap.yaml
-      echo "You probably chose the wrong revision."
-      exit 1
-    fi
-    if ! grep -q '${version}' meta/snap.yaml; then
-      echo "Package version differs from version found in snap metadata:"
-      grep 'version: ' meta/snap.yaml
-      echo "While the nix package specifies: ${version}."
-      echo "You probably chose the wrong revision or forgot to update the nix version."
-      exit 1
-    fi
-    runHook postUnpack
-  '';
-
-  # Prevent double wrapping
-  dontWrapGApps = true;
-
-  installPhase =
-    ''
-      runHook preInstall
-
-      libdir=$out/lib/spotify
-      mkdir -p $libdir
-      mv ./usr/* $out/
-
-      cp meta/snap.yaml $out
-
-      # Work around Spotify referring to a specific minor version of
-      # OpenSSL.
-
-      ln -s ${lib.getLib openssl}/lib/libssl.so $libdir/libssl.so.1.0.0
-      ln -s ${lib.getLib openssl}/lib/libcrypto.so $libdir/libcrypto.so.1.0.0
-      ln -s ${nspr.out}/lib/libnspr4.so $libdir/libnspr4.so
-      ln -s ${nspr.out}/lib/libplc4.so $libdir/libplc4.so
-
-      ln -s ${ffmpeg.out}/lib/libavcodec.so* $libdir
-      ln -s ${ffmpeg.out}/lib/libavformat.so* $libdir
-
-      rpath="$out/share/spotify:$libdir"
-
-      patchelf \
-        --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
-        --set-rpath $rpath $out/share/spotify/spotify
-
-      librarypath="${lib.makeLibraryPath deps}:$libdir"
-      wrapProgram $out/share/spotify/spotify \
-        ''${gappsWrapperArgs[@]} \
-        --prefix LD_LIBRARY_PATH : "$librarypath" \
-        --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"
-
-      # Desktop file
-      mkdir -p "$out/share/applications/"
-      cp "$out/share/spotify/spotify.desktop" "$out/share/applications/"
-
-      # Icons
-      for i in 16 22 24 32 48 64 128 256 512; do
-        ixi="$i"x"$i"
-        mkdir -p "$out/share/icons/hicolor/$ixi/apps"
-        ln -s "$out/share/spotify/icons/spotify-linux-$i.png" \
-          "$out/share/icons/hicolor/$ixi/apps/spotify-client.png"
-      done
-
-      runHook postInstall
-    '';
+  pname = "spotify";
 
   meta = with lib; {
     homepage = "https://www.spotify.com/";
     description = "Play music from the Spotify music service";
     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = licenses.unfree;
-    maintainers = with maintainers; [ eelco ftrvxmtrx sheenobu mudri timokau ma27 ];
-    platforms = [ "x86_64-linux" ];
+    platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-darwin" ];
   };
-}
+
+in if stdenv.isDarwin
+then callPackage ./darwin.nix (extraArgs // { inherit pname meta; })
+else callPackage ./linux.nix (extraArgs // { inherit pname meta; })
diff --git a/nixpkgs/pkgs/applications/audio/spotify/linux.nix b/nixpkgs/pkgs/applications/audio/spotify/linux.nix
new file mode 100644
index 000000000000..0a5e368384d9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/spotify/linux.nix
@@ -0,0 +1,178 @@
+{ fetchurl, lib, stdenv, squashfsTools, xorg, alsa-lib, makeShellWrapper, wrapGAppsHook, openssl, freetype
+, glib, pango, cairo, atk, gdk-pixbuf, gtk3, cups, nspr, nss_latest, libpng, libnotify
+, libgcrypt, systemd, fontconfig, dbus, expat, ffmpeg_4, curlWithGnuTls, zlib, gnome
+, at-spi2-atk, at-spi2-core, libpulseaudio, libdrm, mesa, libxkbcommon
+, pname, meta, harfbuzz
+  # High-DPI support: Spotify's --force-device-scale-factor argument
+  # not added if `null`, otherwise, should be a number.
+, deviceScaleFactor ? null
+}:
+
+let
+  # TO UPDATE: just execute the ./update.sh script (won't do anything if there is no update)
+  # "rev" decides what is actually being downloaded
+  # 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.2.9.743.g85d9593d";
+  # 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 = "64";
+
+  deps = [
+    alsa-lib
+    at-spi2-atk
+    at-spi2-core
+    atk
+    cairo
+    cups
+    curlWithGnuTls
+    dbus
+    expat
+    ffmpeg_4 # Requires libavcodec < 59 as of 1.2.9.743.g85d9593d
+    fontconfig
+    freetype
+    gdk-pixbuf
+    glib
+    gtk3
+    harfbuzz
+    libdrm
+    libgcrypt
+    libnotify
+    libpng
+    libpulseaudio
+    libxkbcommon
+    mesa
+    nss_latest
+    pango
+    stdenv.cc.cc
+    systemd
+    xorg.libICE
+    xorg.libSM
+    xorg.libX11
+    xorg.libxcb
+    xorg.libXcomposite
+    xorg.libXcursor
+    xorg.libXdamage
+    xorg.libXext
+    xorg.libXfixes
+    xorg.libXi
+    xorg.libXrandr
+    xorg.libXrender
+    xorg.libXScrnSaver
+    xorg.libxshmfence
+    xorg.libXtst
+    zlib
+  ];
+
+in
+
+stdenv.mkDerivation {
+  inherit pname version;
+
+  # fetch from snapcraft instead of the debian repository most repos fetch from.
+  # That is a bit more cumbersome. But the debian repository only keeps the last
+  # two versions, while snapcraft should provide versions indefinitely:
+  # https://forum.snapcraft.io/t/how-can-a-developer-remove-her-his-app-from-snap-store/512
+
+  # This is the next-best thing, since we're not allowed to re-distribute
+  # spotify ourselves:
+  # 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 = "5e8f4a1901c26e9bb5986e048226d8a15f5bc4c2acf16b20a404f228ef142e4d21c6a88a4a54c8d9e654ba5b15cb1fea1cdc50c21fbe8e3c374e241a44adf12d";
+  };
+
+  nativeBuildInputs = [ wrapGAppsHook makeShellWrapper squashfsTools ];
+
+  dontStrip = true;
+  dontPatchELF = true;
+
+  unpackPhase = ''
+    runHook preUnpack
+    unsquashfs "$src" '/usr/share/spotify' '/usr/bin/spotify' '/meta/snap.yaml'
+    cd squashfs-root
+    if ! grep -q 'grade: stable' meta/snap.yaml; then
+      # Unfortunately this check is not reliable: At the moment (2018-07-26) the
+      # latest version in the "edge" channel is also marked as stable.
+      echo "The snap package is marked as unstable:"
+      grep 'grade: ' meta/snap.yaml
+      echo "You probably chose the wrong revision."
+      exit 1
+    fi
+    if ! grep -q '${version}' meta/snap.yaml; then
+      echo "Package version differs from version found in snap metadata:"
+      grep 'version: ' meta/snap.yaml
+      echo "While the nix package specifies: ${version}."
+      echo "You probably chose the wrong revision or forgot to update the nix version."
+      exit 1
+    fi
+    runHook postUnpack
+  '';
+
+  # Prevent double wrapping
+  dontWrapGApps = true;
+
+  installPhase =
+    ''
+      runHook preInstall
+
+      libdir=$out/lib/spotify
+      mkdir -p $libdir
+      mv ./usr/* $out/
+
+      cp meta/snap.yaml $out
+
+      # Work around Spotify referring to a specific minor version of
+      # OpenSSL.
+
+      ln -s ${lib.getLib openssl}/lib/libssl.so $libdir/libssl.so.1.0.0
+      ln -s ${lib.getLib openssl}/lib/libcrypto.so $libdir/libcrypto.so.1.0.0
+      ln -s ${nspr.out}/lib/libnspr4.so $libdir/libnspr4.so
+      ln -s ${nspr.out}/lib/libplc4.so $libdir/libplc4.so
+
+      ln -s ${ffmpeg_4.lib}/lib/libavcodec.so* $libdir
+      ln -s ${ffmpeg_4.lib}/lib/libavformat.so* $libdir
+
+      rpath="$out/share/spotify:$libdir"
+
+      patchelf \
+        --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+        --set-rpath $rpath $out/share/spotify/spotify
+
+      librarypath="${lib.makeLibraryPath deps}:$libdir"
+      wrapProgramShell $out/share/spotify/spotify \
+        ''${gappsWrapperArgs[@]} \
+        ${lib.optionalString (deviceScaleFactor != null) ''
+          --add-flags "--force-device-scale-factor=${toString deviceScaleFactor}" \
+        ''} \
+        --prefix LD_LIBRARY_PATH : "$librarypath" \
+        --prefix PATH : "${gnome.zenity}/bin" \
+        --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--enable-features=UseOzonePlatform --ozone-platform=wayland}}"
+
+      # fix Icon line in the desktop file (#48062)
+      sed -i "s:^Icon=.*:Icon=spotify-client:" "$out/share/spotify/spotify.desktop"
+
+      # Desktop file
+      mkdir -p "$out/share/applications/"
+      cp "$out/share/spotify/spotify.desktop" "$out/share/applications/"
+
+      # Icons
+      for i in 16 22 24 32 48 64 128 256 512; do
+        ixi="$i"x"$i"
+        mkdir -p "$out/share/icons/hicolor/$ixi/apps"
+        ln -s "$out/share/spotify/icons/spotify-linux-$i.png" \
+          "$out/share/icons/hicolor/$ixi/apps/spotify-client.png"
+      done
+
+      runHook postInstall
+    '';
+
+  meta = meta // {
+    maintainers = with lib.maintainers; [ eelco ftrvxmtrx sheenobu timokau ma27 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/spotify/update.sh b/nixpkgs/pkgs/applications/audio/spotify/update.sh
index a8836214f2fc..8c466e836cd2 100755
--- a/nixpkgs/pkgs/applications/audio/spotify/update.sh
+++ b/nixpkgs/pkgs/applications/audio/spotify/update.sh
@@ -20,7 +20,7 @@
 
 channel="${1:-stable}" # stable/candidate/edge
 nixpkgs="$(git rev-parse --show-toplevel)"
-spotify_nix="$nixpkgs/pkgs/applications/audio/spotify/default.nix"
+spotify_nix="$nixpkgs/pkgs/applications/audio/spotify/linux.nix"
 
 
 #
@@ -78,6 +78,7 @@ sed --regexp-extended \
 # try to build the updated version
 #
 
+export NIXPKGS_ALLOW_UNFREE=1
 if ! nix-build -A spotify "$nixpkgs"; then
   echo "The updated spotify failed to build."
   exit 1
diff --git a/nixpkgs/pkgs/applications/audio/spotify/wrapper.nix b/nixpkgs/pkgs/applications/audio/spotify/wrapper.nix
deleted file mode 100644
index 418ef3cbc03e..000000000000
--- a/nixpkgs/pkgs/applications/audio/spotify/wrapper.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ 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/nixpkgs/pkgs/applications/audio/spotifyd/default.nix b/nixpkgs/pkgs/applications/audio/spotifyd/default.nix
index bfeb8a7dab3a..d0a77ab06497 100644
--- a/nixpkgs/pkgs/applications/audio/spotifyd/default.nix
+++ b/nixpkgs/pkgs/applications/audio/spotifyd/default.nix
@@ -1,4 +1,4 @@
-{ lib, fetchFromGitHub, rustPackages, pkg-config, openssl
+{ lib, stdenv, fetchFromGitHub, rustPackages, pkg-config, openssl
 , withALSA ? true, alsa-lib
 , withPulseAudio ? false, libpulseaudio
 , withPortAudio ? false, portaudio
@@ -9,20 +9,20 @@
 
 rustPackages.rustPlatform.buildRustPackage rec {
   pname = "spotifyd";
-  version = "0.3.3";
+  version = "0.3.5";
 
   src = fetchFromGitHub {
     owner = "Spotifyd";
     repo = "spotifyd";
     rev = "v${version}";
-    sha256 = "1liql2wp7cx0x4ha1578wx3m4byd295m4ph268s05yw2wrnr3v6c";
+    hash = "sha256-+P85FWJIsfAv8/DnQFxfoWvNY8NpbZ2xUidfwN8tiA8=";
   };
 
-  cargoSha256 = "1plvqd55d1gj0ydimv3154pwgj2sh1fqx2182nw8akzdfmzg1150";
+  cargoHash = "sha256-j+2yEtn3D+vNRcY4+NnqSX4xRQIE5Sq7bentxTh6kMI=";
 
   nativeBuildInputs = [ pkg-config ];
 
-  buildInputs = [ openssl ]
+  buildInputs = lib.optionals stdenv.isLinux [ openssl ]
     ++ lib.optional withALSA alsa-lib
     ++ lib.optional withPulseAudio libpulseaudio
     ++ lib.optional withPortAudio portaudio
@@ -39,7 +39,7 @@ rustPackages.rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "An open source Spotify client running as a UNIX daemon";
-    homepage = "https://github.com/Spotifyd/spotifyd";
+    homepage = "https://spotifyd.rs/";
     changelog = "https://github.com/Spotifyd/spotifyd/raw/v${version}/CHANGELOG.md";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ anderslundstedt Br1ght0ne marsam ];
diff --git a/nixpkgs/pkgs/applications/audio/spotifywm/default.nix b/nixpkgs/pkgs/applications/audio/spotifywm/default.nix
index 2241db126b81..c2248056834e 100644
--- a/nixpkgs/pkgs/applications/audio/spotifywm/default.nix
+++ b/nixpkgs/pkgs/applications/audio/spotifywm/default.nix
@@ -1,24 +1,32 @@
-{ lib, stdenv, fetchFromGitHub, spotify, xorg, runtimeShell }:
+{ lib, stdenv, fetchFromGitHub, spotify, xorg, makeWrapper }:
 stdenv.mkDerivation {
   pname = "spotifywm-unstable";
-  version = "2016-11-28";
+  version = "2022-10-26";
 
   src = fetchFromGitHub {
-    owner  = "dasJ";
-    repo   = "spotifywm";
-    rev    = "91dd5532ffb7a398d775abe94fe7781904ab406f";
-    sha256 = "01z088i83410bpx1vbp7c6cq01r431v55l7340x3izp53lnpp379";
+    owner = "dasJ";
+    repo = "spotifywm";
+    rev = "8624f539549973c124ed18753881045968881745";
+    sha256 = "sha256-AsXqcoqUXUFxTG+G+31lm45gjP6qGohEnUSUtKypew0=";
   };
 
-  buildInputs = [ xorg.libX11 ];
+  nativeBuildInputs = [ makeWrapper ];
 
-  propagatedBuildInputs = [ spotify ];
+  buildInputs = [ xorg.libX11 ];
 
   installPhase = ''
-    echo "#!${runtimeShell}" > spotifywm
-    echo "LD_PRELOAD="$out/lib/spotifywm.so" ${spotify}/bin/spotify \$*" >> spotifywm
-    install -Dm644 spotifywm.so $out/lib/spotifywm.so
-    install -Dm755 spotifywm $out/bin/spotifywm
+    runHook preInstall
+
+    mkdir -p $out/{bin,lib}
+    install -Dm644 spotifywm.so $out/lib/
+    ln -sf ${spotify}/bin/spotify $out/bin/spotify
+
+    # wrap spotify to use spotifywm.so
+    wrapProgram $out/bin/spotify --set LD_PRELOAD "$out/lib/spotifywm.so"
+    # backwards compatibility for people who are using the "spotifywm" binary
+    ln -sf $out/bin/spotify $out/bin/spotifywm
+
+    runHook postInstall
   '';
 
   meta = with lib; {
@@ -26,6 +34,6 @@ stdenv.mkDerivation {
     description = "Wrapper around Spotify that correctly sets class name before opening the window";
     license = licenses.mit;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ jqueiroz ];
+    maintainers = with maintainers; [ jqueiroz the-argus ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/sptlrx/default.nix b/nixpkgs/pkgs/applications/audio/sptlrx/default.nix
index 7b31325164b8..6743407fa3ed 100644
--- a/nixpkgs/pkgs/applications/audio/sptlrx/default.nix
+++ b/nixpkgs/pkgs/applications/audio/sptlrx/default.nix
@@ -2,21 +2,21 @@
 
 buildGoModule rec {
   pname = "sptlrx";
-  version = "1.0.0";
+  version = "1.1.0";
 
   src = fetchFromGitHub {
     owner = "raitonoberu";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-UDxmUc902A6+DC254wyvjSzNs95K7QIuDW+24o8VCCc=";
+    hash = "sha256-6GbefTWrhH6RdASmSrugd4xESkwqFVF5qwFmf0JUDTY=";
   };
 
-  vendorSha256 = "sha256-t9Mkszzuw7YtBnADsZDjwN2AA6MuQH4+zzDiHe302A4=";
+  vendorHash = "sha256-Ll5jUjpx4165BAE86/z95i4xa8fdKlfxqrUc/gDLqJ0=";
 
   ldflags = [ "-s" "-w" ];
 
   passthru = {
-    updateScript = nix-update-script { attrPath = pname; };
+    updateScript = nix-update-script { };
     tests.version = testers.testVersion {
       package = sptlrx;
       version = "v${version}"; # needed because testVersion uses grep -Fw
diff --git a/nixpkgs/pkgs/applications/audio/squeezelite/default.nix b/nixpkgs/pkgs/applications/audio/squeezelite/default.nix
index e13a791ccbbc..d7426020d802 100644
--- a/nixpkgs/pkgs/applications/audio/squeezelite/default.nix
+++ b/nixpkgs/pkgs/applications/audio/squeezelite/default.nix
@@ -1,13 +1,14 @@
 { lib
 , stdenv
 , fetchFromGitHub
-, alsa-lib
 , flac
 , libmad
 , libpulseaudio
 , libvorbis
 , mpg123
-, audioBackend ? "alsa"
+, audioBackend ? if stdenv.isLinux then "alsa" else "portaudio"
+, alsaSupport ? stdenv.isLinux
+, alsa-lib
 , dsdSupport ? true
 , faad2Support ? true
 , faad2
@@ -19,10 +20,18 @@
 , soxr
 , sslSupport ? true
 , openssl
+, portaudioSupport ? stdenv.isDarwin
+, portaudio
+, AudioToolbox
+, AudioUnit
+, Carbon
+, CoreAudio
+, CoreVideo
+, VideoDecodeAcceleration
 }:
 
 let
-  inherit (lib) optional optionalString;
+  inherit (lib) optional optionals optionalString;
 
   pulseSupport = audioBackend == "pulse";
 
@@ -34,17 +43,20 @@ stdenv.mkDerivation {
   pname = binName;
   # versions are specified in `squeezelite.h`
   # see https://github.com/ralph-irving/squeezelite/issues/29
-  version = "1.9.9.1403";
+  version = "1.9.9.1430";
 
   src = fetchFromGitHub {
     owner = "ralph-irving";
     repo = "squeezelite";
-    rev = "bc72c0de3fff771540a2a45aaafafed539387b3c";
-    hash = "sha256-205i61mbeQG2MzSE9NtPHSuNeyMbjZzbZVCFFzjqKqQ=";
+    rev = "663db8f64d73dceca6a2a18cdb705ad846daa272";
+    hash = "sha256-PROb6d5ixO7lk/7wsjh2vkPkPgAvd6x+orQOY078IAs=";
   };
 
   buildInputs = [ flac libmad libvorbis mpg123 ]
-    ++ lib.singleton (if pulseSupport then libpulseaudio else alsa-lib)
+    ++ optional pulseSupport libpulseaudio
+    ++ optional alsaSupport alsa-lib
+    ++ optional portaudioSupport portaudio
+    ++ optionals stdenv.isDarwin [ CoreVideo VideoDecodeAcceleration CoreAudio AudioToolbox AudioUnit Carbon ]
     ++ optional faad2Support faad2
     ++ optional ffmpegSupport ffmpeg
     ++ optional opusSupport opusfile
@@ -60,15 +72,20 @@ stdenv.mkDerivation {
 
   EXECUTABLE = binName;
 
-  OPTS = [ "-DLINKALL" ]
+  OPTS = [ "-DLINKALL" "-DGPIO" ]
     ++ optional dsdSupport "-DDSD"
     ++ optional (!faad2Support) "-DNO_FAAD"
     ++ optional ffmpegSupport "-DFFMPEG"
     ++ optional opusSupport "-DOPUS"
+    ++ optional portaudioSupport "-DPORTAUDIO"
     ++ optional pulseSupport "-DPULSEAUDIO"
     ++ optional resampleSupport "-DRESAMPLE"
     ++ optional sslSupport "-DUSE_SSL";
 
+  env = lib.optionalAttrs stdenv.isDarwin {
+    LDADD = "-lportaudio -lpthread";
+  };
+
   installPhase = ''
     runHook preInstall
 
@@ -78,11 +95,13 @@ stdenv.mkDerivation {
     runHook postInstall
   '';
 
+  passthru.updateScript = ./update.sh;
+
   meta = with lib; {
     description = "Lightweight headless squeezebox client emulator";
     homepage = "https://github.com/ralph-irving/squeezelite";
     license = with licenses; [ gpl3Plus ] ++ optional dsdSupport bsd2;
-    maintainers = with maintainers; [ samdoshi ];
-    platforms = platforms.linux;
+    maintainers = with maintainers; [ adamcstephens ];
+    platforms = if (audioBackend == "pulse") then platforms.linux else platforms.linux ++ platforms.darwin;
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/squeezelite/update.sh b/nixpkgs/pkgs/applications/audio/squeezelite/update.sh
new file mode 100755
index 000000000000..d12213f83482
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/squeezelite/update.sh
@@ -0,0 +1,19 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p common-updater-scripts coreutils curl gnused jq nix nix-prefetch-github ripgrep
+
+set -euo pipefail
+
+latestRev="$(curl -s "https://api.github.com/repos/ralph-irving/squeezelite/commits?per_page=1" | jq -r ".[0].sha")"
+latestVersion="$( curl -s https://raw.githubusercontent.com/ralph-irving/squeezelite/${latestRev}/squeezelite.h | rg 'define (MAJOR|MINOR|MICRO)_VERSION' | sed 's/#.*VERSION //' | tr '\n' '.' | sed  -e 's/"//g' -e 's/\.$//')"
+currentVersion=$(nix-instantiate --eval -E "with import ./. {}; squeezelite.version or (lib.getVersion squeezelite)" | tr -d '"')
+
+if [[ "$currentVersion" == "$latestVersion" ]]; then
+  echo "squeezelite is up-to-date: $currentVersion"
+  exit 0
+fi
+
+srcHash=$(nix-prefetch-github ralph-irving squeezelite --rev "$latestRev" | jq -r .sha256)
+srcHash=$(nix hash to-sri --type sha256 "$srcHash")
+
+
+update-source-version squeezelite "$latestVersion" "$srcHash" --rev="${latestRev}"
diff --git a/nixpkgs/pkgs/applications/audio/ssrc/default.nix b/nixpkgs/pkgs/applications/audio/ssrc/default.nix
index 1ac1d6658f8d..d6d776c86058 100644
--- a/nixpkgs/pkgs/applications/audio/ssrc/default.nix
+++ b/nixpkgs/pkgs/applications/audio/ssrc/default.nix
@@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
     '';
 
     version = version;
-    homepage = "http://shibatch.sourceforge.net/";
+    homepage = "https://shibatch.sourceforge.net/";
     license = licenses.gpl2;
     maintainers = with maintainers; [ leenaars];
     platforms = platforms.linux;
diff --git a/nixpkgs/pkgs/applications/audio/stochas/default.nix b/nixpkgs/pkgs/applications/audio/stochas/default.nix
index d295689716b2..2b72664347e6 100644
--- a/nixpkgs/pkgs/applications/audio/stochas/default.nix
+++ b/nixpkgs/pkgs/applications/audio/stochas/default.nix
@@ -2,16 +2,21 @@
 
 stdenv.mkDerivation rec {
   pname = "stochas";
-  version = "1.3.5";
+  version = "1.3.9";
 
   src = fetchFromGitHub {
     owner = "surge-synthesizer";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1z8q53qfigw6wwbvpca92b9pf9d0mv3nyb0fmszz5ikj3pcybi7m";
+    sha256 = "sha256-AnYViWterLBsTtd0wohff1CEwrSYA4CvOLGhJnPFUt8=";
     fetchSubmodules = true;
   };
 
+  postPatch = ''
+    sed '1i#include <utility>' -i \
+      lib/JUCE/modules/juce_gui_basics/windows/juce_ComponentPeer.h # gcc12
+  '';
+
   nativeBuildInputs = [ cmake pkg-config ];
 
   buildInputs = [
diff --git a/nixpkgs/pkgs/applications/audio/strawberry/default.nix b/nixpkgs/pkgs/applications/audio/strawberry/default.nix
index b3dd4bee2143..adaaca69feab 100644
--- a/nixpkgs/pkgs/applications/audio/strawberry/default.nix
+++ b/nixpkgs/pkgs/applications/audio/strawberry/default.nix
@@ -42,13 +42,13 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "strawberry";
-  version = "1.0.7";
+  version = "1.0.17";
 
   src = fetchFromGitHub {
     owner = "jonaski";
     repo = pname;
     rev = version;
-    hash = "sha256-TAt/P9nykUtOoHmprFiUJnip8mAnJlvkufD0v9ZWrp4=";
+    hash = "sha256-Z2b3/pIdSmZUO724hkdn78YrVuRiXALbTOUs+KJMjvU=";
   };
 
   # the big strawberry shown in the context menu is *very* much in your face, so use the grey version instead
diff --git a/nixpkgs/pkgs/applications/audio/streamripper/default.nix b/nixpkgs/pkgs/applications/audio/streamripper/default.nix
index 6fae14e2b1ad..70ff4dd8605a 100644
--- a/nixpkgs/pkgs/applications/audio/streamripper/default.nix
+++ b/nixpkgs/pkgs/applications/audio/streamripper/default.nix
@@ -12,8 +12,12 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ pkg-config ];
   buildInputs = [ glib libogg libvorbis libmad ];
 
+  makeFlags = [
+    "AR:=$(AR)"
+  ];
+
   meta = with lib; {
-    homepage = "http://streamripper.sourceforge.net/";
+    homepage = "https://streamripper.sourceforge.net/";
     description = "Application that lets you record streaming mp3 to your hard drive";
     license = licenses.gpl2;
   };
diff --git a/nixpkgs/pkgs/applications/audio/sublime-music/default.nix b/nixpkgs/pkgs/applications/audio/sublime-music/default.nix
index 3f7e1e038f8e..e6dcb86eb948 100644
--- a/nixpkgs/pkgs/applications/audio/sublime-music/default.nix
+++ b/nixpkgs/pkgs/applications/audio/sublime-music/default.nix
@@ -1,6 +1,7 @@
-{ fetchFromGitLab
-, lib
-, python3Packages
+{ lib
+, fetchFromGitLab
+, fetchFromGitHub
+, python3
 , gobject-introspection
 , gtk3
 , pango
@@ -9,11 +10,28 @@
 , chromecastSupport ? false
 , serverSupport ? false
 , keyringSupport ? true
-, notifySupport ? true, libnotify
-, networkSupport ? true, networkmanager
+, notifySupport ? true
+, libnotify
+, networkSupport ? true
+, networkmanager
 }:
 
-python3Packages.buildPythonApplication rec {
+let
+  python = python3.override {
+    packageOverrides = self: super: {
+      semver = super.semver.overridePythonAttrs (oldAttrs: rec {
+        version = "2.13.0";
+        src = fetchFromGitHub {
+          owner = "python-semver";
+          repo = "python-semver";
+          rev = "refs/tags/${version}";
+          hash = "sha256-IWTo/P9JRxBQlhtcH3JMJZZrwAA8EALF4dtHajWUc4w=";
+        };
+      });
+    };
+  };
+in
+python.pkgs.buildPythonApplication rec {
   pname = "sublime-music";
   version = "0.11.16";
   format = "pyproject";
@@ -21,25 +39,42 @@ python3Packages.buildPythonApplication rec {
   src = fetchFromGitLab {
     owner = "sublime-music";
     repo = pname;
-    rev = "v${version}";
-    sha256 = "sha256-n77mTgElwwFaX3WQL8tZzbkPwnsyQ08OW9imSOjpBlg=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-n77mTgElwwFaX3WQL8tZzbkPwnsyQ08OW9imSOjpBlg=";
   };
 
   nativeBuildInputs = [
     gobject-introspection
-    python3Packages.poetry-core
     wrapGAppsHook
+  ] ++ (with python.pkgs; [
+    poetry-core
+    pythonRelaxDepsHook
+  ]);
+
+  # Can be removed in later versions (probably > 0.11.16)
+  pythonRelaxDeps = [
+    "deepdiff"
+    "python-mpv"
   ];
 
+  postPatch = ''
+    sed -i "/--cov/d" setup.cfg
+    sed -i "/--no-cov-on-fail/d" setup.cfg
+    # https://github.com/sublime-music/sublime-music/pull/370
+    # Can be removed in later versions (probably > 0.11.16)
+    substituteInPlace pyproject.toml \
+      --replace 'python-Levenshtein = "^0.12.0"' 'Levenshtein = ">0.12.0"'
+  '';
+
   buildInputs = [
     gtk3
     pango
   ]
-   ++ lib.optional notifySupport libnotify
-   ++ lib.optional networkSupport networkmanager
+  ++ lib.optional notifySupport libnotify
+  ++ lib.optional networkSupport networkmanager
   ;
 
-  propagatedBuildInputs = with python3Packages; [
+  propagatedBuildInputs = with python.pkgs; [
     bleach
     dataclasses-json
     deepdiff
@@ -47,26 +82,17 @@ python3Packages.buildPythonApplication rec {
     mpv
     peewee
     pygobject3
-    python-Levenshtein
+    levenshtein
     python-dateutil
     requests
     semver
   ]
-   ++ lib.optional chromecastSupport PyChromecast
-   ++ lib.optional keyringSupport keyring
-   ++ lib.optional serverSupport bottle
+  ++ lib.optional chromecastSupport pychromecast
+  ++ lib.optional keyringSupport keyring
+  ++ lib.optional serverSupport bottle
   ;
 
-  postPatch = ''
-    sed -i "/--cov/d" setup.cfg
-    sed -i "/--no-cov-on-fail/d" setup.cfg
-  '';
-
-  # hook for gobject-introspection doesn't like strictDeps
-  # https://github.com/NixOS/nixpkgs/issues/56943
-  strictDeps = false;
-
-  checkInputs = with python3Packages; [
+  nativeCheckInputs = with python.pkgs; [
     pytest
   ];
 
@@ -91,6 +117,7 @@ python3Packages.buildPythonApplication rec {
   meta = with lib; {
     description = "GTK3 Subsonic/Airsonic client";
     homepage = "https://sublimemusic.app/";
+    changelog = "https://github.com/sublime-music/sublime-music/blob/v${version}/CHANGELOG.rst";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ albakham sumnerevans ];
   };
diff --git a/nixpkgs/pkgs/applications/audio/subtitlr/default.nix b/nixpkgs/pkgs/applications/audio/subtitlr/default.nix
new file mode 100644
index 000000000000..2832a9661512
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/subtitlr/default.nix
@@ -0,0 +1,35 @@
+{ lib, buildGoModule, fetchFromGitHub, installShellFiles }:
+
+buildGoModule rec {
+  pname = "Subtitlr";
+  version = "0.1.1";
+
+  src = fetchFromGitHub {
+    owner = "yoanbernabeu";
+    repo = pname;
+    rev = version;
+    hash = "sha256-1EjOpWVTp7CqwqSJAhqicvY2crzw1n7Id+TIwYrSQAs=";
+  };
+
+  vendorHash = "sha256-ZgJCk9vbbQ0dcYSdKm0Cbw2AmwjpMvGb5zJkgbD+xig=";
+
+  ldflags = [ "-s" "-w" ];
+
+  nativeBuildInputs = [
+    installShellFiles
+  ];
+
+  postInstall = ''
+    installShellCompletion --cmd Subtitlr \
+      --bash <($out/bin/Subtitlr completion bash) \
+      --fish <($out/bin/Subtitlr completion fish) \
+      --zsh <($out/bin/Subtitlr completion zsh)
+  '';
+
+  meta = with lib; {
+    description = "This application, a subtitle generator for YouTube, utilizes OpenAI's Whisper API.";
+    homepage = "https://github.com/yoanbernabeu/Subtitlr/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ qjoly ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/sunvox/default.nix b/nixpkgs/pkgs/applications/audio/sunvox/default.nix
index 1bde46cdc944..69620f1d0b47 100644
--- a/nixpkgs/pkgs/applications/audio/sunvox/default.nix
+++ b/nixpkgs/pkgs/applications/audio/sunvox/default.nix
@@ -13,11 +13,11 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "SunVox";
-  version = "2.0e";
+  version = "2.1c";
 
   src = fetchurl {
     url = "https://www.warmplace.ru/soft/sunvox/sunvox-${version}.zip";
-    sha256 = "sha256-v4dQnRr7pusOAHX8ytDChKixYxEIjg30vOTD6uA/S0o=";
+    sha256 = "sha256-yPVcbtlAVbO9uMsFlfZ51T408hA1VPJAI+R+Jdjcyjw=";
   };
 
   nativeBuildInputs = [ unzip ];
diff --git a/nixpkgs/pkgs/applications/audio/surge-XT/default.nix b/nixpkgs/pkgs/applications/audio/surge-XT/default.nix
index 7d8cf72eba27..b10b52e7d1c4 100644
--- a/nixpkgs/pkgs/applications/audio/surge-XT/default.nix
+++ b/nixpkgs/pkgs/applications/audio/surge-XT/default.nix
@@ -17,14 +17,14 @@
 let
   juce-lv2 = stdenv.mkDerivation {
     pname = "juce-lv2";
-    version = "unstable-2021-12-11";
+    version = "unstable-2022-03-30";
 
     # lv2 branch
     src = fetchFromGitHub {
       owner = "lv2-porting-project";
       repo = "JUCE";
-      rev = "5106d9d77b892c22afcb9379c13982f270429e2e";
-      sha256 = "sha256-bpZJ5NEDRfMtmx0RkKQFZWqS/SnYAFRhrDg9MSphh4c=";
+      rev = "e825ad977cf4499a7bfa05b97b208236f8fd253b";
+      sha256 = "sha256-Fqp1y9BN0E9p/12ukG1oh3COhXNRWBAlFRSl0LPyiFc=";
     };
 
     dontConfigure = true;
@@ -37,14 +37,14 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "surge-XT";
-  version = "1.0.1";
+  version = "1.2.0";
 
   src = fetchFromGitHub {
     owner = "surge-synthesizer";
     repo = "surge";
     rev = "release_xt_${version}";
     fetchSubmodules = true;
-    sha256 = "sha256-u7jXNCDFRzq9oFaxovfTEipQsN+e4+whLexJrSJdXWw=";
+    sha256 = "sha256-LRYKkzeEuuRbMmvU3E0pHAnotOd4DyIJ7rTb+fpW0H4=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/audio/tageditor/default.nix b/nixpkgs/pkgs/applications/audio/tageditor/default.nix
index 320a26b8172d..efac5170249e 100644
--- a/nixpkgs/pkgs/applications/audio/tageditor/default.nix
+++ b/nixpkgs/pkgs/applications/audio/tageditor/default.nix
@@ -1,9 +1,8 @@
 { stdenv
-, pkgs
+, lib
 , fetchFromGitHub
 , pkg-config
 , cmake
-
 , cpp-utilities
 , qtutilities
 , mp4v2
@@ -18,13 +17,13 @@
 
 stdenv.mkDerivation rec {
   pname = "tageditor";
-  version = "3.3.10";
+  version = "3.7.9";
 
   src = fetchFromGitHub {
     owner = "martchus";
-    repo = "tageditor";
+    repo = pname;
     rev = "v${version}";
-    sha256 = "16cmq7dyalcwc8gx1y9acngw5imjh8ydp4prxy7qpzk4fj3kpsak";
+    hash = "sha256-QQvc9S+9h0Qy/qBROwJMZIALf/Rbj/9my4PZGxQzlnM=";
   };
 
   nativeBuildInputs = [
@@ -32,10 +31,10 @@ stdenv.mkDerivation rec {
     cmake
     wrapQtAppsHook
   ];
+
   buildInputs = [
     mp4v2
     libid3tag
-    pkg-config
     qtbase
     qttools
     qtx11extras
@@ -45,7 +44,7 @@ stdenv.mkDerivation rec {
     tagparser
   ];
 
-  meta = with pkgs.lib; {
+  meta = with 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;
@@ -53,4 +52,3 @@ stdenv.mkDerivation rec {
     platforms = platforms.linux;
   };
 }
-
diff --git a/nixpkgs/pkgs/applications/audio/tagger/default.nix b/nixpkgs/pkgs/applications/audio/tagger/default.nix
new file mode 100644
index 000000000000..bac0d7c9d833
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/tagger/default.nix
@@ -0,0 +1,67 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, pkg-config
+, jsoncpp
+, taglib
+, curl
+, curlpp
+, glib
+, gtk4
+, libadwaita
+, wrapGAppsHook4
+, desktop-file-utils
+, chromaprint # fpcalc
+}:
+
+stdenv.mkDerivation rec {
+  pname = "tagger";
+  version = "2022.11.2";
+
+  src = fetchFromGitHub {
+    owner = "nlogozzo";
+    repo = "NickvisionTagger";
+    rev = version;
+    hash = "sha256-gFpnTuUROYwPANrkD+g7a3FHSCVY2oB97flCK+LLowY=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    wrapGAppsHook4
+    desktop-file-utils
+  ];
+
+  buildInputs = [
+    glib
+    gtk4
+    libadwaita
+    jsoncpp
+    taglib
+    curl
+    curlpp
+  ];
+
+  # Don't install compiled binary
+  postPatch = ''
+    sed -i '/fpcalc/d' meson.build
+  '';
+
+  preFixup = ''
+    gappsWrapperArgs+=(
+      --prefix PATH : "${lib.makeBinPath [ chromaprint ]}"
+    )
+  '';
+
+  meta = with lib; {
+    description = "An easy-to-use music tag (metadata) editor";
+    homepage = "https://github.com/nlogozzo/NickvisionTagger";
+    mainProgram = "org.nickvision.tagger";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ zendo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/tap-plugins/default.nix b/nixpkgs/pkgs/applications/audio/tap-plugins/default.nix
index c0b2c64822f4..7cd64eb42086 100644
--- a/nixpkgs/pkgs/applications/audio/tap-plugins/default.nix
+++ b/nixpkgs/pkgs/applications/audio/tap-plugins/default.nix
@@ -1,32 +1,41 @@
-{ lib, stdenv, fetchurl, ladspa-sdk, pkgs, ... }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, ladspa-sdk
+}:
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation (finalAttrs: {
   pname = "tap-plugins";
-  version = "1.0.1";
+  version = "unstable-2020-12-09";
 
-  src = pkgs.fetchFromGitHub {
-    owner = "tomszilagyi";
-    repo = pname;
-    rev = "v${version}";
-    sha256 = "0c6qhyf8smlypc36vmpr42dm3mrzk6pg9cc9r0vx22qbrd5zfpjw";
+  src = fetchFromGitHub {
+    owner = "tomscii";
+    repo = "tap-plugins";
+    rev = "5d882799f37dffe37fc73451f2c5b4fb24316f3b";
+    hash = "sha256-bwybMxIAbOzPr43QGshjbnRK5GdziGiYDsTutZdSj4s=";
   };
 
-  buildInputs = [ ladspa-sdk ];
+  buildInputs = [
+    ladspa-sdk
+  ];
 
-  preInstall = ''
+  postPatch = ''
     substituteInPlace Makefile --replace /usr/local "$out"
   '';
 
-  meta = with lib; {
+  meta = {
+    homepage = "https://tomscii.sig7.se/tap-plugins/";
     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.
+      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 ];
+    license = lib.licenses.gpl3Plus;
+    maintainers = [ lib.maintainers.AndersonTorres ];
+    platforms = lib.platforms.unix;
   };
-}
+})
diff --git a/nixpkgs/pkgs/applications/audio/tauon/default.nix b/nixpkgs/pkgs/applications/audio/tauon/default.nix
index 5ae179d9e332..23dd5e8fa6fd 100644
--- a/nixpkgs/pkgs/applications/audio/tauon/default.nix
+++ b/nixpkgs/pkgs/applications/audio/tauon/default.nix
@@ -9,9 +9,11 @@
 , librsvg
 , gobject-introspection
 , gtk3
+, kissfft
 , libnotify
 , libsamplerate
 , libvorbis
+, miniaudio
 , mpg123
 , libopenmpt
 , opusfile
@@ -23,15 +25,23 @@
 
 stdenv.mkDerivation rec {
   pname = "tauon";
-  version = "7.3.1";
+  version = "7.6.4";
 
   src = fetchFromGitHub {
     owner = "Taiko2k";
     repo = "TauonMusicBox";
     rev = "v${version}";
-    sha256 = "sha256-g3mRVPOXU3N+MApLaHAAIIsVuVv2GeB1Nj//8tuS0oI=";
+    hash = "sha256-xMUQ2LabxuvCdd7dsoXPN3tjkDxfXIQ8UrJcsGQ+EEU=";
   };
 
+  postUnpack = ''
+    rmdir source/src/phazor/kissfft
+    ln -s ${kissfft.src} source/src/phazor/kissfft
+
+    rmdir source/src/phazor/miniaudio
+    ln -s ${miniaudio.src} source/src/phazor/miniaudio
+  '';
+
   postPatch = ''
     substituteInPlace tauon.py \
       --replace 'install_mode = False' 'install_mode = True' \
@@ -47,6 +57,8 @@ stdenv.mkDerivation rec {
 
     patchShebangs compile-phazor.sh
 
+    substituteInPlace compile-phazor.sh --replace 'gcc' '${stdenv.cc.targetPrefix}cc'
+
     substituteInPlace extra/tauonmb.desktop --replace 'Exec=/opt/tauon-music-box/tauonmb.sh' 'Exec=${placeholder "out"}/bin/tauon'
   '';
 
@@ -85,9 +97,8 @@ stdenv.mkDerivation rec {
     natsort
     pillow
     plexapi
-    pulsectl
     pycairo
-    PyChromecast
+    pychromecast
     pylast
     pygobject3
     pylyrics
@@ -95,7 +106,8 @@ stdenv.mkDerivation rec {
     requests
     send2trash
     setproctitle
-  ] ++ lib.optional withDiscordRPC pypresence;
+  ] ++ lib.optional withDiscordRPC pypresence
+    ++ lib.optional stdenv.isLinux pulsectl;
 
   makeWrapperArgs = [
     "--prefix PATH : ${lib.makeBinPath [ffmpeg]}"
@@ -108,7 +120,7 @@ stdenv.mkDerivation rec {
     install -Dm755 tauon.py $out/bin/tauon
     mkdir -p $out/share/tauon
     cp -r lib $out
-    cp -r assets input.txt t_modules theme $out/share/tauon
+    cp -r assets input.txt t_modules theme templates $out/share/tauon
 
     wrapPythonPrograms
 
@@ -121,8 +133,9 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     description = "The Linux desktop music player from the future";
     homepage = "https://tauonmusicbox.rocks/";
+    changelog = "https://github.com/Taiko2k/TauonMusicBox/releases/tag/v${version}";
     license = licenses.gpl3;
-    maintainers = with maintainers; [ SuperSandro2000 ];
-    platforms = platforms.linux;
+    maintainers = with maintainers; [ jansol ];
+    platforms = platforms.linux ++ platforms.darwin;
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/tenacity/default.nix b/nixpkgs/pkgs/applications/audio/tenacity/default.nix
index 89051e70b519..8e6ab17fbdae 100644
--- a/nixpkgs/pkgs/applications/audio/tenacity/default.nix
+++ b/nixpkgs/pkgs/applications/audio/tenacity/default.nix
@@ -1,8 +1,10 @@
 { stdenv
 , lib
-, fetchFromSourcehut
+, fetchFromGitea
+, fetchpatch
 , cmake
-, wxGTK
+, wxGTK32
+, gtk3
 , pkg-config
 , python3
 , gettext
@@ -28,7 +30,7 @@
 , expat
 , libid3tag
 , libopus
-, ffmpeg
+, ffmpeg_5
 , soundtouch
 , pcre
 , portaudio
@@ -47,24 +49,27 @@
 
 stdenv.mkDerivation rec {
   pname = "tenacity";
-  version = "unstable-2021-10-18";
+  version = "1.3-beta2";
 
-  src = fetchFromSourcehut {
-    owner = "~tenacity";
-    repo = "tenacity";
-    rev = "697c0e764ccb19c1e2f3073ae08ecdac7aa710e4";
-    sha256 = "1fc9xz8lyl8si08wkzncpxq92vizan60c3640qr4kbnxg7vi2iy4";
+  src = fetchFromGitea {
+    domain = "codeberg.org";
+    owner = "tenacityteam";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-9gWoqFa87neIvRnezWI3RyCAOU4wKEHPn/Hgj3/fol0=";
   };
 
   postPatch = ''
-    touch src/RevisionIdent.h
+    mkdir -p build/src/private
+    touch build/src/private/RevisionIdent.h
 
-    substituteInPlace src/FileNames.cpp \
-      --replace /usr/include/linux/magic.h ${linuxHeaders}/include/linux/magic.h
+    substituteInPlace libraries/lib-files/FileNames.cpp \
+         --replace /usr/include/linux/magic.h \
+                   ${linuxHeaders}/include/linux/magic.h
   '';
 
   postFixup = ''
-    rm $out/tenacity
+    rm $out/audacity
     wrapProgram "$out/bin/tenacity" \
       --suffix AUDACITY_PATH : "$out/share/tenacity" \
       --suffix AUDACITY_MODULES_PATH : "$out/lib/tenacity/modules" \
@@ -72,7 +77,7 @@ stdenv.mkDerivation rec {
       --prefix XDG_DATA_DIRS : "$out/share:$GSETTINGS_SCHEMAS_PATH"
   '';
 
-  NIX_CFLAGS_COMPILE = "-D GIT_DESCRIBE=\"\"";
+  env.NIX_CFLAGS_COMPILE = "-D GIT_DESCRIBE=\"\"";
 
   # tenacity only looks for ffmpeg at runtime, so we need to link it in manually
   NIX_LDFLAGS = toString [
@@ -80,7 +85,6 @@ stdenv.mkDerivation rec {
     "-lavdevice"
     "-lavfilter"
     "-lavformat"
-    "-lavresample"
     "-lavutil"
     "-lpostproc"
     "-lswresample"
@@ -100,7 +104,7 @@ stdenv.mkDerivation rec {
   buildInputs = [
     alsa-lib
     expat
-    ffmpeg
+    ffmpeg_5
     file
     flac
     glib
@@ -123,8 +127,8 @@ stdenv.mkDerivation rec {
     sratom
     suil
     twolame
-    wxGTK
-    wxGTK.gtk
+    wxGTK32
+    gtk3
   ] ++ lib.optionals stdenv.isLinux [
     at-spi2-core
     dbus
diff --git a/nixpkgs/pkgs/applications/audio/termusic/default.nix b/nixpkgs/pkgs/applications/audio/termusic/default.nix
index 8734d7d1f654..158f2e708b17 100644
--- a/nixpkgs/pkgs/applications/audio/termusic/default.nix
+++ b/nixpkgs/pkgs/applications/audio/termusic/default.nix
@@ -1,23 +1,34 @@
 { lib
 , stdenv
-, fetchCrate
 , rustPlatform
+, fetchCrate
+, fetchpatch
 , pkg-config
-, alsa-lib }:
+, alsa-lib
+, darwin
+}:
 
 rustPlatform.buildRustPackage rec {
   pname = "termusic";
-  version = "0.7.2";
+  version = "0.7.10";
 
   src = fetchCrate {
     inherit pname version;
-    sha256 = "sha256-4o36h/x4+h2H4xpgPfOgIza6zNANyhmSM3Cm1XwWb7w=";
+    hash = "sha256-m0hi5u4BcRcEDEpg1BoWXc25dfhD6+OJtqSZfSdV0HM=";
   };
 
-  cargoHash = "sha256-WHxrMD6W7UyJg8HhjxWlm9KQ5SKsM6fLdvhDzBb16pI=";
+  cargoHash = "sha256-A83gLsaPm6t4nm7DJfcp9z1huDU/Sfy9gunP8pzBiCA=";
+
+  nativeBuildInputs = [
+    pkg-config
+    rustPlatform.bindgenHook
+  ];
 
-  nativeBuildInputs = [ pkg-config ];
-  buildInputs = [ alsa-lib ];
+  buildInputs = lib.optionals stdenv.isLinux [
+    alsa-lib
+  ] ++ lib.optionals stdenv.isDarwin [
+    darwin.apple_sdk.frameworks.AudioUnit
+  ];
 
   meta = with lib; {
     description = "Terminal Music Player TUI written in Rust";
diff --git a/nixpkgs/pkgs/applications/audio/tetraproc/default.nix b/nixpkgs/pkgs/applications/audio/tetraproc/default.nix
index b5012029480e..806f01dc1217 100644
--- a/nixpkgs/pkgs/applications/audio/tetraproc/default.nix
+++ b/nixpkgs/pkgs/applications/audio/tetraproc/default.nix
@@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
   '';
 
   postInstall = ''
-    # Make sure Jack is avalable in $PATH for tetraproc
+    # Make sure Jack is available in $PATH for tetraproc
     wrapProgram $out/bin/tetraproc --prefix PATH : "${jack2}/bin"
   '';
 
diff --git a/nixpkgs/pkgs/applications/audio/tidal-hifi/default.nix b/nixpkgs/pkgs/applications/audio/tidal-hifi/default.nix
index 1af5357cf0eb..f3a16e89df82 100644
--- a/nixpkgs/pkgs/applications/audio/tidal-hifi/default.nix
+++ b/nixpkgs/pkgs/applications/audio/tidal-hifi/default.nix
@@ -36,11 +36,11 @@
 
 stdenv.mkDerivation rec {
   pname = "tidal-hifi";
-  version = "4.1.0";
+  version = "5.1.0";
 
   src = fetchurl {
     url = "https://github.com/Mastermindzh/tidal-hifi/releases/download/${version}/tidal-hifi_${version}_amd64.deb";
-    sha256 = "1lvdym7wcg9042an03zxvckq6kmcd5v5snp2ma54f4knj9kmzwyf";
+    sha256 = "sha256-IaSgul2L0L343TVT3ujgBoMt6tITwjJaBNOVJPCBDtI=";
   };
 
   nativeBuildInputs = [ autoPatchelfHook dpkg makeWrapper ];
@@ -106,6 +106,8 @@ stdenv.mkDerivation rec {
     makeWrapper $out/opt/tidal-hifi/tidal-hifi $out/bin/tidal-hifi \
       --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath buildInputs}" \
       "''${gappsWrapperArgs[@]}"
+    substituteInPlace $out/share/applications/tidal-hifi.desktop \
+      --replace "/opt/tidal-hifi/tidal-hifi" "tidal-hifi"
   '';
 
   meta = with lib; {
@@ -113,7 +115,7 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/Mastermindzh/tidal-hifi";
     changelog = "https://github.com/Mastermindzh/tidal-hifi/releases/tag/${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ alternateved ];
+    maintainers = with maintainers; [ qbit ];
     platforms = [ "x86_64-linux" ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/tone/default.nix b/nixpkgs/pkgs/applications/audio/tone/default.nix
new file mode 100644
index 000000000000..230d78ddbfe9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/tone/default.nix
@@ -0,0 +1,34 @@
+{ lib, fetchFromGitHub, buildDotnetModule, ffmpeg-full, dotnetCorePackages }:
+
+buildDotnetModule rec {
+  pname = "tone";
+  version = "0.1.5";
+
+  src = fetchFromGitHub {
+    owner = "sandreas";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-HhXyOPoDtraT7ef0kpE7SCQbvGFLrTddzS6Kdu0LxW4=";
+  };
+
+  projectFile = "tone/tone.csproj";
+  executables = [ "tone" ];
+  nugetDeps = ./nuget-deps.nix;
+  dotnetBuildFlags = [ "--no-self-contained" ];
+  dotnetInstallFlags = [
+    "-p:PublishSingleFile=false"
+    "-p:PublishTrimmed=false"
+    "-p:PublishReadyToRun=false"
+  ];
+
+  dotnet-sdk = dotnetCorePackages.sdk_6_0;
+  runtimeDeps = [ ffmpeg-full ];
+
+  meta = with lib; {
+    homepage = "https://github.com/sandreas/tone";
+    description = "A cross platform utility to dump and modify audio metadata for a wide variety of formats";
+    license = licenses.asl20;
+    maintainers = [ maintainers.jvanbruegge ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/tone/nuget-deps.nix b/nixpkgs/pkgs/applications/audio/tone/nuget-deps.nix
new file mode 100644
index 000000000000..3093809f2bd3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/tone/nuget-deps.nix
@@ -0,0 +1,55 @@
+# This file was automatically generated by passthru.fetch-deps.
+# Please dont edit it manually, your changes might get overwritten!
+
+{ fetchNuGet }: [
+  (fetchNuGet { pname = "CliWrap"; version = "3.6.0"; sha256 = "0x96awy81kn0dr8h5d376cgfzxg5bvmzd610rc017nliv152zkw2"; })
+  (fetchNuGet { pname = "CSharp.OperationResult"; version = "0.1.6"; sha256 = "127hjd30vvcks977yxxh59g89dbsf7h1khcr1vignrgk9fanvzyi"; })
+  (fetchNuGet { pname = "Esprima"; version = "3.0.0-beta-9"; sha256 = "1gwdi537832z5whyqx58474ys2akgmrkabm51sy7725c91814snz"; })
+  (fetchNuGet { pname = "grok.net"; version = "1.1.0"; sha256 = "01vm1b658dwxcxp1l4cpsplg8pwpmbs6v6fbqwg1lvrm7li9bgjz"; })
+  (fetchNuGet { pname = "Jint"; version = "3.0.0-beta-2044"; sha256 = "0sy0qy33gn54sszhq4dkiihxd224n58xhcxg46qi4p3i93qn3snl"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Configuration"; version = "7.0.0"; sha256 = "0n1grglxql9llmrsbbnlz5chx8mxrb5cpvjngm0hfyrkgzcwz90d"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Configuration.Abstractions"; version = "7.0.0"; sha256 = "1as8cygz0pagg17w22nsf6mb49lr2mcl1x8i3ad1wi8lyzygy1a3"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Configuration.Binder"; version = "2.0.0"; sha256 = "1prvdbma6r18n5agbhhabv6g357p1j70gq4m9g0vs859kf44nrgc"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Configuration.Binder"; version = "7.0.0"; sha256 = "1qifb1pv7s76lih8wnjk418wdk4qwn87q2n6dx54knfvxai410bl"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Configuration.EnvironmentVariables"; version = "7.0.0"; sha256 = "0nhh7rnh45s39x8sjn88czg7nyfpry85pkm0g619j8b468zj8nb4"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Configuration.FileExtensions"; version = "7.0.0"; sha256 = "1fk7dcz6gfhd1k1d8ksz22rnjvj1waqjzk29ym4i3dz73rsq8j1i"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Configuration.Json"; version = "7.0.0"; sha256 = "05zjmrpp99l128wijp1fy8asskc11ls871qaqr4mjnz3gbfycxnj"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection"; version = "7.0.0"; sha256 = "121zs4jp8iimgbpzm3wsglhjwkc06irg1pxy8c1zcdlsg34cfq1p"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection.Abstractions"; version = "2.0.0"; sha256 = "1pwrfh9b72k9rq6mb2jab5qhhi225d5rjalzkapiayggmygc8nhz"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection.Abstractions"; version = "7.0.0"; sha256 = "181d7mp9307fs17lyy42f8cxnjwysddmpsalky4m0pqxcimnr6g7"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.DependencyModel"; version = "3.0.0"; sha256 = "1cm0hycgb33mf1ja9q91wxi3gk13d1p462gdq7gndrya23hw2jm5"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.FileProviders.Abstractions"; version = "7.0.0"; sha256 = "0ff20yklyjgyjzdyv7sybczgqhgd557m05dbwxzjznr0x41b180d"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.FileProviders.Physical"; version = "7.0.0"; sha256 = "1f1h0l47abw0spssd64qkhgd7b54pyzslyb586zp21milimcfmgv"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.FileSystemGlobbing"; version = "7.0.0"; sha256 = "1812vnkn8n0i4yr3k5azcxcfx1bbpcsmms95rdyxjfrzfksr05ai"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Logging"; version = "2.0.0"; sha256 = "1jkwjcq1ld9znz1haazk8ili2g4pzfdp6i7r7rki4hg3jcadn386"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "2.0.0"; sha256 = "1x5isi71z02khikzvm7vaschb006pqqrsv86ky1x08a4hir4s43h"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Options"; version = "2.0.0"; sha256 = "0g4zadlg73f507krilhaaa7h0jdga216syrzjlyf5fdk25gxmjqh"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Options"; version = "7.0.0"; sha256 = "0b90zkrsk5dw3wr749rbynhpxlg4bgqdnd7d5vdlw2g9c7zlhgx6"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Options.ConfigurationExtensions"; version = "7.0.0"; sha256 = "1liyprh0zha2vgmqh92n8kkjz61zwhr7g16f0gmr297z2rg1j5pj"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Primitives"; version = "2.0.0"; sha256 = "1xppr5jbny04slyjgngxjdm0maxdh47vq481ps944d7jrfs0p3mb"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Primitives"; version = "7.0.0"; sha256 = "1b4km9fszid9vp2zb3gya5ni9fn8bq62bzaas2ck2r7gs0sdys80"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-x64"; version = "6.0.16"; sha256 = "0rn46d2lrdyv8cjl2xxjj8zgahv1x4mz4z56vvw6zqfa10g5cnjh"; })
+  (fetchNuGet { pname = "Newtonsoft.Json"; version = "13.0.2"; sha256 = "1p9splg1min274dpz7xdfgzrwkyfd3xlkygwpr1xgjvvyjvs6b0i"; })
+  (fetchNuGet { pname = "Sandreas.AudioMetadata"; version = "0.1.1"; sha256 = "11ibv23h7qj5qshibmlsqmjca51dqbhib9p1gz66c5kqhk7ci38j"; })
+  (fetchNuGet { pname = "Sandreas.Files"; version = "1.1.2"; sha256 = "08qk229q2y1dpdxdnp8xi9mgk8fgpjxrxm4z6ak8n09npp67nhn0"; })
+  (fetchNuGet { pname = "Sandreas.SpectreConsoleHelpers"; version = "0.0.2"; sha256 = "1vy2fka11n0smgrbwdxabl6cdcsg6fv1gymxrws8m0sf9qm64nd1"; })
+  (fetchNuGet { pname = "Serilog"; version = "2.12.0"; sha256 = "0lqxpc96qcjkv9pr1rln7mi4y7n7jdi4vb36c2fv3845w1vswgr4"; })
+  (fetchNuGet { pname = "Serilog.Extensions.Logging"; version = "3.1.0"; sha256 = "0lv370ks2fjdn1nsgkbzbmw6hybnincw3jabr471a5w39pp4fl1c"; })
+  (fetchNuGet { pname = "Serilog.Settings.Configuration"; version = "3.4.0"; sha256 = "1l6fyy9y5a168i1mm107aqyrwzhqmpy0cp1v13l2b89yv8dc105j"; })
+  (fetchNuGet { pname = "Serilog.Sinks.Console"; version = "4.1.0"; sha256 = "1rpkphmqfh3bv3m7v1zwz88wz4sirj4xqyff9ga0c6bqhblj6wii"; })
+  (fetchNuGet { pname = "Serilog.Sinks.File"; version = "5.0.0"; sha256 = "097rngmgcrdfy7jy8j7dq3xaq2qky8ijwg0ws6bfv5lx0f3vvb0q"; })
+  (fetchNuGet { pname = "Spectre.Console"; version = "0.46.0"; sha256 = "1fr7090f2s7q9cw1k25m439blgicsbgl9k5nhqql9xvp0b00s4n9"; })
+  (fetchNuGet { pname = "Spectre.Console.Cli"; version = "0.46.0"; sha256 = "00clv0mw97z8a9r7zam97prdv4ich33m4dhi7v8mjdqwwhj6q4jr"; })
+  (fetchNuGet { pname = "System.IO.Abstractions"; version = "19.0.1"; sha256 = "16dasj8bwsdyl5phgqgfgswkbghzdb3sq7sidigr3b5ykna6n96g"; })
+  (fetchNuGet { pname = "System.Memory"; version = "4.5.5"; sha256 = "08jsfwimcarfzrhlyvjjid61j02irx6xsklf32rv57x2aaikvx0h"; })
+  (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "4.4.0"; sha256 = "0a6ahgi5b148sl5qyfpyw383p3cb4yrkm802k29fsi4mxkiwir29"; })
+  (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "6.0.0"; sha256 = "0qm741kh4rh57wky16sq4m0v05fxmkjjr87krycf5vp9f0zbahbc"; })
+  (fetchNuGet { pname = "System.Text.Encodings.Web"; version = "7.0.0"; sha256 = "1151hbyrcf8kyg1jz8k9awpbic98lwz9x129rg7zk1wrs6vjlpxl"; })
+  (fetchNuGet { pname = "System.Text.Json"; version = "4.6.0"; sha256 = "0ism236hwi0k6axssfq58s1d8lihplwiz058pdvl8al71hagri39"; })
+  (fetchNuGet { pname = "System.Text.Json"; version = "7.0.0"; sha256 = "0scb0lp7wbgcinaa4kqiqs7b8i5nx4ppfad81138jiwd1sl37pyp"; })
+  (fetchNuGet { pname = "System.Threading.Tasks.Extensions"; version = "4.5.4"; sha256 = "0y6ncasgfcgnjrhynaf0lwpkpkmv4a07sswwkwbwb5h7riisj153"; })
+  (fetchNuGet { pname = "TestableIO.System.IO.Abstractions"; version = "19.0.1"; sha256 = "01v2wgb6y2z7df4b2dsy0jb4hnhpv5kgyxypzyqdk7h6plad2axd"; })
+  (fetchNuGet { pname = "TestableIO.System.IO.Abstractions.Wrappers"; version = "19.0.1"; sha256 = "1ms8wqar5w3z2y2qgxii9pqnsb4f1aikji2vaw01zxvnh2wry42n"; })
+  (fetchNuGet { pname = "Ude.NetStandard"; version = "1.2.0"; sha256 = "074yff6g272zpkhk0zvmbfiaaxyp3b05fl24i7ffp2jf9r8bnfpl"; })
+  (fetchNuGet { pname = "z440.atl.core"; version = "4.19.0"; sha256 = "16290hcf42yhs69ymjrg2znk7s56nnp4hj8rqwi1i8rdajmfr2v1"; })
+]
diff --git a/nixpkgs/pkgs/applications/audio/tonelib-gfx/default.nix b/nixpkgs/pkgs/applications/audio/tonelib-gfx/default.nix
index 682627c0e821..e875b8085534 100644
--- a/nixpkgs/pkgs/applications/audio/tonelib-gfx/default.nix
+++ b/nixpkgs/pkgs/applications/audio/tonelib-gfx/default.nix
@@ -16,11 +16,11 @@
 
 stdenv.mkDerivation rec {
   pname = "tonelib-gfx";
-  version = "4.7.5";
+  version = "4.7.8";
 
   src = fetchurl {
-    url = "https://www.tonelib.net/download/220214/ToneLib-GFX-amd64.deb";
-    hash = "sha256-GUSyarqG1V5O6ayAedeGqmOA+UABQDpAZ+dsorh7das=";
+    url = "https://tonelib.net/download/221222/ToneLib-GFX-amd64.deb";
+    hash = "sha256-1sTwHqQYqNloZ3XSwhryqlW7b1FHh4ymtj3rKUcVZIo=";
   };
 
   nativeBuildInputs = [ autoPatchelfHook dpkg ];
diff --git a/nixpkgs/pkgs/applications/audio/tonelib-jam/default.nix b/nixpkgs/pkgs/applications/audio/tonelib-jam/default.nix
index 9229cba4839a..3376ae8ca10f 100644
--- a/nixpkgs/pkgs/applications/audio/tonelib-jam/default.nix
+++ b/nixpkgs/pkgs/applications/audio/tonelib-jam/default.nix
@@ -16,11 +16,11 @@
 
 stdenv.mkDerivation rec {
   pname = "tonelib-jam";
-  version = "4.7.5";
+  version = "4.7.8";
 
   src = fetchurl {
-    url = "https://www.tonelib.net/download/220214/ToneLib-Jam-amd64.deb";
-    sha256 = "sha256-alkdoEhN58o9IGZ8sB39ctTpouMSmvgn6tbrKFneKPI=";
+    url = "https://tonelib.net/download/221222/ToneLib-Jam-amd64.deb";
+    sha256 = "sha256-c6At2lRPngQPpE7O+VY/Hsfw+QfIb3COIuHfbqqIEuM=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/audio/tonelib-metal/default.nix b/nixpkgs/pkgs/applications/audio/tonelib-metal/default.nix
index 29c5cb6a3f24..df6890d65da3 100644
--- a/nixpkgs/pkgs/applications/audio/tonelib-metal/default.nix
+++ b/nixpkgs/pkgs/applications/audio/tonelib-metal/default.nix
@@ -17,11 +17,11 @@
 
 stdenv.mkDerivation rec {
   pname = "tonelib-metal";
-  version = "1.1.0";
+  version = "1.2.6";
 
   src = fetchurl {
-    url = "https://www.tonelib.net/download/220218/ToneLib-Metal-amd64.deb";
-    sha256 = "sha256-F5EKwNQ9f/kdZLFI+QDZHvwevV/vDnxMdSmT/vnX6ug=";
+    url = "https://tonelib.net/download/221222/ToneLib-Metal-amd64.deb";
+    sha256 = "sha256-G80EKAsXomdk8GsnNyvjN8shz3YMKhqdWWYyVB7xTsU=";
   };
 
   nativeBuildInputs = [ autoPatchelfHook dpkg ];
diff --git a/nixpkgs/pkgs/applications/audio/tonelib-noisereducer/default.nix b/nixpkgs/pkgs/applications/audio/tonelib-noisereducer/default.nix
new file mode 100644
index 000000000000..20dbe8c19dff
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/tonelib-noisereducer/default.nix
@@ -0,0 +1,60 @@
+{ lib
+, stdenv
+, fetchurl
+, autoPatchelfHook
+, dpkg
+, alsa-lib
+, freetype
+, libglvnd
+, mesa
+, curl
+, libXcursor
+, libXinerama
+, libXrandr
+, libXrender
+, libjack2
+}:
+
+stdenv.mkDerivation rec {
+  pname = "tonelib-noisereducer";
+  version = "1.2.0";
+
+  src = fetchurl {
+    url = "https://tonelib.net/download/221222/ToneLib-NoiseReducer-amd64.deb";
+    sha256 = "sha256-27JuFVmamIUUKRrpjlsE0E6x+5X9RutNGPiDf5dxitI=";
+  };
+
+  nativeBuildInputs = [ autoPatchelfHook dpkg ];
+
+  buildInputs = [
+    stdenv.cc.cc.lib
+    alsa-lib
+    freetype
+    libglvnd
+    mesa
+  ] ++ runtimeDependencies;
+
+  runtimeDependencies = map lib.getLib [
+    curl
+    libXcursor
+    libXinerama
+    libXrandr
+    libXrender
+    libjack2
+  ];
+
+  unpackCmd = "dpkg -x $curSrc source";
+
+  installPhase = ''
+    mv usr $out
+ '';
+
+  meta = with lib; {
+    description = "ToneLib NoiseReducer – two-unit noise reduction rack effect plugin";
+    homepage = "https://tonelib.net/tl-noisereducer.html";
+    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
+    license = licenses.unfree;
+    maintainers = with maintainers; [ orivej ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/tony/default.nix b/nixpkgs/pkgs/applications/audio/tony/default.nix
index 15c973a46fc8..33561122b191 100644
--- a/nixpkgs/pkgs/applications/audio/tony/default.nix
+++ b/nixpkgs/pkgs/applications/audio/tony/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, pkg-config, wrapQtAppsHook
+{ lib, stdenv, fetchurl, fetchpatch2, 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
@@ -13,6 +13,22 @@ stdenv.mkDerivation rec {
     sha256 = "03g2bmlj08lmgvh54dyd635xccjn730g4wwlhpvsw04bffz8b7fp";
   };
 
+  patches = [
+    (fetchpatch2 {
+      url = "https://github.com/sonic-visualiser/svcore/commit/5a7b517e43b7f0b3f03b7fc3145102cf4e5b0ffc.patch";
+      stripLen = 1;
+      extraPrefix = "svcore/";
+      sha256 = "sha256-DOCdQqCihkR0g/6m90DbJxw00QTpyVmFzCxagrVWKiI=";
+    })
+    (fetchpatch2 {
+      url = "https://github.com/sonic-visualiser/svgui/commit/5b6417891cff5cc614e8c96664d68674eb12b191.patch";
+      stripLen = 1;
+      extraPrefix = "svgui/";
+      excludes = [ "svgui/widgets/CSVExportDialog.cpp" ];
+      sha256 = "sha256-pBCtoMXgjreUm/D0pl6+R9x1Ovwwwj8Ohv994oMX8XA=";
+    })
+  ];
+
   nativeBuildInputs = [ pkg-config wrapQtAppsHook ];
 
   buildInputs = [
diff --git a/nixpkgs/pkgs/applications/audio/touchosc/default.nix b/nixpkgs/pkgs/applications/audio/touchosc/default.nix
index 1a2cc43e4d88..97d87d5b224c 100644
--- a/nixpkgs/pkgs/applications/audio/touchosc/default.nix
+++ b/nixpkgs/pkgs/applications/audio/touchosc/default.nix
@@ -45,25 +45,23 @@ in
 
 stdenv.mkDerivation rec {
   pname = "touchosc";
-  version = "1.1.4.143";
+  version = "1.2.0.166";
 
   suffix = {
     aarch64-linux = "linux-arm64";
     armv7l-linux  = "linux-armhf";
-    x86_64-linux  = "linux-x86_64";
+    x86_64-linux  = "linux-x64";
   }.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
 
   src = fetchurl {
     url = "https://hexler.net/pub/${pname}/${pname}-${version}-${suffix}.deb";
     hash = {
-      aarch64-linux = "sha256-BLPTCaFtsvYzesFvOJVCCofgRVpT2hCvrpYbceh95J4=";
-      armv7l-linux  = "sha256-RpHAXj2biZDqeE9xy3Q+fcGTIvCXfTJNn/jMObfL44g=";
-      x86_64-linux  = "sha256-CD8JR1QVMBe//MyrNfo8RE1ogoVU0H87IU5rTg5rDAU=";
+      aarch64-linux = "sha256-EhAjGbAFRL0Jz7yVmrvSdkpb5ZoLq+q7t0S6jfatcWU=";
+      armv7l-linux  = "sha256-CM18dhFLrWS+7FCwGZWeDxa7AmyQOGjuJcP3V/xA9D0=";
+      x86_64-linux  = "sha256-v3kjrOyIKz+G+6UGHxZrkl/AuTsGP2R5GDyliLoydBU=";
     }.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
   };
 
-  unpackCmd = "mkdir root; dpkg-deb -x $curSrc root";
-
   strictDeps = true;
 
   nativeBuildInputs = [
@@ -96,6 +94,8 @@ stdenv.mkDerivation rec {
     runHook postInstall
   '';
 
+  passthru.updateScript = ./update.sh;
+
   meta = with lib; {
     homepage = "https://hexler.net/touchosc";
     description = "Next generation modular control surface";
diff --git a/nixpkgs/pkgs/applications/audio/touchosc/update.sh b/nixpkgs/pkgs/applications/audio/touchosc/update.sh
new file mode 100755
index 000000000000..dc3e2f088878
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/touchosc/update.sh
@@ -0,0 +1,54 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p nix curl libxml2 jq
+
+set -euo pipefail
+
+nixpkgs="$(git rev-parse --show-toplevel || (printf 'Could not find root of nixpkgs repo\nAre we running from within the nixpkgs git repo?\n' >&2; exit 1))"
+
+attr="${UPDATE_NIX_ATTR_PATH:-touchosc}"
+version="$(curl -sSL https://hexler.net/touchosc/appcast/linux | xmllint --xpath '/rss/channel/item/enclosure/@*[local-name()="version"]' - | cut -d= -f2- | tr -d '"' | head -n1)"
+
+narhash() {
+    nix --extra-experimental-features nix-command store prefetch-file --json "$url" | jq -r .hash
+}
+
+nixeval() {
+    if [ "$#" -ge 2 ]; then
+        systemargs=(--argstr system "$2")
+    else
+        systemargs=()
+    fi
+
+    nix --extra-experimental-features nix-command eval --json --impure "${systemargs[@]}" -f "$nixpkgs" "$1" | jq -r .
+}
+
+findpath() {
+    path="$(nix --extra-experimental-features nix-command eval --json --impure -f "$nixpkgs" "$1.meta.position" | jq -r . | cut -d: -f1)"
+    outpath="$(nix --extra-experimental-features nix-command eval --json --impure --expr "builtins.fetchGit \"$nixpkgs\"")"
+
+    if [ -n "$outpath" ]; then
+        path="${path/$(echo "$outpath" | jq -r .)/$nixpkgs}"
+    fi
+
+    echo "$path"
+}
+
+oldversion="${UPDATE_NIX_OLD_VERSION:-$(nixeval "$attr".version)}"
+
+pkgpath="$(findpath "$attr")"
+
+if [ "$version" = "$oldversion" ]; then
+    echo 'update.sh: New version same as old version, nothing to do.'
+    exit 0
+fi
+
+sed -i -e "/version\s*=/ s|\"$oldversion\"|\"$version\"|" "$pkgpath"
+
+for system in aarch64-linux armv7l-linux x86_64-linux; do
+    url="$(nixeval "$attr".src.url "$system")"
+
+    curhash="$(nixeval "$attr".src.outputHash "$system")"
+    newhash="$(narhash "$url")"
+
+    sed -i -e "s|\"$curhash\"|\"$newhash\"|" "$pkgpath"
+done
diff --git a/nixpkgs/pkgs/applications/audio/transcode/default.nix b/nixpkgs/pkgs/applications/audio/transcode/default.nix
index 112d84a08b11..55883a4f70e9 100644
--- a/nixpkgs/pkgs/applications/audio/transcode/default.nix
+++ b/nixpkgs/pkgs/applications/audio/transcode/default.nix
@@ -9,8 +9,9 @@ stdenv.mkDerivation rec {
     sha256 = "1e4e72d8e0dd62a80b8dd90699f5ca64c9b0cb37a5c9325c184166a9654f0a92";
   };
 
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ flac lame zlib libjpeg libvorbis libtheora libxml2 lzo
-                  libdvdread pkg-config x264 libmpeg2 xvidcore ];
+                  libdvdread x264 libmpeg2 xvidcore ];
   configureFlags = [
     "--disable-ffmpeg" "--disable-libavcodec" "--disable-libavformat"
     "--enable-lzo" "--enable-ogg" "--enable-vorbis" "--enable-theora" "--enable-libxml2"
@@ -23,7 +24,7 @@ stdenv.mkDerivation rec {
   # gcc-10. Otherwise build fails as:
   #   ld: tcextract-extract_pcm.o:/build/transcode-1.1.7/import/extract_pcm.c:36: multiple definition of
   #     `audio'; tcextract-extract_ac3.o:/build/transcode-1.1.7/import/extract_ac3.c:337: first defined here
-  NIX_CFLAGS_COMPILE = "-fcommon";
+  env.NIX_CFLAGS_COMPILE = "-fcommon";
 
   meta = with lib; {
     description = "Suite of command line utilities for transcoding video and audio codecs, and for converting between different container formats";
diff --git a/nixpkgs/pkgs/applications/audio/transcribe/default.nix b/nixpkgs/pkgs/applications/audio/transcribe/default.nix
index 06f0d47d8a2c..93922313ddfd 100644
--- a/nixpkgs/pkgs/applications/audio/transcribe/default.nix
+++ b/nixpkgs/pkgs/applications/audio/transcribe/default.nix
@@ -2,6 +2,8 @@
 , fetchzip
 , lib
 , wrapGAppsHook
+, xdg-utils
+, which
 , alsa-lib
 , atk
 , cairo
@@ -20,18 +22,22 @@
 
 stdenv.mkDerivation rec {
   pname = "transcribe";
-  version = "9.10";
+  version = "9.21";
 
   src =
     if stdenv.hostPlatform.system == "x86_64-linux" then
       fetchzip
         {
-          url = "https://www.seventhstring.com/xscribe/downlo/xscsetup-9.10.0.tar.gz";
-          sha256 = "sha256-6+P2qdjyvCzwrXYgw2yeG+hu8W5t6E0RCZx6Znkvj3g=";
+          url = "https://www.seventhstring.com/xscribe/downlo/xscsetup-9.21.0.tar.gz";
+          sha256 = "sha256-M0hOJOsTTRxPef8rTO+/KpiP4lr8mtplS9KITaFOFPA=";
         }
     else throw "Platform not supported";
 
-  nativeBuildInputs = [ wrapGAppsHook ];
+  nativeBuildInputs = [
+    which
+    xdg-utils
+    wrapGAppsHook
+  ];
 
   buildInputs = with gst_all_1; [
     gst-plugins-base
@@ -65,8 +71,13 @@ stdenv.mkDerivation rec {
     mkdir -p $out/bin $out/libexec $out/share/doc
     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
+    # The script normally installs to the home dir
+    sed -i -E 's!BIN_DST=.*!BIN_DST=$out!' install-linux.sh
+    sed -i -e 's!Exec=''${BIN_DST}/transcribe/transcribe!Exec=transcribe!' install-linux.sh
+    sed -i -e 's!''${BIN_DST}/transcribe!''${BIN_DST}/libexec!' install-linux.sh
+    rm -f xschelp.htb readme_gtk.html *.so
+    XDG_DATA_HOME=$out/share bash install-linux.sh -i
     patchelf \
       --set-interpreter $(cat ${stdenv.cc}/nix-support/dynamic-linker) \
       $out/libexec/transcribe
@@ -97,6 +108,7 @@ stdenv.mkDerivation rec {
     homepage = "https://www.seventhstring.com/xscribe/";
     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = licenses.unfree;
+    maintainers = with maintainers; [ iwanb ];
     platforms = platforms.linux;
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/tuner/default.nix b/nixpkgs/pkgs/applications/audio/tuner/default.nix
new file mode 100644
index 000000000000..0f4db5af20a6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/tuner/default.nix
@@ -0,0 +1,68 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, pkg-config
+, meson
+, ninja
+, vala
+, glib
+, itstool
+, wrapGAppsHook
+, desktop-file-utils
+, libsoup
+, json-glib
+, geoclue2
+, geocode-glib
+, libgee
+, gtk3
+, pantheon
+, gst_all_1
+}:
+
+stdenv.mkDerivation rec {
+  pname = "tuner";
+  version = "1.5.1";
+
+  src = fetchFromGitHub {
+    owner = "louis77";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-tG1AMEqHcp4jHNgWDy9fS2FtlxFTlpMD5MVbepIY+GY=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    meson
+    ninja
+    vala
+    glib
+    itstool
+    wrapGAppsHook
+    desktop-file-utils
+  ];
+
+  buildInputs = [
+    libsoup
+    json-glib
+    geoclue2
+    geocode-glib
+    libgee
+    glib
+    gtk3
+    pantheon.granite
+    gst_all_1.gstreamer
+    gst_all_1.gst-plugins-base
+    gst_all_1.gst-plugins-bad
+    gst_all_1.gst-plugins-good
+    gst_all_1.gst-plugins-ugly
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/louis77/tuner";
+    description = "An app to discover and play internet radio stations";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    mainProgram = "com.github.louis77.tuner";
+    maintainers = [ maintainers.abbe ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/uade123/default.nix b/nixpkgs/pkgs/applications/audio/uade/default.nix
index a18b38371e40..8a7a336283cc 100644
--- a/nixpkgs/pkgs/applications/audio/uade123/default.nix
+++ b/nixpkgs/pkgs/applications/audio/uade/default.nix
@@ -6,22 +6,24 @@
 , which
 , makeWrapper
 , libao
-, libbencodetools
+, bencodetools
 , sox
 , lame
 , flac
 , vorbis-tools
+# https://gitlab.com/uade-music-player/uade/-/issues/38
+, withWriteAudio ? !stdenv.hostPlatform.isDarwin
 }:
 
 stdenv.mkDerivation rec {
-  pname = "uade123";
-  version = "3.01";
+  pname = "uade";
+  version = "3.02";
 
   src = fetchFromGitLab {
     owner = "uade-music-player";
     repo = "uade";
     rev = "uade-${version}";
-    sha256 = "0fam3g8mlzrirrac3iwcwsz9jmsqwdy7lkwwdr2q4pkq9cpmh8m5";
+    sha256 = "sha256-skPEXBQwyr326zCmZ2jwGxcBoTt3Y/h2hagDeeqbMpw=";
   };
 
   postPatch = ''
@@ -31,30 +33,41 @@ stdenv.mkDerivation rec {
     substituteInPlace src/frontends/mod2ogg/mod2ogg2.sh.in \
       --replace '-e stat' '-n stat' \
       --replace '/usr/local' "$out"
+    substituteInPlace python/uade/generate_oscilloscope_view.py \
+      --replace "default='uade123'" "default='$out/bin/uade123'"
+    # https://gitlab.com/uade-music-player/uade/-/issues/37
+    substituteInPlace write_audio/Makefile.in \
+      --replace 'g++' '${stdenv.cc.targetPrefix}c++'
   '';
 
   nativeBuildInputs = [
     pkg-config
     which
     makeWrapper
+  ] ++ lib.optionals withWriteAudio [
     python3
   ];
 
   buildInputs = [
     libao
-    libbencodetools
+    bencodetools
     sox
     lame
     flac
     vorbis-tools
+  ] ++ lib.optionals withWriteAudio [
     (python3.withPackages (p: with p; [
       pillow
       tqdm
+      more-itertools
     ]))
   ];
 
   configureFlags = [
-    "--bencode-tools-prefix=${libbencodetools}"
+    "--bencode-tools-prefix=${bencodetools}"
+    "--with-text-scope"
+  ] ++ lib.optionals (!withWriteAudio) [
+    "--without-write-audio"
   ];
 
   enableParallelBuilding = true;
@@ -66,6 +79,7 @@ stdenv.mkDerivation rec {
       --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,}
+  '' + lib.optionalString withWriteAudio ''
     wrapProgram $out/bin/generate_amiga_oscilloscope_view \
       --prefix PYTHONPATH : "$PYTHONPATH:$out/${python3.sitePackages}"
   '';
@@ -79,6 +93,7 @@ stdenv.mkDerivation rec {
     # Let's make it easy and flag the whole package as unfree.
     license = licenses.unfree;
     maintainers = with maintainers; [ OPNA2608 ];
+    mainProgram = "uade123";
     platforms = platforms.unix;
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/vcv-rack/default.nix b/nixpkgs/pkgs/applications/audio/vcv-rack/default.nix
index 71174d599976..0f0d8f67c437 100644
--- a/nixpkgs/pkgs/applications/audio/vcv-rack/default.nix
+++ b/nixpkgs/pkgs/applications/audio/vcv-rack/default.nix
@@ -1,4 +1,5 @@
 { alsa-lib
+, cmake
 , copyDesktopItems
 , curl
 , fetchFromBitbucket
@@ -23,9 +24,8 @@
 , makeDesktopItem
 , makeWrapper
 , pkg-config
-, rtaudio
 , rtmidi
-, speex
+, speexdsp
 , stdenv
 , wrapGAppsHook
 , zstd
@@ -45,8 +45,8 @@ let
   fuzzysearchdatabase-source = fetchFromBitbucket {
     owner = "j_norberg";
     repo = "fuzzysearchdatabase";
-    rev = "fe62479811e503ef3c091f5a859d27bfcf0a44da";
-    sha256 = "zgeUzuuInHPeveBIjlivRGIz+NSb7cW/9hMndxm6qOA=";
+    rev = "a3a1bf557b8e6ee58b55fa82ff77ff7a3d141949";
+    sha256 = "13ib72acbxn1cnf66im0v4nlr1464v7j08ra2bprznjmy127xckm";
   };
   nanovg-source = fetchFromGitHub {
     owner = "VCVRack";
@@ -72,16 +72,50 @@ let
     rev = "2fc6405883f8451944ed080547d073c8f9f31898";
     sha256 = "/QZFZuI5kSsEvSfMJlcqB1HiZ9Vcf3vqLqWIMEgxQK8=";
   };
+  simde-source = fetchFromGitHub {
+    owner = "simd-everywhere";
+    repo = "simde";
+    rev = "dd0b662fd8cf4b1617dbbb4d08aa053e512b08e4";
+    sha256 = "1kxwzdlh21scak7wsbb60vwfvndppidj5fgbi26mmh73zsj02mnv";
+  };
+  tinyexpr-source = fetchFromGitHub {
+    owner = "codeplea";
+    repo = "tinyexpr";
+    rev = "4e8cc0067a1e2378faae23eb2dfdd21e9e9907c2";
+    sha256 = "1yxkxsw3bc81cjm2knvyr1z9rlzwmjvq5zd125n34xwq568v904d";
+  };
   fundamental-source = fetchFromGitHub {
     owner = "VCVRack";
     repo = "Fundamental";
-    rev = "533397cdcad5c6401ebd3937d6c1663de2473627"; # tip of branch v2
-    sha256 = "QnwOgrYxiCa/7t/u6F63Ks8C9E8k6T+hia4JZFhp1LI=";
+    rev = "v2.3.1"; # tip of branch v2
+    sha256 = "1rd5yvdr6k03mc3r2y7wxhmiqd69jfvqmpqagxb83y1mn0zfv0pr";
+  };
+  vcv-rtaudio = stdenv.mkDerivation rec {
+    pname = "vcv-rtaudio";
+    version = "unstable-2020-01-30";
+
+    src = fetchFromGitHub {
+      owner = "VCVRack";
+      repo = "rtaudio";
+      rev = "ece277bd839603648c80c8a5f145678e13bc23f3"; # tip of master branch
+      sha256 = "11gpl0ak757ilrq4fi0brj0chmlcr1hihc32yd7qza4fxjw2yx2v";
+    };
+
+    nativeBuildInputs = [ cmake pkg-config ];
+
+    buildInputs = [ alsa-lib libjack2 libpulseaudio ];
+
+    cmakeFlags = [
+      "-DRTAUDIO_API_ALSA=ON"
+      "-DRTAUDIO_API_PULSE=ON"
+      "-DRTAUDIO_API_JACK=ON"
+      "-DRTAUDIO_API_CORE=OFF"
+    ];
   };
 in
 stdenv.mkDerivation rec {
   pname = "VCV-Rack";
-  version = "2.0.6";
+  version = "2.3.0";
 
   desktopItems = [
     (makeDesktopItem {
@@ -101,7 +135,7 @@ stdenv.mkDerivation rec {
     owner = "VCVRack";
     repo = "Rack";
     rev = "v${version}";
-    sha256 = "vvGx8tnE7gMiboVUTywIzBB1q/IfiJ8TPnSHvmfHUQg=";
+    sha256 = "1aj7pcvks1da5ydagyxsdksp31rf8dn0bixw55kn34k0g4ky5jiw";
   };
 
   patches = [
@@ -119,6 +153,8 @@ stdenv.mkDerivation rec {
     cp -r ${nanosvg-source}/* dep/nanosvg
     cp -r ${osdialog-source}/* dep/osdialog
     cp -r ${oui-blendish-source}/* dep/oui-blendish
+    cp -r ${simde-source}/* dep/simde
+    cp -r ${tinyexpr-source}/* dep/tinyexpr
 
     cp dep/pffft/*.h dep/include
     cp dep/fuzzysearchdatabase/src/*.hpp dep/include
@@ -126,6 +162,8 @@ stdenv.mkDerivation rec {
     cp dep/nanovg/src/*.h dep/include
     cp dep/osdialog/*.h dep/include
     cp dep/oui-blendish/*.h dep/include
+    cp -r dep/simde/simde dep/include
+    cp dep/tinyexpr/tinyexpr.h dep/include
 
     # Build and dist the Fundamental plugins
     cp -r ${fundamental-source} plugins/Fundamental/
@@ -137,8 +175,6 @@ stdenv.mkDerivation rec {
       --replace 'zenityBin[] = "zenity"' 'zenityBin[] = "${gnome.zenity}/bin/zenity"'
   '';
 
-  enableParallelBuilding = true;
-
   nativeBuildInputs = [
     copyDesktopItems
     imagemagick
@@ -161,13 +197,18 @@ stdenv.mkDerivation rec {
     libjack2
     libpulseaudio
     libsamplerate
-    rtaudio
     rtmidi
-    speex
+    speexdsp
+    vcv-rtaudio
     zstd
   ];
 
-  makeFlags = [ "all" "plugins" ];
+  makeFlags = lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
+    "CROSS_COMPILE=${stdenv.cc.targetPrefix}"
+  ] ++ [
+    "all"
+    "plugins"
+  ];
 
   installPhase = ''
     runHook preInstall
diff --git a/nixpkgs/pkgs/applications/audio/vcv-rack/rack-minimize-vendoring.patch b/nixpkgs/pkgs/applications/audio/vcv-rack/rack-minimize-vendoring.patch
index 506ab6053053..58f1b1f16f07 100644
--- a/nixpkgs/pkgs/applications/audio/vcv-rack/rack-minimize-vendoring.patch
+++ b/nixpkgs/pkgs/applications/audio/vcv-rack/rack-minimize-vendoring.patch
@@ -1,7 +1,8 @@
-diff -ru a/Makefile b/Makefile
---- a/Makefile 1970-01-01 01:00:01.000000000 +0100
-+++ b/Makefile 1970-01-01 01:00:01.000000000 +0100
-@@ -36,7 +36,7 @@ build/dep/osdialog/osdialog_gtk3.c.o: FLAGS += $(shell pkg-config --cflags gtk+-
+diff --git a/Makefile b/Makefile
+index fc7c3af1..c3672c6a 100644
+--- a/Makefile
++++ b/Makefile
+@@ -34,7 +34,7 @@ ifdef ARCH_LIN
  
  	LDFLAGS += -Wl,--whole-archive
  	LDFLAGS += -static-libstdc++ -static-libgcc
@@ -9,4 +10,4 @@ diff -ru a/Makefile b/Makefile
 +	LDFLAGS += -lGLEW -lglfw -ljansson -lcurl -lssl -lcrypto -larchive -lz -lspeexdsp -lsamplerate -lrtmidi -lrtaudio
  	LDFLAGS += -Wl,--no-whole-archive
  	LDFLAGS += -lpthread -lGL -ldl -lX11 -lasound -ljack -lpulse -lpulse-simple
- 	LDFLAGS += $(shell pkg-config --libs gtk+-3.0)
+ endif
diff --git a/nixpkgs/pkgs/applications/audio/vgmplay-libvgm/default.nix b/nixpkgs/pkgs/applications/audio/vgmplay-libvgm/default.nix
index 9647eef681ac..199f75ff2027 100644
--- a/nixpkgs/pkgs/applications/audio/vgmplay-libvgm/default.nix
+++ b/nixpkgs/pkgs/applications/audio/vgmplay-libvgm/default.nix
@@ -11,13 +11,13 @@
 
 stdenv.mkDerivation rec {
   pname = "vgmplay-libvgm";
-  version = "unstable-2022-03-17";
+  version = "unstable-2023-04-12";
 
   src = fetchFromGitHub {
     owner = "ValleyBell";
     repo = "vgmplay-libvgm";
-    rev = "a2c21cb134b58043a013ac2efc060144cdecf13d";
-    sha256 = "0g251laqjvvzblyflkg8xac424dbxm1v35ckfazsfchmcqiaqfw4";
+    rev = "813abab549e99bb7e936acbfa1199cf435c237c6";
+    sha256 = "sdQO+xk3a7AFXo3jpbcuNBkd19PjKoBMRhr4IK06oHg=";
   };
 
   nativeBuildInputs = [ cmake pkg-config ];
diff --git a/nixpkgs/pkgs/applications/audio/vimpc/default.nix b/nixpkgs/pkgs/applications/audio/vimpc/default.nix
index 5cc3c1099995..7e834efb9524 100644
--- a/nixpkgs/pkgs/applications/audio/vimpc/default.nix
+++ b/nixpkgs/pkgs/applications/audio/vimpc/default.nix
@@ -44,7 +44,7 @@ stdenv.mkDerivation rec {
     description = "A vi/vim inspired client for the Music Player Daemon (mpd)";
     homepage = "https://github.com/boysetsfrog/vimpc";
     license = licenses.gpl3;
-    platforms = platforms.linux;
+    platforms = platforms.unix;
     maintainers = with maintainers; [ pSub ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/audio/viper4linux-gui/default.nix b/nixpkgs/pkgs/applications/audio/viper4linux-gui/default.nix
index be495aa9c93b..ee8593c8e620 100644
--- a/nixpkgs/pkgs/applications/audio/viper4linux-gui/default.nix
+++ b/nixpkgs/pkgs/applications/audio/viper4linux-gui/default.nix
@@ -66,7 +66,7 @@ stdenv.mkDerivation rec {
   ];
 
   installPhase = ''
-    runHook preInstalli
+    runHook preInstall
     install -D V4L_Frontend $out/bin/viper-gui
     install -D icons/viper.png $out/share/icons/viper.png
     runHook postInstall
diff --git a/nixpkgs/pkgs/applications/audio/vkeybd/default.nix b/nixpkgs/pkgs/applications/audio/vkeybd/default.nix
index ec6391562174..642a75f71f2f 100644
--- a/nixpkgs/pkgs/applications/audio/vkeybd/default.nix
+++ b/nixpkgs/pkgs/applications/audio/vkeybd/default.nix
@@ -19,10 +19,6 @@ stdenv.mkDerivation  rec {
 
   makeFlags = [ "TKLIB=-l${tk.libPrefix}" "TCLLIB=-l${tcl.libPrefix}" ];
 
-  postInstall = ''
-    wrapProgram $out/bin/vkeybd --set TK_LIBRARY "${tk}/lib/${tk.libPrefix}"
-  '';
-
   meta = with lib; {
     description = "Virtual MIDI keyboard";
     homepage = "https://www.alsa-project.org/~tiwai/alsa.html";
diff --git a/nixpkgs/pkgs/applications/audio/vmpk/default.nix b/nixpkgs/pkgs/applications/audio/vmpk/default.nix
index ff9b6c679aae..c40af7b046ed 100644
--- a/nixpkgs/pkgs/applications/audio/vmpk/default.nix
+++ b/nixpkgs/pkgs/applications/audio/vmpk/default.nix
@@ -5,11 +5,11 @@
 
 mkDerivation rec {
   pname = "vmpk";
-  version = "0.8.6";
+  version = "0.8.8";
 
   src = fetchurl {
     url = "mirror://sourceforge/${pname}/${version}/${pname}-${version}.tar.bz2";
-    sha256 = "sha256-cwfJJVeUokyZI1iGvqBvXjcBR36VGodzrUx5Atv3POM=";
+    sha256 = "sha256-+NjTcszb1KXGynIcCf4IEDvN4f8pgXtR1TksxGR5ZHQ=";
   };
 
   nativeBuildInputs = [ cmake pkg-config qttools docbook-xsl-nons ];
diff --git a/nixpkgs/pkgs/applications/audio/vocal/default.nix b/nixpkgs/pkgs/applications/audio/vocal/default.nix
index 0c80dda703e7..00f4ac9172ac 100644
--- a/nixpkgs/pkgs/applications/audio/vocal/default.nix
+++ b/nixpkgs/pkgs/applications/audio/vocal/default.nix
@@ -80,15 +80,13 @@ stdenv.mkDerivation rec {
   '';
 
   passthru = {
-    updateScript = nix-update-script {
-      attrPath = pname;
-    };
+    updateScript = nix-update-script { };
   };
 
   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.
+      Vocal is a powerful, fast, and intuitive application that helps users find new podcasts, manage their libraries, and enjoy the best that independent 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;
diff --git a/nixpkgs/pkgs/applications/audio/vocproc/default.nix b/nixpkgs/pkgs/applications/audio/vocproc/default.nix
index 46957000507b..bb402f425daa 100644
--- a/nixpkgs/pkgs/applications/audio/vocproc/default.nix
+++ b/nixpkgs/pkgs/applications/audio/vocproc/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchzip, pkg-config, lvtk, lv2, fftw, lv2-cpp-tools, gtkmm2 }:
+{ lib, stdenv, fetchzip, pkg-config, lv2, fftw, lv2-cpp-tools, gtkmm2 }:
 
 stdenv.mkDerivation rec {
   pname = "vocproc";
diff --git a/nixpkgs/pkgs/applications/audio/whipper/default.nix b/nixpkgs/pkgs/applications/audio/whipper/default.nix
index f06907ad32f2..e92b2f13187e 100644
--- a/nixpkgs/pkgs/applications/audio/whipper/default.nix
+++ b/nixpkgs/pkgs/applications/audio/whipper/default.nix
@@ -2,6 +2,7 @@
 , python3
 , fetchFromGitHub
 , fetchpatch
+, installShellFiles
 , libcdio-paranoia
 , cdrdao
 , libsndfile
@@ -35,8 +36,11 @@ in python3.pkgs.buildPythonApplication rec {
   ];
 
   nativeBuildInputs = with python3.pkgs; [
+    installShellFiles
+
     setuptools-scm
     docutils
+    setuptoolsCheckHook
   ];
 
   propagatedBuildInputs = with python3.pkgs; [
@@ -52,7 +56,7 @@ in python3.pkgs.buildPythonApplication rec {
 
   buildInputs = [ libsndfile ];
 
-  checkInputs = with python3.pkgs; [
+  nativeCheckInputs = with python3.pkgs; [
     twisted
   ] ++ bins;
 
@@ -64,14 +68,21 @@ in python3.pkgs.buildPythonApplication rec {
     export SETUPTOOLS_SCM_PRETEND_VERSION="${version}"
   '';
 
-  checkPhase = ''
-    runHook preCheck
+  outputs = [ "out" "man" ];
+  postBuild = ''
+    make -C man
+  '';
+
+  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
+    export HOME=$TMPDIR
+  '';
+
+  postInstall = ''
+    installManPage man/*.1
   '';
 
   passthru.tests.version = testers.testVersion {
diff --git a/nixpkgs/pkgs/applications/audio/wolf-shaper/default.nix b/nixpkgs/pkgs/applications/audio/wolf-shaper/default.nix
index b61ea3fc4d4b..60b1aea19df2 100644
--- a/nixpkgs/pkgs/applications/audio/wolf-shaper/default.nix
+++ b/nixpkgs/pkgs/applications/audio/wolf-shaper/default.nix
@@ -1,19 +1,19 @@
-{ lib, stdenv, fetchFromGitHub , libjack2, lv2, xorg, liblo, libGL, libXcursor, pkg-config }:
+{ lib, stdenv, fetchFromGitHub, libjack2, lv2, xorg, liblo, libGL, libXcursor, pkg-config }:
 
 stdenv.mkDerivation rec {
   pname = "wolf-shaper";
-  version = "0.1.8";
+  version = "1.0.2";
 
   src = fetchFromGitHub {
-    owner = "pdesaulniers";
+    owner = "wolf-plugins";
     repo = "wolf-shaper";
     rev = "v${version}";
-    sha256 = "1j9xmh1nkf45ay1c5dz2g165qvrwlanzcq6mvb3nfxar265drd9q";
+    hash = "sha256-4oi1wnex6eNRHUWXZHnvrmqp4veFuPJqD0YuOhDepg4=";
     fetchSubmodules = true;
   };
 
   nativeBuildInputs = [ pkg-config ];
-  buildInputs = [ libjack2 lv2 xorg.libX11 liblo libGL libXcursor  ];
+  buildInputs = [ libjack2 lv2 xorg.libX11 liblo libGL libXcursor ];
 
   makeFlags = [
     "BUILD_LV2=true"
@@ -38,9 +38,9 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    homepage = "https://pdesaulniers.github.io/wolf-shaper/";
+    homepage = "https://wolf-plugins.github.io/wolf-shaper/";
     description = "Waveshaper plugin with spline-based graph editor";
-    license = licenses.gpl3;
+    license = licenses.gpl3Plus;
     maintainers = [ maintainers.magnetophon ];
     platforms = [ "i686-linux" "x86_64-linux" ];
   };
diff --git a/nixpkgs/pkgs/applications/audio/x42-plugins/default.nix b/nixpkgs/pkgs/applications/audio/x42-plugins/default.nix
index 4e2bb5600d3b..bdd17b2f8f21 100644
--- a/nixpkgs/pkgs/applications/audio/x42-plugins/default.nix
+++ b/nixpkgs/pkgs/applications/audio/x42-plugins/default.nix
@@ -3,12 +3,12 @@
 , libGLU, lv2, gtk2, cairo, pango, fftwFloat, zita-convolver }:
 
 stdenv.mkDerivation rec {
-  version = "20220327";
   pname = "x42-plugins";
+  version = "20230315";
 
   src = fetchurl {
     url = "https://gareus.org/misc/x42-plugins/${pname}-${version}.tar.xz";
-    sha256 = "sha256-IhuPqTlCbCxExT5B9Au42RQQl4sDEvz6+HhsuT02KVs=";
+    hash = "sha256-l7Wg+G795i4QFI94NHcPDnvJMYcfQONUkIJeyX2bZos=";
   };
 
   nativeBuildInputs = [ pkg-config ];
@@ -31,10 +31,12 @@ stdenv.mkDerivation rec {
     sed -i 's|/usr/include/zita-convolver.h|${zita-convolver}/include/zita-convolver.h|g' ./convoLV2/Makefile
   '';
 
+  enableParallelBuilding = true;
+
   meta = with lib;
     { description = "Collection of LV2 plugins by Robin Gareus";
       homepage = "https://github.com/x42/x42-plugins";
-      maintainers = with maintainers; [ magnetophon ];
+      maintainers = with maintainers; [ magnetophon orivej ];
       license = licenses.gpl2;
       platforms = [ "i686-linux" "x86_64-linux" ];
     };
diff --git a/nixpkgs/pkgs/applications/audio/xmp/default.nix b/nixpkgs/pkgs/applications/audio/xmp/default.nix
index 5f99555d376c..ae8a27f32488 100644
--- a/nixpkgs/pkgs/applications/audio/xmp/default.nix
+++ b/nixpkgs/pkgs/applications/audio/xmp/default.nix
@@ -1,21 +1,23 @@
-{ lib, stdenv, fetchurl, pkg-config, alsa-lib, libxmp }:
+{ lib, stdenv, fetchurl, pkg-config, alsa-lib, libxmp, AudioUnit, CoreAudio }:
 
 stdenv.mkDerivation rec {
   pname = "xmp";
   version = "4.1.0";
 
-  meta = with lib; {
-    description = "Extended module player";
-    homepage    = "http://xmp.sourceforge.net/";
-    license     = licenses.gpl2Plus;
-    platforms   = platforms.linux;
-  };
-
   src = fetchurl {
     url = "mirror://sourceforge/${pname}/${pname}/${pname}-${version}.tar.gz";
     sha256 = "17i8fc7x7yn3z1x963xp9iv108gxfakxmdgmpv3mlm438w3n3g8x";
   };
 
   nativeBuildInputs = [ pkg-config ];
-  buildInputs = [ alsa-lib libxmp ];
+  buildInputs = [ libxmp ]
+    ++ lib.optionals stdenv.isLinux [ alsa-lib ]
+    ++ lib.optionals stdenv.isDarwin [ AudioUnit CoreAudio ];
+
+  meta = with lib; {
+    description = "Extended module player";
+    homepage    = "https://xmp.sourceforge.net/";
+    license     = licenses.gpl2Plus;
+    platforms   = platforms.unix;
+  };
 }
diff --git a/nixpkgs/pkgs/applications/audio/xsynth-dssi/default.nix b/nixpkgs/pkgs/applications/audio/xsynth-dssi/default.nix
index 61d49d110a9e..e28d773d6e2a 100644
--- a/nixpkgs/pkgs/applications/audio/xsynth-dssi/default.nix
+++ b/nixpkgs/pkgs/applications/audio/xsynth-dssi/default.nix
@@ -10,9 +10,9 @@ stdenv.mkDerivation  rec {
     sha256 = "00nwv2pqjbmxqdc6xdm0cljq6z05lv4y6bibmhz1kih9lm0lklnk";
   };
 
-  nativeBuildInputs = [ autoconf automake  ];
+  nativeBuildInputs = [ autoconf automake pkg-config ];
   buildInputs = [ alsa-lib dssi gtk2 libjack2 ladspaH
-    ladspaPlugins liblo pkg-config ];
+    ladspaPlugins liblo ];
 
   installPhase = ''
     mkdir -p $out/bin
@@ -30,7 +30,7 @@ stdenv.mkDerivation  rec {
       synths) with user interfaces, permitting them to be hosted
       in-process by audio applications.
     '';
-    homepage = "http://dssi.sourceforge.net/download.html#Xsynth-DSSI";
+    homepage = "https://dssi.sourceforge.net/download.html#Xsynth-DSSI";
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
     maintainers = [ maintainers.goibhniu ];
diff --git a/nixpkgs/pkgs/applications/audio/yasr/default.nix b/nixpkgs/pkgs/applications/audio/yasr/default.nix
index 21313b9c0593..d300737ae6d8 100644
--- a/nixpkgs/pkgs/applications/audio/yasr/default.nix
+++ b/nixpkgs/pkgs/applications/audio/yasr/default.nix
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
   ]; # taken from the debian yasr package
 
   meta = {
-    homepage = "http://yasr.sourceforge.net";
+    homepage = "https://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 = lib.platforms.linux;
diff --git a/nixpkgs/pkgs/applications/audio/yesplaymusic/default.nix b/nixpkgs/pkgs/applications/audio/yesplaymusic/default.nix
new file mode 100644
index 000000000000..aee0d1d192fe
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/yesplaymusic/default.nix
@@ -0,0 +1,120 @@
+{ lib
+, stdenv
+, fetchurl
+, undmg
+, dpkg
+, autoPatchelfHook
+, wrapGAppsHook
+, makeWrapper
+, alsa-lib
+, at-spi2-atk
+, cups
+, nspr
+, nss
+, mesa # for libgbm
+, xorg
+, xdg-utils
+, libdrm
+, libnotify
+, libsecret
+, libuuid
+, gtk3
+, systemd
+}:
+let
+  pname = "yesplaymusic";
+  version = "0.4.7";
+
+  srcs = {
+    x86_64-linux = fetchurl {
+      url = "https://github.com/qier222/YesPlayMusic/releases/download/v${version}/yesplaymusic_${version}_amd64.deb";
+      hash = "sha256-nnnHE2OgIqoz3dC+G0219FVBhvnWivLW1BX6+NYo6Ng=";
+    };
+    aarch64-linux = fetchurl {
+      url = "https://github.com/qier222/YesPlayMusic/releases/download/v${version}/yesplaymusic_${version}_arm64.deb";
+      hash = "sha256-+rrhY5iDDt/nYs0Vz5/Ef0sgpsdBKMtb1aVfCZLgRgg=";
+    };
+    x86_64-darwin = fetchurl {
+      url = "https://github.com/qier222/YesPlayMusic/releases/download/v${version}/YesPlayMusic-mac-${version}-x64.dmg";
+      hash = "sha256-z8CASZRWKlj1g3mhxTMMeR4klTvQ2ReSrL7Rt18qQbM=";
+    };
+    aarch64-darwin = fetchurl {
+      url = "https://github.com/qier222/YesPlayMusic/releases/download/v${version}/YesPlayMusic-mac-${version}-arm64.dmg";
+      hash = "sha256-McYLczudKG4tRNIw/Ws4rht0n4tiKA2M99yKtJbdlY8=";
+    };
+  };
+  src = srcs.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
+
+  libraries = [
+    alsa-lib
+    at-spi2-atk
+    cups
+    nspr
+    nss
+    mesa
+    xorg.libxshmfence
+    xorg.libXScrnSaver
+    xorg.libXtst
+    xdg-utils
+    libdrm
+    libnotify
+    libsecret
+    libuuid
+    gtk3
+  ];
+
+  meta = with lib; {
+    description = "A good-looking third-party netease cloud music player";
+    homepage = "https://github.com/qier222/YesPlayMusic/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ ChaosAttractor ];
+    platforms = builtins.attrNames srcs;
+  };
+in
+if stdenv.isDarwin
+then stdenv.mkDerivation {
+  inherit pname version src meta;
+
+  nativeBuildInputs = [ undmg ];
+
+  sourceRoot = ".";
+
+  installPhase = ''
+    mkdir -p $out/Applications
+    cp -r *.app $out/Applications
+  '';
+}
+else stdenv.mkDerivation {
+  inherit pname version src meta;
+
+  nativeBuildInputs = [
+    autoPatchelfHook
+    wrapGAppsHook
+    makeWrapper
+  ];
+
+  buildInputs = libraries;
+
+  runtimeDependencies = [
+    (lib.getLib systemd)
+  ];
+
+  unpackPhase = ''
+    ${dpkg}/bin/dpkg-deb -x $src .
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/bin
+    cp -r opt $out/opt
+    cp -r usr/share $out/share
+    substituteInPlace $out/share/applications/yesplaymusic.desktop \
+      --replace "/opt/YesPlayMusic/yesplaymusic" "$out/bin/yesplaymusic"
+    makeWrapper $out/opt/YesPlayMusic/yesplaymusic $out/bin/yesplaymusic \
+      --argv0 "yesplaymusic" \
+      --add-flags "$out/opt/YesPlayMusic/resources/app.asar"
+
+    runHook postInstall
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/audio/ympd/default.nix b/nixpkgs/pkgs/applications/audio/ympd/default.nix
index 218204d690a1..83ce36a59581 100644
--- a/nixpkgs/pkgs/applications/audio/ympd/default.nix
+++ b/nixpkgs/pkgs/applications/audio/ympd/default.nix
@@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
   #   ld: CMakeFiles/ympd.dir/src/mpd_client.c.o:(.bss+0x0): multiple definition of `mpd';
   #     CMakeFiles/ympd.dir/src/ympd.c.o:(.bss+0x20): first defined here
   # Should be fixed by pending https://github.com/notandy/ympd/pull/191 (does not apply as is).
-  NIX_CFLAGS_COMPILE = "-fcommon";
+  env.NIX_CFLAGS_COMPILE = "-fcommon";
 
   nativeBuildInputs = [ cmake pkg-config ];
   buildInputs = [ libmpdclient openssl ];
diff --git a/nixpkgs/pkgs/applications/audio/ymuse/default.nix b/nixpkgs/pkgs/applications/audio/ymuse/default.nix
new file mode 100644
index 000000000000..e59d42e10b48
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/ymuse/default.nix
@@ -0,0 +1,72 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, buildGoModule
+, wrapGAppsHook
+, pkg-config
+, glib
+, gobject-introspection
+, gtk3
+, gdk-pixbuf
+, gettext
+, librsvg
+}:
+
+buildGoModule rec {
+  pname = "ymuse";
+  version = "0.21";
+
+  src = fetchFromGitHub {
+    owner = "yktoo";
+    repo = "ymuse";
+    rev = "v${version}";
+    sha256 = "sha256-3QgBbK7AK9/uQ6Z7DNIJxa1oXrxvvHDQ/Z2QOf7yfS4=";
+  };
+  vendorSha256 = "sha256-7oYYZWpvWzeHlp6l9bLeHcLITLZPVY5eZdfHSE+ZHW8=";
+
+  nativeBuildInputs = [
+    pkg-config
+    wrapGAppsHook
+    glib
+    gobject-introspection
+    gdk-pixbuf
+    gettext
+  ];
+
+  buildInputs = [
+    gtk3
+    librsvg
+  ];
+
+  postInstall = ''
+    install -Dm644 ./resources/com.yktoo.ymuse.desktop -t $out/share/applications
+    install -Dm644 ./resources/metainfo/com.yktoo.ymuse.metainfo.xml -t $out/share/metainfo
+    cp -r ./resources/icons $out/share
+
+    app_id="ymuse"
+    find ./resources/i18n -type f -name '*.po' |
+    while read file; do
+        # Language is the filename without the extension
+        lang="$(basename "$file")"
+        lang="''${lang%.*}"
+
+        # Create the target dir if needed
+        target_dir="$out/share/locale/$lang/LC_MESSAGES"
+        mkdir -p "$target_dir"
+
+        # Compile the .po into a .mo
+        echo "Compiling $file" into "$target_dir/$app_id.mo"
+        msgfmt "$file" -o "$target_dir/$app_id.mo"
+    done
+  '';
+
+  # IDK how to deal with tests that open up display.
+  doCheck = false;
+
+  meta = with lib; {
+    homepage = "https://yktoo.com/en/software/ymuse/";
+    description = "GTK client for Music Player Daemon (MPD)";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ foo-dogsquared ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/yoshimi/default.nix b/nixpkgs/pkgs/applications/audio/yoshimi/default.nix
index 1f47a456c949..bcf81c8c81ea 100644
--- a/nixpkgs/pkgs/applications/audio/yoshimi/default.nix
+++ b/nixpkgs/pkgs/applications/audio/yoshimi/default.nix
@@ -22,13 +22,13 @@
 
 stdenv.mkDerivation rec {
   pname = "yoshimi";
-  version = "2.1.2.2";
+  version = "2.3.0";
 
   src = fetchFromGitHub {
     owner = "Yoshimi";
     repo = pname;
     rev = version;
-    hash = "sha256-6YsA6tC94yJuuWp5rXXqHzqRy28tvmJzjOR92YwQYO0=";
+    hash = "sha256-rVlwOxp8C/A56JDd6Bzi2smblJVqQWZiFqIP4oRhElM=";
   };
 
   sourceRoot = "source/src";
diff --git a/nixpkgs/pkgs/applications/audio/youtube-music/default.nix b/nixpkgs/pkgs/applications/audio/youtube-music/default.nix
new file mode 100644
index 000000000000..802af13137fa
--- /dev/null
+++ b/nixpkgs/pkgs/applications/audio/youtube-music/default.nix
@@ -0,0 +1,38 @@
+{ lib, fetchurl, appimageTools, }:
+
+let
+  pname = "youtube-music";
+  version = "1.20.0";
+
+  src = fetchurl {
+    url = "https://github.com/th-ch/youtube-music/releases/download/v${version}/YouTube-Music-${version}.AppImage";
+    hash = "sha256-eTPWLD9KUs2ZsLbYRkknnx5uDyrNSbFHPyv6gU+wL/c=";
+  };
+
+  appimageContents = appimageTools.extract { inherit pname version src; };
+in
+appimageTools.wrapType2 rec {
+  inherit pname version src;
+  extraPkgs = pkgs: (appimageTools.defaultFhsEnvArgs.multiPkgs pkgs)
+    ++ [ pkgs.libappindicator ];
+
+  extraInstallCommands = ''
+    mv $out/bin/{${pname}-${version},${pname}}
+    install -m 444 \
+        -D ${appimageContents}/youtube-music.desktop \
+        -t $out/share/applications
+    substituteInPlace \
+        $out/share/applications/youtube-music.desktop \
+        --replace 'Exec=AppRun' 'Exec=${pname}'
+    cp -r ${appimageContents}/usr/share/icons $out/share
+  '';
+
+  meta = with lib; {
+    description = "Electron wrapper around YouTube Music";
+    homepage = "https://th-ch.github.io/youtube-music/";
+    license = licenses.mit;
+    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
+    platforms = platforms.linux;
+    maintainers = [ maintainers.aacebedo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/audio/zam-plugins/default.nix b/nixpkgs/pkgs/applications/audio/zam-plugins/default.nix
index a07bfa60b054..c676e6a774b5 100644
--- a/nixpkgs/pkgs/applications/audio/zam-plugins/default.nix
+++ b/nixpkgs/pkgs/applications/audio/zam-plugins/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "zam-plugins";
-  version = "3.14";
+  version = "4.1";
 
   src = fetchFromGitHub {
     owner = "zamaudio";
     repo = pname;
     rev = version;
-    sha256 = "sha256-zlANfFuEXQdXlSu4CuXNyChiuV7wkumaOJqgthl6Y9Q=";
+    sha256 = "sha256-NKa6lOP3fpAFMYwzZAMFgW0tBSM/F89oB/nDbEUeflw=";
     fetchSubmodules = true;
   };
 
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
   enableParallelBuilding = true;
 
   meta = with lib; {
-    homepage = "http://www.zamaudio.com/?p=976";
+    homepage = "https://www.zamaudio.com/?p=976";
     description = "A collection of LV2/LADSPA/VST/JACK audio plugins by ZamAudio";
     license = licenses.gpl2Plus;
     maintainers = [ maintainers.magnetophon ];
diff --git a/nixpkgs/pkgs/applications/audio/zrythm/default.nix b/nixpkgs/pkgs/applications/audio/zrythm/default.nix
index 0609438b0534..c3b6f37b4de8 100644
--- a/nixpkgs/pkgs/applications/audio/zrythm/default.nix
+++ b/nixpkgs/pkgs/applications/audio/zrythm/default.nix
@@ -1,35 +1,44 @@
 { stdenv
 , lib
 , fetchFromGitHub
+, fetchFromSourcehut
 , SDL2
 , alsa-lib
-, libaudec
-, bash
+, appstream
+, appstream-glib
 , bash-completion
+, boost
 , breeze-icons
 , carla
 , chromaprint
 , cmake
 , curl
+, dbus
 , dconf
-, libepoxy
+, faust2lv2
 , fftw
 , fftwFloat
 , flex
 , glib
+, graphviz
 , gtk4
 , gtksourceview5
 , guile
-, graphviz
 , help2man
-, json-glib
 , jq
+, json-glib
+, kissfft
+, libadwaita
+, libaudec
 , libbacktrace
 , libcyaml
+, libepoxy
 , libgtop
 , libjack2
+, libpanel
 , libpulseaudio
 , libsamplerate
+, libsass
 , libsndfile
 , libsoundio
 , libxml2
@@ -47,31 +56,48 @@
 , rtaudio
 , rtmidi
 , rubberband
+, sassc
 , serd
 , sord
+, sox
 , sratom
 , texi2html
+, vamp-plugin-sdk
 , wrapGAppsHook
 , xdg-utils
 , xxHash
-, vamp-plugin-sdk
+, zix
 , zstd
-, libadwaita
-, sassc
 }:
 
-stdenv.mkDerivation rec {
+let
+  # As of zrythm-1.0.0-beta.4.5.62, Zrythm needs clap
+  # https://github.com/falktx/carla/tree/main/source/includes/clap, which is
+  # only available on Carla unstable as of 2023-02-24.
+  carla-unstable = carla.overrideAttrs (oldAttrs: rec {
+    pname = "carla";
+    version = "unstable-2023-05-12";
+
+    src = fetchFromGitHub {
+      owner = "falkTX";
+      repo = pname;
+      rev = "0175570f1d41285f39efe0ee32234458e0ed941c";
+      hash = "sha256-yfVzZV8G4AUDM8+yS9finzobpOb1PUEPgBWFhEY4nFQ=";
+    };
+  });
+in stdenv.mkDerivation rec {
   pname = "zrythm";
-  version = "1.0.0-alpha.28.1.3";
+  version = "1.0.0-beta.4.9.1";
 
-  src = fetchFromGitHub {
-    owner = pname;
+  src = fetchFromSourcehut {
+    owner = "~alextee";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-ERE7I6E3+RmmpnZEtcJL/1v9a37IwFauVsbJvI9gsRQ=";
+    hash = "sha256-U3IUqNbHu20uyWfkTsLOOlUZjcUL4QdHilB3srSsebw=";
   };
 
   nativeBuildInputs = [
+    cmake
     help2man
     jq
     libaudec
@@ -82,36 +108,45 @@ stdenv.mkDerivation rec {
     pkg-config
     python3
     python3.pkgs.sphinx
+    sassc
     texi2html
     wrapGAppsHook
-    cmake
   ];
 
   buildInputs = [
     SDL2
     alsa-lib
+    appstream
+    appstream-glib
     bash-completion
-    carla
+    boost
+    breeze-icons
+    carla-unstable
     chromaprint
     curl
+    dbus
     dconf
-    libepoxy
+    faust2lv2
     fftw
     fftwFloat
     flex
-    breeze-icons
     glib
+    graphviz
     gtk4
     gtksourceview5
-    graphviz
     guile
     json-glib
+    kissfft
+    libadwaita
     libbacktrace
     libcyaml
+    libepoxy
     libgtop
     libjack2
+    libpanel
     libpulseaudio
     libsamplerate
+    libsass
     libsndfile
     libsoundio
     libyaml
@@ -125,34 +160,46 @@ stdenv.mkDerivation rec {
     rubberband
     serd
     sord
+    sox
     sratom
     vamp-plugin-sdk
     xdg-utils
     xxHash
+    zix
     zstd
-    libadwaita
-    sassc
   ];
 
+  # Zrythm uses meson to build, but requires cmake for dependency detection.
+  dontUseCmakeConfigure = true;
+
   mesonFlags = [
-    "-Drtmidi=enabled"
-    "-Drtaudio=enabled"
-    "-Dsdl=enabled"
+    "-Db_lto=false"
     "-Dcarla=enabled"
+    "-Dcarla_binaries_dir=${carla-unstable}/lib/carla"
+    "-Ddebug=true"
+    "-Dfftw3_threads_separate=false"
+    "-Dfftw3_threads_separate_type=library"
+    "-Dfftw3f_separate=false"
+    "-Dlsp_dsp=disabled"
     "-Dmanpage=true"
+    "-Drtaudio=enabled"
+    "-Drtmidi=enabled"
+    "-Dsdl=enabled"
     # "-Duser_manual=true" # needs sphinx-intl
-    "-Dlsp_dsp=disabled"
-    "-Db_lto=false"
-    "-Ddebug=true"
   ];
 
   NIX_LDFLAGS = ''
     -lfftw3_threads -lfftw3f_threads
   '';
 
+  GUILE_AUTO_COMPILE = 0;
+
   dontStrip = true;
 
   postPatch = ''
+    substituteInPlace meson.build \
+      --replace "'/usr/lib', '/usr/local/lib', '/opt/homebrew/lib'" "'${fftw}/lib'"
+
     chmod +x scripts/meson-post-install.sh
     patchShebangs ext/sh-manpage-completions/run.sh scripts/generic_guile_wrap.sh \
       scripts/meson-post-install.sh tools/check_have_unlimited_memlock.sh
@@ -161,13 +208,14 @@ stdenv.mkDerivation rec {
   preFixup = ''
     gappsWrapperArgs+=(
       --prefix GSETTINGS_SCHEMA_DIR : "$out/share/gsettings-schemas/${pname}-${version}/glib-2.0/schemas/"
-             )
+      --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${breeze-icons}/share"
+    )
   '';
 
   meta = with lib; {
     homepage = "https://www.zrythm.org";
-    description = "Highly automated and intuitive digital audio workstation";
-    maintainers = with maintainers; [ tshaynik magnetophon ];
+    description = "Automated and intuitive digital audio workstation";
+    maintainers = with maintainers; [ tshaynik magnetophon yuu ];
     platforms = platforms.linux;
     license = licenses.agpl3Plus;
   };
diff --git a/nixpkgs/pkgs/applications/audio/zynaddsubfx/default.nix b/nixpkgs/pkgs/applications/audio/zynaddsubfx/default.nix
index fae337c079f0..2c8ecfd199e0 100644
--- a/nixpkgs/pkgs/applications/audio/zynaddsubfx/default.nix
+++ b/nixpkgs/pkgs/applications/audio/zynaddsubfx/default.nix
@@ -95,7 +95,7 @@ in stdenv.mkDerivation rec {
     ++ lib.optional (guiModule == "fltk") "-DFLTK_SKIP_OPENGL=ON";
 
   doCheck = true;
-  checkInputs = [ cxxtest ruby ];
+  nativeCheckInputs = [ cxxtest ruby ];
 
   # TODO: Update cmake hook to make it simpler to selectively disable cmake tests: #113829
   checkPhase = let
diff --git a/nixpkgs/pkgs/applications/audio/zynaddsubfx/mruby-zest/default.nix b/nixpkgs/pkgs/applications/audio/zynaddsubfx/mruby-zest/default.nix
index 797b4624b966..f490e452b51c 100644
--- a/nixpkgs/pkgs/applications/audio/zynaddsubfx/mruby-zest/default.nix
+++ b/nixpkgs/pkgs/applications/audio/zynaddsubfx/mruby-zest/default.nix
@@ -41,7 +41,7 @@ stdenv.mkDerivation rec {
 
   # Force optimization to fix:
   # warning: #warning _FORTIFY_SOURCE requires compiling with optimization (-O)
-  NIX_CFLAGS_COMPILE = "-O3";
+  env.NIX_CFLAGS_COMPILE = "-O3";
 
   # Remove pre-built y.tab.c to generate with nixpkgs bison
   preBuild = ''