summary refs log tree commit diff
path: root/pkgs/misc
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2021-08-04 10:43:07 +0000
committerAlyssa Ross <hi@alyssa.is>2021-08-04 10:43:07 +0000
commit62614cbef7da005c1eda8c9400160f6bcd6546b8 (patch)
treec2630f69080637987b68acb1ee8676d2681fe304 /pkgs/misc
parentd9c82ed3044c72cecf01c6ea042489d30914577c (diff)
parente24069138dfec3ef94f211f1da005bb5395adc11 (diff)
downloadnixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar
nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.gz
nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.bz2
nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.lz
nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.xz
nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.zst
nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.zip
Merge branch 'nixpkgs-update' into master
Diffstat (limited to 'pkgs/misc')
-rw-r--r--pkgs/misc/acpilight/default.nix6
-rw-r--r--pkgs/misc/apulse/default.nix10
-rw-r--r--pkgs/misc/apulse/pressureaudio.nix10
-rw-r--r--pkgs/misc/arm-trusted-firmware/default.nix4
-rw-r--r--pkgs/misc/autotiling/default.nix14
-rw-r--r--pkgs/misc/barebox/default.nix96
-rw-r--r--pkgs/misc/base16-builder/node-packages-generated.nix335
-rw-r--r--pkgs/misc/base16-builder/node-packages.nix12
-rw-r--r--pkgs/misc/base16-builder/supplement.nix155
-rw-r--r--pkgs/misc/beep/default.nix30
-rw-r--r--pkgs/misc/brightnessctl/default.nix4
-rw-r--r--pkgs/misc/calaos/installer/default.nix10
-rw-r--r--pkgs/misc/cups/cups-pk-helper.nix6
-rw-r--r--pkgs/misc/cups/default.nix12
-rw-r--r--pkgs/misc/cups/drivers/brgenml1cupswrapper/default.nix8
-rw-r--r--pkgs/misc/cups/drivers/brgenml1lpr/default.nix10
-rw-r--r--pkgs/misc/cups/drivers/brlaser/default.nix4
-rw-r--r--pkgs/misc/cups/drivers/brother/mfcl3770cdw/default.nix12
-rw-r--r--pkgs/misc/cups/drivers/canon/default.nix7
-rw-r--r--pkgs/misc/cups/drivers/carps-cups/default.nix44
-rw-r--r--pkgs/misc/cups/drivers/cnijfilter2/default.nix23
-rw-r--r--pkgs/misc/cups/drivers/cnijfilter_4_00/default.nix3
-rw-r--r--pkgs/misc/cups/drivers/cnijfilter_4_00/patches/cnijfilter-4.00-7-sysctl.patch10
-rw-r--r--pkgs/misc/cups/drivers/cups-bjnp/default.nix4
-rw-r--r--pkgs/misc/cups/drivers/cups-drv-rastertosag-gdi/default.nix53
-rw-r--r--pkgs/misc/cups/drivers/dymo/default.nix2
-rw-r--r--pkgs/misc/cups/drivers/estudio/default.nix4
-rw-r--r--pkgs/misc/cups/drivers/fxlinuxprint/default.nix2
-rw-r--r--pkgs/misc/cups/drivers/googlecloudprint/default.nix64
-rw-r--r--pkgs/misc/cups/drivers/hl1110/default.nix12
-rw-r--r--pkgs/misc/cups/drivers/hl1210w/default.nix12
-rw-r--r--pkgs/misc/cups/drivers/hl3140cw/default.nix12
-rw-r--r--pkgs/misc/cups/drivers/hll2340dw/default.nix10
-rw-r--r--pkgs/misc/cups/drivers/hll2390dw-cups/default.nix8
-rw-r--r--pkgs/misc/cups/drivers/kyocera-ecosys-m552x-p502x/default.nix29
-rw-r--r--pkgs/misc/cups/drivers/kyodialog3/default.nix2
-rw-r--r--pkgs/misc/cups/drivers/mfc9140cdncupswrapper/default.nix68
-rw-r--r--pkgs/misc/cups/drivers/mfc9140cdnlpr/default.nix73
-rw-r--r--pkgs/misc/cups/drivers/mfcj470dwcupswrapper/default.nix8
-rw-r--r--pkgs/misc/cups/drivers/mfcj470dwlpr/default.nix12
-rw-r--r--pkgs/misc/cups/drivers/mfcj6510dwcupswrapper/default.nix4
-rw-r--r--pkgs/misc/cups/drivers/mfcj6510dwlpr/default.nix10
-rw-r--r--pkgs/misc/cups/drivers/mfcl2700dncupswrapper/default.nix16
-rw-r--r--pkgs/misc/cups/drivers/mfcl2700dnlpr/default.nix8
-rw-r--r--pkgs/misc/cups/drivers/mfcl2720dwcupswrapper/default.nix8
-rw-r--r--pkgs/misc/cups/drivers/mfcl2720dwlpr/default.nix8
-rw-r--r--pkgs/misc/cups/drivers/mfcl2740dwcupswrapper/default.nix8
-rw-r--r--pkgs/misc/cups/drivers/mfcl2740dwlpr/default.nix8
-rw-r--r--pkgs/misc/cups/drivers/mfcl8690cdwcupswrapper/default.nix10
-rw-r--r--pkgs/misc/cups/drivers/mfcl8690cdwlpr/default.nix8
-rw-r--r--pkgs/misc/cups/drivers/samsung/1.00.36/default.nix8
-rw-r--r--pkgs/misc/cups/drivers/samsung/1.00.37.nix8
-rw-r--r--pkgs/misc/cups/drivers/samsung/4.00.39/default.nix6
-rw-r--r--pkgs/misc/cups/drivers/samsung/4.01.17.nix6
-rw-r--r--pkgs/misc/cups/drivers/splix/default.nix4
-rw-r--r--pkgs/misc/cups/drivers/zj-58/default.nix4
-rw-r--r--pkgs/misc/cups/filters.nix10
-rw-r--r--pkgs/misc/documentation-highlighter/default.nix10
-rw-r--r--pkgs/misc/doge/default.nix4
-rw-r--r--pkgs/misc/drivers/epkowa/default.nix188
-rw-r--r--pkgs/misc/drivers/epson-201106w/default.nix6
-rw-r--r--pkgs/misc/drivers/epson-alc1100/default.nix12
-rw-r--r--pkgs/misc/drivers/epson-escpr/default.nix6
-rw-r--r--pkgs/misc/drivers/epson-escpr2/default.nix23
-rw-r--r--pkgs/misc/drivers/epson_201207w/default.nix14
-rw-r--r--pkgs/misc/drivers/foo2zjs/default.nix13
-rw-r--r--pkgs/misc/drivers/foomatic-filters/default.nix10
-rw-r--r--pkgs/misc/drivers/gutenprint/bin.nix4
-rw-r--r--pkgs/misc/drivers/gutenprint/default.nix10
-rw-r--r--pkgs/misc/drivers/hplip/3.16.11.nix16
-rw-r--r--pkgs/misc/drivers/hplip/3.18.5.nix229
-rw-r--r--pkgs/misc/drivers/hplip/default.nix119
-rw-r--r--pkgs/misc/drivers/hplip/hplip-3.20.11-nixos-cups-ppd-search-path.patch24
-rw-r--r--pkgs/misc/drivers/infnoise/default.nix43
-rw-r--r--pkgs/misc/drivers/infnoise/makefile.patch14
-rw-r--r--pkgs/misc/drivers/m33-linux/default.nix4
-rw-r--r--pkgs/misc/drivers/moltengamepad/default.nix4
-rw-r--r--pkgs/misc/drivers/pentablet-driver/default.nix4
-rw-r--r--pkgs/misc/drivers/postscript-lexmark/default.nix4
-rw-r--r--pkgs/misc/drivers/sc-controller/default.nix6
-rw-r--r--pkgs/misc/drivers/spacenavd/configure-cfgfile-path.patch63
-rw-r--r--pkgs/misc/drivers/spacenavd/configure-pidfile-path.patch82
-rw-r--r--pkgs/misc/drivers/spacenavd/configure-socket-path.patch118
-rw-r--r--pkgs/misc/drivers/spacenavd/default.nix46
-rw-r--r--pkgs/misc/drivers/steamcontroller/default.nix10
-rw-r--r--pkgs/misc/drivers/sundtek/default.nix4
-rw-r--r--pkgs/misc/drivers/utsushi/default.nix50
-rw-r--r--pkgs/misc/drivers/xboxdrv/default.nix6
-rw-r--r--pkgs/misc/drivers/xow/default.nix14
-rw-r--r--pkgs/misc/drivers/xwiimote/default.nix8
-rw-r--r--pkgs/misc/dumb/default.nix6
-rw-r--r--pkgs/misc/emulators/atari++/default.nix10
-rw-r--r--pkgs/misc/emulators/atari800/default.nix10
-rw-r--r--pkgs/misc/emulators/attract-mode/default.nix10
-rw-r--r--pkgs/misc/emulators/blastem/default.nix11
-rw-r--r--pkgs/misc/emulators/bsnes-hd/default.nix55
-rw-r--r--pkgs/misc/emulators/bsnes-hd/macos-copy-app-to-prefix.patch18
-rw-r--r--pkgs/misc/emulators/bsnes-hd/macos-replace-sips-with-png2icns.patch13
-rw-r--r--pkgs/misc/emulators/bsod/default.nix8
-rw-r--r--pkgs/misc/emulators/caprice32/default.nix15
-rw-r--r--pkgs/misc/emulators/caprice32/string.patch12
-rw-r--r--pkgs/misc/emulators/ccemux/default.nix6
-rw-r--r--pkgs/misc/emulators/cdemu/analyzer.nix4
-rw-r--r--pkgs/misc/emulators/cdemu/base.nix8
-rw-r--r--pkgs/misc/emulators/cdemu/gui.nix4
-rw-r--r--pkgs/misc/emulators/cdemu/libmirage.nix12
-rw-r--r--pkgs/misc/emulators/cdemu/vhba.nix6
-rw-r--r--pkgs/misc/emulators/cen64/default.nix30
-rw-r--r--pkgs/misc/emulators/citra/default.nix13
-rw-r--r--pkgs/misc/emulators/commanderx16/emulator.nix42
-rw-r--r--pkgs/misc/emulators/commanderx16/rom.nix46
-rw-r--r--pkgs/misc/emulators/commanderx16/run.nix39
-rw-r--r--pkgs/misc/emulators/craftos-pc/default.nix43
-rw-r--r--pkgs/misc/emulators/darcnes/default.nix4
-rw-r--r--pkgs/misc/emulators/desmume/default.nix10
-rw-r--r--pkgs/misc/emulators/dgen-sdl/default.nix70
-rw-r--r--pkgs/misc/emulators/dlx/default.nix34
-rw-r--r--pkgs/misc/emulators/dolphin-emu/default.nix14
-rw-r--r--pkgs/misc/emulators/dolphin-emu/master.nix21
-rw-r--r--pkgs/misc/emulators/duckstation/default.nix34
-rw-r--r--pkgs/misc/emulators/emu2/default.nix4
-rw-r--r--pkgs/misc/emulators/emulationstation/default.nix16
-rw-r--r--pkgs/misc/emulators/epsxe/default.nix6
-rw-r--r--pkgs/misc/emulators/fakenes/default.nix6
-rw-r--r--pkgs/misc/emulators/fceux/default.nix10
-rw-r--r--pkgs/misc/emulators/firebird-emu/default.nix8
-rw-r--r--pkgs/misc/emulators/fs-uae-launcher/default.nix28
-rw-r--r--pkgs/misc/emulators/fs-uae/default.nix8
-rw-r--r--pkgs/misc/emulators/fuse-emulator/default.nix4
-rw-r--r--pkgs/misc/emulators/gens-gs/default.nix6
-rw-r--r--pkgs/misc/emulators/gxemul/0001-fix-attributes.patch26
-rw-r--r--pkgs/misc/emulators/gxemul/default.nix44
-rw-r--r--pkgs/misc/emulators/hatari/default.nix18
-rw-r--r--pkgs/misc/emulators/higan/default.nix14
-rw-r--r--pkgs/misc/emulators/kega-fusion/default.nix6
-rw-r--r--pkgs/misc/emulators/lambda-delta/default.nix26
-rw-r--r--pkgs/misc/emulators/libdsk/default.nix12
-rw-r--r--pkgs/misc/emulators/maiko/default.nix26
-rw-r--r--pkgs/misc/emulators/mame/default.nix22
-rw-r--r--pkgs/misc/emulators/mednafen/default.nix14
-rw-r--r--pkgs/misc/emulators/mednafen/server.nix6
-rw-r--r--pkgs/misc/emulators/mednaffe/default.nix35
-rw-r--r--pkgs/misc/emulators/melonDS/default.nix48
-rw-r--r--pkgs/misc/emulators/mgba/default.nix72
-rw-r--r--pkgs/misc/emulators/mupen64plus/default.nix6
-rw-r--r--pkgs/misc/emulators/nestopia/default.nix22
-rw-r--r--pkgs/misc/emulators/np2kai/default.nix2
-rw-r--r--pkgs/misc/emulators/oberon-risc-emu/default.nix27
-rw-r--r--pkgs/misc/emulators/openmsx/custom-nix.mk (renamed from pkgs/misc/emulators/openmsx/custom-nixos.mk)0
-rw-r--r--pkgs/misc/emulators/openmsx/default.nix26
-rw-r--r--pkgs/misc/emulators/pcem/default.nix29
-rw-r--r--pkgs/misc/emulators/pcsx2/default.nix77
-rw-r--r--pkgs/misc/emulators/pcsxr/default.nix7
-rw-r--r--pkgs/misc/emulators/ppsspp/default.nix43
-rw-r--r--pkgs/misc/emulators/proton-caller/default.nix23
-rw-r--r--pkgs/misc/emulators/punes/default.nix63
-rw-r--r--pkgs/misc/emulators/py65/default.nix25
-rw-r--r--pkgs/misc/emulators/qmc2/default.nix16
-rw-r--r--pkgs/misc/emulators/reicast/default.nix52
-rw-r--r--pkgs/misc/emulators/resim/default.nix4
-rw-r--r--pkgs/misc/emulators/retroarch/cores.nix100
-rw-r--r--pkgs/misc/emulators/retroarch/default.nix16
-rw-r--r--pkgs/misc/emulators/retroarch/kodi-advanced-launchers.nix8
-rw-r--r--pkgs/misc/emulators/retroarch/wrapper.nix2
-rw-r--r--pkgs/misc/emulators/retrofe/default.nix6
-rw-r--r--pkgs/misc/emulators/rpcs3/default.nix42
-rw-r--r--pkgs/misc/emulators/ruffle/default.nix60
-rw-r--r--pkgs/misc/emulators/ryujinx/default.nix45
-rw-r--r--pkgs/misc/emulators/ryujinx/deps.nix719
-rw-r--r--pkgs/misc/emulators/ryujinx/log.patch20
-rwxr-xr-xpkgs/misc/emulators/ryujinx/updater.sh (renamed from pkgs/misc/emulators/ryujinx/fetch-deps.sh)30
-rw-r--r--pkgs/misc/emulators/sameboy/default.nix48
-rw-r--r--pkgs/misc/emulators/simh/default.nix62
-rw-r--r--pkgs/misc/emulators/simplenes/default.nix4
-rw-r--r--pkgs/misc/emulators/snes9x-gtk/default.nix12
-rw-r--r--pkgs/misc/emulators/stella/default.nix43
-rw-r--r--pkgs/misc/emulators/termtekst/default.nix2
-rw-r--r--pkgs/misc/emulators/tilem/default.nix30
-rw-r--r--pkgs/misc/emulators/uae/default.nix12
-rw-r--r--pkgs/misc/emulators/vbam/default.nix20
-rw-r--r--pkgs/misc/emulators/vice/default.nix14
-rw-r--r--pkgs/misc/emulators/wine/base.nix51
-rw-r--r--pkgs/misc/emulators/wine/cert-path.patch41
-rw-r--r--pkgs/misc/emulators/wine/default.nix3
-rw-r--r--pkgs/misc/emulators/wine/packages.nix11
-rw-r--r--pkgs/misc/emulators/wine/sources.nix46
-rw-r--r--pkgs/misc/emulators/wine/staging.nix10
-rw-r--r--pkgs/misc/emulators/wine/util.nix2
-rw-r--r--pkgs/misc/emulators/wine/vkd3d.nix8
-rw-r--r--pkgs/misc/emulators/wine/winetricks.nix11
-rw-r--r--pkgs/misc/emulators/wxmupen64plus/default.nix4
-rw-r--r--pkgs/misc/emulators/xcpc/default.nix8
-rw-r--r--pkgs/misc/emulators/yabause/default.nix6
-rw-r--r--pkgs/misc/emulators/yapesdl/default.nix43
-rw-r--r--pkgs/misc/emulators/yuzu/base.nix86
-rw-r--r--pkgs/misc/emulators/yuzu/default.nix28
-rw-r--r--pkgs/misc/emulators/zsnes/default.nix6
-rw-r--r--pkgs/misc/flashfocus/default.nix26
-rw-r--r--pkgs/misc/frescobaldi/default.nix16
-rw-r--r--pkgs/misc/ghostscript/0001-Bug-702364-Fix-missing-echogs-dependencies.patch835
-rw-r--r--pkgs/misc/ghostscript/default.nix44
-rw-r--r--pkgs/misc/gnash/default.nix10
-rw-r--r--pkgs/misc/gnuk/generic.nix8
-rw-r--r--pkgs/misc/hdt/default.nix8
-rw-r--r--pkgs/misc/jackaudio/default.nix19
-rw-r--r--pkgs/misc/jackaudio/jack1.nix14
-rw-r--r--pkgs/misc/jitsi-meet-prosody/default.nix36
-rw-r--r--pkgs/misc/lguf-brightness/default.nix4
-rw-r--r--pkgs/misc/libcardiacarrest/default.nix6
-rw-r--r--pkgs/misc/lightspark/default.nix22
-rw-r--r--pkgs/misc/lilypond/default.nix12
-rw-r--r--pkgs/misc/lilypond/findlib.patch24
-rw-r--r--pkgs/misc/lilypond/fonts.nix4
-rw-r--r--pkgs/misc/lilypond/unstable.nix21
-rw-r--r--pkgs/misc/lilypond/with-fonts.nix7
-rw-r--r--pkgs/misc/logging/beats/6.x.nix17
-rw-r--r--pkgs/misc/logging/beats/7.x.nix17
-rw-r--r--pkgs/misc/long-shebang/default.nix6
-rw-r--r--pkgs/misc/mnemonicode/default.nix2
-rw-r--r--pkgs/misc/mxt-app/default.nix10
-rw-r--r--pkgs/misc/my-env/default.nix10
-rw-r--r--pkgs/misc/openrussian-cli/default.nix61
-rw-r--r--pkgs/misc/ptouch-print/default.nix34
-rw-r--r--pkgs/misc/pylode/default.nix37
-rw-r--r--pkgs/misc/riscv-pk/default.nix25
-rw-r--r--pkgs/misc/rkdeveloptool/default.nix15
-rw-r--r--pkgs/misc/sailsd/default.nix6
-rw-r--r--pkgs/misc/scimark/default.nix35
-rw-r--r--pkgs/misc/scrcpy/default.nix10
-rw-r--r--pkgs/misc/scream-receivers/default.nix56
-rw-r--r--pkgs/misc/screensavers/alock/default.nix6
-rw-r--r--pkgs/misc/screensavers/betterlockscreen/default.nix12
-rw-r--r--pkgs/misc/screensavers/betterlockscreen/replace-i3lock.patch6
-rw-r--r--pkgs/misc/screensavers/electricsheep/default.nix20
-rw-r--r--pkgs/misc/screensavers/i3lock-pixeled/default.nix6
-rw-r--r--pkgs/misc/screensavers/light-locker/default.nix8
-rw-r--r--pkgs/misc/screensavers/multilockscreen/default.nix47
-rw-r--r--pkgs/misc/screensavers/physlock/default.nix4
-rw-r--r--pkgs/misc/screensavers/pipes/default.nix8
-rw-r--r--pkgs/misc/screensavers/rss-glx/default.nix12
-rw-r--r--pkgs/misc/screensavers/slock/default.nix4
-rw-r--r--pkgs/misc/screensavers/vlock/default.nix6
-rw-r--r--pkgs/misc/screensavers/xautolock/default.nix6
-rw-r--r--pkgs/misc/screensavers/xlockmore/default.nix9
-rw-r--r--pkgs/misc/screensavers/xscreensaver/default.nix80
-rw-r--r--pkgs/misc/screensavers/xss-lock/default.nix9
-rw-r--r--pkgs/misc/screensavers/xssproxy/default.nix10
-rw-r--r--pkgs/misc/screensavers/xtrlock-pam/default.nix8
-rw-r--r--pkgs/misc/seafile-shared/default.nix29
-rw-r--r--pkgs/misc/sndio/default.nix20
-rw-r--r--pkgs/misc/solfege/default.nix11
-rw-r--r--pkgs/misc/solfege/texinfo.patch20
-rw-r--r--pkgs/misc/sound-of-sorting/default.nix8
-rw-r--r--pkgs/misc/source-and-tags/default.nix8
-rw-r--r--pkgs/misc/stabber/default.nix6
-rw-r--r--pkgs/misc/t-rec/default.nix37
-rw-r--r--pkgs/misc/talkfilters/default.nix8
-rw-r--r--pkgs/misc/tmux-plugins/default.nix330
-rw-r--r--pkgs/misc/tpm2-pkcs11/default.nix10
-rw-r--r--pkgs/misc/uboot/0001-configs-rpi-allow-for-bigger-kernels.patch45
-rw-r--r--pkgs/misc/uboot/default.nix81
-rw-r--r--pkgs/misc/uboot/nanonote.nix59
-rwxr-xr-xpkgs/misc/uq/default.nix2
-rw-r--r--pkgs/misc/urbit/default.nix8
-rw-r--r--pkgs/misc/vim-plugins/aliases.nix12
-rw-r--r--pkgs/misc/vim-plugins/build-vim-plugin.nix4
-rw-r--r--pkgs/misc/vim-plugins/default.nix17
-rw-r--r--pkgs/misc/vim-plugins/deprecated.json6
-rw-r--r--pkgs/misc/vim-plugins/generated.nix5102
-rw-r--r--pkgs/misc/vim-plugins/overrides.nix1214
-rw-r--r--pkgs/misc/vim-plugins/patches/lens-vim/remove_duplicate_g_lens_animate.patch12
-rwxr-xr-xpkgs/misc/vim-plugins/update.py510
-rw-r--r--pkgs/misc/vim-plugins/vim-plugin-names303
-rw-r--r--pkgs/misc/vim-plugins/vim-utils.nix180
-rw-r--r--pkgs/misc/vscode-extensions/cpptools/default.nix8
-rw-r--r--pkgs/misc/vscode-extensions/default.nix1691
-rw-r--r--pkgs/misc/vscode-extensions/ms-dotnettools-csharp/default.nix142
-rw-r--r--pkgs/misc/vscode-extensions/ms-dotnettools-csharp/rt-deps-bin-srcs.json37
-rwxr-xr-xpkgs/misc/vscode-extensions/ms-dotnettools-csharp/update-bin-srcs25
-rwxr-xr-xpkgs/misc/vscode-extensions/ms-dotnettools-csharp/update-bin-srcs-lib.sh154
-rw-r--r--pkgs/misc/vscode-extensions/ms-vsliveshare-vsliveshare/default.nix134
-rw-r--r--pkgs/misc/vscode-extensions/ms-vsliveshare-vsliveshare/noop-syslog.c1
-rw-r--r--pkgs/misc/vscode-extensions/python/default.nix4
-rw-r--r--pkgs/misc/vscode-extensions/python/extract-nuget.nix2
-rw-r--r--pkgs/misc/vscode-extensions/remote-ssh/default.nix18
-rw-r--r--pkgs/misc/vscode-extensions/rust-analyzer/build-deps/package.json35
-rw-r--r--pkgs/misc/vscode-extensions/rust-analyzer/default.nix2
-rw-r--r--pkgs/misc/vscode-extensions/terraform/default.nix25
-rw-r--r--pkgs/misc/vscode-extensions/terraform/fix-terraform-ls.patch43
-rw-r--r--pkgs/misc/vscode-extensions/updateSettings.nix6
-rwxr-xr-xpkgs/misc/vscode-extensions/update_installed_exts.sh10
-rw-r--r--pkgs/misc/vscode-extensions/vscode-lldb/build-deps/package.json23
-rw-r--r--pkgs/misc/vscode-extensions/vscode-lldb/cmake-build-extension-only.patch36
-rw-r--r--pkgs/misc/vscode-extensions/vscode-lldb/default.nix104
-rw-r--r--pkgs/misc/vscode-extensions/vscode-lldb/lldb.nix23
-rw-r--r--pkgs/misc/vscode-extensions/vscode-lldb/reset-cargo-config.patch19
-rwxr-xr-xpkgs/misc/vscode-extensions/vscode-lldb/update.sh38
-rw-r--r--pkgs/misc/vscode-extensions/vscodeEnv.nix14
-rw-r--r--pkgs/misc/vscode-extensions/vscodeEnvTest.nix3
-rw-r--r--pkgs/misc/vscode-extensions/vscodeExts2nix.nix14
-rw-r--r--pkgs/misc/vscode-extensions/vscodeWithConfiguration.nix38
-rw-r--r--pkgs/misc/vscode-extensions/wakatime/default.nix12
-rw-r--r--pkgs/misc/xosd/default.nix4
303 files changed, 11939 insertions, 6142 deletions
diff --git a/pkgs/misc/acpilight/default.nix b/pkgs/misc/acpilight/default.nix
index 1975e2d3790..d6fead938a4 100644
--- a/pkgs/misc/acpilight/default.nix
+++ b/pkgs/misc/acpilight/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchgit, python3, coreutils }:
+{ lib, stdenv, fetchgit, python3, coreutils }:
 
 stdenv.mkDerivation rec {
   pname = "acpilight";
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
   };
 
   pyenv = python3.withPackages (pythonPackages: with pythonPackages; [
-    ConfigArgParse
+    configargparse
   ]);
 
   postConfigure = ''
@@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
 
   makeFlags = [ "DESTDIR=$(out) prefix=" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://gitlab.com/wavexx/acpilight";
     description = "ACPI backlight control";
     license = licenses.gpl3;
diff --git a/pkgs/misc/apulse/default.nix b/pkgs/misc/apulse/default.nix
index 33ba0bf8676..95beb8bcdf3 100644
--- a/pkgs/misc/apulse/default.nix
+++ b/pkgs/misc/apulse/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, alsaLib, cmake, pkgconfig, glib
+{ lib, stdenv, fetchFromGitHub, alsa-lib, cmake, pkg-config, glib
 , tracingSupport ? true, logToStderr ? true }:
 
 let oz = x: if x then "1" else "0"; in
@@ -14,18 +14,16 @@ stdenv.mkDerivation rec {
     sha256 = "1p6fh6ah5v3qz7dxhcsixx38bxg44ypbim4m03bxk3ls5i9xslmn";
   };
 
-  enableParallelBuilding = true;
+  nativeBuildInputs = [ cmake pkg-config ];
 
-  nativeBuildInputs = [ cmake pkgconfig ];
-
-  buildInputs = [ alsaLib glib ];
+  buildInputs = [ alsa-lib glib ];
 
   cmakeFlags = [
     "-DWITH_TRACE=${oz tracingSupport}"
     "-DLOG_TO_STDERR=${oz logToStderr}"
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "PulseAudio emulation for ALSA";
     homepage = "https://github.com/i-rinat/apulse";
     license = licenses.mit;
diff --git a/pkgs/misc/apulse/pressureaudio.nix b/pkgs/misc/apulse/pressureaudio.nix
index 710712fe508..def25474147 100644
--- a/pkgs/misc/apulse/pressureaudio.nix
+++ b/pkgs/misc/apulse/pressureaudio.nix
@@ -1,15 +1,15 @@
-{ stdenv, apulse, libpulseaudio, pkgconfig, intltool, autoreconfHook }:
+{ stdenv, apulse, libpulseaudio, pkg-config, intltool, autoreconfHook }:
 
 stdenv.mkDerivation {
-  name = "libpressureaudio-${apulse.version}";
+  pname = "libpressureaudio";
+  version = apulse.version;
 
   src = libpulseaudio.src;
 
-  nativeBuildInputs = [ pkgconfig intltool autoreconfHook ];
+  nativeBuildInputs = [ pkg-config intltool autoreconfHook ];
 
   dontConfigure = true;
-
-  buildPhase = ":";
+  dontBuild = true;
 
   installPhase = ''
     echo "Copying libraries from apulse."
diff --git a/pkgs/misc/arm-trusted-firmware/default.nix b/pkgs/misc/arm-trusted-firmware/default.nix
index 596f5e90e34..c3be2213c33 100644
--- a/pkgs/misc/arm-trusted-firmware/default.nix
+++ b/pkgs/misc/arm-trusted-firmware/default.nix
@@ -6,7 +6,7 @@ let
             , platform ? null
             , extraMakeFlags ? []
             , extraMeta ? {}
-            , version ? "2.3"
+            , version ? "2.5"
             , ... } @ args:
            stdenv.mkDerivation ({
 
@@ -17,7 +17,7 @@ let
       owner = "ARM-software";
       repo = "arm-trusted-firmware";
       rev = "v${version}";
-      sha256 = "113mcf1hwwl0i90cqh08lywxs1bfbg0nwqibay9wlkmx1a5v0bnj";
+      sha256 = "0w3blkqgmyb5bahlp04hmh8abrflbzy0qg83kmj1x9nv4mw66f3b";
     };
 
     depsBuildBuild = [ buildPackages.stdenv.cc ];
diff --git a/pkgs/misc/autotiling/default.nix b/pkgs/misc/autotiling/default.nix
index b104f359363..56e607c9d60 100644
--- a/pkgs/misc/autotiling/default.nix
+++ b/pkgs/misc/autotiling/default.nix
@@ -1,12 +1,14 @@
-{ lib, buildPythonApplication, fetchPypi, i3ipc, importlib-metadata }:
+{ lib, buildPythonApplication, fetchFromGitHub, i3ipc, importlib-metadata }:
 
 buildPythonApplication rec {
   pname = "autotiling";
-  version = "1.1";
+  version = "1.5";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0hwvy9bxwv9fakqqiyrkmpckxgm0z85c240p84ibdhja9sm086v0";
+  src = fetchFromGitHub {
+    owner = "nwg-piotr";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0ih8yd1gankjxn88gd88vxs6f1cniyi04z25jz4nsgqi9snz65v4";
   };
 
   propagatedBuildInputs = [ i3ipc importlib-metadata ];
@@ -16,7 +18,7 @@ buildPythonApplication rec {
     homepage = "https://github.com/nwg-piotr/autotiling";
     description = "Script for sway and i3 to automatically switch the horizontal / vertical window split orientation";
     license = licenses.gpl3Plus;
-    platforms= platforms.linux;
+    platforms = platforms.linux;
     maintainers = with maintainers; [ artturin ];
   };
 }
diff --git a/pkgs/misc/barebox/default.nix b/pkgs/misc/barebox/default.nix
new file mode 100644
index 00000000000..cb77a607e01
--- /dev/null
+++ b/pkgs/misc/barebox/default.nix
@@ -0,0 +1,96 @@
+{ stdenv
+, lib
+, fetchurl
+, bison
+, dtc
+, flex
+, libusb1
+, lzop
+, openssl
+, pkg-config
+, buildPackages
+}:
+
+let
+  buildBarebox = {
+    filesToInstall
+  , installDir ? "$out"
+  , defconfig
+  , extraMeta ? {}
+  , ... } @ args: stdenv.mkDerivation rec {
+    pname = "barebox-${defconfig}";
+
+    version = "2020.12.0";
+
+    src = fetchurl {
+      url = "https://www.barebox.org/download/barebox-${version}.tar.bz2";
+      sha256 = "06vsd95ihaa2nywpqy6k0c7xwk2pzws4yvbp328yd2pfiigachrv";
+    };
+
+    postPatch = ''
+      patchShebangs scripts
+    '';
+
+    nativeBuildInputs = [
+      bison
+      dtc
+      flex
+      openssl
+      libusb1
+      lzop
+      pkg-config
+    ];
+    depsBuildBuild = [ buildPackages.stdenv.cc ];
+
+    hardeningDisable = [ "all" ];
+
+    makeFlags = [
+      "DTC=dtc"
+      "CROSS_COMPILE=${stdenv.cc.targetPrefix}"
+    ];
+
+    configurePhase = ''
+      runHook preConfigure
+
+      make ${defconfig}
+
+      runHook postConfigure
+    '';
+
+    installPhase = ''
+      runHook preInstall
+
+      mkdir -p ${installDir}
+      cp ${lib.concatStringsSep " " filesToInstall} ${installDir}
+
+      runHook postInstall
+    '';
+
+    enableParallelBuilding = true;
+
+    dontStrip = true;
+
+    meta = with lib; {
+      homepage = "https://www.barebox.org";
+      description = "The Swiss Army Knive for bare metal";
+      license = licenses.gpl2;
+      maintainers = with maintainers; [ emantor ];
+    } // extraMeta;
+  } // removeAttrs args [ "extraMeta" ];
+
+in {
+  inherit buildBarebox;
+
+  bareboxTools = buildBarebox {
+    defconfig = "hosttools_defconfig";
+    installDir = "$out/bin";
+    extraMeta.platforms = lib.platforms.linux;
+    filesToInstall = [
+      "scripts/bareboximd"
+      "scripts/imx/imx-usb-loader"
+      "scripts/omap4_usbboot"
+      "scripts/omap3-usb-loader"
+      "scripts/kwboot"
+    ];
+  };
+}
diff --git a/pkgs/misc/base16-builder/node-packages-generated.nix b/pkgs/misc/base16-builder/node-packages-generated.nix
index 426b6229e1c..3c03a5f0c08 100644
--- a/pkgs/misc/base16-builder/node-packages-generated.nix
+++ b/pkgs/misc/base16-builder/node-packages-generated.nix
@@ -1,6 +1,6 @@
-# This file has been generated by node2nix 1.8.0. Do not edit!
+# This file has been generated by node2nix 1.9.0. Do not edit!
 
-{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+{nodeEnv, fetchurl, fetchgit, nix-gitignore, stdenv, lib, globalBuildInputs ? []}:
 
 let
   sources = {
@@ -10,7 +10,7 @@ let
       version = "1.1.1";
       src = fetchurl {
         url = "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz";
-        sha512 = "38s4f3id97wsb0rg9nm9zvxyq0nvwrmrpa5dzvrkp36mf5ibs98b4z6lvsbrwzzs0sbcank6c7gpp06vcwp9acfhp41rzlhi3ybsxwy";
+        sha512 = "nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==";
       };
     };
     "ansi-regex-2.1.1" = {
@@ -46,7 +46,7 @@ let
       version = "1.2.0";
       src = fetchurl {
         url = "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz";
-        sha512 = "13mgnbmdhdq0qncijvpip1l39q1a8labcvj3hc3n1yl2zch106mdkn7p7bd5knvmfkkn1js9nd47nzyjk1himbm8ry8i8gd6mk7mlk3";
+        sha512 = "Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==";
       };
     };
     "are-we-there-yet-1.1.5" = {
@@ -55,7 +55,7 @@ let
       version = "1.1.5";
       src = fetchurl {
         url = "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz";
-        sha512 = "3mizm1yfxynlhaavbimv7n9qljrbhni22v4fch6zr89x6ps0gpjcxm5yfvv05n8vc3r17hmglyswgq9w0s598xv70nnyw358q11s5p6";
+        sha512 = "5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==";
       };
     };
     "argparse-1.0.10" = {
@@ -64,7 +64,7 @@ let
       version = "1.0.10";
       src = fetchurl {
         url = "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz";
-        sha512 = "17fhywmdjcp8g0ys089i5xg26yajkkg9zg8hyry3fghz75b2pq5vdx997dk5p2sc15r9nsj8rmf4f27g81hi92kzj5q86sdmg5ni553";
+        sha512 = "o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==";
       };
     };
     "array-find-index-1.0.2" = {
@@ -100,7 +100,7 @@ let
       version = "1.1.11";
       src = fetchurl {
         url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz";
-        sha512 = "248cnpbbf0p32h53rd3g8wzpgrkaj4p078ra1g6l16f82i6bzkvmhwqan5rk88apbll9ly1476kngd7f7z27i3b3zxpbb3064f8yaw8";
+        sha512 = "iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==";
       };
     };
     "bulk-replace-0.0.1" = {
@@ -136,7 +136,7 @@ let
       version = "1.0.1";
       src = fetchurl {
         url = "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz";
-        sha512 = "2mv8dgq8fr86zs5mam6bkp0j241lpb5rbwpq8zc5gkj7f8zir1cd71m0yyy8zy46hvf86b9k7pbhvkz08ii4mhxh14xshkrgik0p14r";
+        sha512 = "mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==";
       };
     };
     "chalk-1.1.3" = {
@@ -154,7 +154,7 @@ let
       version = "1.1.4";
       src = fetchurl {
         url = "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz";
-        sha512 = "1b03acmav1awkygrda5h64pn8msd6wda119q553hik728i1j72bfqyq7yzn1x7nmw28hvg9mcyh7krsj8vwsq3karnn55mj6smip7cc";
+        sha512 = "jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==";
       };
     };
     "code-point-at-1.1.0" = {
@@ -229,13 +229,13 @@ let
         sha1 = "988df33feab191ef799a61369dd76c17adf957ea";
       };
     };
-    "debug-3.2.6" = {
+    "debug-3.2.7" = {
       name = "debug";
       packageName = "debug";
-      version = "3.2.6";
+      version = "3.2.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz";
-        sha512 = "1cyv14044rfh792n1hhsa44kk8dk95zk14w96i49gwq6g9wi6h9vn90xaragfy7rvggqvj178l5f16c78g47xgrwhjx3bp7zs6pxscr";
+        url = "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz";
+        sha512 = "CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==";
       };
     };
     "decamelize-1.2.0" = {
@@ -253,7 +253,7 @@ let
       version = "0.6.0";
       src = fetchurl {
         url = "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz";
-        sha512 = "0wc0sqg1aqx864bxf8xa4j8ncrc8rcvmiaj1sp3x1np2i8hdjybzjfd0w9gbf1yasmwycwzzg1mz6smr3q42hhv4pjx2qcgwqhg3q9c";
+        sha512 = "LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==";
       };
     };
     "delegates-1.0.0" = {
@@ -298,7 +298,7 @@ let
       version = "2.7.4";
       src = fetchurl {
         url = "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz";
-        sha512 = "2ad39acbba96hqbgf714pacri515xjn8jd43bkfb1wwp04vflpjj0qhnnmsq074g7d1kycyj1bmf620s43qb3x74hrfb4ky3v5axygf";
+        sha512 = "7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==";
       };
     };
     "error-ex-1.3.2" = {
@@ -307,7 +307,7 @@ let
       version = "1.3.2";
       src = fetchurl {
         url = "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz";
-        sha512 = "3igrl2amb9mpa9d2z6qghz3ljqd7amjla8ahfs5fdgl0w52pw6gz3y32q5fk229yvfyg3x9kpfygadcm2w0lv4hv4nj25cyd8v4glgd";
+        sha512 = "7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==";
       };
     };
     "escape-string-regexp-1.0.5" = {
@@ -325,7 +325,7 @@ let
       version = "4.0.1";
       src = fetchurl {
         url = "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz";
-        sha512 = "3h999di4dnwxb22lxlb7cbz42nalrv8g8sqdvrkkl5c27gnwhp1rva4039hmq6g1i0y4mfjgx6p4i2vwxxl0zlahfzdd9fl1qbqasvq";
+        sha512 = "eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==";
       };
     };
     "filled-array-1.1.0" = {
@@ -352,7 +352,7 @@ let
       version = "1.2.7";
       src = fetchurl {
         url = "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz";
-        sha512 = "1644yfnzfqikaff5s68dm4qfrblxrz68ynigkyzyixjqazxlli0svj1nxkawz35sv2vb3vjh41f1rhg0j4nr770a53fzqbjc4j94r0r";
+        sha512 = "GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==";
       };
     };
     "fs-promise-0.3.1" = {
@@ -373,6 +373,15 @@ let
         sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
       };
     };
+    "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==";
+      };
+    };
     "gauge-2.7.4" = {
       name = "gauge";
       packageName = "gauge";
@@ -397,7 +406,7 @@ let
       version = "7.1.6";
       src = fetchurl {
         url = "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz";
-        sha512 = "020qv13jbi1v4y5xavf6fw08h9svy4q9p67m4avkrrhgdjmk0c5k3h19bv7k6yn1vfxljpjw9kg81fbdg9v83cjplxvkn3v4v1v21ig";
+        sha512 = "LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==";
       };
     };
     "got-5.7.1" = {
@@ -409,13 +418,22 @@ let
         sha1 = "5f81635a61e4a6589f180569ea4e381680a51f35";
       };
     };
-    "graceful-fs-4.2.3" = {
+    "graceful-fs-4.2.4" = {
       name = "graceful-fs";
       packageName = "graceful-fs";
-      version = "4.2.3";
+      version = "4.2.4";
       src = fetchurl {
-        url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz";
-        sha512 = "12xdl6ai5jdxcpcavw2hk4zpiknz7g7f2cvgawzwlzv7cy7qf7riq8ymkgqdqxjkpl1mg627dxa65zc9b0yqhflsmqlfg5q3481azbb";
+        url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz";
+        sha512 = "WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==";
+      };
+    };
+    "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" = {
@@ -436,13 +454,13 @@ let
         sha1 = "e0e6fe6a28cf51138855e086d1691e771de2a8b9";
       };
     };
-    "hepburn-1.1.1" = {
+    "hepburn-1.2.0" = {
       name = "hepburn";
       packageName = "hepburn";
-      version = "1.1.1";
+      version = "1.2.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/hepburn/-/hepburn-1.1.1.tgz";
-        sha512 = "3vc0v8438m2a8yw40nfhqw4ldddxkzjsimpq24c9la9ik0mnr5g8wbhnxpvlf1j39m2x5fin2d82kzjdpzf22shb0wfkpadqacdjk9s";
+        url = "https://registry.npmjs.org/hepburn/-/hepburn-1.2.0.tgz";
+        sha512 = "xWjHb03dN/ivNcqG2vqA//sHQ0oapYGZ9QV/2TR7m2+cggxzoVpbDxZn9s/Zm1tF88/7a1IpdZyn00tNP5oABA==";
       };
     };
     "hosted-git-info-2.8.8" = {
@@ -451,7 +469,7 @@ let
       version = "2.8.8";
       src = fetchurl {
         url = "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz";
-        sha512 = "19a25b4xb3hg00d1nsirc3xfcc07rplbh6msa49rgc8xg5rg38y1z8rfrf0dmll8k4jaml8z337bi6y2cgah66jnwxinn0sch5k7z3z";
+        sha512 = "f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==";
       };
     };
     "iconv-lite-0.4.24" = {
@@ -460,7 +478,7 @@ let
       version = "0.4.24";
       src = fetchurl {
         url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz";
-        sha512 = "2n3ygx6km56rdcd5kq52bs2113xqm3vlw2kb9r7pnmxd2qhxrfahp2ngc4w7x8x76fyfpapnixnbjq1i24nc11mj6q7rghwj2fifwxz";
+        sha512 = "v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==";
       };
     };
     "ignore-walk-3.0.3" = {
@@ -469,7 +487,7 @@ let
       version = "3.0.3";
       src = fetchurl {
         url = "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz";
-        sha512 = "0mlk9s23jc3avly1bv6s5j7hs0aafxabmgn7iqi0bjag4b03nqckvcdrgnarpmysdq8yr1rgxh6k7p82vzjj1z6hnm5ckwswg33mflv";
+        sha512 = "m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==";
       };
     };
     "imurmurhash-0.1.4" = {
@@ -505,16 +523,16 @@ let
       version = "2.0.4";
       src = fetchurl {
         url = "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz";
-        sha512 = "30rw2i1k63pbf0n5dbwly05h95cdp1kj8c9r15gv1cwha141g61k56fx4qwsvhpm1ksnf7agch1wxirs3s0m31wbfvmcqizgrlwdywk";
+        sha512 = "k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==";
       };
     };
-    "ini-1.3.5" = {
+    "ini-1.3.8" = {
       name = "ini";
       packageName = "ini";
-      version = "1.3.5";
+      version = "1.3.8";
       src = fetchurl {
-        url = "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz";
-        sha512 = "1rjbvf1rg5ywhnba08sgagn2qf23lab330qrqmh7d891zap3xpxcyfyj1cblpf0f0rypglcfacybzyrpd4996aa1mbc820awa33k5j5";
+        url = "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz";
+        sha512 = "JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==";
       };
     };
     "is-arrayish-0.2.1" = {
@@ -526,13 +544,22 @@ let
         sha1 = "77c99840527aa8ecb1a8ba697b80645a7a926a9d";
       };
     };
+    "is-core-module-2.2.0" = {
+      name = "is-core-module";
+      packageName = "is-core-module";
+      version = "2.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz";
+        sha512 = "XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==";
+      };
+    };
     "is-finite-1.1.0" = {
       name = "is-finite";
       packageName = "is-finite";
       version = "1.1.0";
       src = fetchurl {
         url = "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz";
-        sha512 = "3gj0k3vlpbc7zg5xkl8yjnilqs2dmk3ks67shchrfmnzkj6r4aad994xwfczx99ccjx6cixdqg4sawk2m92lqhh6jmfl17zlnv8rp3i";
+        sha512 = "cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==";
       };
     };
     "is-fullwidth-code-point-1.0.0" = {
@@ -577,7 +604,7 @@ let
       version = "1.2.0";
       src = fetchurl {
         url = "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz";
-        sha512 = "134jdgzg4p15g5jvwsmb0bmglmymn1pyk6r2w8q1fm728f15l7k12sqmfngn0mg3vs34gzg12v684fp9c99l6jnv737b6rgmiwd8ij5";
+        sha512 = "RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==";
       };
     };
     "is-stream-1.1.0" = {
@@ -607,13 +634,13 @@ let
         sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
       };
     };
-    "js-yaml-3.13.1" = {
+    "js-yaml-3.14.1" = {
       name = "js-yaml";
       packageName = "js-yaml";
-      version = "3.13.1";
+      version = "3.14.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz";
-        sha512 = "0kkjjrr0znm2ka89ywc5518c8dw0210z91fm94c7v11l8c96mkjh0ddld5mb7jmmnpzap7vn0fhvr29lma63c9is2ixq3fpp0xxrxk1";
+        url = "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz";
+        sha512 = "okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==";
       };
     };
     "keypress-0.1.0" = {
@@ -640,7 +667,7 @@ let
       version = "1.7.0";
       src = fetchurl {
         url = "https://registry.npmjs.org/limax/-/limax-1.7.0.tgz";
-        sha512 = "1y0l6pib2v3nrpa6n9axb2mmjd5s50a2kqbvm7jp2zhr7dpdz0ym73kvi7h1g9i9fw6jqaiwxkas7av1fn7qjk2rgmrnkwpag50ddw9";
+        sha512 = "ibcGylOXT5vry2JKfKwLWx2tZudRYWm4SzG9AE/cc5zqwW+3nQy/uPLUvfAUChRdmqxVrK6SNepmO7ZY8RoKfA==";
       };
     };
     "load-json-file-1.1.0" = {
@@ -667,7 +694,7 @@ let
       version = "1.0.1";
       src = fetchurl {
         url = "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz";
-        sha512 = "1a7qa1zn5zl1nf7i6w3299lc3biabfb0w2c30cl770l2dbldvi72nwvjdlinhx7j0ldip82sj710aprdjbmbg782i2pa3jpbgmy6qhv";
+        sha512 = "G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==";
       };
     };
     "map-obj-1.0.1" = {
@@ -694,16 +721,7 @@ let
       version = "3.0.4";
       src = fetchurl {
         url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz";
-        sha512 = "1879a3j85h92ypvb7lpv1dqpcxl49rqnbgs5la18zmj1yqhwl60c2m74254wbr5pp3znckqpkg9dvjyrz6hfz8b9vag5a3j910db4f8";
-      };
-    };
-    "minimist-0.0.8" = {
-      name = "minimist";
-      packageName = "minimist";
-      version = "0.0.8";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz";
-        sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d";
+        sha512 = "yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==";
       };
     };
     "minimist-1.2.5" = {
@@ -712,7 +730,7 @@ let
       version = "1.2.5";
       src = fetchurl {
         url = "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz";
-        sha512 = "0pif0kjsr0cdm73cyicn9xdx9zkly45w4akmyfa39lkaf6lzysfr8kr145p54wjk26pbsk0w0qfdds3k4bxy4wl5l210i1b8qsngkql";
+        sha512 = "FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==";
       };
     };
     "minipass-2.9.0" = {
@@ -721,7 +739,7 @@ let
       version = "2.9.0";
       src = fetchurl {
         url = "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz";
-        sha512 = "1x0k2ycn1r5fig2zy7jj5vjsc7sxdl2a8lidvzsfyhcbrmvyvlbkmb3ga6l8njclvhjz2yrcx57jn26bckzrms017zb2yan1y7d85y3";
+        sha512 = "wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==";
       };
     };
     "minizlib-1.3.3" = {
@@ -730,43 +748,43 @@ let
       version = "1.3.3";
       src = fetchurl {
         url = "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz";
-        sha512 = "3slcgy5kqasjl8k1n2indaaw0k6j2ipapzxrcqyy2zrwpv8z9w2im5i8c2c73pqdgkd31rwf5bajgv4pm2i6m9jg51cfmp694w0r5p9";
+        sha512 = "6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==";
       };
     };
-    "mkdirp-0.5.1" = {
+    "mkdirp-0.5.5" = {
       name = "mkdirp";
       packageName = "mkdirp";
-      version = "0.5.1";
+      version = "0.5.5";
       src = fetchurl {
-        url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz";
-        sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
+        url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz";
+        sha512 = "NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==";
       };
     };
-    "ms-2.1.2" = {
+    "ms-2.1.3" = {
       name = "ms";
       packageName = "ms";
-      version = "2.1.2";
+      version = "2.1.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz";
-        sha512 = "3dqfiiw6nxvvi24fndbzlccnjcas99bsd1kz5m2r78lzgpp6vx57jzbmxq3k1m7bsw88rwra0n4848l720fxxn5x20djck3wp3hysdh";
+        url = "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz";
+        sha512 = "6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==";
       };
     };
-    "nan-2.14.0" = {
-      name = "nan";
-      packageName = "nan";
-      version = "2.14.0";
+    "needle-2.6.0" = {
+      name = "needle";
+      packageName = "needle";
+      version = "2.6.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz";
-        sha512 = "115f4m91pjscflwskc29clsspd2z02gdbz0dbj63ja8bf67nraw14gvppl4872y9z2f5vbjlkpg1i4625zvalx3gp04vvn2gs7qblr0";
+        url = "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz";
+        sha512 = "KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg==";
       };
     };
-    "needle-2.4.0" = {
-      name = "needle";
-      packageName = "needle";
-      version = "2.4.0";
+    "node-addon-api-3.1.0" = {
+      name = "node-addon-api";
+      packageName = "node-addon-api";
+      version = "3.1.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz";
-        sha512 = "1k9220dhvc3m78hzd1xh2135p19z15y964hmhsajayvj11j2p3rv5w0gii7lmgr8w57bqkjg0xby5f1gkcph60kxvyr52z6pp7g0yg0";
+        url = "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz";
+        sha512 = "flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==";
       };
     };
     "node-pre-gyp-0.14.0" = {
@@ -775,7 +793,7 @@ let
       version = "0.14.0";
       src = fetchurl {
         url = "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz";
-        sha512 = "32drv6q9sh4i2ff2djd1dhxxxiaiymmgycbm12wpkz9vxspnldxgmppf9sazp3c72771a1p5s4kkzgwn4w1csyz9bn4zdbdnq5w6azq";
+        sha512 = "+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==";
       };
     };
     "node-status-codes-1.0.0" = {
@@ -787,13 +805,13 @@ let
         sha1 = "5ae5541d024645d32a58fcddc9ceecea7ae3ac2f";
       };
     };
-    "nodejieba-2.4.1" = {
+    "nodejieba-2.5.1" = {
       name = "nodejieba";
       packageName = "nodejieba";
-      version = "2.4.1";
+      version = "2.5.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/nodejieba/-/nodejieba-2.4.1.tgz";
-        sha512 = "2w90xh2sxyp6mkyr4jp6pp72q6vv95ly3a12fzyfv5rc0xinivplz98vnpb8fx92pdxf9aj7wavl9qcl1kl6rva0s1vdrcfhsb5a6bz";
+        url = "https://registry.npmjs.org/nodejieba/-/nodejieba-2.5.1.tgz";
+        sha512 = "VnJBQSl2G8swDf3ZAXMbXrMCrGFO+kVKbkB93OaBthGbEG5BrxfD8I2m7auaRX8E5C1t+hlwo3HCmQOWKkiZ9A==";
       };
     };
     "nopt-4.0.3" = {
@@ -802,7 +820,7 @@ let
       version = "4.0.3";
       src = fetchurl {
         url = "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz";
-        sha512 = "0mb9va0ag1n8v5c2lhza37prcw4iyrmbw5n6yglk1kcg95xwqi9ng5dqwr17h63sl5dba2rnwwrzz7dnfvkx5z75h4j7d9kag0qdxha";
+        sha512 = "CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==";
       };
     };
     "normalize-package-data-2.5.0" = {
@@ -811,7 +829,7 @@ let
       version = "2.5.0";
       src = fetchurl {
         url = "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz";
-        sha512 = "1wbwhlsm965n61y23wrm50ric9l7rig90wvx7hjdl34np6n1bbqcc67wgm494z303s6y5aj4xjyism3n6kikp40iz9qaizlfhvqr47z";
+        sha512 = "/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==";
       };
     };
     "npm-bundled-1.1.1" = {
@@ -820,7 +838,7 @@ let
       version = "1.1.1";
       src = fetchurl {
         url = "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz";
-        sha512 = "1yb9l8jnxwicz0fsdv434y395b0x11mlc1mgbbhnx21pvs58a4p43f0swvi6q0rakdgzdiyf0yylnmb3i41hb052903m1cgcy01zac2";
+        sha512 = "gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==";
       };
     };
     "npm-normalize-package-bin-1.0.1" = {
@@ -829,7 +847,7 @@ let
       version = "1.0.1";
       src = fetchurl {
         url = "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz";
-        sha512 = "149ypqf1mxqw0gcjr4xf4h65q6vx41z1abm27cwbsj7fn07wsx588f9gsykjzfybwrn4mmr6lyaj825w3yyhbgaagmrybw9brzdmxqh";
+        sha512 = "EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==";
       };
     };
     "npm-packlist-1.4.8" = {
@@ -838,7 +856,7 @@ let
       version = "1.4.8";
       src = fetchurl {
         url = "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz";
-        sha512 = "3s585jx92awjb52bs1jwq8r4swv8mgfl685if5wwpbsigwb362adizzpi58a5kgqfpf605mf6a0v7074mc9qpcn2ypqgr7f1a1ikq77";
+        sha512 = "5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==";
       };
     };
     "npmlog-4.1.2" = {
@@ -847,7 +865,7 @@ let
       version = "4.1.2";
       src = fetchurl {
         url = "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz";
-        sha512 = "2967mavp7zw0aawf5fadqf4pmn7vy5gya1yx2s9wwppvivhd9q4mpdnszfqvd7p6yks649bwbpj8iviw86g0hpp4f93d5ca7dmjmrfs";
+        sha512 = "2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==";
       };
     };
     "number-is-nan-1.0.1" = {
@@ -910,7 +928,7 @@ let
       version = "0.1.5";
       src = fetchurl {
         url = "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz";
-        sha512 = "3ddw0y41pxv08ls5xhmq1bi81hppjbr45k78cjfx99vznh5znrj5g1b1wab9caj1mqlsvmfms0zm9cfb47ygm0d8wv5fccx8049q9fh";
+        sha512 = "0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==";
       };
     };
     "package-json-2.4.0" = {
@@ -955,7 +973,7 @@ let
       version = "1.0.6";
       src = fetchurl {
         url = "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz";
-        sha512 = "37qw5986wccpwwqckqky509s4nd6zwv200s9r2v6mcf5nsyxgf2x00m4yp918mkkz84sdh4q0kjbg0hhfq4flpz0l6v47hvc57qwa8r";
+        sha512 = "GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==";
       };
     };
     "path-type-1.1.0" = {
@@ -994,13 +1012,13 @@ let
         sha1 = "2135d6dfa7a358c069ac9b178776288228450ffa";
       };
     };
-    "pinyin-2.9.0" = {
+    "pinyin-2.9.1" = {
       name = "pinyin";
       packageName = "pinyin";
-      version = "2.9.0";
+      version = "2.9.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/pinyin/-/pinyin-2.9.0.tgz";
-        sha512 = "3fjgppnlcvcbx314q2q32amxyvda5xzj8bgi7s131n15r8wwi94w5bnb7q2lbgag0qc4d5fhg0a14ipwvh0j7si1fmndmw4dgxi15jd";
+        url = "https://registry.npmjs.org/pinyin/-/pinyin-2.9.1.tgz";
+        sha512 = "U7kHlVP6yUYl2DV2bX4brlYWdgaAlwtqJrdkboiyri9ixRDVqVO3LD98te3PT5deN5EA9W8ywuG9GaYZfiiIlw==";
       };
     };
     "prepend-http-1.0.4" = {
@@ -1018,7 +1036,7 @@ let
       version = "2.0.1";
       src = fetchurl {
         url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz";
-        sha512 = "1mgan8li4i2l4y7lsr7snks85n6xg5x693cqmzpid3fkk9br7v5xzgvh1zlfs08zkxn6s0n6qhykr64mszjfyxd77dhmdi1jhx992yy";
+        sha512 = "3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==";
       };
     };
     "rc-1.2.8" = {
@@ -1027,7 +1045,7 @@ let
       version = "1.2.8";
       src = fetchurl {
         url = "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz";
-        sha512 = "0xhy1n9n3y6cp28f8f0f2mi0xzc7ay1g5nhbp64fyvcwv9q30zq2zvyc5q2d0al8aa0hx101yq2y6d2ln4r5jxnqifh1pd3la1ccxnb";
+        sha512 = "y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==";
       };
     };
     "read-all-stream-3.1.0" = {
@@ -1063,7 +1081,7 @@ let
       version = "2.3.7";
       src = fetchurl {
         url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz";
-        sha512 = "0zrh6gjjzwwycwydra51xcrgjgzyqv6dq38bfpwzmlqn702mwb4nj4sjjn499rycqndfk6rby0dksnq72x8pcbvqv0b2893mvq6if0i";
+        sha512 = "Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==";
       };
     };
     "redent-1.0.0" = {
@@ -1081,7 +1099,7 @@ let
       version = "3.4.0";
       src = fetchurl {
         url = "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz";
-        sha512 = "3w8zjx5s044i7wr9bqqgjfkjawg0cajc9j9gmzkqs0i420algjvkd5k27j9pvhx1yq7nvdchsl96zcyjf64n14765q0f18y1wbkmcz0";
+        sha512 = "4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==";
       };
     };
     "registry-url-3.1.0" = {
@@ -1102,13 +1120,13 @@ let
         sha1 = "5214c53a926d3552707527fbab415dbc08d06dda";
       };
     };
-    "resolve-1.15.1" = {
+    "resolve-1.19.0" = {
       name = "resolve";
       packageName = "resolve";
-      version = "1.15.1";
+      version = "1.19.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz";
-        sha512 = "3pr5zjp8nh6qfllxnpqx531srx1igzdm28j4zg1y53yzc8qxp16yx01pw8cp7y4frla90gnpv622d6bi6aayi03iqlkb8gdjklji2pk";
+        url = "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz";
+        sha512 = "rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==";
       };
     };
     "rimraf-2.7.1" = {
@@ -1117,7 +1135,7 @@ let
       version = "2.7.1";
       src = fetchurl {
         url = "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz";
-        sha512 = "3ixwnv4h7x38jd12vyzhx6m6adnfhz1zv881allalyqs8sy3q3zgwldngk4cqslnn2d46l0g91yz8wprmzcsvas9573vp8al9ldns5r";
+        sha512 = "uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==";
       };
     };
     "safe-buffer-5.1.2" = {
@@ -1126,7 +1144,7 @@ let
       version = "5.1.2";
       src = fetchurl {
         url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz";
-        sha512 = "3xbm0dkya4bc3zwfwpdzbl8ngq0aai5ihlp2v3s39y7162c7wyvv9izj3g8hv6dy6vm2lq48lmfzygk0kxwbjb6xic7k4a329j99p8r";
+        sha512 = "Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==";
       };
     };
     "safer-buffer-2.1.2" = {
@@ -1135,7 +1153,7 @@ let
       version = "2.1.2";
       src = fetchurl {
         url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz";
-        sha512 = "2v99f22kh56y72d3s8wrgdvf5n10ry40dh3fwnsxr4d5rfvxdfxfmc3qyqkscnj4f8799jy9bpg6cm21x2d811dr9ib83wjrlmkg6k1";
+        sha512 = "YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==";
       };
     };
     "sax-1.2.4" = {
@@ -1144,7 +1162,7 @@ let
       version = "1.2.4";
       src = fetchurl {
         url = "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz";
-        sha512 = "1dn291mjsda42w8kldlbmngk6dhjxfbvvd5lckyqmwbjaj6069iq3wx0nvcfglwnpddz2qa93lzf4hv77iz43bd2qixa079sjzl799n";
+        sha512 = "NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==";
       };
     };
     "semver-5.7.1" = {
@@ -1153,7 +1171,7 @@ let
       version = "5.7.1";
       src = fetchurl {
         url = "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz";
-        sha512 = "0cl68vp0ymkjpvim4s24v3awyk37d1bfbqrqv4ybwfi8yxga3d8fma2d6bh8dd4i2dsfwca324vaxm5dms61kdlmihdarfgzw6rmaxi";
+        sha512 = "sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==";
       };
     };
     "semver-diff-2.1.0" = {
@@ -1174,13 +1192,13 @@ let
         sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7";
       };
     };
-    "signal-exit-3.0.2" = {
+    "signal-exit-3.0.3" = {
       name = "signal-exit";
       packageName = "signal-exit";
-      version = "3.0.2";
+      version = "3.0.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz";
-        sha1 = "b5fdc08f1287ea1178628e415e25132b73646c6d";
+        url = "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz";
+        sha512 = "VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==";
       };
     };
     "slide-1.1.6" = {
@@ -1192,40 +1210,40 @@ let
         sha1 = "56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707";
       };
     };
-    "spdx-correct-3.1.0" = {
+    "spdx-correct-3.1.1" = {
       name = "spdx-correct";
       packageName = "spdx-correct";
-      version = "3.1.0";
+      version = "3.1.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz";
-        sha512 = "3qslnh3c2x2g8lar94rladm2rz692d5ds1bp1cpl223jf67jnazl9ipy4n17n7vqvgwimij36gz740nfqr5pyxq8x6n02rd4xj89gcn";
+        url = "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz";
+        sha512 = "cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==";
       };
     };
-    "spdx-exceptions-2.2.0" = {
+    "spdx-exceptions-2.3.0" = {
       name = "spdx-exceptions";
       packageName = "spdx-exceptions";
-      version = "2.2.0";
+      version = "2.3.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz";
-        sha512 = "12c442riig2hk7014ahh40chwirmmsl9dr4cnm2dr2bdbv1lnal8xxwsfx403pqkx7ib06gm2hyyd98kn30kxanjm92yai5y44h0x6r";
+        url = "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz";
+        sha512 = "/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==";
       };
     };
-    "spdx-expression-parse-3.0.0" = {
+    "spdx-expression-parse-3.0.1" = {
       name = "spdx-expression-parse";
       packageName = "spdx-expression-parse";
-      version = "3.0.0";
+      version = "3.0.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz";
-        sha512 = "351djgqvsgqmfg6h764c2k09dmixczw5073jirm8km6i1yym4xjrzc7g5ckwkidi3gls7s910m4ahl8sh37dsb478j8j3sigbfq63k2";
+        url = "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz";
+        sha512 = "cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==";
       };
     };
-    "spdx-license-ids-3.0.5" = {
+    "spdx-license-ids-3.0.7" = {
       name = "spdx-license-ids";
       packageName = "spdx-license-ids";
-      version = "3.0.5";
+      version = "3.0.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz";
-        sha512 = "3sk6sk6r05ikn5qslbh04h54mv4a34wn4d76s800h94padnjydfvvq73ij6jh81yrigspyr50ay878jjwpj2mcq38br371jkb6mdq97";
+        url = "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz";
+        sha512 = "U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==";
       };
     };
     "speakingurl-14.0.1" = {
@@ -1234,7 +1252,7 @@ let
       version = "14.0.1";
       src = fetchurl {
         url = "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz";
-        sha512 = "2nmh1645i59b0ij75rjrps837iipz5m67bwbv5hfn34wjcvzwsrysvdwd1ykdbd1njwazh8prbqsm0dm4lh8sb1r3l0bnmgpfzriwyl";
+        sha512 = "1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==";
       };
     };
     "sprintf-js-1.0.3" = {
@@ -1261,7 +1279,7 @@ let
       version = "1.1.1";
       src = fetchurl {
         url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz";
-        sha512 = "315yd4vzwrwk3vwj1klf46y1cj2jbvf88066y2rnwhksb98phj46jkxixbwsp3h607w7czy7cby522s7sx8mvspdpdm3s72y2ga3x4z";
+        sha512 = "n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==";
       };
     };
     "strip-ansi-3.0.1" = {
@@ -1315,7 +1333,7 @@ let
       version = "4.4.13";
       src = fetchurl {
         url = "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz";
-        sha512 = "10gwhmgx7fh619zv48r2lnm42qr7rw4qa9ph7142rizcn8in9dpi49jbmmv8ism60rcg1a7b4103r598jngi1rcn50sw7b8n1570rf3";
+        sha512 = "w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==";
       };
     };
     "timed-out-3.1.3" = {
@@ -1387,7 +1405,7 @@ let
       version = "3.0.4";
       src = fetchurl {
         url = "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz";
-        sha512 = "09vn7gn5jp2c07pxplc11lvk7ybfaz0rp3qzflyiyhnahkfgh76bij31ll5rg01ranlmljrky2q25d1f6bbd0h23pzxxi5z93csd4hf";
+        sha512 = "DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==";
       };
     };
     "wide-align-1.1.3" = {
@@ -1396,7 +1414,7 @@ let
       version = "1.1.3";
       src = fetchurl {
         url = "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz";
-        sha512 = "2224a32flpf40nhq6rj4idzkcdz0vx65bfxp90hd06db18l6fiqgxz1xnaygm3pbfb1a6v73hl8ryq4996b09zwwins0bqprx0hwsa0";
+        sha512 = "QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==";
       };
     };
     "widest-line-1.0.0" = {
@@ -1441,7 +1459,7 @@ let
       version = "3.1.1";
       src = fetchurl {
         url = "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz";
-        sha512 = "3ig31a6zfbdlrs3l77a8avpp17hajryhyq2xk4h3ayc4dmxch146rdk7q1s1jgx9qvmxq125r0xq2bvnq0rq63m75k9y7wglm0hd1bb";
+        sha512 = "a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==";
       };
     };
   };
@@ -1481,7 +1499,7 @@ in
       sources."core-util-is-1.0.2"
       sources."create-error-class-3.0.2"
       sources."currently-unhandled-0.4.1"
-      sources."debug-3.2.6"
+      sources."debug-3.2.7"
       sources."decamelize-1.2.0"
       sources."deep-extend-0.6.0"
       sources."delegates-1.0.0"
@@ -1497,14 +1515,16 @@ in
       sources."fs-minipass-1.2.7"
       sources."fs-promise-0.3.1"
       sources."fs.realpath-1.0.0"
+      sources."function-bind-1.1.1"
       sources."gauge-2.7.4"
       sources."get-stdin-4.0.1"
       sources."glob-7.1.6"
       sources."got-5.7.1"
-      sources."graceful-fs-4.2.3"
+      sources."graceful-fs-4.2.4"
+      sources."has-1.0.3"
       sources."has-ansi-2.0.0"
       sources."has-unicode-2.0.1"
-      sources."hepburn-1.1.1"
+      sources."hepburn-1.2.0"
       sources."hosted-git-info-2.8.8"
       sources."iconv-lite-0.4.24"
       sources."ignore-walk-3.0.3"
@@ -1512,8 +1532,9 @@ in
       sources."indent-string-2.1.0"
       sources."inflight-1.0.6"
       sources."inherits-2.0.4"
-      sources."ini-1.3.5"
+      sources."ini-1.3.8"
       sources."is-arrayish-0.2.1"
+      sources."is-core-module-2.2.0"
       sources."is-finite-1.1.0"
       sources."is-fullwidth-code-point-1.0.0"
       sources."is-npm-1.0.0"
@@ -1523,7 +1544,7 @@ in
       sources."is-stream-1.1.0"
       sources."is-utf8-0.2.1"
       sources."isarray-1.0.0"
-      sources."js-yaml-3.13.1"
+      sources."js-yaml-3.14.1"
       sources."keypress-0.1.0"
       sources."latest-version-2.0.0"
       sources."limax-1.7.0"
@@ -1531,22 +1552,18 @@ in
       sources."loud-rejection-1.6.0"
       sources."lowercase-keys-1.0.1"
       sources."map-obj-1.0.1"
-      (sources."meow-3.7.0" // {
-        dependencies = [
-          sources."minimist-1.2.5"
-        ];
-      })
+      sources."meow-3.7.0"
       sources."minimatch-3.0.4"
-      sources."minimist-0.0.8"
+      sources."minimist-1.2.5"
       sources."minipass-2.9.0"
       sources."minizlib-1.3.3"
-      sources."mkdirp-0.5.1"
-      sources."ms-2.1.2"
-      sources."nan-2.14.0"
-      sources."needle-2.4.0"
+      sources."mkdirp-0.5.5"
+      sources."ms-2.1.3"
+      sources."needle-2.6.0"
+      sources."node-addon-api-3.1.0"
       sources."node-pre-gyp-0.14.0"
       sources."node-status-codes-1.0.0"
-      sources."nodejieba-2.4.1"
+      sources."nodejieba-2.5.1"
       sources."nopt-4.0.3"
       sources."normalize-package-data-2.5.0"
       sources."npm-bundled-1.1.1"
@@ -1569,14 +1586,10 @@ in
       sources."pify-2.3.0"
       sources."pinkie-2.0.4"
       sources."pinkie-promise-2.0.1"
-      sources."pinyin-2.9.0"
+      sources."pinyin-2.9.1"
       sources."prepend-http-1.0.4"
       sources."process-nextick-args-2.0.1"
-      (sources."rc-1.2.8" // {
-        dependencies = [
-          sources."minimist-1.2.5"
-        ];
-      })
+      sources."rc-1.2.8"
       sources."read-all-stream-3.1.0"
       sources."read-pkg-1.1.0"
       sources."read-pkg-up-1.0.1"
@@ -1585,7 +1598,7 @@ in
       sources."registry-auth-token-3.4.0"
       sources."registry-url-3.1.0"
       sources."repeating-2.0.1"
-      sources."resolve-1.15.1"
+      sources."resolve-1.19.0"
       sources."rimraf-2.7.1"
       sources."safe-buffer-5.1.2"
       sources."safer-buffer-2.1.2"
@@ -1593,12 +1606,12 @@ in
       sources."semver-5.7.1"
       sources."semver-diff-2.1.0"
       sources."set-blocking-2.0.0"
-      sources."signal-exit-3.0.2"
+      sources."signal-exit-3.0.3"
       sources."slide-1.1.6"
-      sources."spdx-correct-3.1.0"
-      sources."spdx-exceptions-2.2.0"
-      sources."spdx-expression-parse-3.0.0"
-      sources."spdx-license-ids-3.0.5"
+      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.7"
       sources."speakingurl-14.0.1"
       sources."sprintf-js-1.0.3"
       sources."string-width-1.0.2"
@@ -1634,4 +1647,4 @@ in
     bypassCache = true;
     reconstructLock = true;
   };
-}
\ No newline at end of file
+}
diff --git a/pkgs/misc/base16-builder/node-packages.nix b/pkgs/misc/base16-builder/node-packages.nix
index 052339d11ea..79748949ff7 100644
--- a/pkgs/misc/base16-builder/node-packages.nix
+++ b/pkgs/misc/base16-builder/node-packages.nix
@@ -1,4 +1,4 @@
-# This file has been generated by node2nix 1.8.0. Do not edit!
+# This file has been generated by node2nix 1.9.0. Do not edit!
 
 {pkgs ? import <nixpkgs> {
     inherit system;
@@ -7,15 +7,15 @@
 let
   globalBuildInputs = pkgs.lib.attrValues (import ./supplement.nix {
     inherit nodeEnv;
-    inherit (pkgs) fetchurl fetchgit;
+    inherit (pkgs) stdenv lib nix-gitignore fetchurl fetchgit;
   });
   nodeEnv = import ../../development/node-packages/node-env.nix {
-    inherit (pkgs) stdenv python2 utillinux runCommand writeTextFile;
-    inherit nodejs;
+    inherit (pkgs) stdenv lib python2 runCommand writeTextFile;
+    inherit pkgs nodejs;
     libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
   };
 in
 import ./node-packages-generated.nix {
-  inherit (pkgs) fetchurl fetchgit;
+  inherit (pkgs) fetchurl nix-gitignore stdenv lib fetchgit;
   inherit nodeEnv globalBuildInputs;
-}
\ No newline at end of file
+}
diff --git a/pkgs/misc/base16-builder/supplement.nix b/pkgs/misc/base16-builder/supplement.nix
index 8183eb1a1e8..104cda58dc0 100644
--- a/pkgs/misc/base16-builder/supplement.nix
+++ b/pkgs/misc/base16-builder/supplement.nix
@@ -1,6 +1,6 @@
-# This file has been generated by node2nix 1.8.0. Do not edit!
+# This file has been generated by node2nix 1.9.0. Do not edit!
 
-{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+{nodeEnv, fetchurl, fetchgit, nix-gitignore, stdenv, lib, globalBuildInputs ? []}:
 
 let
   sources = {
@@ -10,7 +10,7 @@ let
       version = "1.1.1";
       src = fetchurl {
         url = "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz";
-        sha512 = "38s4f3id97wsb0rg9nm9zvxyq0nvwrmrpa5dzvrkp36mf5ibs98b4z6lvsbrwzzs0sbcank6c7gpp06vcwp9acfhp41rzlhi3ybsxwy";
+        sha512 = "nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==";
       };
     };
     "ansi-regex-2.1.1" = {
@@ -28,7 +28,7 @@ let
       version = "1.2.0";
       src = fetchurl {
         url = "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz";
-        sha512 = "13mgnbmdhdq0qncijvpip1l39q1a8labcvj3hc3n1yl2zch106mdkn7p7bd5knvmfkkn1js9nd47nzyjk1himbm8ry8i8gd6mk7mlk3";
+        sha512 = "Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==";
       };
     };
     "are-we-there-yet-1.1.5" = {
@@ -37,7 +37,7 @@ let
       version = "1.1.5";
       src = fetchurl {
         url = "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz";
-        sha512 = "3mizm1yfxynlhaavbimv7n9qljrbhni22v4fch6zr89x6ps0gpjcxm5yfvv05n8vc3r17hmglyswgq9w0s598xv70nnyw358q11s5p6";
+        sha512 = "5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==";
       };
     };
     "balanced-match-1.0.0" = {
@@ -55,7 +55,7 @@ let
       version = "1.1.11";
       src = fetchurl {
         url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz";
-        sha512 = "248cnpbbf0p32h53rd3g8wzpgrkaj4p078ra1g6l16f82i6bzkvmhwqan5rk88apbll9ly1476kngd7f7z27i3b3zxpbb3064f8yaw8";
+        sha512 = "iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==";
       };
     };
     "chownr-1.1.4" = {
@@ -64,7 +64,7 @@ let
       version = "1.1.4";
       src = fetchurl {
         url = "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz";
-        sha512 = "1b03acmav1awkygrda5h64pn8msd6wda119q553hik728i1j72bfqyq7yzn1x7nmw28hvg9mcyh7krsj8vwsq3karnn55mj6smip7cc";
+        sha512 = "jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==";
       };
     };
     "code-point-at-1.1.0" = {
@@ -103,13 +103,13 @@ let
         sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
       };
     };
-    "debug-3.2.6" = {
+    "debug-3.2.7" = {
       name = "debug";
       packageName = "debug";
-      version = "3.2.6";
+      version = "3.2.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz";
-        sha512 = "1cyv14044rfh792n1hhsa44kk8dk95zk14w96i49gwq6g9wi6h9vn90xaragfy7rvggqvj178l5f16c78g47xgrwhjx3bp7zs6pxscr";
+        url = "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz";
+        sha512 = "CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==";
       };
     };
     "deep-extend-0.6.0" = {
@@ -118,7 +118,7 @@ let
       version = "0.6.0";
       src = fetchurl {
         url = "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz";
-        sha512 = "0wc0sqg1aqx864bxf8xa4j8ncrc8rcvmiaj1sp3x1np2i8hdjybzjfd0w9gbf1yasmwycwzzg1mz6smr3q42hhv4pjx2qcgwqhg3q9c";
+        sha512 = "LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==";
       };
     };
     "delegates-1.0.0" = {
@@ -145,7 +145,7 @@ let
       version = "1.2.7";
       src = fetchurl {
         url = "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz";
-        sha512 = "1644yfnzfqikaff5s68dm4qfrblxrz68ynigkyzyixjqazxlli0svj1nxkawz35sv2vb3vjh41f1rhg0j4nr770a53fzqbjc4j94r0r";
+        sha512 = "GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==";
       };
     };
     "fs.realpath-1.0.0" = {
@@ -172,7 +172,7 @@ let
       version = "7.1.6";
       src = fetchurl {
         url = "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz";
-        sha512 = "020qv13jbi1v4y5xavf6fw08h9svy4q9p67m4avkrrhgdjmk0c5k3h19bv7k6yn1vfxljpjw9kg81fbdg9v83cjplxvkn3v4v1v21ig";
+        sha512 = "LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==";
       };
     };
     "has-unicode-2.0.1" = {
@@ -190,7 +190,7 @@ let
       version = "0.4.24";
       src = fetchurl {
         url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz";
-        sha512 = "2n3ygx6km56rdcd5kq52bs2113xqm3vlw2kb9r7pnmxd2qhxrfahp2ngc4w7x8x76fyfpapnixnbjq1i24nc11mj6q7rghwj2fifwxz";
+        sha512 = "v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==";
       };
     };
     "ignore-walk-3.0.3" = {
@@ -199,7 +199,7 @@ let
       version = "3.0.3";
       src = fetchurl {
         url = "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz";
-        sha512 = "0mlk9s23jc3avly1bv6s5j7hs0aafxabmgn7iqi0bjag4b03nqckvcdrgnarpmysdq8yr1rgxh6k7p82vzjj1z6hnm5ckwswg33mflv";
+        sha512 = "m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==";
       };
     };
     "inflight-1.0.6" = {
@@ -217,16 +217,16 @@ let
       version = "2.0.4";
       src = fetchurl {
         url = "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz";
-        sha512 = "30rw2i1k63pbf0n5dbwly05h95cdp1kj8c9r15gv1cwha141g61k56fx4qwsvhpm1ksnf7agch1wxirs3s0m31wbfvmcqizgrlwdywk";
+        sha512 = "k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==";
       };
     };
-    "ini-1.3.5" = {
+    "ini-1.3.8" = {
       name = "ini";
       packageName = "ini";
-      version = "1.3.5";
+      version = "1.3.8";
       src = fetchurl {
-        url = "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz";
-        sha512 = "1rjbvf1rg5ywhnba08sgagn2qf23lab330qrqmh7d891zap3xpxcyfyj1cblpf0f0rypglcfacybzyrpd4996aa1mbc820awa33k5j5";
+        url = "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz";
+        sha512 = "JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==";
       };
     };
     "is-fullwidth-code-point-1.0.0" = {
@@ -253,16 +253,7 @@ let
       version = "3.0.4";
       src = fetchurl {
         url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz";
-        sha512 = "1879a3j85h92ypvb7lpv1dqpcxl49rqnbgs5la18zmj1yqhwl60c2m74254wbr5pp3znckqpkg9dvjyrz6hfz8b9vag5a3j910db4f8";
-      };
-    };
-    "minimist-0.0.8" = {
-      name = "minimist";
-      packageName = "minimist";
-      version = "0.0.8";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz";
-        sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d";
+        sha512 = "yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==";
       };
     };
     "minimist-1.2.5" = {
@@ -271,7 +262,7 @@ let
       version = "1.2.5";
       src = fetchurl {
         url = "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz";
-        sha512 = "0pif0kjsr0cdm73cyicn9xdx9zkly45w4akmyfa39lkaf6lzysfr8kr145p54wjk26pbsk0w0qfdds3k4bxy4wl5l210i1b8qsngkql";
+        sha512 = "FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==";
       };
     };
     "minipass-2.9.0" = {
@@ -280,7 +271,7 @@ let
       version = "2.9.0";
       src = fetchurl {
         url = "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz";
-        sha512 = "1x0k2ycn1r5fig2zy7jj5vjsc7sxdl2a8lidvzsfyhcbrmvyvlbkmb3ga6l8njclvhjz2yrcx57jn26bckzrms017zb2yan1y7d85y3";
+        sha512 = "wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==";
       };
     };
     "minizlib-1.3.3" = {
@@ -289,34 +280,34 @@ let
       version = "1.3.3";
       src = fetchurl {
         url = "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz";
-        sha512 = "3slcgy5kqasjl8k1n2indaaw0k6j2ipapzxrcqyy2zrwpv8z9w2im5i8c2c73pqdgkd31rwf5bajgv4pm2i6m9jg51cfmp694w0r5p9";
+        sha512 = "6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==";
       };
     };
-    "mkdirp-0.5.1" = {
+    "mkdirp-0.5.5" = {
       name = "mkdirp";
       packageName = "mkdirp";
-      version = "0.5.1";
+      version = "0.5.5";
       src = fetchurl {
-        url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz";
-        sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
+        url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz";
+        sha512 = "NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==";
       };
     };
-    "ms-2.1.2" = {
+    "ms-2.1.3" = {
       name = "ms";
       packageName = "ms";
-      version = "2.1.2";
+      version = "2.1.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz";
-        sha512 = "3dqfiiw6nxvvi24fndbzlccnjcas99bsd1kz5m2r78lzgpp6vx57jzbmxq3k1m7bsw88rwra0n4848l720fxxn5x20djck3wp3hysdh";
+        url = "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz";
+        sha512 = "6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==";
       };
     };
-    "needle-2.4.0" = {
+    "needle-2.6.0" = {
       name = "needle";
       packageName = "needle";
-      version = "2.4.0";
+      version = "2.6.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz";
-        sha512 = "1k9220dhvc3m78hzd1xh2135p19z15y964hmhsajayvj11j2p3rv5w0gii7lmgr8w57bqkjg0xby5f1gkcph60kxvyr52z6pp7g0yg0";
+        url = "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz";
+        sha512 = "KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg==";
       };
     };
     "nopt-4.0.3" = {
@@ -325,7 +316,7 @@ let
       version = "4.0.3";
       src = fetchurl {
         url = "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz";
-        sha512 = "0mb9va0ag1n8v5c2lhza37prcw4iyrmbw5n6yglk1kcg95xwqi9ng5dqwr17h63sl5dba2rnwwrzz7dnfvkx5z75h4j7d9kag0qdxha";
+        sha512 = "CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==";
       };
     };
     "npm-bundled-1.1.1" = {
@@ -334,7 +325,7 @@ let
       version = "1.1.1";
       src = fetchurl {
         url = "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz";
-        sha512 = "1yb9l8jnxwicz0fsdv434y395b0x11mlc1mgbbhnx21pvs58a4p43f0swvi6q0rakdgzdiyf0yylnmb3i41hb052903m1cgcy01zac2";
+        sha512 = "gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==";
       };
     };
     "npm-normalize-package-bin-1.0.1" = {
@@ -343,7 +334,7 @@ let
       version = "1.0.1";
       src = fetchurl {
         url = "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz";
-        sha512 = "149ypqf1mxqw0gcjr4xf4h65q6vx41z1abm27cwbsj7fn07wsx588f9gsykjzfybwrn4mmr6lyaj825w3yyhbgaagmrybw9brzdmxqh";
+        sha512 = "EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==";
       };
     };
     "npm-packlist-1.4.8" = {
@@ -352,7 +343,7 @@ let
       version = "1.4.8";
       src = fetchurl {
         url = "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz";
-        sha512 = "3s585jx92awjb52bs1jwq8r4swv8mgfl685if5wwpbsigwb362adizzpi58a5kgqfpf605mf6a0v7074mc9qpcn2ypqgr7f1a1ikq77";
+        sha512 = "5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==";
       };
     };
     "npmlog-4.1.2" = {
@@ -361,7 +352,7 @@ let
       version = "4.1.2";
       src = fetchurl {
         url = "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz";
-        sha512 = "2967mavp7zw0aawf5fadqf4pmn7vy5gya1yx2s9wwppvivhd9q4mpdnszfqvd7p6yks649bwbpj8iviw86g0hpp4f93d5ca7dmjmrfs";
+        sha512 = "2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==";
       };
     };
     "number-is-nan-1.0.1" = {
@@ -415,7 +406,7 @@ let
       version = "0.1.5";
       src = fetchurl {
         url = "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz";
-        sha512 = "3ddw0y41pxv08ls5xhmq1bi81hppjbr45k78cjfx99vznh5znrj5g1b1wab9caj1mqlsvmfms0zm9cfb47ygm0d8wv5fccx8049q9fh";
+        sha512 = "0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==";
       };
     };
     "path-is-absolute-1.0.1" = {
@@ -433,7 +424,7 @@ let
       version = "2.0.1";
       src = fetchurl {
         url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz";
-        sha512 = "1mgan8li4i2l4y7lsr7snks85n6xg5x693cqmzpid3fkk9br7v5xzgvh1zlfs08zkxn6s0n6qhykr64mszjfyxd77dhmdi1jhx992yy";
+        sha512 = "3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==";
       };
     };
     "rc-1.2.8" = {
@@ -442,7 +433,7 @@ let
       version = "1.2.8";
       src = fetchurl {
         url = "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz";
-        sha512 = "0xhy1n9n3y6cp28f8f0f2mi0xzc7ay1g5nhbp64fyvcwv9q30zq2zvyc5q2d0al8aa0hx101yq2y6d2ln4r5jxnqifh1pd3la1ccxnb";
+        sha512 = "y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==";
       };
     };
     "readable-stream-2.3.7" = {
@@ -451,7 +442,7 @@ let
       version = "2.3.7";
       src = fetchurl {
         url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz";
-        sha512 = "0zrh6gjjzwwycwydra51xcrgjgzyqv6dq38bfpwzmlqn702mwb4nj4sjjn499rycqndfk6rby0dksnq72x8pcbvqv0b2893mvq6if0i";
+        sha512 = "Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==";
       };
     };
     "rimraf-2.7.1" = {
@@ -460,7 +451,7 @@ let
       version = "2.7.1";
       src = fetchurl {
         url = "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz";
-        sha512 = "3ixwnv4h7x38jd12vyzhx6m6adnfhz1zv881allalyqs8sy3q3zgwldngk4cqslnn2d46l0g91yz8wprmzcsvas9573vp8al9ldns5r";
+        sha512 = "uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==";
       };
     };
     "safe-buffer-5.1.2" = {
@@ -469,7 +460,7 @@ let
       version = "5.1.2";
       src = fetchurl {
         url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz";
-        sha512 = "3xbm0dkya4bc3zwfwpdzbl8ngq0aai5ihlp2v3s39y7162c7wyvv9izj3g8hv6dy6vm2lq48lmfzygk0kxwbjb6xic7k4a329j99p8r";
+        sha512 = "Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==";
       };
     };
     "safer-buffer-2.1.2" = {
@@ -478,7 +469,7 @@ let
       version = "2.1.2";
       src = fetchurl {
         url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz";
-        sha512 = "2v99f22kh56y72d3s8wrgdvf5n10ry40dh3fwnsxr4d5rfvxdfxfmc3qyqkscnj4f8799jy9bpg6cm21x2d811dr9ib83wjrlmkg6k1";
+        sha512 = "YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==";
       };
     };
     "sax-1.2.4" = {
@@ -487,7 +478,7 @@ let
       version = "1.2.4";
       src = fetchurl {
         url = "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz";
-        sha512 = "1dn291mjsda42w8kldlbmngk6dhjxfbvvd5lckyqmwbjaj6069iq3wx0nvcfglwnpddz2qa93lzf4hv77iz43bd2qixa079sjzl799n";
+        sha512 = "NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==";
       };
     };
     "semver-5.7.1" = {
@@ -496,7 +487,7 @@ let
       version = "5.7.1";
       src = fetchurl {
         url = "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz";
-        sha512 = "0cl68vp0ymkjpvim4s24v3awyk37d1bfbqrqv4ybwfi8yxga3d8fma2d6bh8dd4i2dsfwca324vaxm5dms61kdlmihdarfgzw6rmaxi";
+        sha512 = "sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==";
       };
     };
     "set-blocking-2.0.0" = {
@@ -508,13 +499,13 @@ let
         sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7";
       };
     };
-    "signal-exit-3.0.2" = {
+    "signal-exit-3.0.3" = {
       name = "signal-exit";
       packageName = "signal-exit";
-      version = "3.0.2";
+      version = "3.0.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz";
-        sha1 = "b5fdc08f1287ea1178628e415e25132b73646c6d";
+        url = "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz";
+        sha512 = "VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==";
       };
     };
     "string-width-1.0.2" = {
@@ -532,7 +523,7 @@ let
       version = "1.1.1";
       src = fetchurl {
         url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz";
-        sha512 = "315yd4vzwrwk3vwj1klf46y1cj2jbvf88066y2rnwhksb98phj46jkxixbwsp3h607w7czy7cby522s7sx8mvspdpdm3s72y2ga3x4z";
+        sha512 = "n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==";
       };
     };
     "strip-ansi-3.0.1" = {
@@ -559,7 +550,7 @@ let
       version = "4.4.13";
       src = fetchurl {
         url = "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz";
-        sha512 = "10gwhmgx7fh619zv48r2lnm42qr7rw4qa9ph7142rizcn8in9dpi49jbmmv8ism60rcg1a7b4103r598jngi1rcn50sw7b8n1570rf3";
+        sha512 = "w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==";
       };
     };
     "util-deprecate-1.0.2" = {
@@ -577,7 +568,7 @@ let
       version = "1.1.3";
       src = fetchurl {
         url = "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz";
-        sha512 = "2224a32flpf40nhq6rj4idzkcdz0vx65bfxp90hd06db18l6fiqgxz1xnaygm3pbfb1a6v73hl8ryq4996b09zwwins0bqprx0hwsa0";
+        sha512 = "QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==";
       };
     };
     "wrappy-1.0.2" = {
@@ -595,7 +586,7 @@ let
       version = "3.1.1";
       src = fetchurl {
         url = "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz";
-        sha512 = "3ig31a6zfbdlrs3l77a8avpp17hajryhyq2xk4h3ayc4dmxch146rdk7q1s1jgx9qvmxq125r0xq2bvnq0rq63m75k9y7wglm0hd1bb";
+        sha512 = "a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==";
       };
     };
   };
@@ -604,10 +595,10 @@ in
   node-pre-gyp = nodeEnv.buildNodePackage {
     name = "node-pre-gyp";
     packageName = "node-pre-gyp";
-    version = "0.14.0";
+    version = "0.17.0";
     src = fetchurl {
-      url = "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz";
-      sha512 = "32drv6q9sh4i2ff2djd1dhxxxiaiymmgycbm12wpkz9vxspnldxgmppf9sazp3c72771a1p5s4kkzgwn4w1csyz9bn4zdbdnq5w6azq";
+      url = "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.17.0.tgz";
+      sha512 = "abzZt1hmOjkZez29ppg+5gGqdPLUuJeAEwVPtHYEJgx0qzttCbcKFpxrCQn2HYbwCv2c+7JwH4BgEzFkUGpn4A==";
     };
     dependencies = [
       sources."abbrev-1.1.1"
@@ -621,7 +612,7 @@ in
       sources."concat-map-0.0.1"
       sources."console-control-strings-1.1.0"
       sources."core-util-is-1.0.2"
-      sources."debug-3.2.6"
+      sources."debug-3.2.7"
       sources."deep-extend-0.6.0"
       sources."delegates-1.0.0"
       sources."detect-libc-1.0.3"
@@ -634,16 +625,16 @@ in
       sources."ignore-walk-3.0.3"
       sources."inflight-1.0.6"
       sources."inherits-2.0.4"
-      sources."ini-1.3.5"
+      sources."ini-1.3.8"
       sources."is-fullwidth-code-point-1.0.0"
       sources."isarray-1.0.0"
       sources."minimatch-3.0.4"
-      sources."minimist-0.0.8"
+      sources."minimist-1.2.5"
       sources."minipass-2.9.0"
       sources."minizlib-1.3.3"
-      sources."mkdirp-0.5.1"
-      sources."ms-2.1.2"
-      sources."needle-2.4.0"
+      sources."mkdirp-0.5.5"
+      sources."ms-2.1.3"
+      sources."needle-2.6.0"
       sources."nopt-4.0.3"
       sources."npm-bundled-1.1.1"
       sources."npm-normalize-package-bin-1.0.1"
@@ -657,11 +648,7 @@ in
       sources."osenv-0.1.5"
       sources."path-is-absolute-1.0.1"
       sources."process-nextick-args-2.0.1"
-      (sources."rc-1.2.8" // {
-        dependencies = [
-          sources."minimist-1.2.5"
-        ];
-      })
+      sources."rc-1.2.8"
       sources."readable-stream-2.3.7"
       sources."rimraf-2.7.1"
       sources."safe-buffer-5.1.2"
@@ -669,7 +656,7 @@ in
       sources."sax-1.2.4"
       sources."semver-5.7.1"
       sources."set-blocking-2.0.0"
-      sources."signal-exit-3.0.2"
+      sources."signal-exit-3.0.3"
       sources."string-width-1.0.2"
       sources."string_decoder-1.1.1"
       sources."strip-ansi-3.0.1"
@@ -690,4 +677,4 @@ in
     bypassCache = true;
     reconstructLock = true;
   };
-}
\ No newline at end of file
+}
diff --git a/pkgs/misc/beep/default.nix b/pkgs/misc/beep/default.nix
index 40a8849ba3f..92d84bdf6dc 100644
--- a/pkgs/misc/beep/default.nix
+++ b/pkgs/misc/beep/default.nix
@@ -1,25 +1,25 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchFromGitHub }:
 
 # this package is working only as root
 # in order to work as a non privileged user you would need to suid the bin
 
-stdenv.mkDerivation {
-  name = "beep-1.3";
-  src = fetchurl {
-    url = "http://www.johnath.com/beep/beep-1.3.tar.gz";
-    sha256 = "0bgch6jq5cahakk3kbr9549iysf2dik09afixxy5brbxk1xfzb2r";
+stdenv.mkDerivation rec {
+  pname = "beep";
+  version = "1.4.9";
+
+  src = fetchFromGitHub {
+    owner = "spkr-beep";
+    repo = "beep";
+    rev = "v${version}";
+    sha256 = "JLaoiINHpIFWSqsRl8wJ/NeBu7SCcPuT/BzY8szEu0o=";
   };
 
-  makeFlags = [ "INSTALL_DIR=\${out}/bin/" "MAN_DIR=\${out}/man/man1/" ];
+  makeFlags = [ "DESTDIR=\${out}" "prefix="];
 
-  preInstall = ''
-    mkdir -p $out/bin
-    mkdir -p $out/man/man1
-  '';
-  meta = {
+  meta = with lib; {
     description = "The advanced PC speaker beeper";
-    homepage = "http://www.johnath.com/beep/";
-    license = stdenv.lib.licenses.gpl2;
-    platforms = stdenv.lib.platforms.linux;
+    homepage = "https://github.com/spkr-beep/beep";
+    license = licenses.gpl2Only;
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/misc/brightnessctl/default.nix b/pkgs/misc/brightnessctl/default.nix
index 37956785a5b..2fab8b4bd67 100644
--- a/pkgs/misc/brightnessctl/default.nix
+++ b/pkgs/misc/brightnessctl/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, pkg-config, systemd }:
+{ lib, stdenv, fetchFromGitHub, pkg-config, systemd }:
 
 stdenv.mkDerivation rec {
   pname = "brightnessctl";
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ pkg-config ];
   buildInputs = [ systemd ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/Hummer12007/brightnessctl";
     description = "This program allows you read and control device brightness";
     license = licenses.mit;
diff --git a/pkgs/misc/calaos/installer/default.nix b/pkgs/misc/calaos/installer/default.nix
index 6254c9c24f4..575471b2ee5 100644
--- a/pkgs/misc/calaos/installer/default.nix
+++ b/pkgs/misc/calaos/installer/default.nix
@@ -1,14 +1,14 @@
-{ mkDerivation, stdenv, fetchFromGitHub, qmake, qttools, qtbase }:
+{ mkDerivation, lib, stdenv, fetchFromGitHub, qmake, qttools, qtbase }:
 
 mkDerivation rec {
-  name = "calaos_installer-3.1";
-  version = "3.1";
+  pname = "calaos_installer";
+  version = "3.5";
 
   src = fetchFromGitHub {
     owner = "calaos";
     repo = "calaos_installer";
     rev = "v${version}";
-    sha256 = "0g8igj5sax5vjqzrpbil7i6329708lqqwvg5mwiqd0zzzha9sawd";
+    sha256 = "hx7XVF2iueKFR67U0EvSK1vYZnJBnuOpUOkSjx7h1XY=";
   };
 
   nativeBuildInputs = [ qmake qttools ];
@@ -24,7 +24,7 @@ mkDerivation rec {
     cp -a calaos_installer $out/bin
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Calaos Installer, a tool to create calaos configuration";
     homepage = "https://www.calaos.fr/";
     license = licenses.gpl3Plus;
diff --git a/pkgs/misc/cups/cups-pk-helper.nix b/pkgs/misc/cups/cups-pk-helper.nix
index 3151bace558..f5edc729340 100644
--- a/pkgs/misc/cups/cups-pk-helper.nix
+++ b/pkgs/misc/cups/cups-pk-helper.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, intltool, pkgconfig, glib, polkit, cups, fetchpatch }:
+{ lib, stdenv, fetchurl, intltool, pkg-config, glib, polkit, cups, fetchpatch }:
 
 stdenv.mkDerivation rec {
   version = "0.2.6";
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
     sha256 = "0a52jw6rm7lr5nbyksiia0rn7sasyb5cjqcb95z1wxm2yprgi6lm";
   };
 
-  nativeBuildInputs = [ pkgconfig intltool ];
+  nativeBuildInputs = [ pkg-config intltool ];
   buildInputs = [ glib polkit cups ];
 
   patches = [
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
     })
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "PolicyKit helper to configure cups with fine-grained privileges";
     homepage = "http://www.freedesktop.org/wiki/Software/cups-pk-helper/";
     license = licenses.gpl2;
diff --git a/pkgs/misc/cups/default.nix b/pkgs/misc/cups/default.nix
index 8736edd0e61..3812ae500e5 100644
--- a/pkgs/misc/cups/default.nix
+++ b/pkgs/misc/cups/default.nix
@@ -1,6 +1,6 @@
-{ stdenv
+{ lib, stdenv
 , fetchurl
-, pkgconfig
+, pkg-config
 , removeReferencesTo
 , zlib
 , libjpeg
@@ -9,7 +9,7 @@
 , pam
 , dbus
 , enableSystemd ? stdenv.isLinux && !stdenv.hostPlatform.isMusl
-, systemd ? null
+, systemd
 , acl
 , gmp
 , darwin
@@ -20,12 +20,10 @@
 , coreutils
 }:
 
-assert enableSystemd -> systemd != null;
-
 ### IMPORTANT: before updating cups, make sure the nixos/tests/printing.nix test
 ### works at least for your platform.
 
-with stdenv.lib;
+with lib;
 stdenv.mkDerivation rec {
   pname = "cups";
 
@@ -48,7 +46,7 @@ stdenv.mkDerivation rec {
       --replace 'cupsFileFind("cat", "/bin' 'cupsFileFind("cat", "${coreutils}/bin'
   '';
 
-  nativeBuildInputs = [ pkgconfig removeReferencesTo ];
+  nativeBuildInputs = [ pkg-config removeReferencesTo ];
 
   buildInputs = [ zlib libjpeg libpng libtiff libusb1 gnutls libpaper ]
     ++ optionals stdenv.isLinux [ avahi pam dbus ]
diff --git a/pkgs/misc/cups/drivers/brgenml1cupswrapper/default.nix b/pkgs/misc/cups/drivers/brgenml1cupswrapper/default.nix
index 5faf6a2198b..ec02e8c4f0e 100644
--- a/pkgs/misc/cups/drivers/brgenml1cupswrapper/default.nix
+++ b/pkgs/misc/cups/drivers/brgenml1cupswrapper/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, makeWrapper, cups, perl, coreutils, gnused, gnugrep
+{ lib, stdenv, fetchurl, makeWrapper, cups, perl, coreutils, gnused, gnugrep
 , brgenml1lpr, debugLvl ? "0"}:
 
 /*
@@ -117,8 +117,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "Brother BrGenML1 CUPS wrapper driver";
     homepage = "http://www.brother.com";
-    platforms = stdenv.lib.platforms.linux;
-    license = stdenv.lib.licenses.gpl2Plus;
-    maintainers = with stdenv.lib.maintainers; [ jraygauthier ];
+    platforms = lib.platforms.linux;
+    license = lib.licenses.gpl2Plus;
+    maintainers = with lib.maintainers; [ jraygauthier ];
   };
 }
diff --git a/pkgs/misc/cups/drivers/brgenml1lpr/default.nix b/pkgs/misc/cups/drivers/brgenml1lpr/default.nix
index 985de63637c..6cdff2c4124 100644
--- a/pkgs/misc/cups/drivers/brgenml1lpr/default.nix
+++ b/pkgs/misc/cups/drivers/brgenml1lpr/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, cups, perl, glibc, ghostscript, which, makeWrapper}:
+{ lib, stdenv, fetchurl, cups, perl, glibc, ghostscript, which, makeWrapper}:
 
 /*
     [Setup instructions](http://support.brother.com/g/s/id/linux/en/instruction_prn1a.html).
@@ -28,7 +28,7 @@
 */
 
 let
-  myPatchElf = file: with stdenv.lib; ''
+  myPatchElf = file: with lib; ''
     patchelf --set-interpreter \
       ${stdenv.glibc}/lib/ld-linux${optionalString stdenv.is64bit "-x86-64"}.so.2 \
       ${file}
@@ -86,8 +86,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "Brother BrGenML1 LPR driver";
     homepage = "http://www.brother.com";
-    platforms = stdenv.lib.platforms.linux;
-    license = stdenv.lib.licenses.unfreeRedistributable;
-    maintainers = with stdenv.lib.maintainers; [ jraygauthier ];
+    platforms = lib.platforms.linux;
+    license = lib.licenses.unfreeRedistributable;
+    maintainers = with lib.maintainers; [ jraygauthier ];
   };
 }
diff --git a/pkgs/misc/cups/drivers/brlaser/default.nix b/pkgs/misc/cups/drivers/brlaser/default.nix
index 141e3f9e612..b0dfd8d8170 100644
--- a/pkgs/misc/cups/drivers/brlaser/default.nix
+++ b/pkgs/misc/cups/drivers/brlaser/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, cmake, zlib, cups }:
+{ lib, stdenv, fetchFromGitHub, cmake, zlib, cups }:
 
 stdenv.mkDerivation rec {
   pname = "brlaser";
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
 
   cmakeFlags = [ "-DCUPS_SERVER_BIN=lib/cups" "-DCUPS_DATA_DIR=share/cups" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A CUPS driver for Brother laser printers";
     longDescription =
       ''
diff --git a/pkgs/misc/cups/drivers/brother/mfcl3770cdw/default.nix b/pkgs/misc/cups/drivers/brother/mfcl3770cdw/default.nix
index de93a5a7f8b..10ed4368ce2 100644
--- a/pkgs/misc/cups/drivers/brother/mfcl3770cdw/default.nix
+++ b/pkgs/misc/cups/drivers/brother/mfcl3770cdw/default.nix
@@ -37,7 +37,7 @@ in rec {
         --replace "BR_PRT_PATH =~" "BR_PRT_PATH = \"$dir\"; #" \
         --replace "PRINTER =~" "PRINTER = \"${model}\"; #"
       wrapProgram $dir/lpd/filter_${model} \
-        --prefix PATH : ${stdenv.lib.makeBinPath [
+        --prefix PATH : ${lib.makeBinPath [
           coreutils ghostscript gnugrep gnused which
         ]}
     # need to use i686 glibc here, these are 32bit proprietary binaries
@@ -48,9 +48,9 @@ in rec {
     meta = {
       description = "Brother ${lib.strings.toUpper model} driver";
       homepage = "http://www.brother.com/";
-      license = stdenv.lib.licenses.unfree;
+      license = lib.licenses.unfree;
       platforms = [ "x86_64-linux" "i686-linux" ];
-      maintainers = [ stdenv.lib.maintainers.steveej ];
+      maintainers = [ lib.maintainers.steveej ];
     };
   };
 
@@ -70,7 +70,7 @@ in rec {
         --replace "basedir =~" "basedir = \"$basedir\"; #" \
         --replace "PRINTER =~" "PRINTER = \"${model}\"; #"
       wrapProgram $dir/cupswrapper/brother_lpdwrapper_${model} \
-        --prefix PATH : ${stdenv.lib.makeBinPath [ coreutils gnugrep gnused ]}
+        --prefix PATH : ${lib.makeBinPath [ coreutils gnugrep gnused ]}
       mkdir -p $out/lib/cups/filter
       mkdir -p $out/share/cups/model
       ln $dir/cupswrapper/brother_lpdwrapper_${model} $out/lib/cups/filter
@@ -80,9 +80,9 @@ in rec {
     meta = {
       description = "Brother ${lib.strings.toUpper model} CUPS wrapper driver";
       homepage = "http://www.brother.com/";
-      license = stdenv.lib.licenses.gpl2;
+      license = lib.licenses.gpl2;
       platforms = [ "x86_64-linux" "i686-linux" ];
-      maintainers = [ stdenv.lib.maintainers.steveej ];
+      maintainers = [ lib.maintainers.steveej ];
     };
   };
 }
diff --git a/pkgs/misc/cups/drivers/canon/default.nix b/pkgs/misc/cups/drivers/canon/default.nix
index dbc6390ef49..0d6ec276b5f 100644
--- a/pkgs/misc/cups/drivers/canon/default.nix
+++ b/pkgs/misc/cups/drivers/canon/default.nix
@@ -1,4 +1,5 @@
-{stdenv, fetchurl, unzip, autoreconfHook, libtool, makeWrapper, cups, ghostscript, pkgsi686Linux, zlib }:
+{ lib, stdenv, fetchurl, unzip, autoreconfHook, libtool, makeWrapper, cups
+, ghostscript, pkgsi686Linux, zlib }:
 
 let
 
@@ -20,7 +21,7 @@ in
 
 stdenv.mkDerivation {
   pname = "canon-cups-ufr2";
-  version = version;
+  inherit version;
   src = src_canon;
 
   phases = [ "unpackPhase" "installPhase" ];
@@ -214,7 +215,7 @@ stdenv.mkDerivation {
       --prefix PATH ":" "$out/bin"
     '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "CUPS Linux drivers for Canon printers";
     homepage = "http://www.canon.com/";
     license = licenses.unfree;
diff --git a/pkgs/misc/cups/drivers/carps-cups/default.nix b/pkgs/misc/cups/drivers/carps-cups/default.nix
new file mode 100644
index 00000000000..32e92da1608
--- /dev/null
+++ b/pkgs/misc/cups/drivers/carps-cups/default.nix
@@ -0,0 +1,44 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cups
+}:
+
+stdenv.mkDerivation {
+  pname = "carps-cups";
+  version = "unstable-2018-03-05";
+
+  src = fetchFromGitHub {
+    owner = "ondrej-zary";
+    repo = "carps-cups";
+    rev = "18d80d1d6f473dd9132e4b6d8b5c592c74982f17";
+    sha256 = "0mjj9hs5lqxi0qamgb4sxfz4fvf7ggi66bxd37bkz3fl0g9xff70";
+  };
+
+  preBuild = ''
+    export CUPS_DATADIR="${cups}/share/cups"
+  '';
+
+  installPhase = ''
+    CUPSDIR="$out/lib/cups"
+    CUPSDATADIR="$out/share/cups"
+
+    mkdir -p "$CUPSDIR/filter" "$CUPSDATADIR/drv" "$CUPSDATADIR/usb"
+
+    install -s rastertocarps $CUPSDIR/filter
+    install -m 644 carps.drv $CUPSDATADIR/drv/
+    install -m 644 carps.usb-quirks $CUPSDATADIR/usb/
+  '';
+
+  buildInputs = [ cups ];
+
+  meta = with lib; {
+    description = "CUPS Linux drivers for Canon printers";
+    homepage = "https://www.canon.com/";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [
+      ewok
+    ];
+  };
+}
+
diff --git a/pkgs/misc/cups/drivers/cnijfilter2/default.nix b/pkgs/misc/cups/drivers/cnijfilter2/default.nix
index b04ef89d215..c46bb564a1e 100644
--- a/pkgs/misc/cups/drivers/cnijfilter2/default.nix
+++ b/pkgs/misc/cups/drivers/cnijfilter2/default.nix
@@ -4,11 +4,11 @@
 stdenv.mkDerivation {
   pname = "cnijfilter2";
 
-  version = "5.70";
+  version = "6.00";
 
   src = fetchzip {
-    url = "http://gdlp01.c-wss.com/gds/0/0100009930/01/cnijfilter2-source-5.70-1.tar.gz";
-    sha256 = "045zjsmaidn1m44ki6m1018gjzbj77gm234n5i2lshxpbzpyh0is";
+    url = "https://gdlp01.c-wss.com/gds/9/0100010739/01/cnijfilter2-source-6.00-1.tar.gz";
+    sha256 = "1n4vq44zya0n4a7jvq3yyqy7dcvc2911cjvxmq48zqicb2xdgafr";
   };
 
   buildInputs = [
@@ -114,10 +114,21 @@ stdenv.mkDerivation {
   '';
 
   meta = with lib; {
-    description = "Canon InkJet printer drivers for the MG7500, MG6700, MG6600, MG5600, MG2900, MB2000, MB2300, iB4000, MB5000, MB5300, iP110, E450, MX490, E480, MG7700, MG6900, MG6800, MG5700, MG3600, and G3000 series.";
-    homepage = "http://support-th.canon-asia.com/contents/TH/EN/0100712901.html";
+    description = "Canon InkJet printer drivers for many Pixma series printers.";
+    longDescription = ''
+      Canon InjKet printer drivers for series E200, E300, E3100, E3300, E4200, E450, E470, E480,
+      G3000, G3010, G4000, G4010, G5000, G5080, G6000, G6050, G6080, G7000, G7050, G7080, GM2000,
+      GM2080, GM4000, GM4080, iB4000, iB4100, iP110, MB2000, MB2100, MB2300, MB2700, MB5000,
+      MB5100, MB5300, MB5400, MG2900, MG3000, MG3600, MG5600, MG5700, MG6600, MG6700, MG6800,
+      MG6900, MG7500, MG7700, MX490, TR4500, TR703, TR7500, TR7530, TR8500, TR8530, TR8580, TR9530,
+      TS200, TS300, TS3100, TS3300, TS5000, TS5100, TS5300, TS5380, TS6000, TS6100, TS6130, TS6180,
+      TS6200, TS6230, TS6280, TS6300, TS6330, TS6380, TS700, TS708, TS7330, TS8000, TS8100, TS8130,
+      TS8180, TS8200, TS8230, TS8280, TS8300, TS8330, TS8380, TS9000, TS9100, TS9180, TS9500,
+      TS9580, XK50, XK60, XK70, XK80.
+    '';
+    homepage = "https://hk.canon/en/support/0101048401/1";
     license = licenses.unfree;
-    platforms = platforms.linux;
+    platforms = [ "i686-linux" "x86_64-linux" ];
     maintainers = with maintainers; [ cstrahan ];
   };
 }
diff --git a/pkgs/misc/cups/drivers/cnijfilter_4_00/default.nix b/pkgs/misc/cups/drivers/cnijfilter_4_00/default.nix
index 9b328c20b71..1f0f7ab6e91 100644
--- a/pkgs/misc/cups/drivers/cnijfilter_4_00/default.nix
+++ b/pkgs/misc/cups/drivers/cnijfilter_4_00/default.nix
@@ -41,6 +41,7 @@ in stdenv.mkDerivation {
     ./patches/cnijfilter-4.00-4-ppd.patch
     ./patches/cnijfilter-4.00-5-abi_x86_32.patch
     ./patches/cnijfilter-4.00-6-headers.patch
+    ./patches/cnijfilter-4.00-7-sysctl.patch
   ];
 
   postPatch = ''
@@ -141,7 +142,7 @@ in stdenv.mkDerivation {
   dontPatchELF = true;
 
   meta = with lib; {
-    description = "Canon InkJet printer drivers for the MG2400 MG2500 MG3500 MG5500 MG6400 MG6500 MG7100 and P200 series.";
+    description = "Canon InkJet printer drivers for the MG2400 MG2500 MG3500 MG5500 MG6400 MG6500 MG7100 and P200 series";
     homepage = "https://www.canon-europe.com/support/consumer_products/products/fax__multifunctionals/inkjet/pixma_mg_series/pixma_mg5550.aspx?type=drivers&driverdetailid=tcm:13-1094072";
     license = licenses.unfree;
     platforms = platforms.linux;
diff --git a/pkgs/misc/cups/drivers/cnijfilter_4_00/patches/cnijfilter-4.00-7-sysctl.patch b/pkgs/misc/cups/drivers/cnijfilter_4_00/patches/cnijfilter-4.00-7-sysctl.patch
new file mode 100644
index 00000000000..a28ca208492
--- /dev/null
+++ b/pkgs/misc/cups/drivers/cnijfilter_4_00/patches/cnijfilter-4.00-7-sysctl.patch
@@ -0,0 +1,10 @@
+--- a/cnijnpr/src/cnijnpr.c
++++ b/cnijnpr/src/cnijnpr.c
+@@ -33,7 +33,6 @@
+ #include <signal.h>
+ #include <sys/ioctl.h>
+ #include <net/if.h>
+-#include <sys/sysctl.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+ #include <config.h>
diff --git a/pkgs/misc/cups/drivers/cups-bjnp/default.nix b/pkgs/misc/cups/drivers/cups-bjnp/default.nix
index 9dbfdd8b803..40243bb9196 100644
--- a/pkgs/misc/cups/drivers/cups-bjnp/default.nix
+++ b/pkgs/misc/cups/drivers/cups-bjnp/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, cups}:
+{lib, stdenv, fetchurl, cups}:
 
 stdenv.mkDerivation rec {
   name = "cups-bjnp-1.2.2";
@@ -25,6 +25,6 @@ stdenv.mkDerivation rec {
       Canon printer. The design is based on reverse engineering of the protocol.
     '';
     homepage = "http://cups-bjnp.sourceforge.net";
-    platforms = stdenv.lib.platforms.linux;
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/misc/cups/drivers/cups-drv-rastertosag-gdi/default.nix b/pkgs/misc/cups/drivers/cups-drv-rastertosag-gdi/default.nix
new file mode 100644
index 00000000000..d4914365545
--- /dev/null
+++ b/pkgs/misc/cups/drivers/cups-drv-rastertosag-gdi/default.nix
@@ -0,0 +1,53 @@
+{ lib
+, fetchzip
+, fetchpatch
+, cups
+, python3Packages
+}:
+
+python3Packages.buildPythonApplication rec {
+  pname = "rastertosag-gdi";
+  version = "0.1";
+  src = fetchzip {
+    url = "https://www.openprinting.org/download/printing/${pname}/${pname}-${version}.tar.gz";
+    sha256 = "1ldplpv497j8vhw24sksg3fiw8c5pqr0wajajh7p5xpvb6zlcmvw";
+  };
+  patches = [
+    # port to python 3
+    ( fetchpatch {
+      url = "https://sources.debian.org/data/main/r/${pname}/0.1-7/debian/patches/0001-${pname}-python3.patch";
+      sha256 = "1l3xbrs67025595k9ba5794q3s74anizpbxwsshcfhmbrzd9h8hg";
+    })
+  ];
+  format = "other";
+  nativeBuildInputs = [ (lib.getBin cups) ];
+  # The source image also brings pre-built ppd files,
+  # be we prefer to generate from source where possible, so
+  # the following line generates ppd files from the drv file.
+  postBuild = ''
+    ppdc -v -d . -I "${cups}/share/cups/ppdc" rastertosag-gdi.drv
+  '';
+  installPhase = ''
+    runHook preInstall
+    install -vDm 0644 -t "${placeholder "out"}/share/cups/model/rastertosag-gdi/" *.ppd
+    install -vDm 0755 -t "${placeholder "out"}/bin/" rastertosag-gdi
+    install -vd "${placeholder "out"}/lib/cups/filter/"
+    ln -vst "${placeholder "out"}/lib/cups/filter/" "${placeholder "out"}/bin/rastertosag-gdi"
+    runHook postInstall
+  '';
+  meta = {
+    description = "CUPS driver for Ricoh Aficio SP 1000S and SP 1100S printers";
+    downloadPage = "https://www.openprinting.org/download/printing/rastertosag-gdi/";
+    homepage = "https://www.openprinting.org/driver/rastertosag-gdi/";
+    license = lib.licenses.free;  # just "GPL", according to README
+    maintainers = [ lib.maintainers.yarny ];
+    longDescription = ''
+      This package brings CUPS raster filter
+      for Ricoh Aficio SP 1000S and SP 1100S.
+      In contrast to other Ricoh laser printers,
+      they use the proprietary SAG-GDI raster format by
+      Sagem Communication and do not understand PCL or PostScript.
+      Therefore they do not work with Ricoh's PPD files.
+    '';
+  };
+}
diff --git a/pkgs/misc/cups/drivers/dymo/default.nix b/pkgs/misc/cups/drivers/dymo/default.nix
index eccbae60104..97dcbde2b8b 100644
--- a/pkgs/misc/cups/drivers/dymo/default.nix
+++ b/pkgs/misc/cups/drivers/dymo/default.nix
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "CUPS Linux drivers and SDK for DYMO printers";
-    homepage = "http://www.dymo.com/";
+    homepage = "https://www.dymo.com/";
     license = lib.licenses.gpl2;
     maintainers = with lib.maintainers; [ makefu ];
   };
diff --git a/pkgs/misc/cups/drivers/estudio/default.nix b/pkgs/misc/cups/drivers/estudio/default.nix
index 9aaae31488d..37b39556d93 100644
--- a/pkgs/misc/cups/drivers/estudio/default.nix
+++ b/pkgs/misc/cups/drivers/estudio/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, perl }:
+{ lib, stdenv, fetchurl, perl }:
 
 stdenv.mkDerivation {
   pname = "cups-toshiba-estudio";
@@ -31,7 +31,7 @@ stdenv.mkDerivation {
     chmod 755 $out/share/cups/model/Toshiba/TOSHIBA_ColorMFP_CUPS.gz
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Printer only driver for the Toshiba e-STUDIO class of printers";
     longDescription = ''
       This driver supports the following printers: TOSHIBA e-STUDIO2000AC,
diff --git a/pkgs/misc/cups/drivers/fxlinuxprint/default.nix b/pkgs/misc/cups/drivers/fxlinuxprint/default.nix
index 30d73787104..36134780e9b 100644
--- a/pkgs/misc/cups/drivers/fxlinuxprint/default.nix
+++ b/pkgs/misc/cups/drivers/fxlinuxprint/default.nix
@@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
     mv usr/share/ppd/FujiXerox/* $out/share/cups/model
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Fuji Xerox Linux Printer Driver";
     longDescription = ''
       DocuPrint P365/368 d
diff --git a/pkgs/misc/cups/drivers/googlecloudprint/default.nix b/pkgs/misc/cups/drivers/googlecloudprint/default.nix
deleted file mode 100644
index 9b612c43a00..00000000000
--- a/pkgs/misc/cups/drivers/googlecloudprint/default.nix
+++ /dev/null
@@ -1,64 +0,0 @@
-{ stdenv, lib, fetchFromGitHub, python2, python2Packages, file, makeWrapper, cups }:
-
-# Setup instructions can be found at https://github.com/simoncadman/CUPS-Cloud-Print#configuration
-# So the nix version is something like:
-# nix run nixpkgs.cups-googlecloudprint -c sudo setupcloudprint
-# nix run nixpkgs.cups-googlecloudprint -c sudo listcloudprinters
-
-let pythonEnv = python2.buildEnv.override {
-  extraLibs = with python2Packages; [
-    six
-    httplib2
-    pycups
-  ];
-};
-
-in stdenv.mkDerivation rec {
-  pname = "cups-googlecloudprint";
-  version = "20160502";
-
-  src = fetchFromGitHub {
-    owner  = "simoncadman";
-    repo   = "CUPS-Cloud-Print";
-    rev    = version;
-    sha256 = "0760i12w7jrhq7fsgyz3yqla5cvpjb45n6m2jz96wsy3p3xf6dzz";
-  };
-
-  buildInputs = [ cups makeWrapper ];
-
-  cupsgroup = "nonexistantgroup";
-  NOPERMS = 1;
-
-  postConfigure = ''
-    substituteInPlace Makefile --replace "${cups}" "$out"
-  '';
-
-  postInstall = ''
-    pushd "$out"
-    for s in lib/cups/backend/gcp lib/cups/driver/cupscloudprint
-    do
-      echo "Wrapping $s..."
-      wrapProgram "$out/$s" --set PATH "${lib.makeBinPath [pythonEnv file]}" --prefix PYTHONPATH : "$out/share/cloudprint-cups"
-    done
-
-    mkdir bin
-
-    for s in share/cloudprint-cups/*.py
-    do
-      if [ -x "$s" ] # Only wrapping those Python scripts marked as executable
-      then
-        o="bin/$(echo $s | sed 's,share/cloudprint-cups/\(.*\).py,\1,')"
-        echo "Wrapping $o -> $s..."
-        makeWrapper "$out/$s" "$o" --set PATH "${lib.makeBinPath [pythonEnv file]}" --prefix PYTHONPATH : "$out/share/cloudprint-cups"
-      fi
-    done
-    popd
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Google Cloud Print driver for CUPS, allows printing to printers hosted on Google Cloud Print";
-    homepage    = "http://ccp.niftiestsoftware.com";
-    platforms   = platforms.linux;
-    license     = licenses.gpl3;
-  };
-}
diff --git a/pkgs/misc/cups/drivers/hl1110/default.nix b/pkgs/misc/cups/drivers/hl1110/default.nix
index 194ef6cc327..916ac32c2e9 100644
--- a/pkgs/misc/cups/drivers/hl1110/default.nix
+++ b/pkgs/misc/cups/drivers/hl1110/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, cups, dpkg, gnused, makeWrapper, ghostscript, file, a2ps, coreutils, gawk}:
+{lib, stdenv, fetchurl, cups, dpkg, gnused, makeWrapper, ghostscript, file, a2ps, coreutils, gawk}:
 
 let
   version = "3.0.1-1";
@@ -42,10 +42,10 @@ stdenv.mkDerivation {
     patchelf --set-interpreter ${stdenv.glibc.out}/lib/ld-linux.so.2 $out/opt/brother/Printers/HL1110/inf/braddprinter
 
     wrapProgram $out/opt/brother/Printers/HL1110/lpd/psconvert2 \
-    --prefix PATH ":" ${ stdenv.lib.makeBinPath [ gnused coreutils gawk ] }
+    --prefix PATH ":" ${ lib.makeBinPath [ gnused coreutils gawk ] }
 
     wrapProgram $out/opt/brother/Printers/HL1110/lpd/filter_HL1110 \
-    --prefix PATH ":" ${ stdenv.lib.makeBinPath [ ghostscript a2ps file gnused coreutils ] }
+    --prefix PATH ":" ${ lib.makeBinPath [ ghostscript a2ps file gnused coreutils ] }
 
 
     dpkg-deb -x ${cupsdeb} $out
@@ -59,15 +59,15 @@ stdenv.mkDerivation {
     ln -s $out/opt/brother/Printers/HL1110/cupswrapper/brcupsconfig4 $out/lib/cups/filter/brcupsconfig4
 
     wrapProgram $out/opt/brother/Printers/HL1110/cupswrapper/brother_lpdwrapper_HL1110 \
-    --prefix PATH ":" ${ stdenv.lib.makeBinPath [ gnused coreutils gawk ] }
+    --prefix PATH ":" ${ lib.makeBinPath [ gnused coreutils gawk ] }
 
     '';
 
   meta = {
     homepage = "http://www.brother.com/";
     description = "Brother HL1110 printer driver";
-    license = stdenv.lib.licenses.unfree;
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.unfree;
+    platforms = lib.platforms.linux;
     downloadPage = "http://support.brother.com/g/b/downloadlist.aspx?c=eu_ot&lang=en&prod=hl1110_us_eu_as&os=128#SelectLanguageType-561_0_1";
   };
 }
diff --git a/pkgs/misc/cups/drivers/hl1210w/default.nix b/pkgs/misc/cups/drivers/hl1210w/default.nix
index 88947ed3339..975e07aa6c3 100644
--- a/pkgs/misc/cups/drivers/hl1210w/default.nix
+++ b/pkgs/misc/cups/drivers/hl1210w/default.nix
@@ -1,4 +1,4 @@
-{stdenv, pkgsi686Linux, fetchurl, cups, dpkg, gnused, makeWrapper, ghostscript, file, a2ps, coreutils, gawk}:
+{lib, stdenv, pkgsi686Linux, fetchurl, cups, dpkg, gnused, makeWrapper, ghostscript, file, a2ps, coreutils, gawk}:
 
 let
   version = "3.0.1-1";
@@ -33,9 +33,9 @@ stdenv.mkDerivation {
     patchelf --set-interpreter ${pkgsi686Linux.glibc.out}/lib/ld-linux.so.2 $out/opt/brother/Printers/HL1210W/inf/braddprinter
 
     wrapProgram $out/opt/brother/Printers/HL1210W/lpd/psconvert2 \
-      --prefix PATH ":" ${ stdenv.lib.makeBinPath [ gnused coreutils gawk ] }
+      --prefix PATH ":" ${ lib.makeBinPath [ gnused coreutils gawk ] }
     wrapProgram $out/opt/brother/Printers/HL1210W/lpd/filter_HL1210W \
-      --prefix PATH ":" ${ stdenv.lib.makeBinPath [ ghostscript a2ps file gnused coreutils ] }
+      --prefix PATH ":" ${ lib.makeBinPath [ ghostscript a2ps file gnused coreutils ] }
 
     # install cups
     dpkg-deb -x ${cupsdeb} $out
@@ -49,14 +49,14 @@ stdenv.mkDerivation {
     ln -s $out/opt/brother/Printers/HL1210W/cupswrapper/brcupsconfig4 $out/lib/cups/filter/brcupsconfig4
 
     wrapProgram $out/opt/brother/Printers/HL1210W/cupswrapper/brother_lpdwrapper_HL1210W \
-      --prefix PATH ":" ${ stdenv.lib.makeBinPath [ gnused coreutils gawk ] }
+      --prefix PATH ":" ${ lib.makeBinPath [ gnused coreutils gawk ] }
     '';
 
   meta = {
     homepage = "http://www.brother.com/";
     description = "Brother HL1210W printer driver";
-    license = stdenv.lib.licenses.unfree;
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.unfree;
+    platforms = lib.platforms.linux;
     downloadPage = "https://support.brother.com/g/b/downloadlist.aspx?c=nz&lang=en&prod=hl1210w_eu_as&os=128";
   };
 }
diff --git a/pkgs/misc/cups/drivers/hl3140cw/default.nix b/pkgs/misc/cups/drivers/hl3140cw/default.nix
index 9dabf053fd6..255fae09c7a 100644
--- a/pkgs/misc/cups/drivers/hl3140cw/default.nix
+++ b/pkgs/misc/cups/drivers/hl3140cw/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, cups, dpkg, gnused, makeWrapper, ghostscript, file, a2ps, coreutils, gawk}:
+{lib, stdenv, fetchurl, cups, dpkg, gnused, makeWrapper, ghostscript, file, a2ps, coreutils, gawk}:
 
 let
   version = "1.1.4-0";
@@ -44,10 +44,10 @@ stdenv.mkDerivation {
     patchelf --set-interpreter ${stdenv.glibc.out}/lib/ld-linux.so.2 $out/usr/bin/brprintconf_hl3140cw
 
     wrapProgram $out/opt/brother/Printers/hl3140cw/lpd/psconvertij2 \
-      --prefix PATH ":" ${ stdenv.lib.makeBinPath [ gnused coreutils gawk ] }
+      --prefix PATH ":" ${ lib.makeBinPath [ gnused coreutils gawk ] }
 
     wrapProgram $out/opt/brother/Printers/hl3140cw/lpd/filterhl3140cw \
-      --prefix PATH ":" ${ stdenv.lib.makeBinPath [ ghostscript a2ps file gnused coreutils ] }
+      --prefix PATH ":" ${ lib.makeBinPath [ ghostscript a2ps file gnused coreutils ] }
 
 
     dpkg-deb -x ${cupsdeb} $out
@@ -65,14 +65,14 @@ stdenv.mkDerivation {
     ln -s $out/opt/brother/Printers/hl3140cw/lpd/filterhl3140cw $out/lib/cups/filter/brother_lpdwrapper_hl3140cw
 
     wrapProgram $out/opt/brother/Printers/hl3140cw/cupswrapper/cupswrapperhl3140cw \
-      --prefix PATH ":" ${ stdenv.lib.makeBinPath [ gnused coreutils gawk ] }
+      --prefix PATH ":" ${ lib.makeBinPath [ gnused coreutils gawk ] }
   '';
 
   meta = {
     homepage = "http://www.brother.com/";
     description = "Brother hl3140cw printer driver";
-    license = stdenv.lib.licenses.unfree;
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.unfree;
+    platforms = lib.platforms.linux;
     downloadPage = "https://support.brother.com/g/b/downloadlist.aspx?c=eu_ot&lang=en&prod=hl3140cw_us_eu&os=128";
   };
 }
diff --git a/pkgs/misc/cups/drivers/hll2340dw/default.nix b/pkgs/misc/cups/drivers/hll2340dw/default.nix
index a291f166288..e61d3ace5f1 100644
--- a/pkgs/misc/cups/drivers/hll2340dw/default.nix
+++ b/pkgs/misc/cups/drivers/hll2340dw/default.nix
@@ -1,4 +1,6 @@
-{stdenv, fetchurl, cups, dpkg, gnused, makeWrapper, ghostscript, file, a2ps, coreutils, gawk, perl, gnugrep, which}:
+{ lib, stdenv, fetchurl, cups, dpkg, gnused, makeWrapper, ghostscript, file
+, a2ps, coreutils, perl, gnugrep, which
+}:
 
 let
   version = "3.2.0-1";
@@ -42,7 +44,7 @@ stdenv.mkDerivation {
       $out/opt/brother/Printers/HLL2340D/cupswrapper/paperconfigml1 \
     ; do
       wrapProgram $f \
-        --prefix PATH : ${stdenv.lib.makeBinPath [
+        --prefix PATH : ${lib.makeBinPath [
           coreutils ghostscript gnugrep gnused
         ]}
     done
@@ -54,10 +56,10 @@ stdenv.mkDerivation {
     ln -s $out/opt/brother/Printers/HLL2340D/cupswrapper/brother-HLL2340D-cups-en.ppd $out/share/cups/model/
 
     wrapProgram $out/opt/brother/Printers/HLL2340D/lpd/filter_HLL2340D \
-      --prefix PATH ":" ${ stdenv.lib.makeBinPath [ ghostscript a2ps file gnused gnugrep coreutils which ] }
+      --prefix PATH ":" ${ lib.makeBinPath [ ghostscript a2ps file gnused gnugrep coreutils which ] }
     '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://www.brother.com/";
     description = "Brother hl-l2340dw printer driver";
     license = licenses.unfree;
diff --git a/pkgs/misc/cups/drivers/hll2390dw-cups/default.nix b/pkgs/misc/cups/drivers/hll2390dw-cups/default.nix
index 0a55ee0c8bb..04087c765e6 100644
--- a/pkgs/misc/cups/drivers/hll2390dw-cups/default.nix
+++ b/pkgs/misc/cups/drivers/hll2390dw-cups/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, makeWrapper
+{ lib, stdenv, fetchurl, makeWrapper
 , cups
 , dpkg
 , a2ps, ghostscript, gnugrep, gnused, coreutils, file, perl, which
@@ -44,7 +44,7 @@ stdenv.mkDerivation rec {
     ; do
       #substituteInPlace $f \
       wrapProgram $f \
-        --prefix PATH : ${stdenv.lib.makeBinPath [
+        --prefix PATH : ${lib.makeBinPath [
           coreutils ghostscript gnugrep gnused
         ]}
     done
@@ -56,10 +56,10 @@ stdenv.mkDerivation rec {
     ln -s $out/opt/brother/Printers/HLL2390DW/cupswrapper/brother-HLL2390DW-cups-en.ppd $out/share/cups/model/
 
     wrapProgram $out/opt/brother/Printers/HLL2390DW/lpd/lpdfilter \
-      --prefix PATH ":" ${ stdenv.lib.makeBinPath [ ghostscript a2ps file gnused gnugrep coreutils which ] }
+      --prefix PATH ":" ${ lib.makeBinPath [ ghostscript a2ps file gnused gnugrep coreutils which ] }
     '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://www.brother.com/";
     description = "Brother HL-L2390DW combined print driver";
     license = licenses.unfree;
diff --git a/pkgs/misc/cups/drivers/kyocera-ecosys-m552x-p502x/default.nix b/pkgs/misc/cups/drivers/kyocera-ecosys-m552x-p502x/default.nix
new file mode 100644
index 00000000000..66e3d036bcc
--- /dev/null
+++ b/pkgs/misc/cups/drivers/kyocera-ecosys-m552x-p502x/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, lib
+, fetchzip
+  # can either be "EU" or "Global"; it's unclear what the difference is
+, region ? "Global"
+}:
+
+stdenv.mkDerivation rec {
+  pname = "cups-kyocera-ecosys-m552x-p502x";
+  version = "8.1602";
+
+  src = fetchzip {
+    url = "https://www.kyoceradocumentsolutions.de/content/download-center/de/drivers/all/Linux_8_1602_ECOSYS_M5521_5526_P5021_5026_zip.download.zip";
+    sha256 = "sha256-XDH5deZmWNghfoO7JaYYvnVq++mbQ8RwLY57L2CKYaY=";
+  };
+
+  installPhase = ''
+    mkdir -p $out/share/cups/model/Kyocera
+    cp ${region}/English/*.PPD $out/share/cups/model/Kyocera/
+  '';
+
+  meta = with lib; {
+    description = "PPD files for Kyocera ECOSYS M5521cdn/M5521cdw/M5526cdn/M5526cdw/P5021cdn/P5021cdw/P5026cdn/P5026cdw";
+    homepage = "https://www.kyoceradocumentsolutions.com";
+    license = licenses.unfree;
+    maintainers = [ maintainers.mbrgm ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/misc/cups/drivers/kyodialog3/default.nix b/pkgs/misc/cups/drivers/kyodialog3/default.nix
index fa16a136f97..7e0a0dea67d 100644
--- a/pkgs/misc/cups/drivers/kyodialog3/default.nix
+++ b/pkgs/misc/cups/drivers/kyodialog3/default.nix
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
   dontStrip = true;
 
   src = fetchzip {
-    url = "https://usa.kyoceradocumentsolutions.com/content/dam/kdc/kdag/downloads/technical/executables/drivers/kyoceradocumentsolutions/us/en/Kyocera_Linux_PPD_Ver_${version}.tar.gz";
+    url = "https://la.kyoceradocumentsolutions.com/content/dam/kdc/kdag/downloads/technical/executables/drivers/kyoceradocumentsolutions/lad/en/Kyocera_Linux_PPD_Ver_${version}.tar.gz";
     sha256 = "11znnlkfssakml7w80gxlz1k59f3nvhph91fkzzadnm9i7a8yjal";
   };
 
diff --git a/pkgs/misc/cups/drivers/mfc9140cdncupswrapper/default.nix b/pkgs/misc/cups/drivers/mfc9140cdncupswrapper/default.nix
new file mode 100644
index 00000000000..0542b2ab303
--- /dev/null
+++ b/pkgs/misc/cups/drivers/mfc9140cdncupswrapper/default.nix
@@ -0,0 +1,68 @@
+{ lib
+, stdenv
+, fetchurl
+, dpkg
+, makeWrapper
+, coreutils
+, gnugrep
+, gnused
+, mfc9140cdnlpr
+, pkgsi686Linux
+, psutils
+}:
+
+stdenv.mkDerivation rec {
+  pname = "mfc9140cdncupswrapper";
+  version = "1.1.4-0";
+
+  src = fetchurl {
+    url = "https://download.brother.com/welcome/dlf100407/${pname}-${version}.i386.deb";
+    sha256 = "18aramgqgra1shdhsa75i0090hk9i267gvabildwsk52kq2b96c6";
+  };
+
+  unpackPhase = ''
+    dpkg-deb -x $src $out
+  '';
+
+  nativeBuildInputs = [
+    dpkg
+    makeWrapper
+  ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    lpr=${mfc9140cdnlpr}/opt/brother/Printers/mfc9140cdn
+    dir=$out/opt/brother/Printers/mfc9140cdn
+
+    interpreter=${pkgsi686Linux.glibc.out}/lib/ld-linux.so.2
+    patchelf --set-interpreter "$interpreter" "$dir/cupswrapper/brcupsconfpt1"
+
+    substituteInPlace $dir/cupswrapper/cupswrappermfc9140cdn \
+      --replace "mkdir -p /usr" ": # mkdir -p /usr" \
+      --replace '/opt/brother/''${device_model}/''${printer_model}/lpd/filter''${printer_model}' "$lpr/lpd/filtermfc9140cdn" \
+      --replace '/usr/share/ppd/Brother/brother_''${printer_model}_printer_en.ppd' "$dir/cupswrapper/brother_mfc9140cdn_printer_en.ppd" \
+      --replace '/usr/share/cups/model/Brother/brother_''${printer_model}_printer_en.ppd' "$dir/cupswrapper/brother_mfc9140cdn_printer_en.ppd" \
+      --replace '/opt/brother/Printers/''${printer_model}/' "$lpr/" \
+      --replace 'nup="psnup' "nup=\"${psutils}/bin/psnup" \
+      --replace '/usr/bin/psnup' "${psutils}/bin/psnup"
+
+    mkdir -p $out/lib/cups/filter
+    mkdir -p $out/share/cups/model
+
+    ln $dir/cupswrapper/cupswrappermfc9140cdn $out/lib/cups/filter
+    ln $dir/cupswrapper/brother_mfc9140cdn_printer_en.ppd $out/share/cups/model
+
+    sed -n '/!ENDOFWFILTER!/,/!ENDOFWFILTER!/p' "$dir/cupswrapper/cupswrappermfc9140cdn" | sed '1 br; b; :r s/.*/printer_model=mfc9140cdn; cat <<!ENDOFWFILTER!/'  | bash > $out/lib/cups/filter/brother_lpdwrapper_mfc9140cdn
+    sed -i "/#! \/bin\/sh/a PATH=${lib.makeBinPath [ coreutils gnused gnugrep ]}:\$PATH" $out/lib/cups/filter/brother_lpdwrapper_mfc9140cdn
+    chmod +x $out/lib/cups/filter/brother_lpdwrapper_mfc9140cdn
+    '';
+
+  meta = with lib; {
+    description = "Brother MFC-9140CDN CUPS wrapper driver";
+    homepage = "http://www.brother.com/";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/pkgs/misc/cups/drivers/mfc9140cdnlpr/default.nix b/pkgs/misc/cups/drivers/mfc9140cdnlpr/default.nix
new file mode 100644
index 00000000000..4128123d643
--- /dev/null
+++ b/pkgs/misc/cups/drivers/mfc9140cdnlpr/default.nix
@@ -0,0 +1,73 @@
+{ stdenv
+, lib
+, fetchurl
+, dpkg
+, makeWrapper
+, coreutils
+, file
+, gawk
+, ghostscript
+, gnused
+, pkgsi686Linux
+}:
+
+stdenv.mkDerivation rec {
+  pname = "mfc9140cdnlpr";
+  version = "1.1.2-1";
+
+  src = fetchurl {
+    url = "https://download.brother.com/welcome/dlf100405/${pname}-${version}.i386.deb";
+    sha256 = "1wqx8njrv078fc3vlq90qyrfg3cw9kr9m6f3qvfnkhq1f95fbslh";
+  };
+
+  unpackPhase = ''
+    dpkg-deb -x $src $out
+  '';
+
+  nativeBuildInputs = [
+    dpkg
+    makeWrapper
+  ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    dir=$out/opt/brother/Printers/mfc9140cdn
+
+    patchelf --set-interpreter ${pkgsi686Linux.glibc.out}/lib/ld-linux.so.2 $dir/lpd/brmfc9140cdnfilter
+
+    wrapProgram $dir/inf/setupPrintcapij \
+      --prefix PATH : ${lib.makeBinPath [
+        coreutils
+      ]}
+
+    substituteInPlace $dir/lpd/filtermfc9140cdn \
+      --replace "BR_CFG_PATH=" "BR_CFG_PATH=\"$dir/\" #" \
+      --replace "BR_LPD_PATH=" "BR_LPD_PATH=\"$dir/\" #"
+
+    wrapProgram $dir/lpd/filtermfc9140cdn \
+      --prefix PATH : ${lib.makeBinPath [
+        coreutils
+        file
+        ghostscript
+        gnused
+      ]}
+
+    substituteInPlace $dir/lpd/psconvertij2 \
+      --replace '`which gs`' "${ghostscript}/bin/gs"
+
+    wrapProgram $dir/lpd/psconvertij2 \
+      --prefix PATH : ${lib.makeBinPath [
+        gnused
+        gawk
+      ]}
+  '';
+
+  meta = with lib; {
+    description = "Brother MFC-9140CDN LPR printer driver";
+    homepage = "http://www.brother.com/";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ hexa ];
+    platforms = [ "i686-linux" "x86_64-linux" ];
+  };
+}
diff --git a/pkgs/misc/cups/drivers/mfcj470dwcupswrapper/default.nix b/pkgs/misc/cups/drivers/mfcj470dwcupswrapper/default.nix
index 23ee927a3bf..2ff073591d0 100644
--- a/pkgs/misc/cups/drivers/mfcj470dwcupswrapper/default.nix
+++ b/pkgs/misc/cups/drivers/mfcj470dwcupswrapper/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, mfcj470dwlpr, makeWrapper}:
+{ lib, stdenv, fetchurl, mfcj470dwlpr, makeWrapper}:
 
 stdenv.mkDerivation rec {
   pname = "mfcj470dw-cupswrapper";
@@ -48,9 +48,9 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "http://www.brother.com/";
     description = "Brother MFC-J470DW CUPS wrapper driver";
-    license = stdenv.lib.licenses.gpl2;
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.gpl2;
+    platforms = lib.platforms.linux;
     downloadPage = "http://support.brother.com/g/b/downloadlist.aspx?c=us&lang=en&prod=mfcj470dw_us_eu_as&os=128";
-    maintainers = [ stdenv.lib.maintainers.yochai ];
+    maintainers = [ lib.maintainers.yochai ];
   };
 }
diff --git a/pkgs/misc/cups/drivers/mfcj470dwlpr/default.nix b/pkgs/misc/cups/drivers/mfcj470dwlpr/default.nix
index 31b5c1dbd37..b2dbd0ca77a 100644
--- a/pkgs/misc/cups/drivers/mfcj470dwlpr/default.nix
+++ b/pkgs/misc/cups/drivers/mfcj470dwlpr/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, cups, dpkg, ghostscript, a2ps, coreutils, gnused, gawk, file, makeWrapper }:
+{ lib, stdenv, fetchurl, cups, dpkg, ghostscript, a2ps, coreutils, gnused, gawk, file, makeWrapper }:
 
 stdenv.mkDerivation rec {
   pname = "mfcj470dw-cupswrapper";
@@ -28,18 +28,18 @@ stdenv.mkDerivation rec {
     ln -s $out/opt/brother/Printers/mfcj470dw/lpd/filtermfcj470dw $out/lib/cups/filter/brother_lpdwrapper_mfcj470dw
 
     wrapProgram $out/opt/brother/Printers/mfcj470dw/lpd/psconvertij2 \
-    --prefix PATH ":" ${ stdenv.lib.makeBinPath [ gnused coreutils gawk ] }
+    --prefix PATH ":" ${ lib.makeBinPath [ gnused coreutils gawk ] }
 
     wrapProgram $out/opt/brother/Printers/mfcj470dw/lpd/filtermfcj470dw \
-    --prefix PATH ":" ${ stdenv.lib.makeBinPath [ ghostscript a2ps file gnused coreutils ] }
+    --prefix PATH ":" ${ lib.makeBinPath [ ghostscript a2ps file gnused coreutils ] }
     '';
 
   meta = {
     homepage = "http://www.brother.com/";
     description = "Brother MFC-J470DW LPR driver";
-    license = stdenv.lib.licenses.unfree;
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.unfree;
+    platforms = lib.platforms.linux;
     downloadPage = "http://support.brother.com/g/b/downloadlist.aspx?c=us&lang=en&prod=mfcj470dw_us_eu_as&os=128";
-    maintainers = [ stdenv.lib.maintainers.yochai ];
+    maintainers = [ lib.maintainers.yochai ];
   };
 }
diff --git a/pkgs/misc/cups/drivers/mfcj6510dwcupswrapper/default.nix b/pkgs/misc/cups/drivers/mfcj6510dwcupswrapper/default.nix
index 8a5c9644512..1653ced85c5 100644
--- a/pkgs/misc/cups/drivers/mfcj6510dwcupswrapper/default.nix
+++ b/pkgs/misc/cups/drivers/mfcj6510dwcupswrapper/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, mfcj6510dwlpr, makeWrapper}:
+{ lib, stdenv, fetchurl, mfcj6510dwlpr, makeWrapper}:
 
 stdenv.mkDerivation rec {
   pname = "mfcj6510dw-cupswrapper";
@@ -54,7 +54,7 @@ stdenv.mkDerivation rec {
     make clean
     '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://www.brother.com/";
     description = "Brother MFC-J6510DW CUPS wrapper driver";
     license = with licenses; gpl2;
diff --git a/pkgs/misc/cups/drivers/mfcj6510dwlpr/default.nix b/pkgs/misc/cups/drivers/mfcj6510dwlpr/default.nix
index 46ce7abb28e..741abc74f26 100644
--- a/pkgs/misc/cups/drivers/mfcj6510dwlpr/default.nix
+++ b/pkgs/misc/cups/drivers/mfcj6510dwlpr/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgsi686Linux, dpkg, makeWrapper, coreutils, gnused, gawk, file, cups, utillinux, xxd, runtimeShell
+{ lib, stdenv, fetchurl, pkgsi686Linux, dpkg, makeWrapper, coreutils, gnused, gawk, file, cups, util-linux, xxd, runtimeShell
 , ghostscript, a2ps }:
 
 # Why:
@@ -58,7 +58,7 @@ stdenv.mkDerivation rec {
     patchelf --set-interpreter ${pkgsi686Linux.stdenv.cc.libc.out}/lib/ld-linux.so.2 $out/usr/bin/brprintconf_mfcj6510dw
 
     #stripping the hardcoded path.
-    ${utillinux}/bin/hexdump -ve '1/1 "%.2X"' $out/usr/bin/brprintconf_mfcj6510dw | \
+    ${util-linux}/bin/hexdump -ve '1/1 "%.2X"' $out/usr/bin/brprintconf_mfcj6510dw | \
     sed 's.2F6F70742F62726F746865722F5072696E746572732F25732F696E662F6272257366756E63.62726d66636a36353130647766756e63000000000000000000000000000000000000000000.' | \
     sed 's.2F6F70742F62726F746865722F5072696E746572732F25732F696E662F627225737263.62726D66636A3635313064777263000000000000000000000000000000000000000000.' | \
     ${xxd}/bin/xxd -r -p > $out/usr/bin/brprintconf_mfcj6510dw_patched
@@ -73,12 +73,12 @@ stdenv.mkDerivation rec {
     ln -s $out/opt/brother/Printers/mfcj6510dw/lpd/filtermfcj6510dw $out/lib/cups/filter/brother_lpdwrapper_mfcj6510dw
 
     wrapProgram $out/opt/brother/Printers/mfcj6510dw/lpd/psconvertij2 \
-      --prefix PATH ":" ${ stdenv.lib.makeBinPath [ coreutils gnused gawk ] }
+      --prefix PATH ":" ${ lib.makeBinPath [ coreutils gnused gawk ] }
     wrapProgram $out/opt/brother/Printers/mfcj6510dw/lpd/filtermfcj6510dw \
-      --prefix PATH ":" ${ stdenv.lib.makeBinPath [ coreutils gnused file ghostscript a2ps ] }
+      --prefix PATH ":" ${ lib.makeBinPath [ coreutils gnused file ghostscript a2ps ] }
     '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description  = "Brother MFC-J6510DW LPR driver";
     downloadPage = "http://support.brother.com/g/b/downloadlist.aspx?c=us&lang=en&prod=mfcj6510dw_all&os=128";
     homepage     = "http://www.brother.com/";
diff --git a/pkgs/misc/cups/drivers/mfcl2700dncupswrapper/default.nix b/pkgs/misc/cups/drivers/mfcl2700dncupswrapper/default.nix
index 27cb40a9e4f..d32968cc45c 100644
--- a/pkgs/misc/cups/drivers/mfcl2700dncupswrapper/default.nix
+++ b/pkgs/misc/cups/drivers/mfcl2700dncupswrapper/default.nix
@@ -1,10 +1,11 @@
-{ coreutils, dpkg, fetchurl, gnugrep, gnused, makeWrapper, mfcl2700dnlpr, perl, stdenv }:
+{ coreutils, dpkg, fetchurl, gnugrep, gnused, makeWrapper, mfcl2700dnlpr, perl, lib, stdenv }:
 
 stdenv.mkDerivation rec {
-  name = "mfcl2700dncupswrapper-${meta.version}";
+  pname = "mfcl2700dncupswrapper";
+  version = "3.2.0-1";
 
   src = fetchurl {
-    url = "https://download.brother.com/welcome/dlf102086/${name}.i386.deb";
+    url = "https://download.brother.com/welcome/dlf102086/mfcl2700dncupswrapper-${version}.i386.deb";
     sha256 = "07w48mah0xbv4h8vsh1qd5cd4b463bx8y6gc5x9pfgsxsy6h6da1";
   };
 
@@ -24,7 +25,7 @@ stdenv.mkDerivation rec {
       --replace "PRINTER =~" "PRINTER = \"MFCL2700DN\"; #"
 
     wrapProgram $dir/cupswrapper/brother_lpdwrapper_MFCL2700DN \
-      --prefix PATH : ${stdenv.lib.makeBinPath [ coreutils gnugrep gnused ]}
+      --prefix PATH : ${lib.makeBinPath [ coreutils gnugrep gnused ]}
 
     mkdir -p $out/lib/cups/filter
     mkdir -p $out/share/cups/model
@@ -36,9 +37,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "Brother MFC-L2700DN CUPS wrapper driver";
     homepage = "http://www.brother.com/";
-    license = stdenv.lib.licenses.gpl2Plus;
-    maintainers = [ stdenv.lib.maintainers.tv ];
-    platforms = stdenv.lib.platforms.linux;
-    version = "3.2.0-1";
+    license = lib.licenses.gpl2Plus;
+    maintainers = [ lib.maintainers.tv ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/misc/cups/drivers/mfcl2700dnlpr/default.nix b/pkgs/misc/cups/drivers/mfcl2700dnlpr/default.nix
index 24d3e5cab7f..0d11579e954 100644
--- a/pkgs/misc/cups/drivers/mfcl2700dnlpr/default.nix
+++ b/pkgs/misc/cups/drivers/mfcl2700dnlpr/default.nix
@@ -1,4 +1,4 @@
-{ coreutils, dpkg, fetchurl, ghostscript, gnugrep, gnused, makeWrapper, perl, stdenv, which }:
+{ lib, stdenv, coreutils, dpkg, fetchurl, ghostscript, gnugrep, gnused, makeWrapper, perl, which }:
 
 stdenv.mkDerivation rec {
   pname = "mfcl2700dnlpr";
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
       --replace "PRINTER =~" "PRINTER = \"MFCL2700DN\"; #"
 
     wrapProgram $dir/lpd/filter_MFCL2700DN \
-      --prefix PATH : ${stdenv.lib.makeBinPath [
+      --prefix PATH : ${lib.makeBinPath [
         coreutils ghostscript gnugrep gnused which
       ]}
 
@@ -37,8 +37,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "Brother MFC-L2700DN LPR driver";
     homepage = "http://www.brother.com/";
-    license = stdenv.lib.licenses.unfree;
-    maintainers = [ stdenv.lib.maintainers.tv ];
+    license = lib.licenses.unfree;
+    maintainers = [ lib.maintainers.tv ];
     platforms = [ "i686-linux" ];
   };
 }
diff --git a/pkgs/misc/cups/drivers/mfcl2720dwcupswrapper/default.nix b/pkgs/misc/cups/drivers/mfcl2720dwcupswrapper/default.nix
index 8a2ce7edf26..5d4980da9d1 100644
--- a/pkgs/misc/cups/drivers/mfcl2720dwcupswrapper/default.nix
+++ b/pkgs/misc/cups/drivers/mfcl2720dwcupswrapper/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, dpkg, makeWrapper, coreutils, gnugrep, gnused, perl, mfcl2720dwlpr }:
+{ lib, stdenv, fetchurl, dpkg, makeWrapper, coreutils, gnugrep, gnused, perl, mfcl2720dwlpr }:
 
 stdenv.mkDerivation rec {
   pname = "mfcl2720dwcupswrapper";
@@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
       --replace /usr/bin/perl ${perl}/bin/perl
 
     wrapProgram $dir/cupswrapper/brother_lpdwrapper_MFCL2720DW \
-      --prefix PATH : ${stdenv.lib.makeBinPath [ coreutils gnugrep gnused ]}
+      --prefix PATH : ${lib.makeBinPath [ coreutils gnugrep gnused ]}
 
     mkdir -p $out/lib/cups/filter
     mkdir -p $out/share/cups/model
@@ -40,8 +40,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "Brother MFC-L2720DW CUPS wrapper driver";
     homepage = "http://www.brother.com/";
-    license = stdenv.lib.licenses.gpl2;
+    license = lib.licenses.gpl2;
     platforms = [ "x86_64-linux" "i686-linux" ];
-    maintainers = [ stdenv.lib.maintainers.xeji ];
+    maintainers = [ lib.maintainers.xeji ];
   };
 }
diff --git a/pkgs/misc/cups/drivers/mfcl2720dwlpr/default.nix b/pkgs/misc/cups/drivers/mfcl2720dwlpr/default.nix
index 0dc9eed2ac0..2b6c458e745 100644
--- a/pkgs/misc/cups/drivers/mfcl2720dwlpr/default.nix
+++ b/pkgs/misc/cups/drivers/mfcl2720dwlpr/default.nix
@@ -1,4 +1,4 @@
-{ pkgs, stdenv, fetchurl, dpkg, makeWrapper, coreutils, ghostscript, gnugrep, gnused, which, perl }:
+{ pkgs, lib, stdenv, fetchurl, dpkg, makeWrapper, coreutils, ghostscript, gnugrep, gnused, which, perl }:
 
 stdenv.mkDerivation rec {
   pname = "mfcl2720dwlpr";
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
       --replace "PRINTER =~" "PRINTER = \"MFCL2720DW\"; #"
 
     wrapProgram $dir/lpd/filter_MFCL2720DW \
-      --prefix PATH : ${stdenv.lib.makeBinPath [
+      --prefix PATH : ${lib.makeBinPath [
         coreutils ghostscript gnugrep gnused which
       ]}
 
@@ -38,8 +38,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "Brother MFC-L2720DW lpr driver";
     homepage = "http://www.brother.com/";
-    license = stdenv.lib.licenses.unfree;
+    license = lib.licenses.unfree;
     platforms = [ "x86_64-linux" "i686-linux" ];
-    maintainers = [ stdenv.lib.maintainers.xeji ];
+    maintainers = [ lib.maintainers.xeji ];
   };
 }
diff --git a/pkgs/misc/cups/drivers/mfcl2740dwcupswrapper/default.nix b/pkgs/misc/cups/drivers/mfcl2740dwcupswrapper/default.nix
index f2143df321c..a119c31517c 100644
--- a/pkgs/misc/cups/drivers/mfcl2740dwcupswrapper/default.nix
+++ b/pkgs/misc/cups/drivers/mfcl2740dwcupswrapper/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, dpkg, makeWrapper, coreutils, gnugrep, gnused, perl, mfcl2740dwlpr }:
+{ lib, stdenv, fetchurl, dpkg, makeWrapper, coreutils, gnugrep, gnused, perl, mfcl2740dwlpr }:
 
 stdenv.mkDerivation rec {
   pname = "mfcl2740dwcupswrapper";
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
       --replace /usr/bin/perl ${perl}/bin/perl
 
     wrapProgram $dir/cupswrapper/brother_lpdwrapper_MFCL2740DW \
-      --prefix PATH : ${stdenv.lib.makeBinPath [ coreutils gnugrep gnused ]}
+      --prefix PATH : ${lib.makeBinPath [ coreutils gnugrep gnused ]}
 
     mkdir -p $out/lib/cups/filter
     mkdir -p $out/share/cups/model
@@ -38,8 +38,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "Brother MFC-L2740DW CUPS wrapper driver";
     homepage = "http://www.brother.com/";
-    license = stdenv.lib.licenses.gpl2;
+    license = lib.licenses.gpl2;
     platforms = [ "x86_64-linux" "i686-linux" ];
-    maintainers = [ stdenv.lib.maintainers.enzime ];
+    maintainers = [ lib.maintainers.enzime ];
   };
 }
diff --git a/pkgs/misc/cups/drivers/mfcl2740dwlpr/default.nix b/pkgs/misc/cups/drivers/mfcl2740dwlpr/default.nix
index 74571611b44..38722a734a6 100644
--- a/pkgs/misc/cups/drivers/mfcl2740dwlpr/default.nix
+++ b/pkgs/misc/cups/drivers/mfcl2740dwlpr/default.nix
@@ -1,4 +1,4 @@
-{ pkgsi686Linux, stdenv, fetchurl, dpkg, makeWrapper, coreutils, ghostscript, gnugrep, gnused, which, perl }:
+{ pkgsi686Linux, lib, stdenv, fetchurl, dpkg, makeWrapper, coreutils, ghostscript, gnugrep, gnused, which, perl }:
 
 stdenv.mkDerivation rec {
   pname = "mfcl2740dwlpr";
@@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
       --replace "PRINTER =~" "PRINTER = \"MFCL2740DW\"; #"
 
     wrapProgram $dir/lpd/filter_MFCL2740DW \
-      --prefix PATH : ${stdenv.lib.makeBinPath [
+      --prefix PATH : ${lib.makeBinPath [
         coreutils ghostscript gnugrep gnused which
       ]}
 
@@ -36,8 +36,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "Brother MFC-L2740DW lpr driver";
     homepage = "http://www.brother.com/";
-    license = stdenv.lib.licenses.unfree;
+    license = lib.licenses.unfree;
     platforms = [ "x86_64-linux" "i686-linux" ];
-    maintainers = [ stdenv.lib.maintainers.enzime ];
+    maintainers = [ lib.maintainers.enzime ];
   };
 }
diff --git a/pkgs/misc/cups/drivers/mfcl8690cdwcupswrapper/default.nix b/pkgs/misc/cups/drivers/mfcl8690cdwcupswrapper/default.nix
index d82c0ad9a86..ebb2e439298 100644
--- a/pkgs/misc/cups/drivers/mfcl8690cdwcupswrapper/default.nix
+++ b/pkgs/misc/cups/drivers/mfcl8690cdwcupswrapper/default.nix
@@ -1,5 +1,5 @@
 { coreutils, dpkg, fetchurl, gnugrep, gnused, makeWrapper,
-mfcl8690cdwlpr, perl, stdenv}:
+mfcl8690cdwlpr, perl, lib, stdenv}:
 
 stdenv.mkDerivation rec {
   pname = "mfcl8690cdwcupswrapper";
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
       --replace "PRINTER =~" "PRINTER = \"mfcl8690cdw\"; #"
 
     wrapProgram $dir/cupswrapper/brother_lpdwrapper_mfcl8690cdw \
-      --prefix PATH : ${stdenv.lib.makeBinPath [ coreutils gnugrep gnused ]}
+      --prefix PATH : ${lib.makeBinPath [ coreutils gnugrep gnused ]}
 
     mkdir -p $out/lib/cups/filter
     mkdir -p $out/share/cups/model
@@ -38,8 +38,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "Brother MFC-L8690CDW CUPS wrapper driver";
     homepage = "http://www.brother.com/";
-    license = stdenv.lib.licenses.unfree;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.fuzzy-id ];
+    license = lib.licenses.unfree;
+    platforms = lib.platforms.linux;
+    maintainers = [ lib.maintainers.fuzzy-id ];
   };
 }
diff --git a/pkgs/misc/cups/drivers/mfcl8690cdwlpr/default.nix b/pkgs/misc/cups/drivers/mfcl8690cdwlpr/default.nix
index 9e3c529e898..2b5dc44cead 100644
--- a/pkgs/misc/cups/drivers/mfcl8690cdwlpr/default.nix
+++ b/pkgs/misc/cups/drivers/mfcl8690cdwlpr/default.nix
@@ -1,5 +1,5 @@
 { coreutils, dpkg, fetchurl, file, ghostscript, gnugrep, gnused,
-makeWrapper, perl, pkgs, stdenv, which }:
+makeWrapper, perl, pkgs, lib, stdenv, which }:
 
 stdenv.mkDerivation rec {
   pname = "mfcl8690cdwlpr";
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
       --replace "PRINTER =~" "PRINTER = \"mfcl8690cdw\"; #"
 
     wrapProgram $filter \
-      --prefix PATH : ${stdenv.lib.makeBinPath [
+      --prefix PATH : ${lib.makeBinPath [
       coreutils file ghostscript gnugrep gnused which
       ]}
 
@@ -38,8 +38,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "Brother MFC-L8690CDW LPR printer driver";
     homepage = "http://www.brother.com/";
-    license = stdenv.lib.licenses.unfree;
-    maintainers = [ stdenv.lib.maintainers.fuzzy-id ];
+    license = lib.licenses.unfree;
+    maintainers = [ lib.maintainers.fuzzy-id ];
     platforms = [ "i686-linux" ];
   };
 }
diff --git a/pkgs/misc/cups/drivers/samsung/1.00.36/default.nix b/pkgs/misc/cups/drivers/samsung/1.00.36/default.nix
index 4088ce700de..2ea0e253853 100644
--- a/pkgs/misc/cups/drivers/samsung/1.00.36/default.nix
+++ b/pkgs/misc/cups/drivers/samsung/1.00.36/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, cups, libusb-compat-0_1, libxml2, perl }:
+{ lib, stdenv, fetchurl, cups, libusb-compat-0_1, libxml2, perl }:
 
 let
 
@@ -87,10 +87,10 @@ in stdenv.mkDerivation rec {
   preFixup = ''
     for bin in "$out/bin/"*; do
       patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$bin"
-      patchelf --set-rpath "$out/lib:${stdenv.lib.getLib cups}/lib" "$bin"
+      patchelf --set-rpath "$out/lib:${lib.getLib cups}/lib" "$bin"
     done
 
-    patchelf --set-rpath "$out/lib:${stdenv.lib.getLib cups}/lib" "$out/lib/libscmssc.so"
+    patchelf --set-rpath "$out/lib:${lib.getLib cups}/lib" "$out/lib/libscmssc.so"
     patchelf --set-rpath "$out/lib:${libxml2.out}/lib:${libusb-compat-0_1.out}/lib" "$out/lib/sane/libsane-smfp.so.1.0.1"
 
     ln -s ${stdenv.cc.cc.lib}/lib/libstdc++.so.6 $out/lib/
@@ -102,7 +102,7 @@ in stdenv.mkDerivation rec {
   # we did this in prefixup already
   dontPatchELF = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Unified Linux Driver for Samsung printers and scanners";
     homepage = "http://www.bchemnet.com/suldr";
     downloadPage = "http://www.bchemnet.com/suldr/driver/";
diff --git a/pkgs/misc/cups/drivers/samsung/1.00.37.nix b/pkgs/misc/cups/drivers/samsung/1.00.37.nix
index c205560706f..9fb26f62d76 100644
--- a/pkgs/misc/cups/drivers/samsung/1.00.37.nix
+++ b/pkgs/misc/cups/drivers/samsung/1.00.37.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, cups, libusb-compat-0_1, libxml2 }:
+{ lib, stdenv, fetchurl, cups, libusb-compat-0_1, libxml2 }:
 
 let
 
@@ -70,10 +70,10 @@ in stdenv.mkDerivation rec {
   preFixup = ''
     for bin in "$out/bin/"*; do
       patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$bin"
-      patchelf --set-rpath "$out/lib:${stdenv.lib.getLib cups}/lib" "$bin"
+      patchelf --set-rpath "$out/lib:${lib.getLib cups}/lib" "$bin"
     done
 
-    patchelf --set-rpath "$out/lib:${stdenv.lib.getLib cups}/lib" "$out/lib/libscmssc.so"
+    patchelf --set-rpath "$out/lib:${lib.getLib cups}/lib" "$out/lib/libscmssc.so"
     patchelf --set-rpath "$out/lib:${libxml2.out}/lib:${libusb-compat-0_1.out}/lib" "$out/lib/sane/libsane-smfp.so.1.0.1"
 
     ln -s ${stdenv.cc.cc.lib}/lib/libstdc++.so.6 $out/lib/
@@ -85,7 +85,7 @@ in stdenv.mkDerivation rec {
   # we did this in prefixup already
   dontPatchELF = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Unified Linux Driver for Samsung printers and scanners";
     homepage = "http://www.bchemnet.com/suldr";
     downloadPage = "http://www.bchemnet.com/suldr/driver/";
diff --git a/pkgs/misc/cups/drivers/samsung/4.00.39/default.nix b/pkgs/misc/cups/drivers/samsung/4.00.39/default.nix
index c3c3613bbda..92f5fdc409c 100644
--- a/pkgs/misc/cups/drivers/samsung/4.00.39/default.nix
+++ b/pkgs/misc/cups/drivers/samsung/4.00.39/default.nix
@@ -11,12 +11,12 @@
 # }
 # (This advice was tested on 2010 August 2.)
 
-{ stdenv, fetchurl, cups, gcc, ghostscript, glibc, patchelf }:
+{ lib, stdenv, fetchurl, cups, gcc, ghostscript, glibc, patchelf }:
 
 # Do not bump lightly! Visit <http://www.bchemnet.com/suldr/supported.html>
 # to see what will break when upgrading. Consider a new versioned attribute.
 let
-  cups' = stdenv.lib.getLib cups;
+  cups' = lib.getLib cups;
 in stdenv.mkDerivation rec {
   pname = "samsung-UnifiedLinuxDriver";
   version = "4.00.39";
@@ -34,7 +34,7 @@ in stdenv.mkDerivation rec {
 
   builder = ./builder.sh;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Samsung's Linux printing drivers; includes binaries without source code";
     homepage = "http://www.samsung.com/";
     license = licenses.unfree;
diff --git a/pkgs/misc/cups/drivers/samsung/4.01.17.nix b/pkgs/misc/cups/drivers/samsung/4.01.17.nix
index 5de93b20cb8..2591cf73566 100644
--- a/pkgs/misc/cups/drivers/samsung/4.01.17.nix
+++ b/pkgs/misc/cups/drivers/samsung/4.01.17.nix
@@ -11,14 +11,14 @@
 # }
 # (This advice was tested on the 1st November 2016.)
 
-{ stdenv, fetchurl, cups, libusb-compat-0_1 }:
+{ lib, stdenv, fetchurl, cups, libusb-compat-0_1 }:
 
 # Do not bump lightly! Visit <http://www.bchemnet.com/suldr/supported.html>
 # to see what will break when upgrading. Consider a new versioned attribute.
 let
   installationPath = if stdenv.hostPlatform.system == "x86_64-linux" then "x86_64" else "i386";
   appendPath = if stdenv.hostPlatform.system == "x86_64-linux" then "64" else "";
-  libPath = stdenv.lib.makeLibraryPath [ cups libusb-compat-0_1 ] + ":$out/lib:${stdenv.cc.cc.lib}/lib${appendPath}";
+  libPath = lib.makeLibraryPath [ cups libusb-compat-0_1 ] + ":$out/lib:${stdenv.cc.cc.lib}/lib${appendPath}";
 in stdenv.mkDerivation rec {
   pname = "samsung-UnifiedLinuxDriver";
   version = "4.01.17";
@@ -72,7 +72,7 @@ in stdenv.mkDerivation rec {
     cp -r ./* $out/share/cups/model/samsung
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Samsung's Linux printing drivers; includes binaries without source code";
     homepage = "http://www.samsung.com/";
     license = licenses.unfree;
diff --git a/pkgs/misc/cups/drivers/splix/default.nix b/pkgs/misc/cups/drivers/splix/default.nix
index c65ca401d60..1125e769711 100644
--- a/pkgs/misc/cups/drivers/splix/default.nix
+++ b/pkgs/misc/cups/drivers/splix/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchsvn, fetchurl, cups, cups-filters, jbigkit, zlib }:
+{ lib, stdenv, fetchsvn, fetchurl, cups, cups-filters, jbigkit, zlib }:
 
 let
 
@@ -45,7 +45,7 @@ in stdenv.mkDerivation rec {
 
   buildInputs = [ cups zlib jbigkit ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "CUPS drivers for SPL (Samsung Printer Language) printers";
     homepage = "http://splix.ap2c.org";
     license = licenses.gpl2;
diff --git a/pkgs/misc/cups/drivers/zj-58/default.nix b/pkgs/misc/cups/drivers/zj-58/default.nix
index 67df20df491..0e2534997e3 100644
--- a/pkgs/misc/cups/drivers/zj-58/default.nix
+++ b/pkgs/misc/cups/drivers/zj-58/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchFromGitHub, cups}:
+{lib, stdenv, fetchFromGitHub, cups}:
 
 stdenv.mkDerivation {
   pname = "cups-zj-58";
@@ -18,7 +18,7 @@ stdenv.mkDerivation {
     install -D ZJ-58.ppd $out/share/cups/model/zjiang/ZJ-58.ppd
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "CUPS filter for thermal printer Zjiang ZJ-58";
     homepage = "https://github.com/klirichek/zj-58";
     platforms = platforms.linux;
diff --git a/pkgs/misc/cups/filters.nix b/pkgs/misc/cups/filters.nix
index 217f0c7f0da..8b1e7fe8fc7 100644
--- a/pkgs/misc/cups/filters.nix
+++ b/pkgs/misc/cups/filters.nix
@@ -1,11 +1,11 @@
-{ stdenv, fetchurl, pkgconfig, cups, poppler, poppler_utils, fontconfig
+{ lib, stdenv, fetchurl, pkg-config, cups, poppler, poppler_utils, fontconfig
 , libjpeg, libpng, perl, ijs, qpdf, dbus, avahi
 , makeWrapper, coreutils, gnused, bc, gawk, gnugrep, which, ghostscript
 , mupdf
 }:
 
 let
-  binPath = stdenv.lib.makeBinPath [ coreutils gnused bc gawk gnugrep which ];
+  binPath = lib.makeBinPath [ coreutils gnused bc gawk gnugrep which ];
 
 in stdenv.mkDerivation rec {
   pname = "cups-filters";
@@ -16,7 +16,7 @@ in stdenv.mkDerivation rec {
     sha256 = "1kv25011iyzvd33n5zmmn1z2p6pzk26hmmw6qvjjnx8p3sp7raqn";
   };
 
-  nativeBuildInputs = [ pkgconfig makeWrapper ];
+  nativeBuildInputs = [ pkg-config makeWrapper ];
 
   buildInputs = [
     cups poppler poppler_utils fontconfig libjpeg libpng perl
@@ -65,7 +65,7 @@ in stdenv.mkDerivation rec {
   meta = {
     homepage = "http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups-filters";
     description = "Backends, filters, and other software that was once part of the core CUPS distribution but is no longer maintained by Apple Inc";
-    license = stdenv.lib.licenses.gpl2;
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.gpl2;
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/misc/documentation-highlighter/default.nix b/pkgs/misc/documentation-highlighter/default.nix
index 72f1da6b0de..2a34e36742d 100644
--- a/pkgs/misc/documentation-highlighter/default.nix
+++ b/pkgs/misc/documentation-highlighter/default.nix
@@ -1,11 +1,11 @@
-{ stdenv, runCommand }:
+{ lib, runCommand }:
 runCommand "documentation-highlighter" {
   meta = {
-    description = "Highlight.js sources for the Nix Ecosystem's documentation.";
+    description = "Highlight.js sources for the Nix Ecosystem's documentation";
     homepage = "https://highlightjs.org";
-    license = stdenv.lib.licenses.bsd3;
-    platforms = stdenv.lib.platforms.all;
-    maintainers = [ stdenv.lib.maintainers.grahamc ];
+    license = lib.licenses.bsd3;
+    platforms = lib.platforms.all;
+    maintainers = [ lib.maintainers.grahamc ];
   };
 } ''
   cp -r ${./.} $out
diff --git a/pkgs/misc/doge/default.nix b/pkgs/misc/doge/default.nix
index 37a3b4be706..911917e6d2f 100644
--- a/pkgs/misc/doge/default.nix
+++ b/pkgs/misc/doge/default.nix
@@ -1,4 +1,4 @@
-{ stdenv , python3Packages }:
+{ lib, python3Packages }:
 
 python3Packages.buildPythonPackage rec {
   pname = "doge";
@@ -9,7 +9,7 @@ python3Packages.buildPythonPackage rec {
     sha256 = "0lwdl06lbpnaqqjk8ap9dsags3bzma30z17v0zc7spng1gz8m6xj";
   };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/thiderman/doge";
     description = "wow very terminal doge";
     license = licenses.mit;
diff --git a/pkgs/misc/drivers/epkowa/default.nix b/pkgs/misc/drivers/epkowa/default.nix
index 6016cc779f1..29ebfa17329 100644
--- a/pkgs/misc/drivers/epkowa/default.nix
+++ b/pkgs/misc/drivers/epkowa/default.nix
@@ -1,20 +1,26 @@
-{stdenv, fetchurl, fetchpatch, makeWrapper, symlinkJoin,
-pkgconfig, libtool,
-gtk2,
-libxml2,
-libxslt,
-libusb-compat-0_1,
-sane-backends,
-rpm, cpio,
-getopt,
-patchelf, autoPatchelfHook, gcc
+{ lib, stdenv
+, fetchurl
+, fetchpatch
+, makeWrapper
+, symlinkJoin
+, pkg-config
+, libtool
+, gtk2
+, libxml2
+, libxslt
+, libusb-compat-0_1
+, sane-backends
+, rpm
+, cpio
+, getopt
+, autoPatchelfHook
+, gcc
 }:
-
 let common_meta = {
-    homepage = "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX";
-    license = with stdenv.lib.licenses; epson;
-    platforms = with stdenv.lib.platforms; linux;
-   };
+  homepage = "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX";
+  license = with lib.licenses; epson;
+  platforms = with lib.platforms; linux;
+};
 in
 ############################
 #
@@ -23,7 +29,6 @@ in
 ############################
 
 # adding a plugin for another printer shouldn't be too difficult, but you need the firmware to test...
-
 let plugins = {
   v330 = stdenv.mkDerivation rec {
     name = "iscan-v330-bundle";
@@ -33,7 +38,7 @@ let plugins = {
       # To find new versions, visit
       # http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX and search for
       # some printer like for instance "WF-7210" to get to the most recent
-      # version.  
+      # version.
       # NOTE: Don't forget to update the webarchive link too!
       urls = [
         "https://download2.ebz.epson.net/iscan/plugin/perfection-v330/rpm/x64/iscan-perfection-v330-bundle-${version}.x64.rpm.tar.gz"
@@ -49,17 +54,80 @@ let plugins = {
       mkdir $out{,/share,/lib}
       cp -r ./usr/share/{iscan-data,esci}/ $out/share/
       cp -r ./usr/lib64/esci $out/lib
-      '';
+    '';
 
     passthru = {
       registrationCommand = ''
         $registry --add interpreter usb 0x04b8 0x0142 "$plugin/lib/esci/libesci-interpreter-perfection-v330 $plugin/share/esci/esfwad.bin"
-        '';
+      '';
       hw = "Perfection V330 Photo";
-      };
-    meta = common_meta // { description = "Plugin to support "+passthru.hw+" scanner in sane."; };
+    };
+    meta = common_meta // { description = "Plugin to support " + passthru.hw + " scanner in sane"; };
+  };
+  v370 = stdenv.mkDerivation rec {
+    name = "iscan-v370-bundle";
+    version = "2.30.4";
+
+    src = fetchurl {
+      urls = [
+        "https://download2.ebz.epson.net/iscan/plugin/perfection-v370/rpm/x64/iscan-perfection-v370-bundle-${version}.x64.rpm.tar.gz"
+        "https://web.archive.org/web/https://download2.ebz.epson.net/iscan/plugin/perfection-v370/rpm/x64/iscan-perfection-v370-bundle-${version}.x64.rpm.tar.gz"
+      ];
+      sha256 = "1ff7adp9mha1i2ibllz540xkagpy8r757h4s3h60bgxbyzv2yggr";
+    };
+
+    nativeBuildInputs = [ autoPatchelfHook rpm ];
+
+    installPhase = ''
+      cd plugins
+      ${rpm}/bin/rpm2cpio iscan-plugin-perfection-v370-*.x86_64.rpm | ${cpio}/bin/cpio -idmv
+
+
+      mkdir -p $out/share $out/lib
+      cp -r usr/share/{iscan-data,iscan}/ $out/share
+      cp -r usr/lib64/iscan $out/lib
+      mv $out/share/iscan $out/share/esci
+      mv $out/lib/iscan $out/lib/esci
+    '';
+
+    passthru = {
+      registrationCommand = ''
+        $registry --add interpreter usb 0x04b8 0x014a "$plugin/lib/esci/libiscan-plugin-perfection-v370 $plugin/share/esci/esfwdd.bin"
+      '';
+      hw = "Perfection V37/V370";
+    };
+    meta = common_meta // { description = "Plugin to support " + passthru.hw + " scanner in sane"; };
   };
-  x770 =   stdenv.mkDerivation rec {
+  v600 = stdenv.mkDerivation rec {
+    pname = "iscan-gt-x820-bundle";
+    version = "2.30.4";
+
+    nativeBuildInputs = [ autoPatchelfHook rpm ];
+    src = fetchurl {
+      urls = [
+        "https://download2.ebz.epson.net/iscan/plugin/gt-x820/rpm/x64/iscan-gt-x820-bundle-${version}.x64.rpm.tar.gz"
+        "https://web.archive.org/web/https://download2.ebz.epson.net/iscan/plugin/gt-x820/rpm/x64/iscan-gt-x820-bundle-${version}.x64.rpm.tar.gz"
+      ];
+      sha256 = "1vlba7dsgpk35nn3n7is8nwds3yzlk38q43mppjzwsz2d2n7sr33";
+    };
+    installPhase = ''
+      cd plugins
+      ${rpm}/bin/rpm2cpio iscan-plugin-gt-x820-*.x86_64.rpm | ${cpio}/bin/cpio -idmv
+      mkdir $out
+      cp -r usr/share $out
+      cp -r usr/lib64 $out/lib
+      mv $out/share/iscan $out/share/esci
+      mv $out/lib/iscan $out/lib/esci
+    '';
+    passthru = {
+      registrationCommand = ''
+        $registry --add interpreter usb 0x04b8 0x013a "$plugin/lib/esci/libesintA1 $plugin/share/esci/esfwA1.bin"
+      '';
+      hw = "Perfection V600 Photo";
+    };
+    meta = common_meta // { description = "iscan esci x820 plugin for " + passthru.hw; };
+  };
+  x770 = stdenv.mkDerivation rec {
     pname = "iscan-gt-x770-bundle";
     version = "2.30.4";
 
@@ -79,20 +147,20 @@ let plugins = {
       cp -r usr/lib64 $out/lib
       mv $out/share/iscan $out/share/esci
       mv $out/lib/iscan $out/lib/esci
-      '';
+    '';
     passthru = {
       registrationCommand = ''
         $registry --add interpreter usb 0x04b8 0x0130 "$plugin/lib/esci/libesint7C $plugin/share/esci/esfw7C.bin"
-        '';
+      '';
       hw = "Perfection V500 Photo";
-      };
-    meta = common_meta // { description = "iscan esci x770 plugin for "+passthru.hw; };
     };
+    meta = common_meta // { description = "iscan esci x770 plugin for " + passthru.hw; };
+  };
   f720 = stdenv.mkDerivation rec {
     pname = "iscan-gt-f720-bundle";
     version = "2.30.4";
 
-    nativeBuildInputs= [ autoPatchelfHook ];
+    nativeBuildInputs = [ autoPatchelfHook ];
     buildInputs = [ gcc.cc.lib ];
     src = fetchurl {
       urls = [
@@ -107,16 +175,16 @@ let plugins = {
       mkdir $out
       cp -r usr/share $out
       cp -r usr/lib64 $out/lib
-      '';
+    '';
 
     passthru = {
       registrationCommand = ''
         $registry --add interpreter usb 0x04b8 0x0131 "$plugin/lib/esci/libesci-interpreter-gt-f720 $plugin/share/esci/esfw8b.bin"
-        '';
+      '';
       hw = "GT-F720, GT-S620, Perfection V30, Perfection V300 Photo";
-      };
+    };
 
-    meta = common_meta // { description = "iscan esci f720 plugin for "+passthru.hw; };
+    meta = common_meta // { description = "iscan esci f720 plugin for " + passthru.hw; };
   };
   s80 = stdenv.mkDerivation rec {
     pname = "iscan-gt-s80-bundle";
@@ -139,7 +207,7 @@ let plugins = {
       cp -r usr/share $out
       cp -r usr/lib64 $out/lib
       mkdir $out/share/esci
-      '';
+    '';
 
     passthru = {
       registrationCommand = ''
@@ -147,11 +215,11 @@ let plugins = {
         $registry --add interpreter usb 0x04b8 0x0137 "$plugin/lib/esci/libesci-interpreter-gt-s50.so"
         $registry --add interpreter usb 0x04b8 0x0143 "$plugin/lib/esci/libesci-interpreter-gt-s50.so"
         $registry --add interpreter usb 0x04b8 0x0144 "$plugin/lib/esci/libesci-interpreter-gt-s80.so"
-        '';
+      '';
       hw = "ES-D200, ED-D350, ES-D400, GT-S50, GT-S55, GT-S80, GT-S85";
-      };
+    };
 
-    meta = common_meta // { description = "iscan esci s80 plugin for "+passthru.hw; };
+    meta = common_meta // { description = "iscan esci s80 plugin for " + passthru.hw; };
   };
   s650 = stdenv.mkDerivation rec {
     name = "iscan-gt-s650-bundle";
@@ -175,16 +243,16 @@ let plugins = {
       cp -r usr/lib64 $out/lib
       mv $out/share/iscan $out/share/esci
       mv $out/lib/iscan $out/lib/esci
-      '';
+    '';
 
     passthru = {
       registrationCommand = ''
         $registry --add interpreter usb 0x04b8 0x013c "$plugin/lib/esci/libiscan-plugin-gt-s650 $plugin/share/esci/esfw010c.bin"
         $registry --add interpreter usb 0x04b8 0x013d "$plugin/lib/esci/libiscan-plugin-gt-s650 $plugin/share/esci/esfw010c.bin"
-        '';
+      '';
       hw = "GT-S650, Perfection V19, Perfection V39";
     };
-    meta = common_meta // { description = "iscan GT-S650 for "+passthru.hw; };
+    meta = common_meta // { description = "iscan GT-S650 for " + passthru.hw; };
   };
   network = stdenv.mkDerivation rec {
     pname = "iscan-nt-bundle";
@@ -209,7 +277,7 @@ let plugins = {
       cp -r usr/share $out
       cp -r usr/lib64 $out/lib
       mkdir $out/share/esci
-      '';
+    '';
     passthru = {
       registrationCommand = "";
       hw = "network";
@@ -219,24 +287,21 @@ let plugins = {
   };
 };
 in
-
-
-
 let fwdir = symlinkJoin {
   name = "esci-firmware-dir";
-  paths = stdenv.lib.mapAttrsToList (name: value: value + /share/esci) plugins;
+  paths = lib.mapAttrsToList (name: value: value + /share/esci) plugins;
 };
 in
 let iscan-data = stdenv.mkDerivation rec {
   pname = "iscan-data";
-  version = "1.39.1-2";
+  version = "1.39.2-1";
 
   src = fetchurl {
     urls = [
       "http://support.epson.net/linux/src/scanner/iscan/iscan-data_${version}.tar.gz"
       "https://web.archive.org/web/http://support.epson.net/linux/src/scanner/iscan/iscan-data_${version}.tar.gz"
     ];
-    sha256 = "04zrvbnxf1k6zinrd13hwnbzscc3qhmwlvx3k2jhjys2lginw7w4";
+    sha256 = "092qhlnjjgz11ifx6mng7mz20i44gc0nlccrbmw18xr5hipbqqka";
   };
 
   buildInputs = [
@@ -258,17 +323,16 @@ stdenv.mkDerivation rec {
     sha256 = "1ma76jj0k3bz0fy06fiyl4di4y77rcryb0mwjmzs5ms2vq9rjysr";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config libtool makeWrapper ];
   buildInputs = [
     gtk2
     libxml2
-    libtool
     libusb-compat-0_1
     sane-backends
-    makeWrapper
   ];
 
   patches = [
+    # Patch for compatibility with libpng versions greater than 10499
     (fetchpatch {
       urls = [
         "https://gitweb.gentoo.org/repo/gentoo.git/plain/media-gfx/iscan/files/iscan-2.28.1.3+libpng-1.5.patch?h=b6e4c805d53b49da79a0f64ef16bb82d6d800fcf"
@@ -276,16 +340,18 @@ stdenv.mkDerivation rec {
       ];
       sha256 = "04y70qjd220dpyh771fiq50lha16pms98mfigwjczdfmx6kpj1jd";
     })
+    # Patch iscan to search appropriate folders for firmware files
     ./firmware_location.patch
+    # Patch deprecated use of sscanf code to use a more modern C99 compatible version
     ./sscanf.patch
-    ];
+  ];
   patchFlags = [ "-p0" ];
 
-  configureFlags = [ "--enable-dependency-reduction" "--disable-frontend"];
+  configureFlags = [ "--enable-dependency-reduction" "--disable-frontend" ];
 
   postConfigure = ''
     echo '#define NIX_ESCI_PREFIX "'${fwdir}'"' >> config.h
-    '';
+  '';
 
   postInstall = ''
     mkdir -p $out/etc/sane.d
@@ -294,23 +360,25 @@ stdenv.mkDerivation rec {
     ln -s ${iscan-data}/share/iscan-data $out/share/iscan-data
     mkdir -p $out/lib/iscan
     ln -s ${plugins.network}/lib/iscan/network $out/lib/iscan/network
-    '';
+  '';
   postFixup = ''
     # iscan-registry is a shell script requiring getopt
     wrapProgram $out/bin/iscan-registry --prefix PATH : ${getopt}/bin
     registry=$out/bin/iscan-registry;
-    '' +
-    stdenv.lib.concatStrings (stdenv.lib.mapAttrsToList (name: value: ''
-    plugin=${value};
-    ${value.passthru.registrationCommand}
-    '') plugins);
+  '' +
+  lib.concatStrings (lib.mapAttrsToList
+    (name: value: ''
+      plugin=${value};
+      ${value.passthru.registrationCommand}
+    '')
+    plugins);
   meta = common_meta // {
-    description = "sane-epkowa backend for some epson scanners.";
+    description = "sane-epkowa backend for some epson scanners";
     longDescription = ''
       Includes gui-less iscan (aka. Image Scan! for Linux).
       Supported hardware: at least :
     '' +
-    stdenv.lib.concatStringsSep ", " (stdenv.lib.mapAttrsToList (name: value: value.passthru.hw) plugins);
-    maintainers = with stdenv.lib.maintainers; [ symphorien dominikh ];
+    lib.concatStringsSep ", " (lib.mapAttrsToList (name: value: value.passthru.hw) plugins);
+    maintainers = with lib.maintainers; [ symphorien dominikh ];
   };
 }
diff --git a/pkgs/misc/drivers/epson-201106w/default.nix b/pkgs/misc/drivers/epson-201106w/default.nix
index 95eb59f7167..a5a32644c3a 100644
--- a/pkgs/misc/drivers/epson-201106w/default.nix
+++ b/pkgs/misc/drivers/epson-201106w/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, rpmextract, autoreconfHook, file, libjpeg, cups }:
+{ lib, stdenv, fetchurl, rpmextract, autoreconfHook, file, libjpeg, cups }:
 
 let
   version = "1.0.1";
@@ -13,7 +13,7 @@ in
       # NOTE: Don't forget to update the webarchive link too!
       urls = [
         "https://download.ebz.epson.net/dsc/op/stable/SRPMS/epson-inkjet-printer-201106w-${version}-1lsb3.2.src.rpm"
-        "https://web.archive.org/web/https://download.ebz.epson.net/dsc/op/stable/SRPMS/epson-inkjet-printer-201106w-${version}-1lsb3.2.src.rpm"     
+        "https://web.archive.org/web/https://download.ebz.epson.net/dsc/op/stable/SRPMS/epson-inkjet-printer-201106w-${version}-1lsb3.2.src.rpm"
       ];
 
       sha256 = "1yig1xrh1ikblbp7sx706n5nnc237wy4mbch23ymy6akbgqg4aig";
@@ -48,7 +48,7 @@ in
       cp -a README $out/doc/README.driver
     '';
 
-    meta = with stdenv.lib; {
+    meta = with lib; {
       homepage = "https://www.openprinting.org/driver/epson-201106w";
       description = "Epson printer driver (BX535WD, BX630FW, BX635FWD, ME940FW, NX530, NX635, NX635, SX535WD, WorkForce 545, WorkForce 645";
       longDescription = ''
diff --git a/pkgs/misc/drivers/epson-alc1100/default.nix b/pkgs/misc/drivers/epson-alc1100/default.nix
index fe52b104a52..5551f734138 100644
--- a/pkgs/misc/drivers/epson-alc1100/default.nix
+++ b/pkgs/misc/drivers/epson-alc1100/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, cups, pkgsi686Linux, dpkg, psutils, makeWrapper, ghostscript, bash }:
+{ lib, stdenv, fetchurl, cups, pkgsi686Linux, dpkg, psutils, makeWrapper, ghostscript, bash }:
 
 let
   version = "1.2-0";
@@ -13,8 +13,8 @@ in
     inherit version;
 
     src = fetchurl {
-      url = "http://a1227.g.akamai.net/f/1227/40484/7d/download.ebz.epson.net/dsc/f/01/00/01/58/65/cd71929d2bf41ebf7e96f68fa9f1279556545ef1/Epson-ALC1100-filter-1.2.tar.gz";
-      sha256 = "0q0bf4dfm4v69l7xg6sgkh7rwb0h77i8j9kplq1dfkd208g7y81p";
+      url = "https://download3.ebz.epson.net/dsc/f/03/00/11/33/07/4027e99517b5c388d444b8444d719b4b77f7e9db/Epson-ALC1100-filter-1.2.tar.gz";
+      sha256 = "1dfw75a3kj2aa4iicvlk9kz3jarrsikpnpd4cdpw79scfc5mwm2p";
     };
 
     patches = [ ./cups-data-dir.patch ./ppd.patch ];
@@ -33,12 +33,12 @@ in
 
     postFixup = ''
       patchelf --set-interpreter ${pkgsi686Linux.glibc}/lib/ld-linux.so.2 \
-        --set-rpath "${stdenv.lib.makeLibraryPath [
+        --set-rpath "${lib.makeLibraryPath [
           pkgsi686Linux.glibc
           "$out"
         ]}" $out/bin/alc1100
 
-      patchelf --set-rpath "${stdenv.lib.makeLibraryPath [
+      patchelf --set-rpath "${lib.makeLibraryPath [
           pkgsi686Linux.glibc
         ]}" $out/lib/libstdc++.so.5.0.7
 
@@ -49,7 +49,7 @@ in
         --suffix PATH : "\$PATH:${psutils}/bin:${ghostscript}/bin:${bash}/bin:/var/lib/cups/path/bin"
     '';
 
-    meta = with stdenv.lib; {
+    meta = with lib; {
       homepage = "http://download.ebz.epson.net/dsc/search/01/search/";
       description = "Epson AcuLaser C1100 Driver";
       longDescription = ''
diff --git a/pkgs/misc/drivers/epson-escpr/default.nix b/pkgs/misc/drivers/epson-escpr/default.nix
index d90ef2c91f6..bdb2839ab0b 100644
--- a/pkgs/misc/drivers/epson-escpr/default.nix
+++ b/pkgs/misc/drivers/epson-escpr/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, cups }:
+{ lib, stdenv, fetchurl, cups }:
 
 stdenv.mkDerivation {
   pname = "epson-escpr";
@@ -8,7 +8,7 @@ stdenv.mkDerivation {
     # To find new versions, visit
     # http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX and search for
     # some printer like for instance "WF-7110" to get to the most recent
-    # version.  
+    # version.
     # NOTE: Don't forget to update the webarchive link too!
     urls = [
       "https://download3.ebz.epson.net/dsc/f/03/00/09/83/26/f90d0f70b33a9d7d77a2408364c47fba1ccbf943/epson-inkjet-printer-escpr-1.7.3-1lsb3.2.tar.gz"
@@ -21,7 +21,7 @@ stdenv.mkDerivation {
 
   buildInputs = [ cups ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://download.ebz.epson.net/dsc/search/01/search/";
     description = "ESC/P-R Driver (generic driver)";
     longDescription = ''
diff --git a/pkgs/misc/drivers/epson-escpr2/default.nix b/pkgs/misc/drivers/epson-escpr2/default.nix
index 2e587cbd044..130be517bb8 100644
--- a/pkgs/misc/drivers/epson-escpr2/default.nix
+++ b/pkgs/misc/drivers/epson-escpr2/default.nix
@@ -1,34 +1,27 @@
-{ stdenv, fetchurl, cups, busybox }:
+{ lib, stdenv, fetchurl, cups }:
 
 stdenv.mkDerivation rec {
   pname = "epson-inkjet-printer-escpr2";
-  version = "1.1.15";
+  version = "1.1.34";
 
   src = fetchurl {
     # To find new versions, visit
     # http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX and search for
     # some printer like for instance "WF-7210" to get to the most recent
-    # version.  
+    # version.
     # NOTE: Don't forget to update the webarchive link too!
     urls = [
-      "https://download3.ebz.epson.net/dsc/f/03/00/11/56/43/b1a6f1193e073c4c049da9404806c61052b62419/epson-inkjet-printer-escpr2-1.1.15-1lsb3.2.src.rpm"
-      "https://web.archive.org/web/20200726093746if_/https://download3.ebz.epson.net/dsc/f/03/00/11/56/43/b1a6f1193e073c4c049da9404806c61052b62419/epson-inkjet-printer-escpr2-1.1.15-1lsb3.2.src.rpm"
+      "https://download3.ebz.epson.net/dsc/f/03/00/12/85/48/fd5de1ecd7270b0398399355e265c99dfd1dbafb/epson-inkjet-printer-escpr2-1.1.34.tar.gz"
+      "https://web.archive.org/web/20210627160654/https://download3.ebz.epson.net/dsc/f/03/00/12/85/48/fd5de1ecd7270b0398399355e265c99dfd1dbafb/epson-inkjet-printer-escpr2-1.1.34.tar.gz"
     ];
-    sha256 = "0a6pzpx281dv9g148jp60l5z0brf260zb54dq6g1ixz4bmjz3f1f";
+    sha256 = "sha256-sHBGWbkZ+zolHehyXQR8U2AyKSrgDSPmrkrcfcx/bAs=";
   };
 
   patches = [ ./cups-filter-ppd-dirs.patch ];
 
-  buildInputs = [ cups busybox ];
+  buildInputs = [ cups ];
 
-  unpackPhase = ''
-    rpm2cpio $src | cpio -idmv
-
-    tar xvf ${pname}-${version}-1lsb3.2.tar.gz
-    cd ${pname}-${version}
-  '';
-
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://download.ebz.epson.net/dsc/search/01/search/";
     description = "ESC/P-R 2 Driver (generic driver)";
     longDescription = ''
diff --git a/pkgs/misc/drivers/epson_201207w/default.nix b/pkgs/misc/drivers/epson_201207w/default.nix
index 6a9782715d2..d5c57b35c32 100644
--- a/pkgs/misc/drivers/epson_201207w/default.nix
+++ b/pkgs/misc/drivers/epson_201207w/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, rpmextract, autoreconfHook, file, libjpeg, cups }:
+{ lib, stdenv, fetchurl, rpmextract, autoreconfHook, file, libjpeg, cups }:
 
 let
   version = "1.0.0";
@@ -46,7 +46,7 @@ in
       cp -a README $out/doc/README.driver
     '';
 
-    meta = with stdenv.lib; {
+    meta = with lib; {
       homepage = "https://www.openprinting.org/driver/epson-201207w";
       description = "Epson printer driver (L110, L210, L300, L350, L355, L550, L555)";
       longDescription = ''
@@ -63,11 +63,11 @@ in
            Epson L550 Series
            Epson L555 Series
 
-	To use the driver adjust your configuration.nix file:
-	  services.printing = {
-	    enable = true;
-	    drivers = [ pkgs.epson_201207w ];
-	  };
+        To use the driver adjust your configuration.nix file:
+          services.printing = {
+            enable = true;
+            drivers = [ pkgs.epson_201207w ];
+          };
       '';
       license = with licenses; [ lgpl21 epson ];
       maintainers = [ maintainers.romildo ];
diff --git a/pkgs/misc/drivers/foo2zjs/default.nix b/pkgs/misc/drivers/foo2zjs/default.nix
index 7e1ff01bda0..6e4a38ed171 100644
--- a/pkgs/misc/drivers/foo2zjs/default.nix
+++ b/pkgs/misc/drivers/foo2zjs/default.nix
@@ -1,14 +1,15 @@
-{ stdenv, fetchurl, foomatic-filters, bc, unzip, ghostscript, systemd, vim, time }:
+{ lib, stdenv, fetchurl, foomatic-filters, bc, ghostscript, systemd, vim, time }:
 
 stdenv.mkDerivation rec {
-  name = "foo2zjs-20180519";
+  pname = "foo2zjs";
+  version = "20210116";
 
   src = fetchurl {
-    url = "http://www.loegria.net/mirrors/foo2zjs/${name}.tar.gz";
-    sha256 = "1rmw4jmxn2lqp124mapvnic0ma8ipyvisx2vj848mvad5g5w9x3z";
+    url = "http://www.loegria.net/mirrors/foo2zjs/foo2zjs-${version}.tar.gz";
+    sha256 = "14x3wizvncdy0xgvmcx541qanwb7bg76abygqy17bxycn1zh5r1x";
   };
 
-  buildInputs = [ foomatic-filters bc unzip ghostscript systemd vim ];
+  buildInputs = [ foomatic-filters bc ghostscript systemd vim ];
 
   patches = [ ./no-hardcode-fw.diff ];
 
@@ -52,7 +53,7 @@ stdenv.mkDerivation rec {
     cp -v getweb arm2hpdl "$out/bin"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "ZjStream printer drivers";
     maintainers = with maintainers;
     [
diff --git a/pkgs/misc/drivers/foomatic-filters/default.nix b/pkgs/misc/drivers/foomatic-filters/default.nix
index 3ca64e0e8f8..db1da676a51 100644
--- a/pkgs/misc/drivers/foomatic-filters/default.nix
+++ b/pkgs/misc/drivers/foomatic-filters/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchpatch, fetchurl, pkgconfig, perl, cups, dbus, enscript }:
+{ lib, stdenv, fetchpatch, fetchurl, pkg-config, perl, cups, dbus, enscript }:
 
 stdenv.mkDerivation rec {
   name = "foomatic-filters-4.0.17";
@@ -8,7 +8,7 @@ stdenv.mkDerivation rec {
     sha256 = "1qrkgbm5jay2r7sh9qbyf0aiyrsl1mdc844hxf7fhw95a0zfbqm2";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ perl cups dbus enscript ];
 
   patches = [
@@ -33,8 +33,8 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "Foomatic printing filters";
-    maintainers = [ stdenv.lib.maintainers.raskin ];
-    platforms = stdenv.lib.platforms.linux;
-    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = [ lib.maintainers.raskin ];
+    platforms = lib.platforms.linux;
+    license = lib.licenses.gpl2Plus;
   };
 }
diff --git a/pkgs/misc/drivers/gutenprint/bin.nix b/pkgs/misc/drivers/gutenprint/bin.nix
index 4adb96e1299..58b77cb9107 100644
--- a/pkgs/misc/drivers/gutenprint/bin.nix
+++ b/pkgs/misc/drivers/gutenprint/bin.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, rpm, cpio, zlib }:
+{ lib, stdenv, fetchurl, rpm, cpio, zlib }:
 
 /* usage: (sorry, its still impure but works!)
 
@@ -36,7 +36,7 @@ stdenv.mkDerivation {
 
   phases = "buildPhase";
 
-  libPath = stdenv.lib.makeLibraryPath [ stdenv.cc.cc zlib ];
+  libPath = lib.makeLibraryPath [ stdenv.cc.cc zlib ];
 
   buildPhase = ''
     ar -x $src data.tar.gz
diff --git a/pkgs/misc/drivers/gutenprint/default.nix b/pkgs/misc/drivers/gutenprint/default.nix
index 9946f499329..9cd76c11cce 100644
--- a/pkgs/misc/drivers/gutenprint/default.nix
+++ b/pkgs/misc/drivers/gutenprint/default.nix
@@ -1,19 +1,19 @@
 # this package was called gimp-print in the past
-{ stdenv, lib, fetchurl, makeWrapper, pkgconfig
+{ stdenv, lib, fetchurl, makeWrapper, pkg-config
 , ijs, zlib
 , gimp2Support ? false, gimp
 , cupsSupport ? true, cups, libusb-compat-0_1, perl
 }:
 
 stdenv.mkDerivation rec {
-  name = "gutenprint-5.2.14";
+  name = "gutenprint-5.3.4";
 
   src = fetchurl {
     url = "mirror://sourceforge/gimp-print/${name}.tar.bz2";
-    sha256 = "1293x19gw1b742id7c7bz5giv3vlxaqpmbdz2g0n99wny5k0ggs5";
+    sha256 = "0s0b14hjwvbxksq7af5v8z9g2rfqv9jdmxd9d81m57f5mh6rad0p";
   };
 
-  nativeBuildInputs = [ makeWrapper pkgconfig ];
+  nativeBuildInputs = [ makeWrapper pkg-config ];
   buildInputs =
     [ ijs zlib ]
     ++ lib.optionals gimp2Support [ gimp.gtk gimp ]
@@ -42,7 +42,7 @@ stdenv.mkDerivation rec {
   # Testing is very, very long.
   # doCheck = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Ghostscript and cups printer drivers";
     homepage = "https://sourceforge.net/projects/gimp-print/";
     license = licenses.gpl2;
diff --git a/pkgs/misc/drivers/hplip/3.16.11.nix b/pkgs/misc/drivers/hplip/3.16.11.nix
index 452c2c425c1..37609a66c94 100644
--- a/pkgs/misc/drivers/hplip/3.16.11.nix
+++ b/pkgs/misc/drivers/hplip/3.16.11.nix
@@ -1,8 +1,8 @@
-{ stdenv, fetchurl, substituteAll
-, pkgconfig
+{ lib, stdenv, fetchurl, substituteAll
+, pkg-config
 , cups, libjpeg, libusb1, python2Packages, sane-backends, dbus, usbutils
 , net-snmp, openssl, nettools
-, bash, coreutils, utillinux
+, bash, coreutils, util-linux
 , qtSupport ? true
 , withPlugin ? false
 }:
@@ -60,7 +60,7 @@ python2Packages.buildPythonApplication {
   ];
 
   nativeBuildInputs = [
-    pkgconfig
+    pkg-config
   ];
 
   pythonPath = with python2Packages; [
@@ -69,7 +69,7 @@ python2Packages.buildPythonApplication {
     pygobject2
     reportlab
     usbutils
-  ] ++ stdenv.lib.optionals qtSupport [
+  ] ++ lib.optionals qtSupport [
     pyqt4
   ];
 
@@ -111,7 +111,7 @@ python2Packages.buildPythonApplication {
 
   enableParallelBuilding = true;
 
-  postInstall = stdenv.lib.optionalString withPlugin ''
+  postInstall = lib.optionalString withPlugin ''
     sh ${plugin} --noexec --keep
     cd plugin_tmp
 
@@ -175,11 +175,11 @@ python2Packages.buildPythonApplication {
     substituteInPlace $out/etc/udev/rules.d/56-hpmud.rules \
       --replace {,${bash}}/bin/sh \
       --replace /usr/bin/nohup "" \
-      --replace {,${utillinux}/bin/}logger \
+      --replace {,${util-linux}/bin/}logger \
       --replace {/usr,$out}/bin
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Print, scan and fax HP drivers for Linux";
     homepage = "http://hplipopensource.com/";
     downloadPage = "https://sourceforge.net/projects/hplip/files/hplip/";
diff --git a/pkgs/misc/drivers/hplip/3.18.5.nix b/pkgs/misc/drivers/hplip/3.18.5.nix
deleted file mode 100644
index f9064720fb6..00000000000
--- a/pkgs/misc/drivers/hplip/3.18.5.nix
+++ /dev/null
@@ -1,229 +0,0 @@
-{ stdenv, fetchurl, substituteAll
-, pkgconfig
-, cups, zlib, libjpeg, libusb1, python2Packages, sane-backends
-, dbus, file, ghostscript, usbutils
-, net-snmp, openssl, perl, nettools
-, bash, coreutils, utillinux
-, withQt5 ? true
-, withPlugin ? false
-, withStaticPPDInstall ? false
-}:
-
-let
-
-  name = "hplip-${version}";
-  version = "3.18.5";
-
-  src = fetchurl {
-    url = "mirror://sourceforge/hplip/${name}.tar.gz";
-    sha256 = "0xb7ga2wgbwjxsss67mjn2y6fmqsfwzmv11ivvfzhnl36lh22hkb";
-  };
-
-  plugin = fetchurl {
-    url = "https://www.openprinting.org/download/printdriver/auxfiles/HP/plugins/${name}-plugin.run";
-    sha256 = "1jf74jya071zqvwhy9n0c3007pzgcxydkw7qdh4sx70brly81i7p";
-  };
-
-  hplipState = substituteAll {
-    inherit version;
-    src = ./hplip.state;
-  };
-
-  hplipPlatforms = {
-    i686-linux    = "x86_32";
-    x86_64-linux  = "x86_64";
-    armv6l-linux  = "arm32";
-    armv7l-linux  = "arm32";
-    aarch64-linux = "arm64";
-  };
-
-  hplipArch = hplipPlatforms.${stdenv.hostPlatform.system}
-    or (throw "HPLIP not supported on ${stdenv.hostPlatform.system}");
-
-  pluginArches = [ "x86_32" "x86_64" "arm32" "arm64" ];
-
-in
-
-assert withPlugin -> builtins.elem hplipArch pluginArches
-  || throw "HPLIP plugin not supported on ${stdenv.hostPlatform.system}";
-
-python2Packages.buildPythonApplication {
-  inherit name src;
-  format = "other";
-
-  buildInputs = [
-    libjpeg
-    cups
-    libusb1
-    sane-backends
-    dbus
-    file
-    ghostscript
-    net-snmp
-    openssl
-    perl
-    zlib
-  ];
-
-  nativeBuildInputs = [
-    pkgconfig
-  ];
-
-  pythonPath = with python2Packages; [
-    dbus
-    pillow
-    pygobject2
-    reportlab
-    usbutils
-    sip
-  ] ++ stdenv.lib.optionals withQt5 [
-    pyqt5
-  ];
-
-  makeWrapperArgs = [ "--prefix" "PATH" ":" "${nettools}/bin" ];
-
-  prePatch = ''
-    # HPLIP hardcodes absolute paths everywhere. Nuke from orbit.
-    find . -type f -exec sed -i \
-      -e s,/etc/hp,$out/etc/hp,g \
-      -e s,/etc/sane.d,$out/etc/sane.d,g \
-      -e s,/usr/include/libusb-1.0,${libusb1.dev}/include/libusb-1.0,g \
-      -e s,/usr/share/hal/fdi/preprobe/10osvendor,$out/share/hal/fdi/preprobe/10osvendor,g \
-      -e s,/usr/lib/systemd/system,$out/lib/systemd/system,g \
-      -e s,/var/lib/hp,$out/var/lib/hp,g \
-      -e s,/usr/bin/perl,${perl}/bin/perl,g \
-      -e s,/usr/bin/file,${file}/bin/file,g \
-      -e s,/usr/bin/gs,${ghostscript}/bin/gs,g \
-      -e s,/usr/share/cups/fonts,${ghostscript}/share/ghostscript/fonts,g \
-      -e "s,ExecStart=/usr/bin/python /usr/bin/hp-config_usb_printer,ExecStart=$out/bin/hp-config_usb_printer,g" \
-      {} +
-  '';
-
-  preConfigure = ''
-    export configureFlags="$configureFlags
-      --with-hpppddir=$out/share/cups/model/HP
-      --with-cupsfilterdir=$out/lib/cups/filter
-      --with-cupsbackenddir=$out/lib/cups/backend
-      --with-icondir=$out/share/applications
-      --with-systraydir=$out/xdg/autostart
-      --with-mimedir=$out/etc/cups
-      --enable-policykit
-      ${stdenv.lib.optionalString withStaticPPDInstall "--enable-cups-ppd-install"}
-      --disable-qt4
-      ${stdenv.lib.optionalString withQt5 "--enable-qt5"}
-    "
-
-    export makeFlags="
-      halpredir=$out/share/hal/fdi/preprobe/10osvendor
-      rulesdir=$out/etc/udev/rules.d
-      policykit_dir=$out/share/polkit-1/actions
-      policykit_dbus_etcdir=$out/etc/dbus-1/system.d
-      policykit_dbus_sharedir=$out/share/dbus-1/system-services
-      hplip_confdir=$out/etc/hp
-      hplip_statedir=$out/var/lib/hp
-    "
-
-    # Prevent 'ppdc: Unable to find include file "<font.defs>"' which prevent
-    # generation of '*.ppd' files.
-    # This seems to be a 'ppdc' issue when the tool is run in a hermetic sandbox.
-    # Could not find how to fix the problem in 'ppdc' so this is a workaround.
-    export CUPS_DATADIR="${cups}/share/cups"
-  '';
-
-  enableParallelBuilding = true;
-
-  #
-  # Running `hp-diagnose_plugin -g` can be used to diagnose
-  # issues with plugins.
-  #
-  postInstall = stdenv.lib.optionalString withPlugin ''
-    sh ${plugin} --noexec --keep
-    cd plugin_tmp
-
-    cp plugin.spec $out/share/hplip/
-
-    mkdir -p $out/share/hplip/data/firmware
-    cp *.fw.gz $out/share/hplip/data/firmware
-
-    mkdir -p $out/share/hplip/data/plugins
-    cp license.txt $out/share/hplip/data/plugins
-
-    mkdir -p $out/share/hplip/prnt/plugins
-    for plugin in lj hbpl1; do
-      cp $plugin-${hplipArch}.so $out/share/hplip/prnt/plugins
-      chmod 0755 $out/share/hplip/prnt/plugins/$plugin-${hplipArch}.so
-      ln -s $out/share/hplip/prnt/plugins/$plugin-${hplipArch}.so \
-        $out/share/hplip/prnt/plugins/$plugin.so
-    done
-
-    mkdir -p $out/share/hplip/scan/plugins
-    for plugin in bb_soap bb_marvell bb_soapht bb_escl; do
-      cp $plugin-${hplipArch}.so $out/share/hplip/scan/plugins
-      chmod 0755 $out/share/hplip/scan/plugins/$plugin-${hplipArch}.so
-      ln -s $out/share/hplip/scan/plugins/$plugin-${hplipArch}.so \
-        $out/share/hplip/scan/plugins/$plugin.so
-    done
-
-    mkdir -p $out/share/hplip/fax/plugins
-    for plugin in fax_marvell; do
-      cp $plugin-${hplipArch}.so $out/share/hplip/fax/plugins
-      chmod 0755 $out/share/hplip/fax/plugins/$plugin-${hplipArch}.so
-      ln -s $out/share/hplip/fax/plugins/$plugin-${hplipArch}.so \
-        $out/share/hplip/fax/plugins/$plugin.so
-    done
-
-    mkdir -p $out/var/lib/hp
-    cp ${hplipState} $out/var/lib/hp/hplip.state
-  '';
-
-  # The installed executables are just symlinks into $out/share/hplip,
-  # but wrapPythonPrograms ignores symlinks. We cannot replace the Python
-  # modules in $out/share/hplip with wrapper scripts because they import
-  # each other as libraries. Instead, we emulate wrapPythonPrograms by
-  # 1. Calling patchPythonProgram on the original script in $out/share/hplip
-  # 2. Making our own wrapper pointing directly to the original script.
-  dontWrapPythonPrograms = true;
-  preFixup = ''
-    buildPythonPath "$out $pythonPath"
-
-    for bin in $out/bin/*; do
-      py=$(readlink -m $bin)
-      rm $bin
-      echo "patching \`$py'..."
-      patchPythonScript "$py"
-      echo "wrapping \`$bin'..."
-      makeWrapper "$py" "$bin" \
-          --prefix PATH ':' "$program_PATH" \
-          --set PYTHONNOUSERSITE "true" \
-          $makeWrapperArgs
-    done
-  '';
-
-  # There are some binaries there, which reference gcc-unwrapped otherwise.
-  stripDebugList = [
-    "share/hplip"
-  ];
-
-  postFixup = ''
-    substituteInPlace $out/etc/hp/hplip.conf --replace /usr $out
-    # Patch udev rules:
-    # with plugin, they upload firmware to printers,
-    # without plugin, they complain about the missing plugin.
-    substituteInPlace $out/etc/udev/rules.d/56-hpmud.rules \
-      --replace {,${bash}}/bin/sh \
-      --replace /usr/bin/nohup "" \
-      --replace {,${utillinux}/bin/}logger \
-      --replace {/usr,$out}/bin
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Print, scan and fax HP drivers for Linux";
-    homepage = "https://developers.hp.com/hp-linux-imaging-and-printing";
-    downloadPage = "https://sourceforge.net/projects/hplip/files/hplip/";
-    license = if withPlugin
-      then licenses.unfree
-      else with licenses; [ mit bsd2 gpl2Plus ];
-    platforms = [ "i686-linux" "x86_64-linux" "armv6l-linux" "armv7l-linux" "aarch64-linux" ];
-    maintainers = with maintainers; [ jgeerds ttuegel ];
-  };
-}
diff --git a/pkgs/misc/drivers/hplip/default.nix b/pkgs/misc/drivers/hplip/default.nix
index afd1f8f6fe4..f33ca502438 100644
--- a/pkgs/misc/drivers/hplip/default.nix
+++ b/pkgs/misc/drivers/hplip/default.nix
@@ -1,9 +1,9 @@
-{ stdenv, fetchurl, substituteAll
-, pkgconfig
+{ lib, stdenv, fetchurl, substituteAll
+, pkg-config
 , cups, zlib, libjpeg, libusb1, python3Packages, sane-backends
 , dbus, file, ghostscript, usbutils
-, net-snmp, openssl, perl, nettools
-, bash, coreutils, utillinux
+, net-snmp, openssl, perl, nettools, avahi
+, bash, coreutils, util-linux
 # To remove references to gcc-unwrapped
 , removeReferencesTo, qt5
 , withQt5 ? true
@@ -13,17 +13,17 @@
 
 let
 
-  name = "hplip-${version}";
-  version = "3.20.5";
+  pname = "hplip";
+  version = "3.20.11";
 
   src = fetchurl {
-    url = "mirror://sourceforge/hplip/${name}.tar.gz";
-    sha256 = "004bbd78487b7803cdcf2a96b00de938797227068c4de43ee7ad7d174c4e475a";
+    url = "mirror://sourceforge/hplip/${pname}-${version}.tar.gz";
+    sha256 = "CxZ1s9jnCaEyX+hj9arOO9NxB3mnPq6Gj3su6aVv2xE=";
   };
 
   plugin = fetchurl {
-    url = "https://developers.hp.com/sites/default/files/${name}-plugin.run";
-    sha256 = "ff3dedda3158be64b985efbf636890ddda5b271ae1f1fbd788219e1344a9c2e7";
+    url = "https://developers.hp.com/sites/default/files/${pname}-${version}-plugin.run";
+    sha256 = "r8PoQQFfjdHKySPCFwtDR8Tl6v5Eag9gXpBAp6sCF9Q=";
   };
 
   hplipState = substituteAll {
@@ -36,13 +36,13 @@ let
     x86_64-linux = "x86_64";
     armv6l-linux = "arm32";
     armv7l-linux = "arm32";
-    aarch64-linux = "aarch64";
+    aarch64-linux = "arm64";
   };
 
   hplipArch = hplipPlatforms.${stdenv.hostPlatform.system}
     or (throw "HPLIP not supported on ${stdenv.hostPlatform.system}");
 
-  pluginArches = [ "x86_32" "x86_64" "arm32" "aarch64" ];
+  pluginArches = [ "x86_32" "x86_64" "arm32" "arm64" ];
 
 in
 
@@ -50,7 +50,7 @@ assert withPlugin -> builtins.elem hplipArch pluginArches
   || throw "HPLIP plugin not supported on ${stdenv.hostPlatform.system}";
 
 python3Packages.buildPythonApplication {
-  inherit name src;
+  inherit pname version src;
   format = "other";
 
   buildInputs = [
@@ -65,12 +65,13 @@ python3Packages.buildPythonApplication {
     openssl
     perl
     zlib
+    avahi
   ];
 
   nativeBuildInputs = [
-    pkgconfig
+    pkg-config
     removeReferencesTo
-  ] ++ stdenv.lib.optional withQt5 qt5.wrapQtAppsHook;
+  ] ++ lib.optional withQt5 qt5.wrapQtAppsHook;
 
   pythonPath = with python3Packages; [
     dbus
@@ -78,9 +79,9 @@ python3Packages.buildPythonApplication {
     pygobject3
     reportlab
     usbutils
-    sip
+    sip_4
     dbus-python
-  ] ++ stdenv.lib.optionals withQt5 [
+  ] ++ lib.optionals withQt5 [
     pyqt5
     enum-compat
   ];
@@ -92,9 +93,20 @@ python3Packages.buildPythonApplication {
     # https://bugs.launchpad.net/hplip/+bug/1788706
     # https://bugs.launchpad.net/hplip/+bug/1787289
     ./image-processor.patch
+
+    # HPLIP's getSystemPPDs() function relies on searching for PPDs below common FHS
+    # paths, and hp-setup crashes if none of these paths actually exist (which they
+    # don't on NixOS).  Add the equivalent NixOS path, /var/lib/cups/path/share.
+    # See: https://github.com/NixOS/nixpkgs/issues/21796
+    ./hplip-3.20.11-nixos-cups-ppd-search-path.patch
   ];
 
-  prePatch = ''
+  postPatch = ''
+    # https://github.com/NixOS/nixpkgs/issues/44230
+    substituteInPlace createPPD.sh \
+      --replace ppdc "${cups}/bin/ppdc" \
+      --replace "gzip -c" "gzip -cn"
+
     # HPLIP hardcodes absolute paths everywhere. Nuke from orbit.
     find . -type f -exec sed -i \
       -e s,/etc/hp,$out/etc/hp,g \
@@ -111,35 +123,40 @@ python3Packages.buildPythonApplication {
       {} +
   '';
 
-  preConfigure = ''
-    export configureFlags="$configureFlags
-      --with-hpppddir=$out/share/cups/model/HP
-      --with-cupsfilterdir=$out/lib/cups/filter
-      --with-cupsbackenddir=$out/lib/cups/backend
-      --with-icondir=$out/share/applications
-      --with-systraydir=$out/xdg/autostart
-      --with-mimedir=$out/etc/cups
-      --enable-policykit
-      ${stdenv.lib.optionalString withStaticPPDInstall "--enable-cups-ppd-install"}
-      --disable-qt4
-      ${stdenv.lib.optionalString withQt5 "--enable-qt5"}
-    "
-
-    export makeFlags="
-      halpredir=$out/share/hal/fdi/preprobe/10osvendor
-      rulesdir=$out/etc/udev/rules.d
-      policykit_dir=$out/share/polkit-1/actions
-      policykit_dbus_etcdir=$out/etc/dbus-1/system.d
-      policykit_dbus_sharedir=$out/share/dbus-1/system-services
-      hplip_confdir=$out/etc/hp
-      hplip_statedir=$out/var/lib/hp
-    "
-
-    # Prevent 'ppdc: Unable to find include file "<font.defs>"' which prevent
-    # generation of '*.ppd' files.
-    # This seems to be a 'ppdc' issue when the tool is run in a hermetic sandbox.
-    # Could not find how to fix the problem in 'ppdc' so this is a workaround.
-    export CUPS_DATADIR="${cups}/share/cups"
+  configureFlags = let out = placeholder "out"; in [
+    "--with-hpppddir=${out}/share/cups/model/HP"
+    "--with-cupsfilterdir=${out}/lib/cups/filter"
+    "--with-cupsbackenddir=${out}/lib/cups/backend"
+    "--with-icondir=${out}/share/applications"
+    "--with-systraydir=${out}/xdg/autostart"
+    "--with-mimedir=${out}/etc/cups"
+    "--enable-policykit"
+    "--disable-qt4"
+  ]
+    ++ lib.optional withStaticPPDInstall "--enable-cups-ppd-install"
+    ++ lib.optional withQt5 "--enable-qt5"
+    ;
+
+  # Prevent 'ppdc: Unable to find include file "<font.defs>"' which prevent
+  # generation of '*.ppd' files.
+  # This seems to be a 'ppdc' issue when the tool is run in a hermetic sandbox.
+  # Could not find how to fix the problem in 'ppdc' so this is a workaround.
+  CUPS_DATADIR = "${cups}/share/cups";
+
+  makeFlags = let out = placeholder "out"; in [
+    "halpredir=${out}/share/hal/fdi/preprobe/10osvendor"
+    "rulesdir=${out}/etc/udev/rules.d"
+    "policykit_dir=${out}/share/polkit-1/actions"
+    "policykit_dbus_etcdir=${out}/etc/dbus-1/system.d"
+    "policykit_dbus_sharedir=${out}/share/dbus-1/system-services"
+    "hplip_confdir=${out}/etc/hp"
+    "hplip_statedir=${out}/var/lib/hp"
+  ];
+
+  postConfigure = ''
+    # don't save timestamp, in order to improve reproducibility
+    substituteInPlace Makefile \
+      --replace "GZIP_ENV = --best" "GZIP_ENV = --best -n"
   '';
 
   enableParallelBuilding = true;
@@ -148,7 +165,7 @@ python3Packages.buildPythonApplication {
   # Running `hp-diagnose_plugin -g` can be used to diagnose
   # issues with plugins.
   #
-  postInstall = stdenv.lib.optionalString withPlugin ''
+  postInstall = lib.optionalString withPlugin ''
     sh ${plugin} --noexec --keep
     cd plugin_tmp
 
@@ -219,10 +236,10 @@ python3Packages.buildPythonApplication {
     substituteInPlace $out/etc/udev/rules.d/56-hpmud.rules \
       --replace {,${bash}}/bin/sh \
       --replace /usr/bin/nohup "" \
-      --replace {,${utillinux}/bin/}logger \
+      --replace {,${util-linux}/bin/}logger \
       --replace {/usr,$out}/bin
     remove-references-to -t ${stdenv.cc.cc} $(readlink -f $out/lib/*.so)
-  '' + stdenv.lib.optionalString withQt5 ''
+  '' + lib.optionalString withQt5 ''
     for f in $out/bin/hp-*;do
       wrapQtApp $f
     done
@@ -233,7 +250,7 @@ python3Packages.buildPythonApplication {
     "share/hplip" "lib/cups/backend" "lib/cups/filter" python3Packages.python.sitePackages "lib/sane"
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Print, scan and fax HP drivers for Linux";
     homepage = "https://developers.hp.com/hp-linux-imaging-and-printing";
     downloadPage = "https://sourceforge.net/projects/hplip/files/hplip/";
diff --git a/pkgs/misc/drivers/hplip/hplip-3.20.11-nixos-cups-ppd-search-path.patch b/pkgs/misc/drivers/hplip/hplip-3.20.11-nixos-cups-ppd-search-path.patch
new file mode 100644
index 00000000000..d26e13dd2d6
--- /dev/null
+++ b/pkgs/misc/drivers/hplip/hplip-3.20.11-nixos-cups-ppd-search-path.patch
@@ -0,0 +1,24 @@
+From: Bryan Gardiner <bog@khumba.net>
+Date: Sat, 9 Jan 2021 16:51:20 -0800
+Subject: [PATCH] Add NixOS CUPS PPD search path.
+
+---
+ base/g.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/base/g.py b/base/g.py
+index f73e23f..758f339 100644
+--- a/base/g.py
++++ b/base/g.py
+@@ -283,7 +283,7 @@ prop.max_message_len = 8192
+ prop.max_message_read = 65536
+ prop.read_timeout = 90
+ 
+-prop.ppd_search_path = '/usr/share;/usr/local/share;/usr/lib;/usr/local/lib;/usr/libexec;/opt;/usr/lib64'
++prop.ppd_search_path = '/var/lib/cups/path/share;/usr/share;/usr/local/share;/usr/lib;/usr/local/lib;/usr/libexec;/opt;/usr/lib64'
+ prop.ppd_search_pattern = 'HP-*.ppd.*'
+ prop.ppd_download_url = 'http://www.linuxprinting.org/ppd-o-matic.cgi'
+ prop.ppd_file_suffix = '-hpijs.ppd'
+-- 
+2.29.2
+
diff --git a/pkgs/misc/drivers/infnoise/default.nix b/pkgs/misc/drivers/infnoise/default.nix
new file mode 100644
index 00000000000..b64cb56c407
--- /dev/null
+++ b/pkgs/misc/drivers/infnoise/default.nix
@@ -0,0 +1,43 @@
+{ lib, stdenv, fetchFromGitHub, libftdi }:
+
+stdenv.mkDerivation rec {
+  pname = "infnoise";
+  version = "unstable-2019-08-12";
+
+  src = fetchFromGitHub {
+    owner = "13-37-org";
+    repo = "infnoise";
+    rev = "132683d4b5ce0902468b666cba63baea36e97f0c";
+    sha256 = "1dzfzinyvhyy9zj32kqkl19fyhih6sy8r5sa3qahbbr4c30k7flp";
+  };
+
+  # Patch makefile so we can set defines from the command line instead of it depending on .git
+  patches = [ ./makefile.patch ];
+  GIT_COMMIT = src.rev;
+  GIT_VERSION = version;
+  GIT_DATE = "2019-08-12";
+
+  buildInputs = [ libftdi ];
+
+  sourceRoot = "source/software";
+  makefile = "Makefile.linux";
+  makeFlags = [ "PREFIX=$(out)" ];
+  postPatch = ''
+    substituteInPlace init_scripts/infnoise.service --replace "/usr/local" "$out"
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/13-37-org/infnoise";
+    description = "Driver for the Infinite Noise TRNG";
+    longDescription = ''
+      The Infinite Noise TRNG is a USB key hardware true random number generator.
+      It can either provide rng for userland applications, or provide rng for the OS entropy.
+      Add the following to your system configuration for plug and play support, adding to the OS entropy:
+      systemd.packages = [ pkgs.infnoise ];
+      services.udev.packages = [ pkgs.infnoise ];
+    '';
+    license = licenses.cc0;
+    maintainers = with maintainers; [ StijnDW ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/misc/drivers/infnoise/makefile.patch b/pkgs/misc/drivers/infnoise/makefile.patch
new file mode 100644
index 00000000000..b38519036d2
--- /dev/null
+++ b/pkgs/misc/drivers/infnoise/makefile.patch
@@ -0,0 +1,14 @@
+diff --git a/software/Makefile.linux b/software/Makefile.linux
+index db48aa5..df8b3d2 100644
+--- a/Makefile.linux
++++ b/Makefile.linux
+@@ -1,6 +1,6 @@
+-GIT_VERSION := $(shell git --no-pager describe --tags --always)
+-GIT_COMMIT  := $(shell git rev-parse --verify HEAD)
+-GIT_DATE    := $(firstword $(shell git --no-pager show --date=iso-strict --format="%ad" --name-only))
++GIT_VERSION ?= $(shell git --no-pager describe --tags --always)
++GIT_COMMIT  ?= $(shell git rev-parse --verify HEAD)
++GIT_DATE    ?= $(firstword $(shell git --no-pager show --date=iso-strict --format="%ad" --name-only))
+ 
+ PREFIX = $(DESTDIR)/usr/local
+ 
diff --git a/pkgs/misc/drivers/m33-linux/default.nix b/pkgs/misc/drivers/m33-linux/default.nix
index cb78bd3498a..d2ba2685a29 100644
--- a/pkgs/misc/drivers/m33-linux/default.nix
+++ b/pkgs/misc/drivers/m33-linux/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub }:
+{ lib, stdenv, fetchFromGitHub }:
 
 stdenv.mkDerivation {
   name = "M33-Linux-2016-06-23";
@@ -15,7 +15,7 @@ stdenv.mkDerivation {
     install -Dm755 90-micro-3d-local.rules $out/lib/udev/rules.d/90-micro-3d-local.rules
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/donovan6000/M3D-Linux";
     description = "A Linux program that can communicate with the Micro 3D printer";
     license = licenses.gpl2;
diff --git a/pkgs/misc/drivers/moltengamepad/default.nix b/pkgs/misc/drivers/moltengamepad/default.nix
index e5b3b5bab22..486e4e96dd4 100644
--- a/pkgs/misc/drivers/moltengamepad/default.nix
+++ b/pkgs/misc/drivers/moltengamepad/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, udev }:
+{ lib, stdenv, fetchFromGitHub, udev }:
 
 stdenv.mkDerivation {
   pname = "moltengamepad-git";
@@ -28,7 +28,7 @@ stdenv.mkDerivation {
     sed -i -e '159d;161d;472d;473d;474d;475d' source/eventlists/key_list.cpp
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/jgeumlek/MoltenGamepad";
     description = "Flexible Linux input device translator, geared for gamepads";
     license = licenses.mit;
diff --git a/pkgs/misc/drivers/pentablet-driver/default.nix b/pkgs/misc/drivers/pentablet-driver/default.nix
index 2f46d950d58..91564f2db89 100644
--- a/pkgs/misc/drivers/pentablet-driver/default.nix
+++ b/pkgs/misc/drivers/pentablet-driver/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, mkDerivation, fetchzip, autoPatchelfHook, libusb1, libX11, libXtst, qtbase, libglvnd }:
+{ lib, stdenv, mkDerivation, fetchzip, autoPatchelfHook, libusb1, libX11, libXtst, qtbase, libglvnd }:
 
 mkDerivation rec {
   pname = "pentablet-driver";
@@ -28,7 +28,7 @@ mkDerivation rec {
     cp config.xml $out/bin/config.xml
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://www.xp-pen.com/download-46.html";
     description = "Driver for XP-PEN Pentablet drawing tablets";
     license = licenses.unfree;
diff --git a/pkgs/misc/drivers/postscript-lexmark/default.nix b/pkgs/misc/drivers/postscript-lexmark/default.nix
index 74b7c68d38e..ebc6439dd5c 100644
--- a/pkgs/misc/drivers/postscript-lexmark/default.nix
+++ b/pkgs/misc/drivers/postscript-lexmark/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, rpmextract }:
+{ lib, stdenv, fetchurl, rpmextract }:
 let
   version = "20160218";
 in
@@ -30,7 +30,7 @@ stdenv.mkDerivation {
     cp -r opt/OpenPrinting-Lexmark/doc $out/doc
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://www.openprinting.org/driver/Postscript-Lexmark/";
     description = "Lexmark Postscript Drivers";
     platforms = platforms.linux;
diff --git a/pkgs/misc/drivers/sc-controller/default.nix b/pkgs/misc/drivers/sc-controller/default.nix
index 4de6e54cd5f..ff5fb6e5ee7 100644
--- a/pkgs/misc/drivers/sc-controller/default.nix
+++ b/pkgs/misc/drivers/sc-controller/default.nix
@@ -16,6 +16,9 @@ buildPythonApplication rec {
     sha256 = "1dskjh5qcjf4x21n4nk1zvdfivbgimsrc2lq1id85bibzps29499";
   };
 
+  # see https://github.com/NixOS/nixpkgs/issues/56943
+  strictDeps = false;
+
   nativeBuildInputs = [ wrapGAppsHook ];
 
   buildInputs = [ gtk3 gobject-introspection libappindicator-gtk3 librsvg ];
@@ -34,9 +37,6 @@ buildPythonApplication rec {
 
   preFixup = ''
     gappsWrapperArgs+=(--prefix LD_LIBRARY_PATH : "$LD_LIBRARY_PATH")
-    # gdk-pixbuf setup hook can not choose between propagated librsvg
-    # and our librsvg with GObject introspection.
-    GDK_PIXBUF_MODULE_FILE=$(echo ${librsvg}/lib/gdk-pixbuf-2.0/*/loaders.cache)
   '';
 
   postFixup = ''
diff --git a/pkgs/misc/drivers/spacenavd/configure-cfgfile-path.patch b/pkgs/misc/drivers/spacenavd/configure-cfgfile-path.patch
new file mode 100644
index 00000000000..268282e96ea
--- /dev/null
+++ b/pkgs/misc/drivers/spacenavd/configure-cfgfile-path.patch
@@ -0,0 +1,63 @@
+diff --git a/src/spnavd.c b/src/spnavd.c
+index 2d4eca6..a5227ed 100644
+--- a/src/spnavd.c
++++ b/src/spnavd.c
+@@ -27,6 +27,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ #include <sys/select.h>
+ #include <sys/socket.h>
+ #include <sys/un.h>
++#include <sys/types.h>
++#include <pwd.h>
+ #include "spnavd.h"
+ #include "logger.h"
+ #include "dev.h"
+@@ -47,13 +49,39 @@ static void handle_events(fd_set *rset);
+ static void sig_handler(int s);
+ static char *fix_path(char *str);
+ 
+-static char *cfgfile = DEF_CFGFILE;
++static char* config_path;
++char* cfg_path()
++{
++	char* buf;
++	if((buf = getenv("XDG_CONFIG_HOME"))) {
++		if(config_path == NULL) {
++			config_path = malloc(strlen(buf) + strlen("/spnavrc") + 1);
++			if ( config_path != NULL) {
++				sprintf(config_path, "%s/spnavrc", buf);
++			}
++		};
++		return config_path;
++	} else {
++		if (!(buf = getenv("HOME"))) {
++			struct passwd *pw = getpwuid(getuid());
++			buf = pw->pw_dir;
++		}
++		config_path = malloc(strlen(buf) + strlen("/.config/spnavrc") + 1);
++		if ( config_path != NULL) {
++			sprintf(config_path, "%s/.config/spnavrc", buf);
++		}
++		return config_path;
++	}
++}
++
++static char *cfgfile = NULL;
+ static char *logfile = DEF_LOGFILE;
+ static char *pidpath = NULL;
+ 
+ int main(int argc, char **argv)
+ {
+ 	int i, pid, ret, become_daemon = 1;
++	cfgfile = cfg_path();
+ 
+ 	for(i=1; i<argc; i++) {
+ 		if(argv[i][0] == '-') {
+@@ -247,7 +275,7 @@ static void print_usage(const char *argv0)
+ 	printf("usage: %s [options]\n", argv0);
+ 	printf("options:\n");
+ 	printf(" -d: do not daemonize\n");
+-	printf(" -c <file>: config file path (default: " DEF_CFGFILE ")\n");
++	printf(" -c <file>: config file path (default: %s)\n", cfg_path());
+ 	printf(" -l <file>|syslog: log file path or log to syslog (default: " DEF_LOGFILE ")\n");
+ 	printf(" -v: verbose output\n");
+ 	printf(" -V,-version: print version number and exit\n");
diff --git a/pkgs/misc/drivers/spacenavd/configure-pidfile-path.patch b/pkgs/misc/drivers/spacenavd/configure-pidfile-path.patch
new file mode 100644
index 00000000000..bc2cad9784c
--- /dev/null
+++ b/pkgs/misc/drivers/spacenavd/configure-pidfile-path.patch
@@ -0,0 +1,82 @@
+diff --git a/src/spnavd.c b/src/spnavd.c
+index 03080da..2d4eca6 100644
+--- a/src/spnavd.c
++++ b/src/spnavd.c
+@@ -42,12 +42,14 @@ static void cleanup(void);
+ static void daemonize(void);
+ static int write_pid_file(void);
+ static int find_running_daemon(void);
++static char *pidfile_path(void);
+ static void handle_events(fd_set *rset);
+ static void sig_handler(int s);
+ static char *fix_path(char *str);
+ 
+ static char *cfgfile = DEF_CFGFILE;
+ static char *logfile = DEF_LOGFILE;
++static char *pidpath = NULL;
+ 
+ int main(int argc, char **argv)
+ {
+@@ -270,7 +272,7 @@ static void cleanup(void)
+ 		remove_device(tmp);
+ 	}
+ 
+-	remove(PIDFILE);
++	remove(pidfile_path());
+ }
+ 
+ static void daemonize(void)
+@@ -314,7 +316,7 @@ static int write_pid_file(void)
+ 	FILE *fp;
+ 	int pid = getpid();
+ 
+-	if(!(fp = fopen(PIDFILE, "w"))) {
++	if(!(fp = fopen(pidfile_path(), "w"))) {
+ 		return -1;
+ 	}
+ 	fprintf(fp, "%d\n", pid);
+@@ -329,7 +331,7 @@ static int find_running_daemon(void)
+ 	struct sockaddr_un addr;
+ 
+ 	/* try to open the pid-file */
+-	if(!(fp = fopen(PIDFILE, "r"))) {
++	if(!(fp = fopen(pidfile_path(), "r"))) {
+ 		return -1;
+ 	}
+ 	if(fscanf(fp, "%d\n", &pid) != 1) {
+@@ -356,6 +358,22 @@ static int find_running_daemon(void)
+ 	return pid;
+ }
+ 
++char *pidfile_path(void)
++{
++	char *xdg_runtime_dir;
++	if((xdg_runtime_dir = getenv("XDG_RUNTIME_DIR"))) {
++		if ( pidpath == NULL ) {
++			pidpath = malloc(strlen(xdg_runtime_dir) + strlen("/spnavd.pid") + 1);
++			if ( pidpath != NULL ) {
++				sprintf(pidpath, "%s/spnavd.pid", xdg_runtime_dir);
++			}
++		};
++		return pidpath;
++	} else {
++		return DEFAULT_PIDFILE;
++	}
++}
++
+ static void handle_events(fd_set *rset)
+ {
+ 	int dev_fd, hotplug_fd;
+diff --git a/src/spnavd.h b/src/spnavd.h
+index 2d1c48b..17d22d3 100644
+--- a/src/spnavd.h
++++ b/src/spnavd.h
+@@ -26,7 +26,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ #define DEF_CFGFILE		"/etc/spnavrc"
+ #define DEF_LOGFILE		"/var/log/spnavd.log"
+ 
+-#define PIDFILE		"/var/run/spnavd.pid"
++#define DEFAULT_PIDFILE		"/run/spnavd.pid"
+ #define DEFAULT_SOCK_NAME	"/run/spnav.sock"
+ #define SYSLOG_ID	"spnavd"
+ 
diff --git a/pkgs/misc/drivers/spacenavd/configure-socket-path.patch b/pkgs/misc/drivers/spacenavd/configure-socket-path.patch
new file mode 100644
index 00000000000..c59987dcc05
--- /dev/null
+++ b/pkgs/misc/drivers/spacenavd/configure-socket-path.patch
@@ -0,0 +1,118 @@
+diff --git a/src/proto_unix.c b/src/proto_unix.c
+index 998f234..d38452c 100644
+--- a/src/proto_unix.c
++++ b/src/proto_unix.c
+@@ -36,11 +36,14 @@ enum {
+ 
+ static int lsock = -1;
+ 
++static char *spath = NULL;
++
+ int init_unix(void)
+ {
+ 	int s;
+ 	mode_t prev_umask;
+ 	struct sockaddr_un addr;
++	char *sock_path;
+ 
+ 	if(lsock >= 0) return 0;
+ 
+@@ -49,16 +52,18 @@ int init_unix(void)
+ 		return -1;
+ 	}
+ 
+-	unlink(SOCK_NAME);	/* in case it already exists */
++	sock_path = socket_path();
++
++	unlink(sock_path);	/* in case it already exists */
+ 
+ 	memset(&addr, 0, sizeof addr);
+ 	addr.sun_family = AF_UNIX;
+-	strcpy(addr.sun_path, SOCK_NAME);
++	strcpy(addr.sun_path, sock_path);
+ 
+ 	prev_umask = umask(0);
+ 
+ 	if(bind(s, (struct sockaddr*)&addr, sizeof addr) == -1) {
+-		logmsg(LOG_ERR, "failed to bind unix socket: %s: %s\n", SOCK_NAME, strerror(errno));
++		logmsg(LOG_ERR, "failed to bind unix socket: %s: %s\n", sock_path, strerror(errno));
+ 		close(s);
+ 		return -1;
+ 	}
+@@ -68,7 +73,7 @@ int init_unix(void)
+ 	if(listen(s, 8) == -1) {
+ 		logmsg(LOG_ERR, "listen failed: %s\n", strerror(errno));
+ 		close(s);
+-		unlink(SOCK_NAME);
++		unlink(sock_path);
+ 		return -1;
+ 	}
+ 
+@@ -82,7 +87,7 @@ void close_unix(void)
+ 		close(lsock);
+ 		lsock = -1;
+ 
+-		unlink(SOCK_NAME);
++		unlink(socket_path());
+ 	}
+ }
+ 
+@@ -173,3 +178,19 @@ int handle_uevents(fd_set *rset)
+ 
+ 	return 0;
+ }
++
++char *socket_path(void)
++{
++	char *xdg_runtime_dir;
++	if((xdg_runtime_dir = getenv("XDG_RUNTIME_DIR"))) {
++		if ( spath == NULL ) {
++			spath = malloc(strlen(xdg_runtime_dir) + strlen("/spnav.sock") + 1);
++			if ( spath != NULL ) {
++				sprintf(spath, "%s/spnav.sock", xdg_runtime_dir);
++			}
++		};
++		return spath;
++	} else {
++		return DEFAULT_SOCK_NAME;
++	}
++}
+diff --git a/src/proto_unix.h b/src/proto_unix.h
+index 045b379..ec4509c 100644
+--- a/src/proto_unix.h
++++ b/src/proto_unix.h
+@@ -23,6 +23,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ #include "event.h"
+ #include "client.h"
+ 
++char *socket_path(void);
+ int init_unix(void);
+ void close_unix(void);
+ int get_unix_socket(void);
+diff --git a/src/spnavd.c b/src/spnavd.c
+index cbea191..03080da 100644
+--- a/src/spnavd.c
++++ b/src/spnavd.c
+@@ -344,7 +344,7 @@ static int find_running_daemon(void)
+ 	}
+ 	memset(&addr, 0, sizeof addr);
+ 	addr.sun_family = AF_UNIX;
+-	strncpy(addr.sun_path, SOCK_NAME, sizeof addr.sun_path);
++	strncpy(addr.sun_path, socket_path(), sizeof addr.sun_path);
+ 
+ 	if(connect(s, (struct sockaddr*)&addr, sizeof addr) == -1) {
+ 		close(s);
+diff --git a/src/spnavd.h b/src/spnavd.h
+index fa0a916..2d1c48b 100644
+--- a/src/spnavd.h
++++ b/src/spnavd.h
+@@ -26,8 +26,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ #define DEF_CFGFILE		"/etc/spnavrc"
+ #define DEF_LOGFILE		"/var/log/spnavd.log"
+ 
+-#define SOCK_NAME	"/var/run/spnav.sock"
+ #define PIDFILE		"/var/run/spnavd.pid"
++#define DEFAULT_SOCK_NAME	"/run/spnav.sock"
+ #define SYSLOG_ID	"spnavd"
+ 
+ /* Multiple devices support */
diff --git a/pkgs/misc/drivers/spacenavd/default.nix b/pkgs/misc/drivers/spacenavd/default.nix
new file mode 100644
index 00000000000..5cc1b460133
--- /dev/null
+++ b/pkgs/misc/drivers/spacenavd/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, lib, fetchFromGitHub, fetchpatch, libX11, IOKit }:
+
+stdenv.mkDerivation rec {
+  version = "0.8";
+  pname = "spacenavd";
+
+  src = fetchFromGitHub {
+    owner = "FreeSpacenav";
+    repo = "spacenavd";
+    rev = "v${version}";
+    sha256 = "1zz0cm5cgvp9s5n4nzksl8rb11c7sw214bdafzra74smvqfjcjcf";
+  };
+
+  patches = [
+    # Fixes Darwin: https://github.com/FreeSpacenav/spacenavd/pull/38
+    (fetchpatch {
+      url = "https://github.com/FreeSpacenav/spacenavd/commit/d6a25d5c3f49b9676d039775efc8bf854737c43c.patch";
+      sha256 = "02pdgcvaqc20qf9hi3r73nb9ds7yk2ps9nnxaj0x9p50xjnhfg5c";
+    })
+    # Changes the socket path from /run/spnav.sock to $XDG_RUNTIME_DIR/spnav.sock
+    # to allow for a user service
+    ./configure-socket-path.patch
+    # Changes the pidfile path from /run/spnavd.pid to $XDG_RUNTIME_DIR/spnavd.pid
+    # to allow for a user service
+    ./configure-pidfile-path.patch
+    # Changes the config file path from /etc/spnavrc to $XDG_CONFIG_HOME/spnavrc or $HOME/.config/spnavrc
+    # to allow for a user service
+    ./configure-cfgfile-path.patch
+  ];
+
+  buildInputs = [ libX11 ]
+    ++ lib.optional stdenv.isDarwin IOKit;
+
+  configureFlags = [ "--disable-debug" ];
+
+  makeFlags = [ "CC=${stdenv.cc.targetPrefix}cc" ];
+
+  meta = with lib; {
+    homepage = "http://spacenav.sourceforge.net/";
+    description = "Device driver and SDK for 3Dconnexion 3D input devices";
+    longDescription = "A free, compatible alternative, to the proprietary 3Dconnexion device driver and SDK, for their 3D input devices (called 'space navigator', 'space pilot', 'space traveller', etc)";
+    license = licenses.gpl3Plus;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ sohalt ];
+  };
+}
diff --git a/pkgs/misc/drivers/steamcontroller/default.nix b/pkgs/misc/drivers/steamcontroller/default.nix
index ca5607b5307..db5c8e5d903 100644
--- a/pkgs/misc/drivers/steamcontroller/default.nix
+++ b/pkgs/misc/drivers/steamcontroller/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, fetchFromGitHub, python3Packages, libusb1, linuxHeaders
+{ lib, fetchFromGitHub, python3Packages, libusb1, linuxHeaders
 , GyroplotSupport ? false
 }:
 
@@ -21,11 +21,13 @@ buildPythonApplication {
   '';
 
   buildInputs = [ libusb1 ];
-  propagatedBuildInputs =
-    [ psutil python3Packages.libusb1 ]
+  propagatedBuildInputs = [ psutil python3Packages.libusb1 ]
     ++ lib.optionals GyroplotSupport [ pyqtgraph pyside ];
 
-  meta = with stdenv.lib; {
+  doCheck = false;
+  pythonImportsCheck = [ "steamcontroller" ];
+
+  meta = with lib; {
     description = "A standalone Steam controller driver";
     homepage    = "https://github.com/ynsta/steamcontroller";
     license     = licenses.mit;
diff --git a/pkgs/misc/drivers/sundtek/default.nix b/pkgs/misc/drivers/sundtek/default.nix
index b94a0978284..d52f9dd7cde 100644
--- a/pkgs/misc/drivers/sundtek/default.nix
+++ b/pkgs/misc/drivers/sundtek/default.nix
@@ -1,6 +1,6 @@
-{ fetchurl, stdenv }:
+{ fetchurl, lib, stdenv }:
 
-with stdenv.lib;
+with lib;
 
 let
   version = "2016-01-26";
diff --git a/pkgs/misc/drivers/utsushi/default.nix b/pkgs/misc/drivers/utsushi/default.nix
index 294bb8a0203..ae3a083148b 100644
--- a/pkgs/misc/drivers/utsushi/default.nix
+++ b/pkgs/misc/drivers/utsushi/default.nix
@@ -1,20 +1,32 @@
-{ stdenv, fetchFromGitLab, autoreconfHook, pkg-config, boost, gtkmm2
-, imagemagick, sane-backends, tesseract4, udev, libusb1}:
+{ lib, stdenv, writeScriptBin, fetchFromGitLab, autoreconfHook, pkg-config
+, autoconf-archive, libxslt, boost , gtkmm2 , imagemagick, sane-backends
+, tesseract4, udev, libusb1, gnum4 }:
 
-stdenv.mkDerivation rec {
+
+let
+  fakegit = writeScriptBin "git" ''
+    #! ${stdenv.shell} -e
+    if [ "$1" = "describe" ]; then
+      [ -r .rev ] && cat .rev || true
+    fi
+  '';
+in stdenv.mkDerivation rec {
   pname = "utsushi";
-  version = "3.59.2";
+  version = "unstable-2021-01-01";
 
-  src = fetchFromGitLab{
+  src = fetchFromGitLab {
     owner = pname;
-    repo = "imagescan";
-    rev = version;
-    sha256 = "06gp97dfnf43l6kb988scmm66q9n5rc7ndwv3rykrdpyhy8rbi05";
+    repo = pname;
+    rev = "1646d7d301f3d2aeb24930696688853fed5f0d43";
+    sha256 = "1g9m00qljhlw56h3hgfq67ywf4r92nl37m7x5mxa7ygaxc0dyb14";
   };
 
   nativeBuildInputs = [
     autoreconfHook
     pkg-config
+    autoconf-archive
+    fakegit
+    libxslt
   ];
 
   buildInputs = [
@@ -26,19 +38,21 @@ stdenv.mkDerivation rec {
     libusb1.dev
   ];
 
-  NIX_CFLAGS_COMPILE = "-Wno-error=deprecated-declarations -Wno-error=parentheses -Wno-error=unused-variable";
+  NIX_CFLAGS_COMPILE = [
+    "-Wno-error=deprecated-declarations"
+    "-Wno-error=parentheses"
+    "-Wno-error=unused-variable"
+  ];
+
 
   postPatch = ''
-    # remove vendored dependencies
-    rm -r upstream/boost
-
     # create fake udev and sane config
     mkdir -p $out/etc/{sane.d,udev/rules.d}
     touch $out/etc/sane.d/dll.conf
-
-    # absolute paths to conver & tesseract
+    # absolute paths to convert & tesseract
+    sed -i '/\[AC_DEFINE(\[HAVE_IMAGE_MAGICK\], \[1\])/a \             MAGICK_CONVERT="${imagemagick}/bin/convert"' configure.ac
     substituteInPlace filters/magick.cpp \
-      --replace '"convert' '"${imagemagick}/bin/convert'
+      --replace 'convert ' '${imagemagick}/bin/convert '
     substituteInPlace filters/reorient.cpp \
       --replace '"tesseract' '"${tesseract4}/bin/tesseract'
     substituteInPlace filters/get-text-orientation \
@@ -61,9 +75,9 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  doInstallCheck = true;
+  doInstallCheck = false;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "SANE utsushi backend for some Epson scanners";
     longDescription = ''
       ImageScanV3 (aka utsushi) scanner driver. Non-free plugins are not
@@ -132,7 +146,7 @@ stdenv.mkDerivation rec {
     '';
     homepage = "https://gitlab.com/utsushi/imagescan";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ wucke13 ];
+    maintainers = with maintainers; [ wucke13 maxwilson ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/misc/drivers/xboxdrv/default.nix b/pkgs/misc/drivers/xboxdrv/default.nix
index f7fd59fd9fd..e2894802839 100644
--- a/pkgs/misc/drivers/xboxdrv/default.nix
+++ b/pkgs/misc/drivers/xboxdrv/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, sconsPackages, libX11, pkgconfig
+{ lib, stdenv, fetchurl, sconsPackages, libX11, pkg-config
 , libusb1, boost, glib, dbus-glib }:
 
 let
@@ -13,11 +13,11 @@ in stdenv.mkDerivation {
   };
 
   makeFlags = [ "PREFIX=$(out)" ];
-  nativeBuildInputs = [ pkgconfig sconsPackages.scons_3_1_2 ];
+  nativeBuildInputs = [ pkg-config sconsPackages.scons_3_1_2 ];
   buildInputs = [ libX11 libusb1 boost glib dbus-glib ];
   dontUseSconsInstall = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://pingus.seul.org/~grumbel/xboxdrv/";
     description = "Xbox/Xbox360 (and more) gamepad driver for Linux that works in userspace";
     license = licenses.gpl3Plus;
diff --git a/pkgs/misc/drivers/xow/default.nix b/pkgs/misc/drivers/xow/default.nix
index 785f7f396e9..b095d61d987 100644
--- a/pkgs/misc/drivers/xow/default.nix
+++ b/pkgs/misc/drivers/xow/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, cabextract, fetchurl, fetchFromGitHub, libusb1 }:
+{ lib, stdenv, cabextract, fetchurl, fetchFromGitHub, libusb1 }:
 
 stdenv.mkDerivation rec {
   pname = "xow";
@@ -19,11 +19,11 @@ stdenv.mkDerivation rec {
   makeFlags = [
     "BUILD=RELEASE"
     "VERSION=${version}"
-    "BINDIR=${placeholder ''out''}/bin"
-    "UDEVDIR=${placeholder ''out''}/lib/udev/rules.d"
-    "MODLDIR=${placeholder ''out''}/lib/modules-load.d"
-    "MODPDIR=${placeholder ''out''}/lib/modprobe.d"
-    "SYSDDIR=${placeholder ''out''}/lib/systemd/system"
+    "BINDIR=${placeholder "out"}/bin"
+    "UDEVDIR=${placeholder "out"}/lib/udev/rules.d"
+    "MODLDIR=${placeholder "out"}/lib/modules-load.d"
+    "MODPDIR=${placeholder "out"}/lib/modprobe.d"
+    "SYSDDIR=${placeholder "out"}/lib/systemd/system"
   ];
 
   postUnpack = ''
@@ -35,7 +35,7 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ cabextract ];
   buildInputs = [ libusb1 ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/medusalix/xow";
     description = "Linux driver for the Xbox One wireless dongle";
     license = licenses.gpl2Plus;
diff --git a/pkgs/misc/drivers/xwiimote/default.nix b/pkgs/misc/drivers/xwiimote/default.nix
index 3b7b42990af..8fafd1b6ebc 100644
--- a/pkgs/misc/drivers/xwiimote/default.nix
+++ b/pkgs/misc/drivers/xwiimote/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, udev, ncurses, pkgconfig, fetchurl, bluez }:
+{ lib, stdenv, udev, ncurses, pkg-config, fetchurl, bluez }:
 
 stdenv.mkDerivation rec {
   name = "xwiimote-2";
@@ -7,7 +7,7 @@ stdenv.mkDerivation rec {
     sha256 = "1g9cbhblll47l300zr999xr51x2g98y49l222f77fhswd12kjzhd";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ udev ncurses bluez ];
 
   configureFlags = [ "--with-doxygen=no" ];
@@ -15,8 +15,8 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "http://dvdhrm.github.io/xwiimote";
     description = "Userspace utilities to control connected Nintendo Wii Remotes";
-    platforms = stdenv.lib.platforms.linux;
-    license = stdenv.lib.licenses.mit;
+    platforms = lib.platforms.linux;
+    license = lib.licenses.mit;
   };
 
   postInstallPhase = ''
diff --git a/pkgs/misc/dumb/default.nix b/pkgs/misc/dumb/default.nix
index 829367aa329..9b733e00f69 100644
--- a/pkgs/misc/dumb/default.nix
+++ b/pkgs/misc/dumb/default.nix
@@ -1,9 +1,9 @@
-{ stdenv, fetchFromGitHub, cmake, allegro, SDL2 }:
+{ lib, stdenv, fetchFromGitHub, cmake, allegro, SDL2 }:
 
 stdenv.mkDerivation rec {
   pname = "dumb";
   version = "2.0.3";
-  enableParallelBuilding = true;
+
   nativeBuildInputs = [ cmake ];
   buildInputs = [ allegro SDL2 ];
 
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
     "-DBUILD_EXAMPLES='OFF'"
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/kode54/dumb";
     description = "Module/tracker based music format parser and player library";
     license = licenses.free;  # Derivative of GPL
diff --git a/pkgs/misc/emulators/atari++/default.nix b/pkgs/misc/emulators/atari++/default.nix
index 9d7a477be61..5e35dcaebd0 100644
--- a/pkgs/misc/emulators/atari++/default.nix
+++ b/pkgs/misc/emulators/atari++/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, libSM, libX11, libICE, SDL, alsaLib, gcc-unwrapped, libXext }:
+{ lib, stdenv, fetchurl, libSM, libX11, libICE, SDL, alsa-lib, gcc-unwrapped, libXext }:
 
 stdenv.mkDerivation rec {
   pname = "atari++";
@@ -9,13 +9,13 @@ stdenv.mkDerivation rec {
     sha256 = "04fm2ic2qi4a52mi72wcaxyrpll4k8vvchx3qrik8rhg3jrxgm47";
   };
 
-  buildInputs = [ libSM libX11 SDL libICE alsaLib gcc-unwrapped libXext ];
+  buildInputs = [ libSM libX11 SDL libICE alsa-lib gcc-unwrapped libXext ];
 
   postFixup = ''
-    patchelf --set-rpath ${stdenv.lib.makeLibraryPath buildInputs} "$out/bin/atari++"
+    patchelf --set-rpath ${lib.makeLibraryPath buildInputs} "$out/bin/atari++"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://www.xl-project.com/";
     description = "An enhanced, cycle-accurated Atari emulator";
     longDescription = ''
@@ -27,6 +27,6 @@ stdenv.mkDerivation rec {
     '';
     maintainers = [ maintainers.AndersonTorres ];
     license = licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/misc/emulators/atari800/default.nix b/pkgs/misc/emulators/atari800/default.nix
index 6c846e2f0ab..37e0d83f140 100644
--- a/pkgs/misc/emulators/atari800/default.nix
+++ b/pkgs/misc/emulators/atari800/default.nix
@@ -1,7 +1,7 @@
-{ stdenv, fetchFromGitHub, autoreconfHook
-, unzip, zlib, SDL, readline, libGLU, libGL, libX11 }:
+{ lib, stdenv, fetchFromGitHub, autoreconfHook
+, zlib, SDL, readline, libGLU, libGL, libX11 }:
 
-with stdenv.lib;
+with lib;
 stdenv.mkDerivation rec {
   pname = "atari800";
   version = "4.2.0";
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ autoreconfHook ];
 
-  buildInputs = [ unzip zlib SDL readline libGLU libGL libX11 ];
+  buildInputs = [ zlib SDL readline libGLU libGL libX11 ];
 
   configureFlags = [
     "--target=default"
@@ -38,6 +38,6 @@ stdenv.mkDerivation rec {
     '';
     maintainers = [ maintainers.AndersonTorres ];
     license = licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/misc/emulators/attract-mode/default.nix b/pkgs/misc/emulators/attract-mode/default.nix
index ac87190b050..7a3f61fd8dc 100644
--- a/pkgs/misc/emulators/attract-mode/default.nix
+++ b/pkgs/misc/emulators/attract-mode/default.nix
@@ -1,5 +1,5 @@
-{ expat, fetchFromGitHub, ffmpeg_3, fontconfig, freetype, libarchive, libjpeg
-, libGLU, libGL, openal, pkgconfig, sfml, stdenv, zlib
+{ expat, fetchFromGitHub, ffmpeg, fontconfig, freetype, libarchive, libjpeg
+, libGLU, libGL, openal, pkg-config, sfml, lib, stdenv, zlib
 }:
 
 stdenv.mkDerivation rec {
@@ -13,17 +13,17 @@ stdenv.mkDerivation rec {
     sha256 = "16p369j0hanm0l2fiy6h9d9pn0f3qblcy9l39all6h7rfxnhp9ii";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
 
   patchPhase = ''
     sed -i "s|prefix=/usr/local|prefix=$out|" Makefile
   '';
 
   buildInputs = [
-    expat ffmpeg_3 fontconfig freetype libarchive libjpeg libGLU libGL openal sfml zlib
+    expat ffmpeg fontconfig freetype libarchive libjpeg libGLU libGL openal sfml zlib
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A frontend for arcade cabinets and media PCs";
     homepage = "http://attractmode.org";
     license = licenses.gpl3Plus;
diff --git a/pkgs/misc/emulators/blastem/default.nix b/pkgs/misc/emulators/blastem/default.nix
index f4cef93141d..a2dc86449d9 100644
--- a/pkgs/misc/emulators/blastem/default.nix
+++ b/pkgs/misc/emulators/blastem/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, fetchFromGitHub, pkgconfig, SDL2, glew, xcftools, python, pillow, makeWrapper }:
+{ lib, stdenv, fetchurl, fetchFromGitHub, pkg-config, SDL2, glew, xcftools, python, pillow, makeWrapper }:
 
 let
   vasm =
@@ -25,7 +25,8 @@ stdenv.mkDerivation {
     url = "https://www.retrodev.com/repos/blastem/archive/3d48cb0c28be.tar.gz";
     sha256 = "07wzbmzp0y8mh59jxg81q17gqagz3psxigxh8dmzsipgg68y6a8r";
   };
-  buildInputs = [ pkgconfig SDL2 glew xcftools python pillow vasm makeWrapper ];
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ pkg-config SDL2 glew xcftools python pillow vasm ];
   preBuild = ''
     patchShebangs img2tiles.py
   '';
@@ -41,9 +42,9 @@ stdenv.mkDerivation {
   meta = {
     homepage = "https://www.retrodev.com/blastem/";
     description = "The fast and accurate Genesis emulator";
-    maintainers = with stdenv.lib.maintainers; [ puffnfresh ];
-    license = stdenv.lib.licenses.gpl3;
-    platforms = stdenv.lib.platforms.linux;
+    maintainers = with lib.maintainers; [ puffnfresh ];
+    license = lib.licenses.gpl3;
+    platforms = lib.platforms.linux;
     # Makefile:140: *** aarch64 is not a supported architecture.  Stop.
     badPlatforms = [ "aarch64-linux" ];
   };
diff --git a/pkgs/misc/emulators/bsnes-hd/default.nix b/pkgs/misc/emulators/bsnes-hd/default.nix
new file mode 100644
index 00000000000..6494185958c
--- /dev/null
+++ b/pkgs/misc/emulators/bsnes-hd/default.nix
@@ -0,0 +1,55 @@
+{ lib, stdenv, fetchFromGitHub
+, pkg-config
+, libX11, libXv
+, udev
+, SDL2
+, gtk2, gtksourceview
+, alsa-lib, libao, openal, libpulseaudio
+, libicns, Cocoa, OpenAL
+}:
+
+stdenv.mkDerivation {
+  pname = "bsnes-hd";
+  version = "10.6-beta";
+
+  src = fetchFromGitHub {
+    owner = "DerKoun";
+    repo = "bsnes-hd";
+    rev = "beta_10_6";
+    sha256 = "0f3cd89fd0lqskzj98cc1pzmdbscq0psdjckp86w94rbchx7iw4h";
+  };
+
+  patches = [
+    # Replace invocation of `sips` with an equivalent invocation of `png2icns`
+    # while assembling the .app directory hierarchy in the macos build. The
+    # `sips` executable isn't in our environment during the build, but
+    # `png2icns` is available by way of the dependency on libicns.
+    ./macos-replace-sips-with-png2icns.patch
+
+    # During `make install` on macos the Makefile wants to move the .app into
+    # the current user's home directory. This patches the Makefile such that
+    # the .app ends up in $(prefix)/Applications. The $(prefix) variable will
+    # be set to $out, so this will result in the .app ending up in the
+    # Applications directory in the current nix profile.
+    ./macos-copy-app-to-prefix.patch
+  ];
+
+  nativeBuildInputs = [ pkg-config ]
+    ++ lib.optionals stdenv.isDarwin [ libicns ];
+
+  buildInputs = [ SDL2 libao ]
+    ++ lib.optionals stdenv.isLinux [ libX11 libXv udev gtk2 gtksourceview alsa-lib openal libpulseaudio ]
+    ++ lib.optionals stdenv.isDarwin [ Cocoa OpenAL ];
+
+  enableParallelBuilding = true;
+
+  makeFlags = [ "-C" "bsnes" "prefix=$(out)" ];
+
+  meta = with lib; {
+    description = "A fork of bsnes that adds HD video features";
+    homepage = "https://github.com/DerKoun/bsnes-hd";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ stevebob ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/misc/emulators/bsnes-hd/macos-copy-app-to-prefix.patch b/pkgs/misc/emulators/bsnes-hd/macos-copy-app-to-prefix.patch
new file mode 100644
index 00000000000..d38efbc99bc
--- /dev/null
+++ b/pkgs/misc/emulators/bsnes-hd/macos-copy-app-to-prefix.patch
@@ -0,0 +1,18 @@
+diff --git a/bsnes/target-bsnes/GNUmakefile b/bsnes/target-bsnes/GNUmakefile
+index 7a3ab9f..ec8a1a4 100644
+--- a/bsnes/target-bsnes/GNUmakefile
++++ b/bsnes/target-bsnes/GNUmakefile
+@@ -43,11 +43,8 @@ ifeq ($(platform),windows)
+ else ifeq ($(shell id -un),root)
+ 	$(error "make install should not be run as root")
+ else ifeq ($(platform),macos)
+-	mkdir -p ~/Library/Application\ Support/$(name)/
+-	mkdir -p ~/Library/Application\ Support/$(name)/Database/
+-	mkdir -p ~/Library/Application\ Support/$(name)/Firmware/
+-	mkdir -p ~/Library/Application\ Support/$(name)/Shaders/
+-	cp -R out/$(name).app /Applications/$(name).app
++	mkdir -p $(prefix)/Applications
++	cp -R out/$(name).app $(prefix)/Applications
+ else ifneq ($(filter $(platform),linux bsd),)
+ 	mkdir -p $(prefix)/bin/
+ 	mkdir -p $(prefix)/share/applications/
diff --git a/pkgs/misc/emulators/bsnes-hd/macos-replace-sips-with-png2icns.patch b/pkgs/misc/emulators/bsnes-hd/macos-replace-sips-with-png2icns.patch
new file mode 100644
index 00000000000..85adb33e3ab
--- /dev/null
+++ b/pkgs/misc/emulators/bsnes-hd/macos-replace-sips-with-png2icns.patch
@@ -0,0 +1,13 @@
+diff --git a/bsnes/target-bsnes/GNUmakefile b/bsnes/target-bsnes/GNUmakefile
+index 4c67bde..7a3ab9f 100644
+--- a/bsnes/target-bsnes/GNUmakefile
++++ b/bsnes/target-bsnes/GNUmakefile
+@@ -33,7 +33,7 @@ ifeq ($(platform),macos)
+ 	cp Database/* out/$(name).app/Contents/MacOS/Database/
+ 	cp -r ../shaders/* out/$(name).app/Contents/macOS/Shaders/
+ 	cp $(ui)/resource/$(name).plist out/$(name).app/Contents/Info.plist
+-	sips -s format icns $(ui)/resource/$(name).png --out out/$(name).app/Contents/Resources/$(name).icns
++	png2icns out/$(name).app/Contents/Resources/$(name).icns $(ui)/resource/$(name).png
+ endif
+ 
+ verbose: hiro.verbose ruby.verbose nall.verbose all;
diff --git a/pkgs/misc/emulators/bsod/default.nix b/pkgs/misc/emulators/bsod/default.nix
index 56b85227cda..872ee8571f3 100644
--- a/pkgs/misc/emulators/bsod/default.nix
+++ b/pkgs/misc/emulators/bsod/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, ncurses}:
+{lib, stdenv, fetchurl, ncurses}:
 
 stdenv.mkDerivation {
   name = "bsod-0.1";
@@ -23,9 +23,9 @@ stdenv.mkDerivation {
       blue screen of death on the console.  Errors and drivers causing the
       error are selected randomly from a large set of examples.";
     homepage = "http://www.vanheusden.com/bsod/";
-    license = stdenv.lib.licenses.gpl2;
-    platforms = stdenv.lib.platforms.unix;
-    maintainers = [ stdenv.lib.maintainers.antono ];
+    license = lib.licenses.gpl2;
+    platforms = lib.platforms.unix;
+    maintainers = [ lib.maintainers.antono ];
   };
 
 }
diff --git a/pkgs/misc/emulators/caprice32/default.nix b/pkgs/misc/emulators/caprice32/default.nix
index 8694d4d2d5a..6c2932f7e10 100644
--- a/pkgs/misc/emulators/caprice32/default.nix
+++ b/pkgs/misc/emulators/caprice32/default.nix
@@ -1,10 +1,13 @@
-{ stdenv, fetchFromGitHub, desktop-file-utils, libpng
-, pkgconfig, SDL, freetype, zlib }:
+{ lib, stdenv, fetchFromGitHub, desktop-file-utils, libpng
+, pkg-config, SDL, freetype, zlib }:
 
 stdenv.mkDerivation rec {
 
   pname = "caprice32";
   version = "4.6.0";
+  # NOTE: When bumping version beyond 4.6.0, you likely need to remove
+  #       string.patch below. The fix of this patch has already been
+  #       done upstream but is not yet part of a release
 
   src = fetchFromGitHub {
     repo = "caprice32";
@@ -13,9 +16,11 @@ stdenv.mkDerivation rec {
     sha256 = "0hng5krwgc1h9bz1xlkp2hwnvas965nd7sb3z9mb2m6x9ghxlacz";
   };
 
-  nativeBuildInputs = [ desktop-file-utils pkgconfig ];
+  nativeBuildInputs = [ desktop-file-utils pkg-config ];
   buildInputs = [ libpng SDL freetype zlib ];
 
+  patches = [ ./string.patch ];
+
   makeFlags = [
     "APP_PATH=${placeholder "out"}/share/caprice32"
     "RELEASE=1"
@@ -37,11 +42,11 @@ stdenv.mkDerivation rec {
     install -Dm644 $out/share/caprice32/resources/freedesktop/caprice32.menu -t $out/etc/xdg/menus/applications-merged/
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A complete emulation of CPC464, CPC664 and CPC6128";
     homepage = "https://github.com/ColinPitrat/caprice32";
     license = licenses.gpl2;
-    maintainers = [ maintainers.genesis ];
+    maintainers = [ ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/misc/emulators/caprice32/string.patch b/pkgs/misc/emulators/caprice32/string.patch
new file mode 100644
index 00000000000..fabbbd80d5d
--- /dev/null
+++ b/pkgs/misc/emulators/caprice32/string.patch
@@ -0,0 +1,12 @@
+diff --git a/src/configuration.h b/src/configuration.h
+index 34fd690..97fb0e5 100644
+--- a/src/configuration.h
++++ b/src/configuration.h
+@@ -2,6 +2,7 @@
+ #define CONFIGURATION_H
+ 
+ #include <map>
++#include <string>
+ 
+ namespace config
+ {
diff --git a/pkgs/misc/emulators/ccemux/default.nix b/pkgs/misc/emulators/ccemux/default.nix
index 2313a63dc69..11f24d59e5c 100644
--- a/pkgs/misc/emulators/ccemux/default.nix
+++ b/pkgs/misc/emulators/ccemux/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, makeDesktopItem, makeWrapper, jre
+{ lib, stdenv, fetchurl, makeDesktopItem, makeWrapper, jre
 , useCCTweaked ? true
 }:
 
@@ -6,7 +6,7 @@ let
   version = "1.1.1";
   rev = "af12e2e4da586275ba931eae8f40a2201251bf59";
 
-  baseUrl = "https://emux.cc/versions/${stdenv.lib.substring 0 8 rev}/CCEmuX";
+  baseUrl = "https://emux.cc/versions/${lib.substring 0 8 rev}/CCEmuX";
   jar =
     if useCCTweaked
     then fetchurl {
@@ -58,7 +58,7 @@ stdenv.mkDerivation rec {
     runHook postInstall
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A modular ComputerCraft emulator";
     homepage = "https://github.com/CCEmuX/CCEmuX";
     license = licenses.mit;
diff --git a/pkgs/misc/emulators/cdemu/analyzer.nix b/pkgs/misc/emulators/cdemu/analyzer.nix
index 246dbb7dd35..dddcc3a7468 100644
--- a/pkgs/misc/emulators/cdemu/analyzer.nix
+++ b/pkgs/misc/emulators/cdemu/analyzer.nix
@@ -1,5 +1,5 @@
 { callPackage, makeWrapper, gobject-introspection, cmake
-, python3Packages, gtk3, glib, libxml2, gnuplot, gnome3, gdk-pixbuf, librsvg, intltool, libmirage }:
+, python3Packages, gtk3, glib, libxml2, gnuplot, gnome, gdk-pixbuf, librsvg, intltool, libmirage }:
 let pkg = import ./base.nix {
   version = "3.2.3";
   pkgName = "image-analyzer";
@@ -7,7 +7,7 @@ let pkg = import ./base.nix {
 };
 in callPackage pkg {
   buildInputs = [ glib gtk3 libxml2 gnuplot libmirage makeWrapper
-                  gnome3.adwaita-icon-theme gdk-pixbuf librsvg intltool
+                  gnome.adwaita-icon-theme gdk-pixbuf librsvg intltool
                   python3Packages.python python3Packages.pygobject3 python3Packages.matplotlib ];
   drvParams = {
     nativeBuildInputs = [ gobject-introspection cmake ];
diff --git a/pkgs/misc/emulators/cdemu/base.nix b/pkgs/misc/emulators/cdemu/base.nix
index f493faaac54..6db1089a37f 100644
--- a/pkgs/misc/emulators/cdemu/base.nix
+++ b/pkgs/misc/emulators/cdemu/base.nix
@@ -1,5 +1,5 @@
 { pkgName, version, pkgSha256 }:
-{ stdenv, fetchurl, cmake, pkgconfig, buildInputs, drvParams ? {} }:
+{ lib, stdenv, fetchurl, cmake, pkg-config, buildInputs, drvParams ? {} }:
 let name = "${pkgName}-${version}";
 in stdenv.mkDerivation ({
   inherit name buildInputs;
@@ -7,7 +7,7 @@ in stdenv.mkDerivation ({
     url = "mirror://sourceforge/cdemu/${name}.tar.bz2";
     sha256 = pkgSha256;
   };
-  nativeBuildInputs = [ pkgconfig cmake ];
+  nativeBuildInputs = [ pkg-config cmake ];
   setSourceRoot = ''
     mkdir build
     cd build
@@ -16,7 +16,7 @@ in stdenv.mkDerivation ({
   configurePhase = ''
     cmake ../${name} -DCMAKE_INSTALL_PREFIX=$out -DCMAKE_BUILD_TYPE=Release -DCMAKE_SKIP_RPATH=ON
   '';
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A suite of tools for emulating optical drives and discs";
     longDescription = ''
       CDEmu consists of:
@@ -32,6 +32,6 @@ in stdenv.mkDerivation ({
     homepage = "http://cdemu.sourceforge.net/";
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
-    maintainers = with stdenv.lib.maintainers; [ bendlas ];
+    maintainers = with lib.maintainers; [ bendlas ];
   };
 } // drvParams)
diff --git a/pkgs/misc/emulators/cdemu/gui.nix b/pkgs/misc/emulators/cdemu/gui.nix
index 599531950a2..8ce84ccae20 100644
--- a/pkgs/misc/emulators/cdemu/gui.nix
+++ b/pkgs/misc/emulators/cdemu/gui.nix
@@ -1,5 +1,5 @@
 { callPackage, makeWrapper, gobject-introspection, cmake
-, python3Packages, gtk3, glib, libnotify, intltool, gnome3, gdk-pixbuf, librsvg }:
+, python3Packages, gtk3, glib, libnotify, intltool, gnome, gdk-pixbuf, librsvg }:
 let
   pkg = import ./base.nix {
     version = "3.2.3";
@@ -9,7 +9,7 @@ let
   inherit (python3Packages) python pygobject3;
 in callPackage pkg {
   buildInputs = [ python pygobject3 gtk3 glib libnotify intltool makeWrapper
-                  gnome3.adwaita-icon-theme gdk-pixbuf librsvg ];
+                  gnome.adwaita-icon-theme gdk-pixbuf librsvg ];
   drvParams = {
     nativeBuildInputs = [ gobject-introspection cmake ];
     postFixup = ''
diff --git a/pkgs/misc/emulators/cdemu/libmirage.nix b/pkgs/misc/emulators/cdemu/libmirage.nix
index cc3118ace15..9813c906bef 100644
--- a/pkgs/misc/emulators/cdemu/libmirage.nix
+++ b/pkgs/misc/emulators/cdemu/libmirage.nix
@@ -1,6 +1,6 @@
-{ callPackage, gobject-introspection, cmake, pkgconfig
-, glib, libsndfile, zlib, bzip2, lzma, libsamplerate, intltool
-, pcre, utillinux, libselinux, libsepol }:
+{ callPackage, gobject-introspection, cmake, pkg-config
+, glib, libsndfile, zlib, bzip2, xz, libsamplerate, intltool
+, pcre, util-linux, libselinux, libsepol }:
 
 let pkg = import ./base.nix {
   version = "3.2.3";
@@ -8,11 +8,11 @@ let pkg = import ./base.nix {
   pkgSha256 = "08mfvqyk3833ksfd47i4j3ppmrw5ry219km6h7lywdh9hm9x14yf";
 };
 in callPackage pkg {
-  buildInputs = [ glib libsndfile zlib bzip2 lzma libsamplerate intltool ];
+  buildInputs = [ glib libsndfile zlib bzip2 xz libsamplerate intltool ];
   drvParams = {
     PKG_CONFIG_GOBJECT_INTROSPECTION_1_0_GIRDIR = "${placeholder "out"}/share/gir-1.0";
     PKG_CONFIG_GOBJECT_INTROSPECTION_1_0_TYPELIBDIR = "${placeholder "out"}/lib/girepository-1.0";
-    nativeBuildInputs = [ cmake gobject-introspection pkgconfig ];
-    propagatedBuildInputs = [ pcre utillinux libselinux libsepol ];
+    nativeBuildInputs = [ cmake gobject-introspection pkg-config ];
+    propagatedBuildInputs = [ pcre util-linux libselinux libsepol ];
   };
 }
diff --git a/pkgs/misc/emulators/cdemu/vhba.nix b/pkgs/misc/emulators/cdemu/vhba.nix
index 9723e53a8fd..182469310c4 100644
--- a/pkgs/misc/emulators/cdemu/vhba.nix
+++ b/pkgs/misc/emulators/cdemu/vhba.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, kernel }:
+{ lib, stdenv, fetchurl, kernel }:
 
 stdenv.mkDerivation rec {
   pname = "vhba";
@@ -14,11 +14,11 @@ stdenv.mkDerivation rec {
 
   hardeningDisable = [ "pic" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Provides a Virtual (SCSI) HBA";
     homepage = "http://cdemu.sourceforge.net/about/vhba/";
     platforms = platforms.linux;
     license = licenses.gpl2Plus;
-    maintainers = with stdenv.lib.maintainers; [ bendlas ];
+    maintainers = with lib.maintainers; [ bendlas ];
   };
 }
diff --git a/pkgs/misc/emulators/cen64/default.nix b/pkgs/misc/emulators/cen64/default.nix
new file mode 100644
index 00000000000..ddf45547337
--- /dev/null
+++ b/pkgs/misc/emulators/cen64/default.nix
@@ -0,0 +1,30 @@
+{ lib, cmake, fetchFromGitHub, libGL, libiconv, libX11, openal, stdenv }:
+
+stdenv.mkDerivation rec {
+  pname = "cen64";
+  version = "unstable-2021-03-12";
+
+  src = fetchFromGitHub {
+    owner = "n64dev";
+    repo = "cen64";
+    rev = "1b31ca9b3c3bb783391ab9773bd26c50db2056a8";
+    sha256 = "0x1fz3z4ffl5xssiyxnmbhpjlf0k0fxsqn4f2ikrn17742dx4c0z";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ libGL libiconv openal libX11 ];
+
+  installPhase = ''
+    runHook preInstall
+    install -D {,$out/bin/}${pname}
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A Cycle-Accurate Nintendo 64 Emulator";
+    license = licenses.bsd3;
+    homepage = "https://github.com/n64dev/cen64";
+    maintainers = [ maintainers._414owen ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/pkgs/misc/emulators/citra/default.nix b/pkgs/misc/emulators/citra/default.nix
index efe4770a7b0..ae7228c2246 100644
--- a/pkgs/misc/emulators/citra/default.nix
+++ b/pkgs/misc/emulators/citra/default.nix
@@ -1,20 +1,21 @@
-{ stdenv, mkDerivation, lib, fetchgit, cmake, SDL2, qtbase, qtmultimedia, boost }:
+{ mkDerivation, lib, fetchgit, cmake, SDL2, qtbase, qtmultimedia, boost }:
 
 mkDerivation {
   pname = "citra";
-  version = "2020-03-21";
+  version = "2020-12-07";
 
   # Submodules
   src = fetchgit {
     url = "https://github.com/citra-emu/citra";
-    rev = "8722b970c52f2c0d8e82561477edb62a53ae9dbb";
-    sha256 = "0c1zn1f84h4f6n6p0aqz905yvv5qpdmkj2z58yla6bfgbzabfyrj";
+    rev = "3f13e1cc2419fac837952c44d7be9db78b054a2f";
+    sha256 = "1bbg8cwrgncmcavqpj3yp4dbfkip1i491krp6dcpgvsd5yfr7f0v";
   };
 
-  enableParallelBuilding = true;
   nativeBuildInputs = [ cmake ];
   buildInputs = [ SDL2 qtbase qtmultimedia boost ];
 
+  dontWrapQtApps = true;
+
   preConfigure = ''
     # Trick configure system.
     sed -n 's,^ *path = \(.*\),\1,p' .gitmodules | while read path; do
@@ -22,7 +23,7 @@ mkDerivation {
     done
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://citra-emu.org";
     description = "An open-source emulator for the Nintendo 3DS";
     license = licenses.gpl2;
diff --git a/pkgs/misc/emulators/commanderx16/emulator.nix b/pkgs/misc/emulators/commanderx16/emulator.nix
new file mode 100644
index 00000000000..73442215ff1
--- /dev/null
+++ b/pkgs/misc/emulators/commanderx16/emulator.nix
@@ -0,0 +1,42 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, SDL2
+}:
+
+stdenv.mkDerivation rec {
+  pname = "x16-emulator";
+  version = "38";
+
+  src = fetchFromGitHub {
+    owner = "commanderx16";
+    repo = pname;
+    rev = "r${version}";
+    sha256 = "WNRq/m97NpOBWIk6mtxBAKmkxCGWacWjXeOvIhBrkYE=";
+  };
+
+  dontConfigure = true;
+
+  buildInputs = [ SDL2 ];
+
+  installPhase = ''
+    runHook preInstall
+    install -D --mode 755 --target-directory $out/bin/ x16emu
+    install -D --mode 444 --target-directory $out/share/doc/${pname} README.md
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://www.commanderx16.com/forum/index.php?/home/";
+    description = "The official emulator of CommanderX16 8-bit computer";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ AndersonTorres ];
+    platforms = SDL2.meta.platforms;
+  };
+
+  passthru = {
+    # upstream project recommends emulator and rom synchronized;
+    # passing through the version is useful to ensure this
+    inherit version;
+  };
+}
diff --git a/pkgs/misc/emulators/commanderx16/rom.nix b/pkgs/misc/emulators/commanderx16/rom.nix
new file mode 100644
index 00000000000..5da77ebceef
--- /dev/null
+++ b/pkgs/misc/emulators/commanderx16/rom.nix
@@ -0,0 +1,46 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cc65
+}:
+
+stdenv.mkDerivation rec {
+  pname = "x16-rom";
+  version = "38";
+
+  src = fetchFromGitHub {
+    owner = "commanderx16";
+    repo = pname;
+    rev = "r${version}";
+    sha256 = "xaqF0ppB7I7ST8Uh3jPbC14uRAb/WH21tHlNeTvYpoI=";
+  };
+
+  nativeBuildInputs = [ cc65 ];
+
+  postPatch = ''
+    patchShebangs scripts/
+  '';
+
+  dontConfigure = true;
+
+  installPhase = ''
+    runHook preInstall
+    install -D --mode 444 --target-directory $out/share/${pname} build/x16/rom.bin
+    install -D --mode 444 --target-directory $out/share/doc/${pname} README.md
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://www.commanderx16.com/forum/index.php?/home/";
+    description = "ROM file for CommanderX16 8-bit computer";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ AndersonTorres ];
+    platforms = cc65.meta.platforms;
+  };
+
+  passthru = {
+    # upstream project recommends emulator and rom synchronized;
+    # passing through the version is useful to ensure this
+    inherit version;
+  };
+}
diff --git a/pkgs/misc/emulators/commanderx16/run.nix b/pkgs/misc/emulators/commanderx16/run.nix
new file mode 100644
index 00000000000..cf14252b487
--- /dev/null
+++ b/pkgs/misc/emulators/commanderx16/run.nix
@@ -0,0 +1,39 @@
+{ lib
+, stdenv
+, runtimeShell
+, symlinkJoin
+, writeTextFile
+}:
+
+{ emulator, rom }:
+
+assert emulator.version == rom.version;
+
+let
+  runScript = writeTextFile {
+    name = "run-x16";
+    text = ''
+      #!${runtimeShell}
+
+      defaultRom="${rom}/share/x16-rom/rom.bin"
+
+      exec "${emulator}/bin/x16emu" -rom $defaultRom "$@"
+    '';
+    executable = true;
+    destination = "/bin/run-x16";
+  };
+in
+symlinkJoin {
+  name = "run-x16-${emulator.version}";
+
+  paths = [
+    emulator
+    rom
+    runScript
+  ];
+}
+# TODO [ AndersonTorres ]:
+
+# 1. Parse the command line in order to allow the user to set an optional
+# rom-file
+# 2. generate runScript based on symlinkJoin (maybe a postBuild?)
diff --git a/pkgs/misc/emulators/craftos-pc/default.nix b/pkgs/misc/emulators/craftos-pc/default.nix
new file mode 100644
index 00000000000..3bc9e0b81cc
--- /dev/null
+++ b/pkgs/misc/emulators/craftos-pc/default.nix
@@ -0,0 +1,43 @@
+{ lib, stdenv, fetchFromGitHub, poco, openssl, SDL2, SDL2_mixer }:
+
+let
+  craftos2-lua = fetchFromGitHub {
+    owner = "MCJack123";
+    repo = "craftos2-lua";
+    rev = "v2.4.4";
+    sha256 = "1q63ki4sxx8bxaa6ag3xj153p7a8a12ivm0k33k935p41k6y2k64";
+  };
+in
+
+stdenv.mkDerivation rec {
+  pname = "craftos-pc";
+  version = "2.4.5";
+
+  src = fetchFromGitHub {
+    owner = "MCJack123";
+    repo = "craftos2";
+    rev = "v${version}";
+    sha256 = "00a4p365krbdprlv4979d13mm3alhxgzzj3vqz2g67795plf64j4";
+  };
+
+  buildInputs = [ poco openssl SDL2 SDL2_mixer ];
+
+  preBuild = ''
+    cp -R ${craftos2-lua}/* ./craftos2-lua/
+    chmod -R u+w ./craftos2-lua
+    make -C craftos2-lua linux
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    DESTDIR=$out/bin make install
+  '';
+
+  meta = with lib; {
+    description = "An implementation of the CraftOS-PC API written in C++ using SDL";
+    homepage = "https://www.craftos-pc.cc";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.siraben ];
+  };
+}
diff --git a/pkgs/misc/emulators/darcnes/default.nix b/pkgs/misc/emulators/darcnes/default.nix
index 3ea98c571e8..7919e0a9009 100644
--- a/pkgs/misc/emulators/darcnes/default.nix
+++ b/pkgs/misc/emulators/darcnes/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, libX11, libXt, libXext, libXaw }:
+{ lib, stdenv, fetchurl, libX11, libXt, libXext, libXaw }:
 
 stdenv.mkDerivation rec {
   pname = "darcnes";
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
     homepage = "https://web.archive.org/web/20130502171725/http://www.dridus.com/~nyef/darcnes/";
     description = "Sega Master System, Game Gear, SG-1000, NES, ColecoVision and Apple II emulator";
     # Prohibited commercial use, credit required.
-    license = stdenv.lib.licenses.free;
+    license = lib.licenses.free;
     platforms = [ "i686-linux" ];
   };
 }
diff --git a/pkgs/misc/emulators/desmume/default.nix b/pkgs/misc/emulators/desmume/default.nix
index 27c1a2cb9c3..03e97743905 100644
--- a/pkgs/misc/emulators/desmume/default.nix
+++ b/pkgs/misc/emulators/desmume/default.nix
@@ -1,14 +1,14 @@
-{ stdenv, fetchurl, fetchpatch
-, pkgconfig, libtool, intltool
+{ lib, stdenv, fetchurl, fetchpatch
+, pkg-config, libtool, intltool
 , libXmu
 , lua
 , tinyxml
-, agg, alsaLib, soundtouch, openal
+, agg, alsa-lib, soundtouch, openal
 , desktop-file-utils
 , gtk2, gtkglext, libglade
 , libGLU, libpcap, SDL, zziplib }:
 
-with stdenv.lib;
+with lib;
 stdenv.mkDerivation rec {
 
   pname = "desmume";
@@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
   CXXFLAGS = "-fpermissive";
 
   buildInputs =
-  [ pkgconfig libtool intltool libXmu lua agg alsaLib soundtouch
+  [ pkg-config libtool intltool libXmu lua agg alsa-lib soundtouch
     openal desktop-file-utils gtk2 gtkglext libglade
     libGLU libpcap SDL zziplib tinyxml ];
 
diff --git a/pkgs/misc/emulators/dgen-sdl/default.nix b/pkgs/misc/emulators/dgen-sdl/default.nix
new file mode 100644
index 00000000000..4a76ee0df02
--- /dev/null
+++ b/pkgs/misc/emulators/dgen-sdl/default.nix
@@ -0,0 +1,70 @@
+{ lib, stdenv
+, fetchurl
+, libarchive
+, doxygen
+, SDL
+}:
+
+let
+  pname = "dgen-sdl";
+  version = "1.33";
+in stdenv.mkDerivation {
+  inherit pname version;
+
+  src = fetchurl {
+    url = "https://sourceforge.net/projects/dgen/files/dgen/${version}/${pname}-${version}.tar.gz";
+    hash = "sha256-meLAYBfCKHPHf4gYbrzAmGckTrbgQsdjuwlLArje9h4=";
+  };
+
+  buildInputs = [ SDL libarchive ];
+
+  configureFlags = [
+    "--enable-joystick"
+    "--enable-debugger"
+    "--enable-debug-vdp"
+    "--enable-pico" # experimental
+    "--enable-vgmdump"
+    "--with-star=no" # Needs ASM support
+    "--with-musa"
+    "--with-cyclone=no" # Needs ASM support
+    "--with-mz80"
+    "--with-cz80"
+    "--with-drz80=no" # Needs ASM support
+    "--with-dz80"
+  ];
+
+  meta = with lib; {
+    homepage = "https://dgen.sourceforge.net/";
+    description = "Sega Genesis/Mega Drive emulator";
+    longDescription = ''
+      DGen/SDL is a free, open source emulator for Sega Genesis/Mega Drive
+      systems. DGen was originally written by Dave, then ported to SDL by Joe
+      Groff and Phil K. Hornung in 1998.
+
+      It features:
+
+      - Game Genie/Hex codes support
+      - PAL/NTSC, fullscreen modes
+      - Joypad/joystick support
+      - Mouse support
+      - Highly configurable controls
+      - OpenGL textured video output
+      - Portable (64‐bit, endian safe), runs in Windows using MinGW
+      - Screenshots, demos recording and playback
+      - Musashi (generic) and StarScream (x86‐only) CPU cores
+      - Cyclone 68000 and DrZ80 (both ARM‐only) CPU cores
+      - CZ80 (generic) and MZ80 (generic and x86‐only versions)
+      - 16‐bit, 8000 to 48000Hz sound output
+      - Support for 8, 15, 16, 24 and 32 bpp modes
+      - Archived/compressed ROMs support
+      - M68K debugger (contributed by Edd Barrett)
+      - Z80 debugger
+      - hqx and scale2x upscaling filters
+      - VGM dumping
+    '';
+    license = licenses.mit;
+    maintainers = with maintainers; [ AndersonTorres ];
+    platforms = with platforms; unix;
+  };
+}
+# TODO: implement configure options
diff --git a/pkgs/misc/emulators/dlx/default.nix b/pkgs/misc/emulators/dlx/default.nix
index 215f2ee46f9..9573dd6d48d 100644
--- a/pkgs/misc/emulators/dlx/default.nix
+++ b/pkgs/misc/emulators/dlx/default.nix
@@ -1,31 +1,29 @@
-{ stdenv, fetchurl, unzip }:
+{ lib, stdenv, fetchzip }:
 
-stdenv.mkDerivation {
-  name = "dlx-2012.07.08";
+stdenv.mkDerivation rec {
+  pname = "dlx";
+  version = "2012-07-08";
 
-  src = fetchurl {
+  src = fetchzip {
     url = "https://www.davidviner.com/zip/dlx/dlx.zip";
-    sha256 = "0q5hildq2xcig7yrqi26n7fqlanyssjirm7swy2a9icfxpppfpkn";
+    sha256 = "0508linnar9ivy3xr99gzrb2l027ngx12dlxaxs7w67cnwqnb0dg";
   };
 
-  buildInputs = [ unzip ];
-
-  makeFlags = [ "LINK=gcc" "CFLAGS=-O2" ];
-
+  makeFlags = [ "CC=${stdenv.cc.targetPrefix}cc" "LINK=${stdenv.cc.targetPrefix}cc" "CFLAGS=-O2" ];
   hardeningDisable = [ "format" ];
 
   installPhase = ''
     mkdir -p $out/include/dlx $out/share/dlx/{examples,doc} $out/bin
-    mv -v masm mon dasm $out/bin/
-    mv -v *.i auto.a $out/include/dlx/
-    mv -v *.a *.m $out/share/dlx/examples/
-    mv -v README.txt MANUAL.TXT $out/share/dlx/doc/
+    mv masm mon dasm $out/bin/
+    mv *.i auto.a $out/include/dlx/
+    mv *.a *.m $out/share/dlx/examples/
+    mv README.txt MANUAL.TXT $out/share/dlx/doc/
   '';
 
-  meta = {
-    homepage = "http://www.davidviner.com/dlx.php";
-    description = "DLX Simulator";
-    license = stdenv.lib.licenses.gpl2;
-    platforms = stdenv.lib.platforms.linux;
+  meta = with lib; {
+    homepage = "https://www.davidviner.com/dlx.html?name=DLX+Simulator";
+    description = "An DLX simulator written in C";
+    license = licenses.gpl2Only;
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/misc/emulators/dolphin-emu/default.nix b/pkgs/misc/emulators/dolphin-emu/default.nix
index 0053079d992..c2d73d3e7ff 100644
--- a/pkgs/misc/emulators/dolphin-emu/default.nix
+++ b/pkgs/misc/emulators/dolphin-emu/default.nix
@@ -1,10 +1,10 @@
 { stdenv
 , lib
 , fetchpatch
-, pkgconfig
+, pkg-config
 , cmake
 , bluez
-, ffmpeg_3
+, ffmpeg
 , libao
 , gtk2
 , glib
@@ -69,16 +69,14 @@ stdenv.mkDerivation rec {
     "-DENABLE_LTO=True"
   ];
 
-  enableParallelBuilding = true;
-
   nativeBuildInputs = [
-    pkgconfig
+    pkg-config
     cmake
   ];
 
   buildInputs = [
     bluez
-    ffmpeg_3
+    ffmpeg
     libao
     libGLU
     libGL
@@ -108,6 +106,10 @@ stdenv.mkDerivation rec {
     sfml
   ];
 
+  postInstall = lib.optionalString stdenv.hostPlatform.isLinux ''
+    install -D $src/Data/51-usb-device.rules $out/etc/udev/rules.d/51-usb-device.rules
+  '';
+
   meta = with lib; {
     homepage = "https://dolphin-emu.org/";
     description = "Gamecube/Wii/Triforce emulator for x86_64 and ARMv8";
diff --git a/pkgs/misc/emulators/dolphin-emu/master.nix b/pkgs/misc/emulators/dolphin-emu/master.nix
index 3865a4a7060..8e08be28eda 100644
--- a/pkgs/misc/emulators/dolphin-emu/master.nix
+++ b/pkgs/misc/emulators/dolphin-emu/master.nix
@@ -1,7 +1,7 @@
-{ lib, stdenv, fetchFromGitHub, makeDesktopItem, pkgconfig, cmake
-, wrapQtAppsHook, qtbase, bluez, ffmpeg_3, libao, libGLU, libGL, pcre, gettext
+{ lib, stdenv, fetchFromGitHub, makeDesktopItem, pkg-config, cmake
+, wrapQtAppsHook, qtbase, bluez, ffmpeg, libao, libGLU, libGL, pcre, gettext
 , libXrandr, libusb1, lzo, libpthreadstubs, libXext, libXxf86vm, libXinerama
-, libSM, libXdmcp, readline, openal, udev, libevdev, portaudio, curl, alsaLib
+, libSM, libXdmcp, readline, openal, udev, libevdev, portaudio, curl, alsa-lib
 , miniupnpc, enet, mbedtls, soundtouch, sfml
 , vulkan-loader ? null, libpulseaudio ? null
 
@@ -21,26 +21,25 @@ let
   };
 in stdenv.mkDerivation rec {
   pname = "dolphin-emu";
-  version = "5.0-11824";
+  version = "5.0-14002";
 
   src = fetchFromGitHub {
     owner = "dolphin-emu";
     repo = "dolphin";
-    rev = "1b97f081b8eff9012132a4124537968bdb0e03e0";
-    sha256 = "1v96hcn34040vjsw83k8p0r0nb8rrdcz80h4ngirxzm36b3l7w6m";
+    rev = "53222560650e4a99eceafcd537d4e04d1c50b3a6";
+    sha256 = "1m71gk9hm011fpv5hmpladf7abkylmawgr60d0czkr276pzg04ky";
   };
 
-  enableParallelBuilding = true;
-  nativeBuildInputs = [ cmake pkgconfig ]
+  nativeBuildInputs = [ cmake pkg-config ]
   ++ lib.optional stdenv.isLinux wrapQtAppsHook;
 
   buildInputs = [
-    curl ffmpeg_3 libao libGLU libGL pcre gettext libpthreadstubs libpulseaudio
+    curl ffmpeg libao libGLU libGL pcre gettext libpthreadstubs libpulseaudio
     libXrandr libXext libXxf86vm libXinerama libSM readline openal libXdmcp lzo
     portaudio libusb1 libpng hidapi miniupnpc enet mbedtls soundtouch sfml
     qtbase
   ] ++ lib.optionals stdenv.isLinux [
-    bluez udev libevdev alsaLib vulkan-loader
+    bluez udev libevdev alsa-lib vulkan-loader
   ] ++ lib.optionals stdenv.isDarwin [
     CoreBluetooth OpenGL ForceFeedback IOKit
   ];
@@ -71,6 +70,8 @@ in stdenv.mkDerivation rec {
   postInstall = ''
     cp -r ${desktopItem}/share/applications $out/share
     ln -sf $out/bin/dolphin-emu $out/bin/dolphin-emu-master
+  '' + lib.optionalString stdenv.hostPlatform.isLinux ''
+    install -D $src/Data/51-usb-device.rules $out/etc/udev/rules.d/51-usb-device.rules
   '';
 
   meta = with lib; {
diff --git a/pkgs/misc/emulators/duckstation/default.nix b/pkgs/misc/emulators/duckstation/default.nix
new file mode 100644
index 00000000000..29b867f0e9e
--- /dev/null
+++ b/pkgs/misc/emulators/duckstation/default.nix
@@ -0,0 +1,34 @@
+{ lib, mkDerivation, fetchFromGitHub, cmake, pkg-config, SDL2, qtbase
+, wrapQtAppsHook, qttools, ninja, gtk3 }:
+mkDerivation rec {
+  pname = "duckstation";
+  version = "unstable-2020-12-29";
+
+  src = fetchFromGitHub {
+    owner = "stenzek";
+    repo = pname;
+    rev = "f8dcfabc44ff8391b2d41eab2e883dc8f21a88b7";
+    sha256 = "0v6w4di4yj1hbxpqqrcw8rbfjg18g9kla8mnb3b5zgv7i4dyzykw";
+  };
+
+  nativeBuildInputs = [ cmake wrapQtAppsHook qttools ];
+
+  buildInputs = [ SDL2 qtbase gtk3 pkg-config ];
+
+  installPhase = ''
+    mkdir -p $out/
+    mv bin $out/
+  '';
+
+  # TODO:
+  # - vulkan graphics backend (OpenGL works).
+  # - default sound backend (cubeb) does not work, but SDL does.
+  meta = with lib; {
+    description =
+      "PlayStation 1 emulator focusing on playability, speed and long-term maintainability";
+    homepage = "https://github.com/stenzek/duckstation";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.guibou ];
+  };
+}
diff --git a/pkgs/misc/emulators/emu2/default.nix b/pkgs/misc/emulators/emu2/default.nix
index fb13b602b6a..eef361ecd03 100644
--- a/pkgs/misc/emulators/emu2/default.nix
+++ b/pkgs/misc/emulators/emu2/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub }:
+{ lib, stdenv, fetchFromGitHub }:
 
 stdenv.mkDerivation rec {
   pname = "emu2";
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
 
   makeFlags = [ "PREFIX=$(out)" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/dmsc/emu2/";
     description = "A simple text-mode x86 + DOS emulator";
     platforms = platforms.linux;
diff --git a/pkgs/misc/emulators/emulationstation/default.nix b/pkgs/misc/emulators/emulationstation/default.nix
index af83d4b9f34..4cb5ca9ec2e 100644
--- a/pkgs/misc/emulators/emulationstation/default.nix
+++ b/pkgs/misc/emulators/emulationstation/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchFromGitHub, pkgconfig, cmake, curl, boost, eigen
-, freeimage, freetype, libGLU, libGL, SDL2, alsaLib, libarchive
+{ lib, stdenv, fetchFromGitHub, pkg-config, cmake, curl, boost, eigen
+, freeimage, freetype, libGLU, libGL, SDL2, alsa-lib, libarchive
 , fetchpatch }:
 
 stdenv.mkDerivation {
@@ -20,20 +20,18 @@ stdenv.mkDerivation {
     })
   ];
 
-  nativeBuildInputs = [ pkgconfig cmake ];
-  buildInputs = [ alsaLib boost curl eigen freeimage freetype libarchive libGLU libGL SDL2 ];
+  nativeBuildInputs = [ pkg-config cmake ];
+  buildInputs = [ alsa-lib boost curl eigen freeimage freetype libarchive libGLU libGL SDL2 ];
 
   installPhase = ''
     install -D ../emulationstation $out/bin/emulationstation
   '';
 
-  enableParallelBuilding = true;
-
   meta = {
     description = "A flexible emulator front-end supporting keyboardless navigation and custom system themes";
     homepage = "https://emulationstation.org";
-    maintainers = [ stdenv.lib.maintainers.edwtjo ];
-    license = stdenv.lib.licenses.mit;
-    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ lib.maintainers.edwtjo ];
+    license = lib.licenses.mit;
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/misc/emulators/epsxe/default.nix b/pkgs/misc/emulators/epsxe/default.nix
index 493cf4c2628..f70e90e9872 100644
--- a/pkgs/misc/emulators/epsxe/default.nix
+++ b/pkgs/misc/emulators/epsxe/default.nix
@@ -1,7 +1,7 @@
-{ stdenv, fetchurl, alsaLib, curl, gdk-pixbuf, glib, gtk3, libGLU, libGL,
+{ lib, stdenv, fetchurl, alsa-lib, curl, gdk-pixbuf, glib, gtk3, libGLU, libGL,
   libX11, openssl_1_0_2, ncurses5, SDL, SDL_ttf, unzip, zlib, wrapGAppsHook, autoPatchelfHook }:
 
-with stdenv.lib;
+with lib;
 
 stdenv.mkDerivation rec {
   pname = "epsxe";
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
   sourceRoot = ".";
 
   buildInputs = [
-    alsaLib
+    alsa-lib
     curl
     gdk-pixbuf
     glib
diff --git a/pkgs/misc/emulators/fakenes/default.nix b/pkgs/misc/emulators/fakenes/default.nix
index d7c8a185a09..2011d8ce037 100644
--- a/pkgs/misc/emulators/fakenes/default.nix
+++ b/pkgs/misc/emulators/fakenes/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, allegro, openal, libGLU, libGL, zlib, hawknl, freeglut, libX11,
+{lib, stdenv, fetchurl, allegro, openal, libGLU, libGL, zlib, hawknl, freeglut, libX11,
   libXxf86vm, libXcursor, libXpm }:
 
 stdenv.mkDerivation {
@@ -24,9 +24,9 @@ stdenv.mkDerivation {
 
   meta = {
     homepage = "http://fakenes.sourceforge.net/";
-    license = stdenv.lib.licenses.gpl2Plus;
+    license = lib.licenses.gpl2Plus;
     description = "Portable Open Source NES Emulator";
-    platforms = stdenv.lib.platforms.linux;
+    platforms = lib.platforms.linux;
     broken = true;
   };
 }
diff --git a/pkgs/misc/emulators/fceux/default.nix b/pkgs/misc/emulators/fceux/default.nix
index 0d4b4cd3576..f76fc761abb 100644
--- a/pkgs/misc/emulators/fceux/default.nix
+++ b/pkgs/misc/emulators/fceux/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchFromGitHub, scons, zlib, SDL, lua5_1, pkgconfig}:
+{lib, stdenv, fetchFromGitHub, scons, zlib, SDL, lua5_1, pkg-config}:
 
 stdenv.mkDerivation {
   pname = "fceux-unstable";
@@ -11,7 +11,7 @@ stdenv.mkDerivation {
     sha256 = "0gpz411dzfwx9mr34yi4zb1hphd5hha1nvwgzxki0sviwafca992";
   };
 
-  nativeBuildInputs = [ pkgconfig scons ];
+  nativeBuildInputs = [ pkg-config scons ];
   buildInputs = [
     zlib SDL lua5_1
   ];
@@ -32,9 +32,9 @@ stdenv.mkDerivation {
 
   meta = {
     description = "A Nintendo Entertainment System (NES) Emulator";
-    license = stdenv.lib.licenses.gpl2;
-    maintainers = [ stdenv.lib.maintainers.scubed2 ];
+    license = lib.licenses.gpl2;
+    maintainers = [ lib.maintainers.scubed2 ];
     homepage = "http://www.fceux.com/";
-    platforms = stdenv.lib.platforms.linux;
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/misc/emulators/firebird-emu/default.nix b/pkgs/misc/emulators/firebird-emu/default.nix
index 888cfea0204..c766df9e3c0 100644
--- a/pkgs/misc/emulators/firebird-emu/default.nix
+++ b/pkgs/misc/emulators/firebird-emu/default.nix
@@ -1,4 +1,4 @@
-{ mkDerivation, stdenv, fetchFromGitHub, qmake, qtbase, qtdeclarative }:
+{ mkDerivation, lib, fetchFromGitHub, qmake, qtbase, qtdeclarative }:
 
 mkDerivation rec {
   pname = "firebird-emu";
@@ -30,9 +30,9 @@ mkDerivation rec {
   meta = {
     homepage = "https://github.com/nspire-emus/firebird";
     description = "Third-party multi-platform emulator of the ARM-based TI-Nspire™ calculators";
-    license = stdenv.lib.licenses.gpl3;
-    maintainers = with stdenv.lib.maintainers; [ pneumaticat ];
+    license = lib.licenses.gpl3;
+    maintainers = with lib.maintainers; [ pneumaticat ];
     # Only tested on Linux, but likely possible to build on, e.g. macOS
-    platforms = stdenv.lib.platforms.linux;
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/misc/emulators/fs-uae-launcher/default.nix b/pkgs/misc/emulators/fs-uae-launcher/default.nix
new file mode 100644
index 00000000000..9416e92e2b0
--- /dev/null
+++ b/pkgs/misc/emulators/fs-uae-launcher/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, lib, fetchurl, makeWrapper, python3, gettext
+, pyqt5, setuptools, requests
+}:
+
+stdenv.mkDerivation rec {
+  pname = "fs-uae-launcher";
+  version = "3.0.5";
+
+  src = fetchurl {
+    url = "https://fs-uae.net/stable/${version}/${pname}-${version}.tar.gz";
+    sha256 = "1dknra4ngz7bpppwqghmza1q68pn1yaw54p9ba0f42zwp427ly97";
+  };
+
+  makeFlags = [ "prefix=$(out)" ];
+  nativeBuildInputs = [ makeWrapper python3 gettext ];
+  buildInputs = [ pyqt5 setuptools requests ];
+  postInstall = ''
+    wrapProgram $out/bin/fs-uae-launcher --set PYTHONPATH "$PYTHONPATH"
+  '';
+
+  meta = {
+    description = "Graphical front-end for the FS-UAE emulator";
+    license = lib.licenses.gpl2Plus;
+    homepage = "https://fs-uae.net";
+    maintainers = with lib; [ maintainers.sander ];
+    platforms = [ "i686-linux" "x86_64-linux" ];
+  };
+}
diff --git a/pkgs/misc/emulators/fs-uae/default.nix b/pkgs/misc/emulators/fs-uae/default.nix
index 214c1e6e75b..eef8c2c3253 100644
--- a/pkgs/misc/emulators/fs-uae/default.nix
+++ b/pkgs/misc/emulators/fs-uae/default.nix
@@ -1,7 +1,7 @@
-{ stdenv, fetchurl, pkgconfig
+{ lib, stdenv, fetchurl, pkg-config
 , gettext, gtk2, SDL2, zlib, glib, openal, libGLU, libGL, lua, freetype, libmpeg2, zip }:
 
-with stdenv.lib;
+with lib;
 stdenv.mkDerivation rec {
 
   pname = "fs-uae";
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
     sha256 = "1qwzhp34wy7bnd3c0plv11rg9fs5m92rh3ffnr9pn6ng0cpc8vpj";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ gettext gtk2 SDL2 zlib glib openal libGLU libGL lua freetype libmpeg2 zip ];
 
   meta = {
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
     '';
     license = licenses.gpl2Plus;
     homepage = "https://fs-uae.net";
-    maintainers = with stdenv.lib; [ maintainers.AndersonTorres ];
+    maintainers = with lib; [ maintainers.AndersonTorres ];
     platforms = [ "i686-linux" "x86_64-linux" ];
   };
 }
diff --git a/pkgs/misc/emulators/fuse-emulator/default.nix b/pkgs/misc/emulators/fuse-emulator/default.nix
index e2334a62a13..3426b47daea 100644
--- a/pkgs/misc/emulators/fuse-emulator/default.nix
+++ b/pkgs/misc/emulators/fuse-emulator/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, perl, pkgconfig, wrapGAppsHook
+{ lib, stdenv, fetchurl, perl, pkg-config, wrapGAppsHook
 , SDL, bzip2, glib, gtk3, libgcrypt, libpng, libspectrum, libxml2, zlib
 }:
 
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
     sha256 = "0kaynjr28w42n3iha60mgr7nxm49w8j0v49plyrc7ka24qzmiqph";
   };
 
-  nativeBuildInputs = [ perl pkgconfig wrapGAppsHook ];
+  nativeBuildInputs = [ perl pkg-config wrapGAppsHook ];
 
   buildInputs = [ SDL bzip2 glib gtk3 libgcrypt libpng libspectrum libxml2 zlib ];
 
diff --git a/pkgs/misc/emulators/gens-gs/default.nix b/pkgs/misc/emulators/gens-gs/default.nix
index a9449808d52..abc676ffa63 100644
--- a/pkgs/misc/emulators/gens-gs/default.nix
+++ b/pkgs/misc/emulators/gens-gs/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, gtk2, SDL, nasm, zlib, libpng, libGLU, libGL }:
+{ lib, stdenv, fetchurl, pkg-config, gtk2, SDL, nasm, zlib, libpng, libGLU, libGL }:
 
 stdenv.mkDerivation {
   name = "gens-gs-7";
@@ -8,14 +8,14 @@ stdenv.mkDerivation {
     sha256 = "1ha5s6d3y7s9aq9f4zmn9p88109c3mrj36z2w68jhiw5xrxws833";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ gtk2 SDL nasm zlib libpng libGLU libGL ];
 
   # Work around build failures on recent GTK.
   # See http://ubuntuforums.org/showthread.php?p=10535837
   NIX_CFLAGS_COMPILE = "-UGTK_DISABLE_DEPRECATED -UGSEAL_ENABLE";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://segaretro.org/Gens/GS";
     description = "A Genesis/Mega Drive emulator";
     platforms = [ "i686-linux" ];
diff --git a/pkgs/misc/emulators/gxemul/0001-fix-attributes.patch b/pkgs/misc/emulators/gxemul/0001-fix-attributes.patch
new file mode 100644
index 00000000000..3ed9cabc7ad
--- /dev/null
+++ b/pkgs/misc/emulators/gxemul/0001-fix-attributes.patch
@@ -0,0 +1,26 @@
+diff -Naur gxemul-0.7.0-old/src/include/thirdparty/pcireg.h gxemul-0.7.0/src/include/thirdparty/pcireg.h
+--- gxemul-0.7.0-old/src/include/thirdparty/pcireg.h	2021-04-22 15:04:14.000000000 -0300
++++ gxemul-0.7.0-new/src/include/thirdparty/pcireg.h	2021-06-28 18:41:13.063065322 -0300
+@@ -12,9 +12,6 @@
+ #undef __noreturn__
+ #endif
+ 
+-#define __attribute__(x)  /*  */
+-#define __noreturn__  /*  */
+-
+ /*
+  * Copyright (c) 1995, 1996, 1999, 2000
+  *     Christopher G. Demetriou.  All rights reserved.
+diff -Naur gxemul-0.7.0-old/src/include/thirdparty/sgi_arcbios.h gxemul-0.7.0/src/include/thirdparty/sgi_arcbios.h
+--- gxemul-0.7.0-old/src/include/thirdparty/sgi_arcbios.h	2021-04-22 15:04:14.000000000 -0300
++++ gxemul-0.7.0-new/src/include/thirdparty/sgi_arcbios.h	2021-06-28 18:41:33.549981505 -0300
+@@ -14,9 +14,6 @@
+ #undef __noreturn__
+ #endif
+ 
+-#define	__attribute__(x)  /*  */
+-#define	__noreturn__  /*  */
+-
+ /*	$NetBSD: arcbios.h,v 1.3 2001/12/06 14:59:02 rafal Exp $	*/
+ 
+ /*-
diff --git a/pkgs/misc/emulators/gxemul/default.nix b/pkgs/misc/emulators/gxemul/default.nix
index 8671056d14e..cacb521c2fb 100644
--- a/pkgs/misc/emulators/gxemul/default.nix
+++ b/pkgs/misc/emulators/gxemul/default.nix
@@ -1,35 +1,47 @@
-{ stdenv, fetchurl }:
+{ lib
+, stdenv
+, fetchurl
+, libX11
+}:
 
 stdenv.mkDerivation rec {
   pname = "gxemul";
-  version = "0.6.2";
+  version = "0.7.0";
 
   src = fetchurl {
-    url = "http://gavare.se/gxemul/src/gxemul-${version}.tar.gz";
-    sha256 = "0iqmazfn7ss5n27m1a9n9nps3vzhag1phzb7qw0wgczycmwsq0x7";
+    url = "http://gavare.se/gxemul/src/${pname}-${version}.tar.gz";
+    sha256 = "sha256-ecRDfG+MqQT0bTOsNgYqZf3PSpKiSEeOQIqxEpXPjoM=";
   };
 
-  configurePhase = "./configure";
+  buildInputs = [
+    libX11
+  ];
 
-  installPhase = ''
-    mkdir -p {$out/bin,$out/share/${pname}-${version}}
-    cp -r {doc,demos} $out/share/${pname}-${version}
-    cp gxemul $out/bin
-    cp -r ./man $out
+  patches = [
+    # Fix compilation; remove when next release arrives
+    ./0001-fix-attributes.patch
+  ];
+
+  dontAddPrefix = true;
+
+  preConfigure = ''
+    export PREFIX=${placeholder "out"}
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://gavare.se/gxemul/";
     description = "Gavare's experimental emulator";
     longDescription = ''
       GXemul is a framework for full-system computer architecture
       emulation. Several real machines have been implemented within the
-      framework, consisting of processors (ARM, MIPS, Motorola 88K,
-      PowerPC, and SuperH) and surrounding hardware components such as
-      framebuffers, interrupt controllers, busses, disk controllers,
-      and serial controllers. The emulation is working well enough to
-      allow several unmodified "guest" operating systems to run.
+      framework, consisting of processors (ARM, MIPS, Motorola 88K, PowerPC, and
+      SuperH) and surrounding hardware components such as framebuffers,
+      interrupt controllers, busses, disk controllers, and serial
+      controllers. The emulation is working well enough to allow several
+      unmodified "guest" operating systems to run.
     '';
     license = licenses.bsd3;
+    maintainers = with maintainers; [ AndersonTorres ];
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/misc/emulators/hatari/default.nix b/pkgs/misc/emulators/hatari/default.nix
index db1a6664c54..de98278b832 100644
--- a/pkgs/misc/emulators/hatari/default.nix
+++ b/pkgs/misc/emulators/hatari/default.nix
@@ -1,23 +1,25 @@
-{ stdenv, fetchurl, zlib, SDL, cmake }:
+{ lib, stdenv, fetchurl, zlib, SDL, cmake }:
 
 stdenv.mkDerivation rec {
-  name = "hatari-2.2.1";
+  pname = "hatari";
+  version = "2.3.1";
 
   src = fetchurl {
-    url = "https://download.tuxfamily.org/hatari/2.2.1/${name}.tar.bz2";
-    sha256 = "0q3g23vnx58w666723v76ilh9j353md3sn48cmlq9gkll8qfzbqi";
+    url = "https://download.tuxfamily.org/hatari/${version}/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-RKL2LKmV442eCHSAaVbwucPMhOqJ4BaaY4SbY807ZL0=";
   };
 
   # For pthread_cancel
   cmakeFlags = [ "-DCMAKE_EXE_LINKER_FLAGS=-lgcc_s" ];
 
-  buildInputs = [ zlib SDL cmake ];
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ zlib SDL ];
 
   meta = {
     homepage = "http://hatari.tuxfamily.org/";
     description = "Atari ST/STE/TT/Falcon emulator";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = with stdenv.lib.maintainers; [ ];
+    license = lib.licenses.gpl2Plus;
+    platforms = lib.platforms.linux;
+    maintainers = with lib.maintainers; [ ];
   };
 }
diff --git a/pkgs/misc/emulators/higan/default.nix b/pkgs/misc/emulators/higan/default.nix
index e735bdb38ee..8e10b7bb315 100644
--- a/pkgs/misc/emulators/higan/default.nix
+++ b/pkgs/misc/emulators/higan/default.nix
@@ -1,17 +1,17 @@
-{ stdenv, fetchFromGitHub
-, pkgconfig
+{ lib, stdenv, fetchFromGitHub
+, pkg-config
 , libX11, libXv
 , udev
 , libGLU, libGL, SDL2
 , libao, openal, libpulseaudio
-, alsaLib
+, alsa-lib
 , gtk2, gtksourceview
 , runtimeShell
 # Darwin dependencies
 , libicns, Carbon, Cocoa, OpenGL, OpenAL}:
 
 let
-  inherit (stdenv.lib) optionals;
+  inherit (lib) optionals;
 in
 stdenv.mkDerivation rec {
 
@@ -36,11 +36,11 @@ stdenv.mkDerivation rec {
     done
   '';
 
-  nativeBuildInputs = [ pkgconfig ]
+  nativeBuildInputs = [ pkg-config ]
     ++ optionals stdenv.isDarwin [ libicns ];
 
   buildInputs = [ SDL2 libao ]
-                ++ optionals stdenv.isLinux [ alsaLib udev libpulseaudio openal
+                ++ optionals stdenv.isLinux [ alsa-lib udev libpulseaudio openal
                                               gtk2 gtksourceview libX11 libXv
                                               libGLU libGL ]
                 ++ optionals stdenv.isDarwin [ Carbon Cocoa OpenGL OpenAL ];
@@ -104,7 +104,7 @@ stdenv.mkDerivation rec {
     chmod +x $out/bin/higan-init.sh
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "An open-source, cycle-accurate multi-system emulator";
     longDescription = ''
       higan is a multi-system game console emulator. The purpose of higan is to
diff --git a/pkgs/misc/emulators/kega-fusion/default.nix b/pkgs/misc/emulators/kega-fusion/default.nix
index 0b6fb0dea54..e8feb1ea7ed 100644
--- a/pkgs/misc/emulators/kega-fusion/default.nix
+++ b/pkgs/misc/emulators/kega-fusion/default.nix
@@ -1,7 +1,7 @@
-{ stdenv, lib, writeText, fetchurl, upx, libGLU, glib, gtk2, alsaLib, libSM, libX11, gdk-pixbuf, pango, libXinerama, mpg123, runtimeShell }:
+{ stdenv, lib, writeText, fetchurl, upx, libGLU, glib, gtk2, alsa-lib, libSM, libX11, gdk-pixbuf, pango, libXinerama, mpg123, runtimeShell }:
 
 let
-  libPath = lib.makeLibraryPath [ stdenv.cc.cc libGLU glib gtk2 alsaLib libSM libX11 gdk-pixbuf pango libXinerama ];
+  libPath = lib.makeLibraryPath [ stdenv.cc.cc libGLU glib gtk2 alsa-lib libSM libX11 gdk-pixbuf pango libXinerama ];
 
 in stdenv.mkDerivation {
   pname = "kega-fusion";
@@ -68,7 +68,7 @@ in stdenv.mkDerivation {
     chmod +x "$out/bin/kega-fusion"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Sega SG1000, SC3000, SF7000, Master System, Game Gear, Genesis/Megadrive, SVP, Pico, SegaCD/MegaCD and 32X emulator";
     homepage = "https://www.carpeludum.com/kega-fusion/";
     maintainers = with maintainers; [ abbradar ];
diff --git a/pkgs/misc/emulators/lambda-delta/default.nix b/pkgs/misc/emulators/lambda-delta/default.nix
new file mode 100644
index 00000000000..a17a0eadfd5
--- /dev/null
+++ b/pkgs/misc/emulators/lambda-delta/default.nix
@@ -0,0 +1,26 @@
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, pkg-config, SDL2 }:
+
+stdenv.mkDerivation rec {
+  pname = "lambda-delta";
+  version = "0.98.3";
+
+  src = fetchFromGitHub {
+    owner = "dseagrav";
+    repo = "ld";
+    rev = version;
+    sha256 = "02m43fj9dzc1i1jl01qwnhjiq1rh03jw1xq59sx2h3bhn7dk941x";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
+  buildInputs = [ SDL2 ];
+
+  configureFlags = [ "--without-SDL1" ];
+
+  meta = with lib; {
+    description = "LMI (Lambda Lisp Machine) emulator";
+    homepage = "https://github.com/dseagrav/ld";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ siraben ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/misc/emulators/libdsk/default.nix b/pkgs/misc/emulators/libdsk/default.nix
index 6a2f94e77e6..9ad20275489 100644
--- a/pkgs/misc/emulators/libdsk/default.nix
+++ b/pkgs/misc/emulators/libdsk/default.nix
@@ -1,19 +1,19 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
   pname = "libdsk";
-  version = "1.5.12";
+  version = "1.5.15";
 
   src = fetchurl {
     url = "https://www.seasip.info/Unix/LibDsk/${pname}-${version}.tar.gz";
-    sha256 = "0s2k9vkrf95pf4ydc6vazb29ysrnhdpcfjnf17lpk4nmlv1j3vyv";
+    sha256 = "sha256-7VjVgGRy3+SE+9mdPpBKiNzv1tg2akXpkHfv2dVoODs=";
   };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A library for accessing discs and disc image files";
     homepage = "http://www.seasip.info/Unix/LibDsk/";
     license = licenses.gpl2Plus;
-    maintainers = [ maintainers.genesis ];
-    platforms = platforms.linux;
+    maintainers = [ ];
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/misc/emulators/maiko/default.nix b/pkgs/misc/emulators/maiko/default.nix
new file mode 100644
index 00000000000..e78b680d617
--- /dev/null
+++ b/pkgs/misc/emulators/maiko/default.nix
@@ -0,0 +1,26 @@
+{ lib, stdenv, fetchFromGitHub, cmake, libX11 }:
+
+stdenv.mkDerivation rec {
+  pname = "maiko";
+  version = "2021-04-14";
+  src = fetchFromGitHub {
+    owner = "Interlisp";
+    repo = "maiko";
+    rev = "91fe7d51f9d607bcedde0e78e435ee188a8c84c0";
+    hash = "sha256-Y+ngep/xHw6RCU8XVRYSWH6S+9hJ74z50pGpIqS2CjM=";
+  };
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ libX11 ];
+  installPhase = ''
+    runHook preInstall
+    find . -maxdepth 1 -executable -type f -exec install -Dt $out/bin '{}' \;
+    runHook postInstall
+  '';
+  meta = with lib; {
+    description = "Medley Interlisp virtual machine";
+    homepage = "https://interlisp.org/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ ehmry ];
+    inherit (libX11.meta) platforms;
+  };
+}
diff --git a/pkgs/misc/emulators/mame/default.nix b/pkgs/misc/emulators/mame/default.nix
index ea5e9776226..26abda81b30 100644
--- a/pkgs/misc/emulators/mame/default.nix
+++ b/pkgs/misc/emulators/mame/default.nix
@@ -1,13 +1,11 @@
-{ stdenv, mkDerivation, fetchFromGitHub, makeDesktopItem, makeWrapper
-, python, pkgconfig, SDL2, SDL2_ttf, alsaLib, which, qtbase, libXinerama
+{ lib, stdenv, mkDerivation, fetchFromGitHub, makeDesktopItem, makeWrapper
+, python, pkg-config, SDL2, SDL2_ttf, alsa-lib, which, qtbase, libXinerama
 , libpcap, CoreAudioKit, ForceFeedback
 , installShellFiles }:
 
-with stdenv;
-
 let
   majorVersion = "0";
-  minorVersion = "223";
+  minorVersion = "226";
 
   desktopItem = makeDesktopItem {
     name = "MAME";
@@ -26,7 +24,7 @@ in mkDerivation {
     owner = "mamedev";
     repo = "mame";
     rev = "mame${majorVersion}${minorVersion}";
-    sha256 = "1lh5cmz4f6km2d8fn3m9ns7fc4wzbdp71v0s6vjcynycpyhy3yl1";
+    sha256 = "0pnsvz4vkjkqb1ac5wzwz31vx0iknyg5ffly90nhl13kcr656jrj";
   };
 
   hardeningDisable = [ "fortify" ];
@@ -43,15 +41,17 @@ in mkDerivation {
 
   buildInputs =
     [ SDL2 SDL2_ttf qtbase libXinerama ]
-    ++ lib.optional stdenv.isLinux alsaLib
+    ++ lib.optional stdenv.isLinux alsa-lib
     ++ lib.optionals stdenv.isDarwin [ libpcap CoreAudioKit ForceFeedback ]
     ;
-  nativeBuildInputs = [ python pkgconfig which makeWrapper installShellFiles ];
+  nativeBuildInputs = [ python pkg-config which makeWrapper installShellFiles ];
 
   # by default MAME assumes that paths with stock resources
   # are relative and that you run MAME changing to
   # install directory, so we add absolute paths here
-  patches = [ ./emuopts.patch ];
+  patches = [
+    ./emuopts.patch
+  ];
 
   postPatch = ''
     substituteInPlace src/emu/emuopts.cpp \
@@ -59,7 +59,7 @@ in mkDerivation {
   '';
 
   installPhase = ''
-    make -f dist.mak PTR64=${stdenv.lib.optionalString stdenv.is64bit "1"}
+    make -f dist.mak PTR64=${lib.optionalString stdenv.is64bit "1"}
     mkdir -p ${dest}
     mv build/release/*/Release/mame/* ${dest}
 
@@ -82,6 +82,6 @@ in mkDerivation {
     platforms = platforms.unix;
     # makefile needs fixes for install target
     badPlatforms = [ "aarch64-linux" ];
-    maintainers = with maintainers; [ gnidorah ];
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/misc/emulators/mednafen/default.nix b/pkgs/misc/emulators/mednafen/default.nix
index e356e636c5a..f76ddb78bd5 100644
--- a/pkgs/misc/emulators/mednafen/default.nix
+++ b/pkgs/misc/emulators/mednafen/default.nix
@@ -1,23 +1,23 @@
-{ stdenv, fetchurl, pkgconfig, freeglut, libGLU, libGL, libcdio, libjack2
-, libsamplerate, libsndfile, libX11, SDL2, SDL2_net, zlib, alsaLib }:
+{ lib, stdenv, fetchurl, pkg-config, freeglut, libGLU, libGL, libcdio, libjack2
+, libsamplerate, libsndfile, libX11, SDL2, SDL2_net, zlib, alsa-lib }:
 
 stdenv.mkDerivation rec {
   pname = "mednafen";
-  version = "1.24.3";
+  version = "1.26.1";
 
   src = fetchurl {
     url = "https://mednafen.github.io/releases/files/${pname}-${version}.tar.xz";
-    sha256 = "03zplcfvmnnv7grhacmr1zy789pb2wda36wylmzmar23g0zqbsix";
+    sha256 = "1x7xhxjhwsdbak8l0iyb497f043xkhibk73w96xck4j2bk10fac4";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
 
   buildInputs = [
     freeglut
     libGLU libGL
     libcdio
     libjack2
-    alsaLib
+    alsa-lib
     libsamplerate
     libsndfile
     libX11
@@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
     mv Documentation $out/share/doc/mednafen
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A portable, CLI-driven, SDL+OpenGL-based, multi-system emulator";
     longDescription = ''
       Mednafen is a portable, utilizing OpenGL and SDL,
diff --git a/pkgs/misc/emulators/mednafen/server.nix b/pkgs/misc/emulators/mednafen/server.nix
index 9a1edc00452..24c13bf0228 100644
--- a/pkgs/misc/emulators/mednafen/server.nix
+++ b/pkgs/misc/emulators/mednafen/server.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
   pname = "mednafen-server";
@@ -11,11 +11,11 @@ stdenv.mkDerivation rec {
 
   postInstall = "install -m 644 -Dt $out/share/mednafen-server standard.conf";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Netplay server for Mednafen";
     homepage = "https://mednafen.github.io/";
     license = licenses.gpl2;
     maintainers = with maintainers; [ AndersonTorres ];
-    platforms = platforms.linux;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/misc/emulators/mednaffe/default.nix b/pkgs/misc/emulators/mednaffe/default.nix
index 7e231c5edd3..8a11b633d28 100644
--- a/pkgs/misc/emulators/mednaffe/default.nix
+++ b/pkgs/misc/emulators/mednaffe/default.nix
@@ -1,26 +1,39 @@
-{ stdenv, fetchFromGitHub, makeWrapper, autoreconfHook, pkgconfig, wrapGAppsHook
-, gtk2 ? null, gtk3 ? null, mednafen }:
-
-with stdenv.lib;
+{ stdenv
+, lib
+, fetchFromGitHub
+, autoreconfHook
+, pkg-config
+, mednafen
+, gtk2 ? null
+, gtk3 ? null
+, wrapGAppsHook
+}:
 
 stdenv.mkDerivation rec {
   pname = "mednaffe";
-  version = "0.8.8";
+  version = "0.9.1";
 
   src = fetchFromGitHub {
     owner = "AmatCoder";
     repo = "mednaffe";
-    rev = "${version}";
-    sha256 = "15qk3a3l1phr8bap2ayh3c0vyvw2jwhny1iz1ajq2adyjpm9fhr7";
+    rev = version;
+    sha256 = "sha256-YU8PHnQHAsY90LN/WDugi4WhsuZGBj/z3BS4o69qMS4=";
   };
 
-  nativeBuildInputs = [ autoreconfHook makeWrapper pkgconfig wrapGAppsHook ];
+  nativeBuildInputs = [ autoreconfHook pkg-config wrapGAppsHook ];
   buildInputs = [ gtk2 gtk3 mednafen ];
 
-  configureFlags = [ (enableFeature (gtk3 != null) "gtk3") ];
-  postInstall = "wrapProgram $out/bin/mednaffe --set PATH ${mednafen}/bin";
+  configureFlags = [ (lib.enableFeature (gtk3 != null) "gtk3") ];
+
+  dontWrapGApps = true;
+
+  postInstall = ''
+    wrapProgram $out/bin/mednaffe \
+      --prefix PATH ':' "${mednafen}/bin" \
+      "''${gappsWrapperArgs[@]}"
+   '';
 
-  meta = {
+  meta = with lib; {
     description = "GTK-based frontend for mednafen emulator";
     homepage = "https://github.com/AmatCoder/mednaffe";
     license = licenses.gpl3Plus;
diff --git a/pkgs/misc/emulators/melonDS/default.nix b/pkgs/misc/emulators/melonDS/default.nix
index 94fbeba0e07..a53d2bfc339 100644
--- a/pkgs/misc/emulators/melonDS/default.nix
+++ b/pkgs/misc/emulators/melonDS/default.nix
@@ -1,41 +1,41 @@
-{ stdenv, fetchFromGitHub, cmake, pkgconfig, SDL2, gtk3, libpcap, wrapGAppsHook }:
+{ lib
+, fetchFromGitHub
+, mkDerivation
+, cmake
+, pkg-config
+, SDL2
+, qtbase
+, libpcap
+, libslirp
+, wrapGAppsHook
+}:
 
-stdenv.mkDerivation rec {
+mkDerivation rec {
   pname = "melonDS";
-  version = "0.8.3";
-  ## When updating to the release after 0.8.3,
-  ##  - Uncomment:
-  ##      cmakeFlags = [ "-UUNIX_PORTABLE" ];
-  ##  - Remove the postInstall, since cmake should then take care of installing icons, .desktop file, and romlist.bin
-  ##    (see https://github.com/Arisotura/melonDS/pull/546)
+  version = "0.9.1";
 
   src = fetchFromGitHub {
     owner = "Arisotura";
     repo = pname;
     rev = version;
-    sha256 = "1lqmfwjpkdqfkns1aaxlp4yrg6i0r66mxfr4rrj7b5286k44hqwn";
+    sha256 = "sha256-bvi0Y+zwfEcsZMNxoH85hxwIGn0UIYlg/ZaE6yJ7vlo=";
   };
 
-  enableParallelBuilding = true;
-  nativeBuildInputs = [ cmake pkgconfig wrapGAppsHook ];
-  buildInputs = [ SDL2 gtk3 libpcap ];
+  nativeBuildInputs = [ cmake pkg-config wrapGAppsHook ];
+  buildInputs = [
+    SDL2
+    qtbase
+    libpcap
+    libslirp
+  ];
 
-  postInstall = ''
-    install -Dm644 -t $out/share/melonDS/ ../romlist.bin
-    install -Dm644 -t $out/share/applications/ ../flatpak/*.desktop
+  cmakeFlags = [ "-UUNIX_PORTABLE" ];
 
-    for i in ../icon/melon_*.png; do
-      d="''${i##*_}"
-      d="$out/share/icons/hicolor/''${d%.png}/apps"
-      install -D $i "$d/net.kuribo64.melonds.png"
-    done
-  '';
-
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://melonds.kuribo64.net/";
     description = "Work in progress Nintendo DS emulator";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ artemist benley ];
+    maintainers = with maintainers; [ artemist benley shamilton ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/misc/emulators/mgba/default.nix b/pkgs/misc/emulators/mgba/default.nix
index 73845581b1b..fa25609dcdb 100644
--- a/pkgs/misc/emulators/mgba/default.nix
+++ b/pkgs/misc/emulators/mgba/default.nix
@@ -1,6 +1,22 @@
-{ stdenv, fetchFromGitHub, makeDesktopItem, wrapQtAppsHook, pkgconfig
-, cmake, epoxy, libzip, libelf, libedit, ffmpeg_3, SDL2, imagemagick
-, qtbase, qtmultimedia, qttools, minizip }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, SDL2
+, cmake
+, epoxy
+, ffmpeg
+, imagemagick
+, libedit
+, libelf
+, libzip
+, makeDesktopItem
+, minizip
+, pkg-config
+, qtbase
+, qtmultimedia
+, qttools
+, wrapQtAppsHook
+}:
 
 let
   desktopItem = makeDesktopItem {
@@ -15,45 +31,54 @@ let
   };
 in stdenv.mkDerivation rec {
   pname = "mgba";
-  version = "0.8.3";
+  version = "0.9.0";
 
   src = fetchFromGitHub {
     owner = "mgba-emu";
     repo = "mgba";
     rev = version;
-    sha256 = "0rwlfjdr0rzbq4kaplvwsgyb8xq6nrzxss2c8xrgw9hqw3ymx4s3";
+    hash = "sha256-JVauGyHJVfiXVG4Z+Ydh1lRypy5rk9SKeTbeHFNFYJs=";
   };
 
-  enableParallelBuilding = true;
-  nativeBuildInputs = [ wrapQtAppsHook pkgconfig cmake ];
-
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    wrapQtAppsHook
+  ];
   buildInputs = [
-    epoxy libzip libelf libedit ffmpeg_3 SDL2 imagemagick
-    qtbase qtmultimedia qttools minizip
+    SDL2
+    epoxy
+    ffmpeg
+    imagemagick
+    libedit
+    libelf
+    libzip
+    minizip
+    qtbase
+    qtmultimedia
+    qttools
   ];
 
   postInstall = ''
     cp -r ${desktopItem}/share/applications $out/share
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://mgba.io";
     description = "A modern GBA emulator with a focus on accuracy";
-
     longDescription = ''
       mGBA is a new Game Boy Advance emulator written in C.
 
-      The project started in April 2013 with the goal of being fast
-      enough to run on lower end hardware than other emulators
-      support, without sacrificing accuracy or portability. Even in
-      the initial version, games generally play without problems. It
-      is loosely based on the previous GBA.js emulator, although very
-      little of GBA.js can still be seen in mGBA.
-
-      Other goals include accurate enough emulation to provide a
-      development environment for homebrew software, a good workflow
-      for tool-assist runners, and a modern feature set for emulators
-      that older emulators may not support.
+      The project started in April 2013 with the goal of being fast enough to
+      run on lower end hardware than other emulators support, without
+      sacrificing accuracy or portability. Even in the initial version, games
+      generally play without problems. It is loosely based on the previous
+      GBA.js emulator, although very little of GBA.js can still be seen in mGBA.
+
+      Other goals include accurate enough emulation to provide a development
+      environment for homebrew software, a good workflow for tool-assist
+      runners, and a modern feature set for emulators that older emulators may
+      not support.
     '';
 
     license = licenses.mpl20;
@@ -61,3 +86,4 @@ in stdenv.mkDerivation rec {
     platforms = platforms.linux;
   };
 }
+# TODO [ AndersonTorres ]: use desktopItem functions
diff --git a/pkgs/misc/emulators/mupen64plus/default.nix b/pkgs/misc/emulators/mupen64plus/default.nix
index 621559627a7..f5d17d9d395 100644
--- a/pkgs/misc/emulators/mupen64plus/default.nix
+++ b/pkgs/misc/emulators/mupen64plus/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, boost, dash, freetype, libpng, pkgconfig, SDL, which, zlib, nasm }:
+{lib, stdenv, fetchurl, boost, dash, freetype, libpng, pkg-config, SDL, which, zlib, nasm }:
 
 stdenv.mkDerivation rec {
   pname = "mupen64plus";
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
     sha256 = "1a21n4gqdvag6krwcjm5bnyw5phrlxw6m0mk73jy53iq03f3s96m";
   };
 
-  nativeBuildInputs = [ pkgconfig nasm ];
+  nativeBuildInputs = [ pkg-config nasm ];
   buildInputs = [ boost dash freetype libpng SDL which zlib ];
 
   buildPhase = ''
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
     dash m64p_install.sh DESTDIR="$out" PREFIX=""
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A Nintendo 64 Emulator";
     license = licenses.gpl2Plus;
     homepage = "http://www.mupen64plus.org/";
diff --git a/pkgs/misc/emulators/nestopia/default.nix b/pkgs/misc/emulators/nestopia/default.nix
index 5050df007f6..e19b97a477e 100644
--- a/pkgs/misc/emulators/nestopia/default.nix
+++ b/pkgs/misc/emulators/nestopia/default.nix
@@ -1,6 +1,6 @@
-{ stdenv, fetchFromGitHub, pkgconfig, SDL2, alsaLib, gtk3
-, makeWrapper, libGLU, libGL, libarchive, libao, unzip, xdg_utils
-, epoxy, gdk-pixbuf, gnome3, wrapGAppsHook
+{ lib, stdenv, fetchFromGitHub, pkg-config, SDL2, alsa-lib, gtk3
+, makeWrapper, libGLU, libGL, libarchive, libao, unzip, xdg-utils
+, epoxy, gdk-pixbuf, gnome, wrapGAppsHook
 }:
 
 stdenv.mkDerivation rec {
@@ -21,22 +21,22 @@ stdenv.mkDerivation rec {
 
   buildInputs = [
     SDL2
-    alsaLib
+    alsa-lib
     epoxy
     gtk3
     gdk-pixbuf
     libGLU libGL
     libarchive
     libao
-    unzip
-    xdg_utils
-    gnome3.adwaita-icon-theme
+    xdg-utils
+    gnome.adwaita-icon-theme
   ];
 
   nativeBuildInputs = [
-    pkgconfig
+    pkg-config
     makeWrapper
     wrapGAppsHook
+    unzip
   ];
 
   installPhase = ''
@@ -64,9 +64,9 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "http://0ldsk00l.ca/nestopia/";
     description = "NES emulator with a focus on accuracy";
-    license = stdenv.lib.licenses.gpl2;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = with stdenv.lib.maintainers; [ MP2E ];
+    license = lib.licenses.gpl2;
+    platforms = lib.platforms.linux;
+    maintainers = with lib.maintainers; [ MP2E ];
   };
 }
 
diff --git a/pkgs/misc/emulators/np2kai/default.nix b/pkgs/misc/emulators/np2kai/default.nix
index 245bad1d535..0ed47af8f5b 100644
--- a/pkgs/misc/emulators/np2kai/default.nix
+++ b/pkgs/misc/emulators/np2kai/default.nix
@@ -187,7 +187,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A PC-9801 series emulator.";
+    description = "A PC-9801 series emulator";
     homepage = "https://github.com/AZO234/NP2kai";
     license = licenses.mit;
     maintainers = with maintainers; [ OPNA2608 ];
diff --git a/pkgs/misc/emulators/oberon-risc-emu/default.nix b/pkgs/misc/emulators/oberon-risc-emu/default.nix
new file mode 100644
index 00000000000..749e3549bf8
--- /dev/null
+++ b/pkgs/misc/emulators/oberon-risc-emu/default.nix
@@ -0,0 +1,27 @@
+{ lib, stdenv, fetchFromGitHub, SDL2 }:
+
+stdenv.mkDerivation {
+  pname = "oberon-risc-emu";
+  version = "unstable-2020-08-18";
+
+  src = fetchFromGitHub {
+    owner = "pdewacht";
+    repo = "oberon-risc-emu";
+    rev = "26c8ac5737c71811803c87ad51f1f0d6e62e71fe";
+    sha256 = "1iriix3cfcpbkjb5xjb4ysh592xppgprwzp3b6qhwcx44g7kdvxq";
+  };
+
+  buildInputs = [ SDL2 ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    mv risc $out/bin
+  '';
+
+  meta = with lib; {
+    homepage    = "https://github.com/pdewacht/oberon-risc-emu/";
+    description = "Emulator for the Oberon RISC machine";
+    license     = licenses.isc;
+    maintainers = with maintainers; [ siraben ];
+  };
+}
diff --git a/pkgs/misc/emulators/openmsx/custom-nixos.mk b/pkgs/misc/emulators/openmsx/custom-nix.mk
index 9098762e40d..9098762e40d 100644
--- a/pkgs/misc/emulators/openmsx/custom-nixos.mk
+++ b/pkgs/misc/emulators/openmsx/custom-nix.mk
diff --git a/pkgs/misc/emulators/openmsx/default.nix b/pkgs/misc/emulators/openmsx/default.nix
index f0ab48aa625..61d416e17ac 100644
--- a/pkgs/misc/emulators/openmsx/default.nix
+++ b/pkgs/misc/emulators/openmsx/default.nix
@@ -1,33 +1,31 @@
-{ stdenv, fetchFromGitHub, pkgconfig
+{ lib, stdenv, fetchFromGitHub, pkg-config
 , python
-, alsaLib, glew, libGL, libpng
+, alsa-lib, glew, libGL, libpng
 , libogg, libtheora, libvorbis
-, SDL, SDL_image, SDL_ttf
+, SDL2, SDL2_image, SDL2_ttf
 , freetype, tcl, zlib
 }:
 
-with stdenv.lib;
 stdenv.mkDerivation rec {
-
   pname = "openmsx";
-  version = "0.15.0";
+  version = "16.0";
 
   src = fetchFromGitHub {
     owner = "openMSX";
     repo = "openMSX";
-    rev = "RELEASE_0_15_0";
-    sha256 = "1lv5kdw0812mkf7k20z2djzk0pbs792xq2mibbnz9rfjf02whi7l";
+    rev = "RELEASE_${builtins.replaceStrings ["."] ["_"] version}";
+    sha256 = "04sphn9ph378r0qv881riv90cgz58650jcqcwmi1mv6gbcb3img5";
     fetchSubmodules = true;
   };
 
-  nativeBuildInputs = [ pkgconfig python ];
+  nativeBuildInputs = [ pkg-config python ];
 
-  buildInputs = [ alsaLib glew libGL libpng
+  buildInputs = [ alsa-lib glew libGL libpng
     libogg libtheora libvorbis freetype
-    SDL SDL_image SDL_ttf tcl zlib ];
+    SDL2 SDL2_image SDL2_ttf tcl zlib ];
 
   postPatch = ''
-    cp ${./custom-nixos.mk} build/custom.mk
+    cp ${./custom-nix.mk} build/custom.mk
   '';
 
   dontAddPrefix = true;
@@ -36,8 +34,8 @@ stdenv.mkDerivation rec {
   # for providing support to Nixpkgs :)
   TCL_CONFIG="${tcl}/lib/";
 
-  meta = {
-    description = "A MSX emulator";
+  meta = with lib;{
+    description = "The MSX emulator that aims for perfection";
     longDescription = ''
       OpenMSX is an emulator for the MSX home computer system. Its goal is
       to emulate all aspects of the MSX with 100% accuracy.
diff --git a/pkgs/misc/emulators/pcem/default.nix b/pkgs/misc/emulators/pcem/default.nix
new file mode 100644
index 00000000000..2e6aa683e4d
--- /dev/null
+++ b/pkgs/misc/emulators/pcem/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, lib, fetchzip, wxGTK31, coreutils, SDL2, openal, alsa-lib, pkg-config
+, autoreconfHook, withNetworking ? true, withALSA ? true }:
+
+stdenv.mkDerivation rec {
+  pname = "pcem";
+  version = "17";
+
+  src = fetchzip {
+    url = "https://pcem-emulator.co.uk/files/PCemV${version}Linux.tar.gz";
+    stripRoot = false;
+    sha256 = "067pbnc15h6a4pnnym82klr1w8qwfm6p0pkx93gx06wvwqsxvbdv";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
+  buildInputs = [ wxGTK31 coreutils SDL2 openal ]
+    ++ lib.optional withALSA alsa-lib;
+
+  configureFlags = [ "--enable-release-build" ]
+    ++ lib.optional withNetworking "--enable-networking"
+    ++ lib.optional withALSA "--enable-alsa";
+
+  meta = with lib; {
+    description = "Emulator for IBM PC computers and clones";
+    homepage = "https://pcem-emulator.co.uk/";
+    license = licenses.gpl2Only;
+    maintainers = [ maintainers.terin ];
+    platforms = platforms.linux ++ platforms.windows;
+  };
+}
diff --git a/pkgs/misc/emulators/pcsx2/default.nix b/pkgs/misc/emulators/pcsx2/default.nix
index af2cca5494e..13d2ea74f34 100644
--- a/pkgs/misc/emulators/pcsx2/default.nix
+++ b/pkgs/misc/emulators/pcsx2/default.nix
@@ -1,21 +1,43 @@
-{ alsaLib, cmake, fetchFromGitHub, glib, gettext, gtk2, harfbuzz, lib, libaio
-, libpng, libpcap, libxml2, makeWrapper, perl, pkgconfig, portaudio
-, SDL2, soundtouch, stdenv, udev, wxGTK, zlib
+{ alsa-lib
+, cmake
+, fetchFromGitHub
+, fmt
+, gcc-unwrapped
+, gettext
+, glib
+, gtk3
+, harfbuzz
+, libaio
+, libpcap
+, libpng
+, libpulseaudio
+, libsamplerate
+, libxml2
+, makeWrapper
+, perl
+, pkg-config
+, portaudio
+, SDL2
+, soundtouch
+, lib, stdenv
+, udev
+, wrapGAppsHook
+, wxGTK
+, zlib
 }:
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation {
   pname = "pcsx2";
-  version = "1.6.0";
+  version = "unstable-2020-11-13";
 
   src = fetchFromGitHub {
     owner = "PCSX2";
     repo = "pcsx2";
-    rev = "v${version}";
-    sha256 = "0528kh3275285lvfsykycdhc35c1z8pmccl2s7dfi3va2cp4x8wa";
+    fetchSubmodules = true;
+    rev = "319287dbe552c8405720b25dfdf5fa518deeee0b";
+    sha256 = "1kswc8vw9hbv2nigp8cxrgf2s0ik7p4i203cbqci8zjmnkaqpsai";
   };
 
-  postPatch = "sed '1i#include \"x86intrin.h\"' -i common/src/x86emitter/cpudetect.cpp";
-
   cmakeFlags = [
     "-DCMAKE_INSTALL_PREFIX=${placeholder "out"}"
     "-DDISABLE_ADVANCE_SIMD=TRUE"
@@ -23,35 +45,43 @@ stdenv.mkDerivation rec {
     "-DDOC_DIR=${placeholder "out"}/share/doc/pcsx2"
     "-DGAMEINDEX_DIR=${placeholder "out"}/share/pcsx2"
     "-DGLSL_SHADER_DIR=${placeholder "out"}/share/pcsx2"
-    "-DwxWidgets_LIBRARIES=${wxGTK}/lib"
-    "-DwxWidgets_INCLUDE_DIRS=${wxGTK}/include"
-    "-DwxWidgets_CONFIG_EXECUTABLE=${wxGTK}/bin/wx-config"
+    "-DGTK3_API=TRUE"
     "-DPACKAGE_MODE=TRUE"
     "-DPLUGIN_DIR=${placeholder "out"}/lib/pcsx2"
     "-DREBUILD_SHADER=TRUE"
+    "-DUSE_LTO=TRUE"
+    "-DwxWidgets_CONFIG_EXECUTABLE=${wxGTK}/bin/wx-config"
+    "-DwxWidgets_INCLUDE_DIRS=${wxGTK}/include"
+    "-DwxWidgets_LIBRARIES=${wxGTK}/lib"
     "-DXDG_STD=TRUE"
-    "-DGTK2_GLIBCONFIG_INCLUDE_DIR=${glib.out}/lib/glib-2.0/include"
-    "-DGTK2_GDKCONFIG_INCLUDE_DIR=${gtk2.out}/lib/gtk-2.0/include"
-    "-DGTK2_INCLUDE_DIRS=${gtk2.dev}/include/gtk-2.0"
-    "-DGTK3_API=FALSE"
   ];
 
+  postPatch = ''
+    substituteInPlace cmake/BuildParameters.cmake \
+      --replace /usr/bin/gcc-ar ${gcc-unwrapped}/bin/gcc-ar \
+      --replace /usr/bin/gcc-nm ${gcc-unwrapped}/bin/gcc-nm \
+      --replace /usr/bin/gcc-ranlib ${gcc-unwrapped}/bin/gcc-ranlib
+  '';
+
   postFixup = ''
     wrapProgram $out/bin/PCSX2 \
       --set __GL_THREADED_OPTIMIZATIONS 1
   '';
 
-  nativeBuildInputs = [ cmake makeWrapper perl pkgconfig ];
+  nativeBuildInputs = [ cmake makeWrapper perl pkg-config wrapGAppsHook ];
 
   buildInputs = [
-    alsaLib
-    glib
+    alsa-lib
+    fmt
     gettext
-    gtk2
+    glib
+    gtk3
     harfbuzz
     libaio
     libpcap
     libpng
+    libpulseaudio
+    libsamplerate
     libxml2
     portaudio
     SDL2
@@ -61,7 +91,7 @@ stdenv.mkDerivation rec {
     zlib
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Playstation 2 emulator";
     longDescription= ''
       PCSX2 is an open-source PlayStation 2 (AKA PS2) emulator. Its purpose
@@ -71,13 +101,14 @@ stdenv.mkDerivation rec {
       PC, with many additional features and benefits.
     '';
     homepage = "https://pcsx2.net";
-    maintainers = with maintainers; [ hrdinka ];
+    maintainers = with maintainers; [ hrdinka govanify ];
+    mainProgram = "PCSX2";
 
     # PCSX2's source code is released under LGPLv3+. It However ships
     # additional data files and code that are licensed differently.
     # This might be solved in future, for now we should stick with
     # license.free
     license = licenses.free;
-    platforms = platforms.i686;
+    platforms = platforms.x86;
   };
 }
diff --git a/pkgs/misc/emulators/pcsxr/default.nix b/pkgs/misc/emulators/pcsxr/default.nix
index ae608f56312..099795c63fd 100644
--- a/pkgs/misc/emulators/pcsxr/default.nix
+++ b/pkgs/misc/emulators/pcsxr/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, autoreconfHook, intltool, pkgconfig, gtk3, SDL2, xorg
+{ lib, stdenv, fetchurl, autoreconfHook, intltool, pkg-config, gtk3, SDL2, xorg
 , wrapGAppsHook, libcdio, nasm, ffmpeg, file
 , fetchpatch }:
 
@@ -49,9 +49,10 @@ stdenv.mkDerivation rec {
     ./uncompress2.patch
   ];
 
-  nativeBuildInputs = [ autoreconfHook intltool pkgconfig wrapGAppsHook ];
+  nativeBuildInputs = [ autoreconfHook intltool pkg-config wrapGAppsHook ];
   buildInputs = [
     gtk3 SDL2 xorg.libXv xorg.libXtst libcdio nasm ffmpeg file
+    xorg.libXxf86vm
   ];
 
   dynarecTarget =
@@ -77,7 +78,7 @@ stdenv.mkDerivation rec {
        "$out/share/doc/${pname}-${version}"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Playstation 1 emulator";
     homepage = "https://pcsxr.codeplex.com/";
     maintainers = with maintainers; [ rardiol ];
diff --git a/pkgs/misc/emulators/ppsspp/default.nix b/pkgs/misc/emulators/ppsspp/default.nix
index a1534771550..124b8cb8e69 100644
--- a/pkgs/misc/emulators/ppsspp/default.nix
+++ b/pkgs/misc/emulators/ppsspp/default.nix
@@ -1,12 +1,13 @@
-{ SDL2
-, cmake
+{ mkDerivation
 , fetchFromGitHub
-, ffmpeg_3
+, fetchpatch
+, SDL2
+, cmake
+, ffmpeg
 , glew
 , lib
 , libzip
-, mkDerivation
-, pkgconfig
+, pkg-config
 , python3
 , qtbase
 , qtmultimedia
@@ -16,28 +17,35 @@
 
 mkDerivation rec {
   pname = "ppsspp";
-  version = "1.9.4";
+  version = "1.11";
 
   src = fetchFromGitHub {
     owner = "hrydgard";
-    repo = "ppsspp";
+    repo = pname;
     rev = "v${version}";
     fetchSubmodules = true;
-    sha256 = "0ivi0dcfxwa4nz19amki80qacnjhqr42f0ihyby1scxafl3nq55c";
+    sha256 = "sha256-vfp/vacIItlPP5dR7jzDT7oOUNFnjvvdR46yi79EJKU=";
   };
 
+  patches = [
+     # fix compability with ffmpeg 4.4, remove on next release after 1.11
+    (fetchpatch {
+      name = "fix_ffmpeg_4.4.patch";
+      url = "https://patch-diff.githubusercontent.com/raw/hrydgard/ppsspp/pull/14176.patch";
+      sha256 = "sha256-ecDoOydaLfL6+eFpahcO1TnRl866mZZVHlr6Qrib1mo=";
+    })
+  ];
+
   postPatch = ''
-    substituteInPlace git-version.cmake \
-      --replace unknown ${src.rev}
-    substituteInPlace UI/NativeApp.cpp \
-      --replace /usr/share $out/share
+    substituteInPlace git-version.cmake --replace unknown ${src.rev}
+    substituteInPlace UI/NativeApp.cpp --replace /usr/share $out/share
   '';
 
-  nativeBuildInputs = [ cmake pkgconfig python3 ];
+  nativeBuildInputs = [ cmake pkg-config python3 ];
 
   buildInputs = [
     SDL2
-    ffmpeg_3
+    ffmpeg
     glew
     libzip
     qtbase
@@ -47,6 +55,7 @@ mkDerivation rec {
   ];
 
   cmakeFlags = [
+    "-DHEADLESS=OFF"
     "-DOpenGL_GL_PREFERENCE=GLVND"
     "-DUSE_SYSTEM_FFMPEG=ON"
     "-DUSE_SYSTEM_LIBZIP=ON"
@@ -55,15 +64,19 @@ mkDerivation rec {
   ];
 
   installPhase = ''
+    runHook preInstall
     mkdir -p $out/share/ppsspp
     install -Dm555 PPSSPPQt $out/bin/ppsspp
     mv assets $out/share/ppsspp
+    runHook postInstall
   '';
 
   meta = with lib; {
-    description = "A PSP emulator for Android, Windows, Mac and Linux, written in C++";
     homepage = "https://www.ppsspp.org/";
+    description = "A HLE Playstation Portable emulator, written in C++";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ AndersonTorres ];
+    platforms = platforms.linux;
   };
 }
+# TODO: add SDL headless port
diff --git a/pkgs/misc/emulators/proton-caller/default.nix b/pkgs/misc/emulators/proton-caller/default.nix
new file mode 100644
index 00000000000..a69c1b3763e
--- /dev/null
+++ b/pkgs/misc/emulators/proton-caller/default.nix
@@ -0,0 +1,23 @@
+{ lib, fetchFromGitHub, rustPlatform }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "proton-caller";
+  version = "2.3.0";
+
+  src = fetchFromGitHub {
+    owner = "caverym";
+    repo = pname;
+    rev = version;
+    sha256 = "1rj0f8jzmrvj6gz1rcdjmxdqk2i5cxhz9ji4217kwyb6h1h0jmdk";
+  };
+
+  cargoSha256 = "165kzza1m8h37y1ir0d0hp0z645h4ihkyj83fii69f18gk47r3kg";
+
+  meta = with lib; {
+    description = "Run Windows programs with Proton";
+    changelog = "https://github.com/caverym/proton-caller/releases/tag/${version}";
+    homepage = "https://github.com/caverym/proton-caller";
+    license = licenses.mit;
+    maintainers = with maintainers; [ kho-dialga ];
+  };
+}
diff --git a/pkgs/misc/emulators/punes/default.nix b/pkgs/misc/emulators/punes/default.nix
new file mode 100644
index 00000000000..d3ad2f68199
--- /dev/null
+++ b/pkgs/misc/emulators/punes/default.nix
@@ -0,0 +1,63 @@
+{ mkDerivation
+, stdenv
+, lib
+, fetchFromGitHub
+, unstableGitUpdater
+, qtbase
+, qtsvg
+, qttools
+, autoreconfHook
+, cmake
+, pkg-config
+, ffmpeg
+, libGLU
+, alsa-lib
+, libX11
+, libXrandr
+, sndio
+}:
+
+mkDerivation rec {
+  pname = "punes";
+  version = "unstable-2021-07-19";
+
+  src = fetchFromGitHub {
+    owner = "punesemu";
+    repo = "puNES";
+    rev = "15ab85dabb220889419df0c249c06f3db2b09dc0";
+    sha256 = "1w0c5lfdl9ha4sxxva6hcpcaa444px6x25471q37l69n71rmjpy8";
+  };
+
+  postPatch = ''
+    substituteInPlace configure.ac \
+      --replace '`$PKG_CONFIG --variable=host_bins Qt5Core`/lrelease' '${qttools.dev}/bin/lrelease'
+  '';
+
+  nativeBuildInputs = [ autoreconfHook cmake pkg-config qttools ];
+
+  buildInputs = [ ffmpeg qtbase qtsvg libGLU ]
+    ++ lib.optionals stdenv.hostPlatform.isLinux [ alsa-lib libX11 libXrandr ]
+    ++ lib.optionals stdenv.hostPlatform.isBSD [ sndio ];
+
+  dontUseCmakeConfigure = true;
+
+  enableParallelBuilding = true;
+
+  configureFlags = [
+    "--prefix=${placeholder "out"}"
+    "--without-opengl-nvidia-cg"
+    "--with-ffmpeg"
+  ];
+
+  passthru.updateScript = unstableGitUpdater {
+    url = "https://github.com/punesemu/puNES.git";
+  };
+
+  meta = with lib; {
+    description = "Qt-based Nintendo Entertaiment System emulator and NSF/NSFe Music Player";
+    homepage = "https://github.com/punesemu/puNES";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ OPNA2608 ];
+    platforms = with platforms; linux ++ freebsd ++ openbsd ++ windows;
+  };
+}
diff --git a/pkgs/misc/emulators/py65/default.nix b/pkgs/misc/emulators/py65/default.nix
new file mode 100644
index 00000000000..66ba3cdf4b4
--- /dev/null
+++ b/pkgs/misc/emulators/py65/default.nix
@@ -0,0 +1,25 @@
+{ lib, fetchPypi, buildPythonApplication }:
+
+buildPythonApplication rec {
+  pname = "py65";
+  version = "1.1.0";
+  format = "wheel";
+
+  src = fetchPypi {
+    inherit pname version format;
+    sha256 = "Q7rjiHJ/Ew985vut/8fVAf/wWYW5aBPSvNPm8A6g1zg=";
+  };
+
+  meta = with lib; {
+    homepage = "https://py65.readthedocs.io/";
+    description = "Emulate 6502-based microcomputer systems in Python";
+    longDescription = ''
+      Py65 includes a program called Py65Mon that functions as a machine
+      language monitor. This kind of program is sometimes also called a
+      debugger. Py65Mon provides a command line with many convenient commands
+      for interacting with the simulated 6502-based system.
+    '';
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ AndersonTorres ];
+  };
+}
diff --git a/pkgs/misc/emulators/qmc2/default.nix b/pkgs/misc/emulators/qmc2/default.nix
index 1242a1ef11a..6c6a52fc65c 100644
--- a/pkgs/misc/emulators/qmc2/default.nix
+++ b/pkgs/misc/emulators/qmc2/default.nix
@@ -1,9 +1,9 @@
-{ stdenv
-, fetchurl, qttools, pkgconfig
+{ lib, stdenv
+, fetchurl, qttools, pkg-config
 , minizip, zlib
 , qtbase, qtsvg, qtmultimedia, qtwebkit, qttranslations, qtxmlpatterns
 , rsync, SDL2, xwininfo
-, utillinux
+, util-linux
 , xorg
 }:
 
@@ -15,26 +15,26 @@ stdenv.mkDerivation rec {
       url = "mirror://sourceforge/project/qmc2/qmc2/${version}/${pname}-${version}.tar.gz";
       sha256 = "1dzmjlfk8pdspns6zg1jmd5fqzg8igd4q38cz4a1vf39lx74svns";
   };
-  
+
   preBuild = ''
     patchShebangs scripts
   '';
 
-  nativeBuildInputs = [ qttools pkgconfig ];
+  nativeBuildInputs = [ qttools pkg-config ];
   buildInputs = [ minizip qtbase qtsvg qtmultimedia qtwebkit
                   qttranslations qtxmlpatterns rsync SDL2
-                  xwininfo zlib utillinux xorg.libxcb ];
+                  xwininfo zlib util-linux xorg.libxcb ];
 
   makeFlags = [ "DESTDIR=$(out)"
                 "PREFIX=/"
                 "DATADIR=/share/"
                 "SYSCONFDIR=/etc" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A Qt frontend for MAME/MESS";
     homepage = "https://qmc2.batcom-it.net";
     license = licenses.gpl2;
-    maintainers = [ maintainers.genesis ];
+    maintainers = [ ];
     platforms = platforms.linux;
     broken = true;
   };
diff --git a/pkgs/misc/emulators/reicast/default.nix b/pkgs/misc/emulators/reicast/default.nix
new file mode 100644
index 00000000000..f9e8e4d6937
--- /dev/null
+++ b/pkgs/misc/emulators/reicast/default.nix
@@ -0,0 +1,52 @@
+{ lib, stdenv
+, fetchFromGitHub
+, cmake
+, pkg-config
+, curl
+, alsa-lib
+, libGLU
+, libX11
+, libevdev
+, udev
+, libpulseaudio
+}:
+
+stdenv.mkDerivation rec {
+  pname = "reicast";
+  version = "20.04";
+
+  src = fetchFromGitHub {
+    owner = "reicast";
+    repo = "reicast-emulator";
+    rev = "r${version}";
+    sha256 = "0vz3b1hg1qj6nycnqq5zcpzqpcbxw1c2ffamia5z3x7rapjx5d71";
+  };
+
+  nativeBuildInputs = [ cmake pkg-config ];
+  buildInputs = [
+    curl
+    alsa-lib
+    libGLU
+    libX11
+    libevdev
+    udev
+    libpulseaudio
+  ];
+
+  # No rule to make target 'install'
+  installPhase = ''
+    runHook preInstall
+
+    install -D ./reicast $out/bin/reicast
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://reicast.com/";
+    description = "A multi-platform Sega Dreamcast emulator";
+    license = with licenses; [ bsd3 gpl2Only lgpl2Only ];
+    platforms = ["x86_64-linux" ];
+    maintainers = [ maintainers.ivar ];
+  };
+}
diff --git a/pkgs/misc/emulators/resim/default.nix b/pkgs/misc/emulators/resim/default.nix
index ba7ac621257..6e759bd7552 100644
--- a/pkgs/misc/emulators/resim/default.nix
+++ b/pkgs/misc/emulators/resim/default.nix
@@ -1,4 +1,4 @@
-{ fetchFromGitHub, stdenv, cmake, qt4 }:
+{ fetchFromGitHub, lib, stdenv, cmake, qt4 }:
 
 stdenv.mkDerivation {
   name = "resim";
@@ -16,5 +16,5 @@ stdenv.mkDerivation {
     cp -v vc4emul/vc4emul $out/bin/vc4emul
   '';
 
-  meta.license = stdenv.lib.licenses.mit;
+  meta.license = lib.licenses.mit;
 }
diff --git a/pkgs/misc/emulators/retroarch/cores.nix b/pkgs/misc/emulators/retroarch/cores.nix
index 17b1679ed5b..bddabede0a0 100644
--- a/pkgs/misc/emulators/retroarch/cores.nix
+++ b/pkgs/misc/emulators/retroarch/cores.nix
@@ -1,15 +1,15 @@
-{ stdenv, fetchgit, fetchFromGitHub, fetchFromGitLab, cmake, pkgconfig, makeWrapper, python27, python37, retroarch
-, alsaLib, fluidsynth, curl, hidapi, libGLU, gettext, glib, gtk2, portaudio, SDL, SDL_net, SDL2, SDL2_image, libGL
-, ffmpeg_3, pcre, libevdev, libpng, libjpeg, libzip, udev, libvorbis, snappy, which, hexdump
+{ lib, stdenv, fetchgit, fetchFromGitHub, fetchFromGitLab, fetchpatch, cmake, pkg-config, makeWrapper, python27, python3, retroarch
+, alsa-lib, fluidsynth, curl, hidapi, libGLU, gettext, glib, gtk2, portaudio, SDL, SDL_net, SDL2, SDL2_image, libGL
+, ffmpeg, pcre, libevdev, libpng, libjpeg, libzip, udev, libvorbis, snappy, which, hexdump
 , miniupnpc, sfml, xorg, zlib, nasm, libpcap, boost, icu, openssl
 , buildPackages }:
 
 let
 
-  d2u = stdenv.lib.replaceChars ["-"] ["_"];
+  d2u = lib.replaceChars ["-"] ["_"];
 
   mkLibRetroCore = { core, src, description, license, broken ? false, ... }@a:
-  stdenv.lib.makeOverridable stdenv.mkDerivation ((rec {
+  lib.makeOverridable stdenv.mkDerivation ((rec {
 
     name = "libretro-${a.core}-${version}";
     version = "2020-03-06";
@@ -41,14 +41,12 @@ let
         --add-flags "-L $COREDIR/${d2u core}_libretro${stdenv.hostPlatform.extensions.sharedLibrary} $@"
     '';
 
-    enableParallelBuilding = true;
-
     passthru = {
       inherit (a) core;
       libretroCore = "/lib/retroarch/cores";
     };
 
-    meta = with stdenv.lib; {
+    meta = with lib; {
       inherit (a) description license;
       broken = a.broken or false;
       homepage = "https://www.libretro.com/";
@@ -64,7 +62,7 @@ let
     fetchSubmodules = true;
   };
 
-in with stdenv.lib.licenses;
+in with lib.licenses;
 
 {
 
@@ -290,7 +288,7 @@ in with stdenv.lib.licenses;
     };
     description = "Port of Citra to libretro";
     license = gpl2Plus;
-    extraNativeBuildInputs = [ cmake pkgconfig ];
+    extraNativeBuildInputs = [ cmake pkg-config ];
     extraBuildInputs = [ libGLU libGL boost ];
     makefile = "Makefile";
     cmakeFlags = [
@@ -315,8 +313,8 @@ in with stdenv.lib.licenses;
     license = gpl2;
     extraBuildInputs = [ libpcap libGLU libGL xorg.libX11 ];
     preBuild = "cd desmume/src/frontend/libretro";
-    makeFlags = stdenv.lib.optional stdenv.hostPlatform.isAarch32 "platform=armv-unix"
-             ++ stdenv.lib.optional (!stdenv.hostPlatform.isx86) "DESMUME_JIT=0";
+    makeFlags = lib.optional stdenv.hostPlatform.isAarch32 "platform=armv-unix"
+             ++ lib.optional (!stdenv.hostPlatform.isx86) "DESMUME_JIT=0";
   };
 
   desmume2015 = mkLibRetroCore rec {
@@ -329,8 +327,8 @@ in with stdenv.lib.licenses;
     description = "libretro wrapper for desmume NDS emulator from 2015";
     license = gpl2;
     extraBuildInputs = [ libpcap libGLU libGL xorg.libX11 ];
-    makeFlags = stdenv.lib.optional stdenv.hostPlatform.isAarch32 "platform=armv-unix"
-             ++ stdenv.lib.optional (!stdenv.hostPlatform.isx86) "DESMUME_JIT=0";
+    makeFlags = lib.optional stdenv.hostPlatform.isAarch32 "platform=armv-unix"
+             ++ lib.optional (!stdenv.hostPlatform.isx86) "DESMUME_JIT=0";
     preBuild = "cd desmume";
   };
 
@@ -344,7 +342,7 @@ in with stdenv.lib.licenses;
     description = "Port of Dolphin to libretro";
     license = gpl2Plus;
 
-    extraNativeBuildInputs = [ cmake curl pkgconfig ];
+    extraNativeBuildInputs = [ cmake curl pkg-config ];
     extraBuildInputs = [
       libGLU libGL pcre sfml
       gettext hidapi
@@ -437,7 +435,7 @@ in with stdenv.lib.licenses;
     license = gpl2;
     extraBuildInputs = [ libGL libGLU ];
     makefile = "Makefile";
-    makeFlags = stdenv.lib.optional stdenv.hostPlatform.isAarch64 [ "platform=arm64" ];
+    makeFlags = lib.optional stdenv.hostPlatform.isAarch64 [ "platform=arm64" ];
     meta.platforms = [ "aarch64-linux" "x86_64-linux" ];
   };
 
@@ -507,7 +505,7 @@ in with stdenv.lib.licenses;
       sha256 = "1jhgfys8hiipvbwq3gc48d7v6wq645d10rbr4w5m6px0fk6csshk";
     };
     description = "Port of Game and Watch to libretro";
-    license = stdenv.lib.licenses.zlib;
+    license = lib.licenses.zlib;
     makefile = "Makefile";
   };
 
@@ -550,7 +548,7 @@ in with stdenv.lib.licenses;
     description = "Port of MAME to libretro";
     license = gpl2Plus;
 
-    extraBuildInputs = [ alsaLib libGLU libGL portaudio python27 xorg.libX11 ];
+    extraBuildInputs = [ alsa-lib libGLU libGL portaudio python27 xorg.libX11 ];
     postPatch = ''
       # Prevent the failure during the parallel building of:
       # make -C 3rdparty/genie/build/gmake.linux -f genie.make obj/Release/src/host/lua-5.3.0/src/lgc.o
@@ -569,7 +567,7 @@ in with stdenv.lib.licenses;
     description = "Port of MAME ~2000 to libretro";
     license = gpl2Plus;
     makefile = "Makefile";
-    makeFlags = stdenv.lib.optional (!stdenv.hostPlatform.isx86) "IS_X86=0";
+    makeFlags = lib.optional (!stdenv.hostPlatform.isx86) "IS_X86=0";
   };
 
   mame2003 = mkLibRetroCore rec {
@@ -606,7 +604,7 @@ in with stdenv.lib.licenses;
     description = "Port of MAME ~2010 to libretro";
     license = gpl2Plus;
     makefile = "Makefile";
-    makeFlags = stdenv.lib.optionals stdenv.hostPlatform.isAarch64 [ "PTR64=1" "ARM_ENABLED=1" "X86_SH2DRC=0" "FORCE_DRC_C_BACKEND=1" ];
+    makeFlags = lib.optionals stdenv.hostPlatform.isAarch64 [ "PTR64=1" "ARM_ENABLED=1" "X86_SH2DRC=0" "FORCE_DRC_C_BACKEND=1" ];
   };
 
   mame2015 = mkLibRetroCore rec {
@@ -619,7 +617,7 @@ in with stdenv.lib.licenses;
     description = "Port of MAME ~2015 to libretro";
     license = gpl2Plus;
     extraNativeBuildInputs = [ python27 ];
-    extraBuildInputs = [ alsaLib ];
+    extraBuildInputs = [ alsa-lib ];
     makefile = "Makefile";
   };
 
@@ -630,10 +628,17 @@ in with stdenv.lib.licenses;
       rev = "02987af9b81a9c3294af8fb9d5a34f9826a2cf4d";
       sha256 = "0gl7irmn5d8lk7kf484vgw6kb325fq4ghwsni3il4nm5n2a8yglh";
     };
+    patches = [
+      (fetchpatch {
+        name = "fix_mame_build_on_make-4.3.patch";
+        url = "https://github.com/libretro/mame2016-libretro/commit/5874fae3d124f5e7c8a91634f5473a8eac902e47.patch";
+        sha256 = "061f1lcm72glksf475ikl8w10pnbgqa7049ylw06nikis2qdjlfn";
+      })
+    ];
     description = "Port of MAME ~2016 to libretro";
     license = gpl2Plus;
     extraNativeBuildInputs = [ python27 ];
-    extraBuildInputs = [ alsaLib ];
+    extraBuildInputs = [ alsa-lib ];
     postPatch = ''
       # Prevent the failure during the parallel building of:
       # make -C 3rdparty/genie/build/gmake.linux -f genie.make obj/Release/src/host/lua-5.3.0/src/lgc.o
@@ -773,7 +778,7 @@ in with stdenv.lib.licenses;
     license = gpl2;
     extraBuildInputs = [ libGLU libGL libpng ];
     makefile = "Makefile";
-    postPatch = stdenv.lib.optionalString stdenv.hostPlatform.isAarch64 ''
+    postPatch = lib.optionalString stdenv.hostPlatform.isAarch64 ''
       sed -i -e '1 i\CPUFLAGS += -DARM_FIX -DNO_ASM -DARM_ASM -DDONT_WANT_ARM_OPTIMIZATIONS -DARM64' Makefile \
       && sed -i -e 's,CPUFLAGS  :=,,g' Makefile
     '';
@@ -805,7 +810,7 @@ in with stdenv.lib.licenses;
     SDL_CONFIG = "${SDL.dev}/bin/sdl-config";
     dontAddPrefix = true;
     configurePlatforms = [];
-    makeFlags = stdenv.lib.optional stdenv.hostPlatform.isAarch64 [ "platform=aarch64" ];
+    makeFlags = lib.optional stdenv.hostPlatform.isAarch64 [ "platform=aarch64" ];
   };
 
   play = mkLibRetroCore {
@@ -826,15 +831,24 @@ in with stdenv.lib.licenses;
 
   ppsspp = mkLibRetroCore {
     core = "ppsspp";
-    src = fetchgit {
-      url = "https://github.com/hrydgard/ppsspp";
-      rev = "bf1777f7d3702e6a0f71c7ec1fc51976e23c2327";
-      sha256 = "17sym0vk72lzbh9a1501mhw98c78x1gq7k1fpy69nvvb119j37wa";
-    };
+    src = fetchFromGitHub {
+      owner = "hrydgard";
+      repo = "ppsspp";
+      rev = "v1.11";
+      fetchSubmodules = true;
+      sha256 = "sha256-vfp/vacIItlPP5dR7jzDT7oOUNFnjvvdR46yi79EJKU=";
+    };
+    patches = [
+      (fetchpatch {
+        name = "fix_ffmpeg_4.4.patch";  # to be removed with next release
+        url = "https://patch-diff.githubusercontent.com/raw/hrydgard/ppsspp/pull/14176.patch";
+        sha256 = "sha256-ecDoOydaLfL6+eFpahcO1TnRl866mZZVHlr6Qrib1mo=";
+      })
+    ];
     description = "ppsspp libretro port";
     license = gpl2;
-    extraNativeBuildInputs = [ cmake pkgconfig ];
-    extraBuildInputs = [ libGLU libGL libzip ffmpeg_3 python37 snappy xorg.libX11 ];
+    extraNativeBuildInputs = [ cmake pkg-config python3 ];
+    extraBuildInputs = [ libGLU libGL libzip ffmpeg snappy xorg.libX11 ];
     makefile = "Makefile";
     cmakeFlags = [ "-DLIBRETRO=ON -DUSE_SYSTEM_FFMPEG=ON -DUSE_SYSTEM_SNAPPY=ON -DUSE_SYSTEM_LIBZIP=ON -DOpenGL_GL_PREFERENCE=GLVND" ];
     postBuild = "mv lib/ppsspp_libretro${stdenv.hostPlatform.extensions.sharedLibrary} ppsspp_libretro${stdenv.hostPlatform.extensions.sharedLibrary}";
@@ -920,8 +934,8 @@ in with stdenv.lib.licenses;
     src = fetchFromGitHub {
       owner = "snes9xgit";
       repo = core;
-      rev = "6db918cfe32b157239da44096091c212fdfb3b60";
-      sha256 = "0y3jhy50qdhhfglybys9m0fgk9r24ksdcgv5iqpyxy5a4cjvhv8j";
+      rev = "bd9246ddd75a5e9f78d6189c8c57754d843630f7";
+      sha256 = "10fm7ah3aha9lf4k9hgw0dlhdvshzpig2d0ylcb12gf9zz0i22ns";
     };
     description = "Port of SNES9x git to libretro";
     license = "Non-commercial";
@@ -976,7 +990,7 @@ in with stdenv.lib.licenses;
     };
     description = "Port of Stella to libretro";
     license = gpl2;
-    extraBuildInputs = [ libpng pkgconfig SDL ];
+    extraBuildInputs = [ libpng pkg-config SDL ];
     makefile = "Makefile";
     preBuild = "cd src/libretro";
     dontConfigure = true;
@@ -1006,6 +1020,20 @@ in with stdenv.lib.licenses;
     makefile = "Makefile";
   };
 
+  thepowdertoy = mkLibRetroCore rec {
+    core = "thepowdertoy";
+    src = fetchRetro {
+      repo = "ThePowderToy";
+      rev = "0ff547e89ae9d6475b0226db76832daf03eec937";
+      sha256 = "kDpmo/RPYRvROOX3AhsB5pIl0MfHbQmbyTMciLPDNew=";
+    };
+    description = "Port of The Powder Toy to libretro";
+    license = gpl3Only;
+    extraNativeBuildInputs = [ cmake ];
+    makefile = "Makefile";
+    postBuild = "cd src/";
+  };
+
   tic80 = mkLibRetroCore {
     core = "tic80";
     src = fetchRetro {
@@ -1015,7 +1043,7 @@ in with stdenv.lib.licenses;
     };
     description = "Port of TIC-80 to libretro";
     license = mit;
-    extraNativeBuildInputs = [ cmake pkgconfig ];
+    extraNativeBuildInputs = [ cmake pkg-config ];
     makefile = "Makefile";
     cmakeFlags = [
       "-DBUILD_LIBRETRO=ON"
@@ -1086,7 +1114,7 @@ in with stdenv.lib.licenses;
     license = gpl2;
     makefile = "Makefile";
     # Disable SSE for non-x86. DYNAREC doesn't build on either Aarch64 or x86_64.
-    makeFlags = stdenv.lib.optional (!stdenv.hostPlatform.isx86) "HAVE_SSE=0";
+    makeFlags = lib.optional (!stdenv.hostPlatform.isx86) "HAVE_SSE=0";
     preBuild = "cd yabause/src/libretro";
   };
 
diff --git a/pkgs/misc/emulators/retroarch/default.nix b/pkgs/misc/emulators/retroarch/default.nix
index bfc2c338769..86ca803d965 100644
--- a/pkgs/misc/emulators/retroarch/default.nix
+++ b/pkgs/misc/emulators/retroarch/default.nix
@@ -1,7 +1,7 @@
-{ stdenv, fetchFromGitHub, which, pkgconfig, makeWrapper
-, ffmpeg_3, libGLU, libGL, freetype, libxml2, python3
+{ lib, stdenv, fetchFromGitHub, which, pkg-config, makeWrapper
+, ffmpeg, libGLU, libGL, freetype, libxml2, python3
 , libobjc, AppKit, Foundation
-, alsaLib ? null
+, alsa-lib ? null
 , libdrm ? null
 , libpulseaudio ? null
 , libv4l ? null
@@ -19,7 +19,7 @@
 , libxkbcommon
 }:
 
-with stdenv.lib;
+with lib;
 
 stdenv.mkDerivation rec {
   pname = "retroarch-bare";
@@ -32,20 +32,20 @@ stdenv.mkDerivation rec {
     rev = "v${version}";
   };
 
-  nativeBuildInputs = [ pkgconfig wayland ]
+  nativeBuildInputs = [ pkg-config wayland ]
                       ++ optional withVulkan makeWrapper;
 
-  buildInputs = [ ffmpeg_3 freetype libxml2 libGLU libGL python3 SDL2 which ]
+  buildInputs = [ ffmpeg freetype libxml2 libGLU libGL python3 SDL2 which ]
                 ++ optional enableNvidiaCgToolkit nvidia_cg_toolkit
                 ++ optional withVulkan vulkan-loader
                 ++ optionals stdenv.isDarwin [ libobjc AppKit Foundation ]
-                ++ optionals stdenv.isLinux [ alsaLib libdrm libpulseaudio libv4l libX11
+                ++ optionals stdenv.isLinux [ alsa-lib libdrm libpulseaudio libv4l libX11
                                               libXdmcp libXext libXxf86vm mesa udev
                                               wayland libxkbcommon ];
 
   enableParallelBuilding = true;
 
-  configureFlags = stdenv.lib.optionals stdenv.isLinux [ "--enable-kms" "--enable-egl" ];
+  configureFlags = lib.optionals stdenv.isLinux [ "--enable-kms" "--enable-egl" ];
 
   postInstall = optionalString withVulkan ''
     wrapProgram $out/bin/retroarch --prefix LD_LIBRARY_PATH ':' ${vulkan-loader}/lib
diff --git a/pkgs/misc/emulators/retroarch/kodi-advanced-launchers.nix b/pkgs/misc/emulators/retroarch/kodi-advanced-launchers.nix
index d751c4f7fc4..ee97e6f7493 100644
--- a/pkgs/misc/emulators/retroarch/kodi-advanced-launchers.nix
+++ b/pkgs/misc/emulators/retroarch/kodi-advanced-launchers.nix
@@ -1,9 +1,7 @@
-{ stdenv, pkgs, cores, runtimeShell }:
+{ stdenv, pkgs, lib, cores, runtimeShell }:
 
 assert cores != [];
 
-with pkgs.lib;
-
 let
 
   script = exec: ''
@@ -25,7 +23,7 @@ stdenv.mkDerivation {
 
   buildCommand = ''
     mkdir -p $out/bin
-    ${stdenv.lib.concatMapStrings (exec: "ln -s ${scriptSh exec} $out/bin/kodi-${exec.name};") execs}
+    ${lib.concatMapStrings (exec: "ln -s ${scriptSh exec} $out/bin/kodi-${exec.name};") execs}
   '';
 
   meta = {
@@ -35,6 +33,6 @@ stdenv.mkDerivation {
       advanced (emulation) launcher for Kodi since device input is
       otherwise caught by both Kodi and the retroarch process.
     '';
-    license = stdenv.lib.licenses.gpl3;
+    license = lib.licenses.gpl3;
   };
 }
diff --git a/pkgs/misc/emulators/retroarch/wrapper.nix b/pkgs/misc/emulators/retroarch/wrapper.nix
index 08ebf8ea854..40d9f07846b 100644
--- a/pkgs/misc/emulators/retroarch/wrapper.nix
+++ b/pkgs/misc/emulators/retroarch/wrapper.nix
@@ -4,7 +4,7 @@ stdenv.mkDerivation {
   pname = "retroarch";
   version = lib.getVersion retroarch;
 
-  buildInputs = [ makeWrapper ];
+  nativeBuildInputs = [ makeWrapper ];
 
   buildCommand = ''
     mkdir -p $out/lib
diff --git a/pkgs/misc/emulators/retrofe/default.nix b/pkgs/misc/emulators/retrofe/default.nix
index d2c904723b1..558b5ca6337 100644
--- a/pkgs/misc/emulators/retrofe/default.nix
+++ b/pkgs/misc/emulators/retrofe/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchhg, cmake, glib, gst_all_1, makeWrapper, pkgconfig
+{ lib, stdenv, fetchhg, cmake, glib, gst_all_1, makeWrapper, pkg-config
 , python, SDL2, SDL2_image, SDL2_mixer, SDL2_ttf, sqlite, zlib, runtimeShell
 }:
 
@@ -12,7 +12,7 @@ stdenv.mkDerivation {
     sha256 = "0cvsg07ff0fdqh5zgiv2fs7s6c98hn150kpxmpw5fn6jilaszwkm";
   };
 
-  nativeBuildInputs = [ cmake makeWrapper pkgconfig python ];
+  nativeBuildInputs = [ cmake makeWrapper pkg-config python ];
 
   buildInputs = [
     glib gst_all_1.gstreamer SDL2 SDL2_image SDL2_mixer SDL2_ttf sqlite zlib
@@ -68,7 +68,7 @@ stdenv.mkDerivation {
       --run 'export RETROFE_PATH=''${RETROFE_PATH:-$PWD}'
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A frontend for arcade cabinets and media PCs";
     homepage = "http://retrofe.com";
     license = licenses.gpl3Plus;
diff --git a/pkgs/misc/emulators/rpcs3/default.nix b/pkgs/misc/emulators/rpcs3/default.nix
index f71420674e5..bf1dc1c9573 100644
--- a/pkgs/misc/emulators/rpcs3/default.nix
+++ b/pkgs/misc/emulators/rpcs3/default.nix
@@ -1,55 +1,63 @@
-{ mkDerivation, lib, fetchgit, cmake, pkgconfig, git
+{ mkDerivation, lib, fetchFromGitHub, cmake, pkg-config, git
 , qtbase, qtquickcontrols, openal, glew, vulkan-headers, vulkan-loader, libpng
-, ffmpeg, libevdev, python3
+, ffmpeg, libevdev, libusb1, zlib, curl, python3
+, sdl2Support ? true, SDL2
 , pulseaudioSupport ? true, libpulseaudio
 , waylandSupport ? true, wayland
-, alsaSupport ? true, alsaLib
+, alsaSupport ? true, alsa-lib
 }:
 
 let
-  majorVersion = "0.0.8";
-  gitVersion = "9300-341fdf7eb"; # echo $(git rev-list HEAD --count)-$(git rev-parse --short HEAD)
+  majorVersion = "0.0.16";
+  gitVersion = "12235-a4f4b81e6"; # echo $(git rev-list HEAD --count)-$(git rev-parse --short HEAD)
 in
 mkDerivation {
   pname = "rpcs3";
   version = "${majorVersion}-${gitVersion}";
 
-  src = fetchgit {
-    url = "https://github.com/RPCS3/rpcs3";
-    rev = "v${majorVersion}";
-    sha256 = "1qx97zkkjl6bmv5rhfyjqynbz0v8h40b2wxqnl59g287wj0yk3y1";
+  src = fetchFromGitHub {
+    owner = "RPCS3";
+    repo = "rpcs3";
+    rev = "a4f4b81e6b0c00f4c30f9f5f182e5fe56f9fb03c";
+    fetchSubmodules = true;
+    sha256 = "1d70nljl1kmpbk50jpjki7dglw1bbxd7x4qzg6nz5np2sdsbpckd";
   };
 
   preConfigure = ''
     cat > ./rpcs3/git-version.h <<EOF
     #define RPCS3_GIT_VERSION "${gitVersion}"
+    #define RPCS3_GIT_FULL_BRANCH "RPCS3/rpcs3/master"
     #define RPCS3_GIT_BRANCH "HEAD"
     #define RPCS3_GIT_VERSION_NO_UPDATE 1
     EOF
   '';
 
   cmakeFlags = [
+    "-DUSE_SYSTEM_ZLIB=ON"
+    "-DUSE_SYSTEM_LIBUSB=ON"
     "-DUSE_SYSTEM_LIBPNG=ON"
     "-DUSE_SYSTEM_FFMPEG=ON"
+    "-DUSE_SYSTEM_CURL=ON"
+    # NB: Can't use this yet, our CMake doesn't include FindWolfSSL.cmake
+    #"-DUSE_SYSTEM_WOLFSSL=ON"
     "-DUSE_NATIVE_INSTRUCTIONS=OFF"
   ];
 
-  nativeBuildInputs = [ cmake pkgconfig git ];
+  nativeBuildInputs = [ cmake pkg-config git ];
 
   buildInputs = [
     qtbase qtquickcontrols openal glew vulkan-headers vulkan-loader libpng ffmpeg
-    libevdev python3
-  ] ++ lib.optional pulseaudioSupport libpulseaudio
-    ++ lib.optional alsaSupport alsaLib
+    libevdev zlib libusb1 curl python3
+  ] ++ lib.optional sdl2Support SDL2
+    ++ lib.optional pulseaudioSupport libpulseaudio
+    ++ lib.optional alsaSupport alsa-lib
     ++ lib.optional waylandSupport wayland;
 
-  enableParallelBuilding = true;
-
   meta = with lib; {
     description = "PS3 emulator/debugger";
     homepage = "https://rpcs3.net/";
-    maintainers = with maintainers; [ abbradar nocent ];
-    license = licenses.gpl2;
+    maintainers = with maintainers; [ abbradar neonfuz ilian ];
+    license = licenses.gpl2Only;
     platforms = [ "x86_64-linux" ];
   };
 }
diff --git a/pkgs/misc/emulators/ruffle/default.nix b/pkgs/misc/emulators/ruffle/default.nix
new file mode 100644
index 00000000000..84837322e97
--- /dev/null
+++ b/pkgs/misc/emulators/ruffle/default.nix
@@ -0,0 +1,60 @@
+{ alsa-lib
+, fetchFromGitHub
+, makeWrapper
+, openssl
+, pkg-config
+, python3
+, rustPlatform
+, lib
+, wayland
+, xorg
+, vulkan-loader
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "ruffle";
+  version = "nightly-2021-05-14";
+
+  src = fetchFromGitHub {
+    owner = "ruffle-rs";
+    repo = pname;
+    rev = version;
+    sha256 = "15azv8y7a4sgxvvhl7z45jyxj91b4nn681vband5726c7znskhwl";
+  };
+
+  nativeBuildInputs = [
+    makeWrapper
+    pkg-config
+    python3
+  ];
+
+  buildInputs = [
+    alsa-lib
+    openssl
+    wayland
+    xorg.libX11
+    xorg.libXcursor
+    xorg.libXrandr
+    xorg.libXi
+    xorg.libxcb
+    xorg.libXrender
+    vulkan-loader
+  ];
+
+  postInstall = ''
+    # This name is too generic
+    mv $out/bin/exporter $out/bin/ruffle_exporter
+
+    wrapProgram $out/bin/ruffle_desktop --prefix LD_LIBRARY_PATH ':' ${vulkan-loader}/lib
+  '';
+
+  cargoSha256 = "0ihy4rgw9b4yqlqs87rx700h3a8wm02wpahhg7inic1lcag4bxif";
+
+  meta = with lib; {
+    description = "An Adobe Flash Player emulator written in the Rust programming language.";
+    homepage = "https://ruffle.rs/";
+    license = with licenses; [ mit asl20 ];
+    maintainers = with maintainers; [ govanify ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/misc/emulators/ryujinx/default.nix b/pkgs/misc/emulators/ryujinx/default.nix
index 568af317d25..856a56f5f5e 100644
--- a/pkgs/misc/emulators/ryujinx/default.nix
+++ b/pkgs/misc/emulators/ryujinx/default.nix
@@ -1,28 +1,34 @@
-{ stdenv, fetchFromGitHub, fetchurl, makeWrapper, makeDesktopItem, linkFarmFromDrvs
-, dotnet-sdk_3, dotnetPackages, dotnetCorePackages
-, SDL2, libX11, openal
-, gtk3, gobject-introspection, wrapGAppsHook
+{ lib, stdenv, fetchFromGitHub, fetchurl, makeWrapper, makeDesktopItem, linkFarmFromDrvs
+, dotnet-sdk_5, dotnetPackages, dotnetCorePackages, cacert
+, libX11, libgdiplus, ffmpeg
+, SDL2_mixer, openal, libsoundio, sndio, pulseaudio
+, gtk3, gobject-introspection, gdk-pixbuf, wrapGAppsHook
 }:
 
 let
   runtimeDeps = [
-    SDL2
     gtk3
     libX11
+    libgdiplus
+    ffmpeg
+    SDL2_mixer
     openal
+    libsoundio
+    sndio
+    pulseaudio
   ];
 in stdenv.mkDerivation rec {
   pname = "ryujinx";
-  version = "1.0.5160";
+  version = "1.0.6954"; # Versioning is based off of the official appveyor builds: https://ci.appveyor.com/project/gdkchan/ryujinx
 
   src = fetchFromGitHub {
     owner = "Ryujinx";
     repo = "Ryujinx";
-    rev = "58f65b6523fb25d989b011c51f963520c811f9f0";
-    sha256 = "19fizqmcr8i3axi3j5hg8p6dxr1pxnl5l58z4pws6nj1xbq8z5mi";
+    rev = "31cbd09a75a9d5f4814c3907a060e0961eb2bb15";
+    sha256 = "00qql0wmlzs722s0igip3v0yjlqhc31jcr7nghwibcqrmx031azk";
   };
 
-  nativeBuildInputs = [ dotnet-sdk_3 dotnetPackages.Nuget makeWrapper wrapGAppsHook gobject-introspection ];
+  nativeBuildInputs = [ dotnet-sdk_5 dotnetPackages.Nuget cacert makeWrapper wrapGAppsHook gobject-introspection gdk-pixbuf ];
 
   nugetDeps = linkFarmFromDrvs "${pname}-nuget-deps" (import ./deps.nix {
     fetchNuGet = { name, version, sha256 }: fetchurl {
@@ -32,14 +38,16 @@ in stdenv.mkDerivation rec {
     };
   });
 
-  patches = [ ./log.patch ]; # Without this, Ryujinx tries to write logs to the nix store. This patch makes it write to "~/.config/Ryujinx/Logs" on Linux.
+  patches = [
+    ./log.patch # Without this, Ryujinx attempts to write logs to the nix store. This patch makes it write to "~/.config/Ryujinx/Logs" on Linux.
+  ];
 
   configurePhase = ''
     runHook preConfigure
 
     export HOME=$(mktemp -d)
     export DOTNET_CLI_TELEMETRY_OPTOUT=1
-    export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
+    export DOTNET_NOLOGO=1
 
     nuget sources Add -Name nixos -Source "$PWD/nixos"
     nuget init "$nugetDeps" "$PWD/nixos"
@@ -48,7 +56,7 @@ in stdenv.mkDerivation rec {
     mkdir -p $HOME/.nuget/NuGet
     cp $HOME/.config/NuGet/NuGet.Config $HOME/.nuget/NuGet
 
-    dotnet restore --source nixos Ryujinx.sln
+    dotnet restore --source "$PWD/nixos" Ryujinx.sln
 
     runHook postConfigure
   '';
@@ -72,13 +80,17 @@ in stdenv.mkDerivation rec {
       --output $out/lib/ryujinx
     shopt -s extglob
 
+    # TODO: fix this hack https://github.com/Ryujinx/Ryujinx/issues/2349
+    mkdir -p $out/lib/sndio-6
+    ln -s ${sndio}/lib/libsndio.so $out/lib/sndio-6/libsndio.so.6
+
     makeWrapper $out/lib/ryujinx/Ryujinx $out/bin/Ryujinx \
-      --set DOTNET_ROOT "${dotnetCorePackages.netcore_3_1}" \
-      --suffix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath runtimeDeps}" \
+      --set DOTNET_ROOT "${dotnetCorePackages.net_5_0}" \
+      --suffix LD_LIBRARY_PATH : "${builtins.concatStringsSep ":" [ (lib.makeLibraryPath runtimeDeps) "$out/lib/sndio-6" ]}" \
       ''${gappsWrapperArgs[@]}
 
     for i in 16 32 48 64 96 128 256 512 1024; do
-      install -D ${src}/Ryujinx/Ui/assets/Icon.png $out/share/icons/hicolor/''${i}x$i/apps/ryujinx.png
+      install -D ${src}/Ryujinx/Ui/Resources/Logo_Ryujinx.png $out/share/icons/hicolor/''${i}x$i/apps/ryujinx.png
     done
     cp -r ${makeDesktopItem {
       desktopName = "Ryujinx";
@@ -96,11 +108,12 @@ in stdenv.mkDerivation rec {
   # Strip breaks the executable.
   dontStrip = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Experimental Nintendo Switch Emulator written in C#";
     homepage = "https://ryujinx.org/";
     license = licenses.mit;
     maintainers = [ maintainers.ivar ];
     platforms = [ "x86_64-linux" ];
   };
+  passthru.updateScript = ./updater.sh;
 }
diff --git a/pkgs/misc/emulators/ryujinx/deps.nix b/pkgs/misc/emulators/ryujinx/deps.nix
index cb25865f219..be928194985 100644
--- a/pkgs/misc/emulators/ryujinx/deps.nix
+++ b/pkgs/misc/emulators/ryujinx/deps.nix
@@ -1,13 +1,18 @@
 { fetchNuGet }: [
   (fetchNuGet {
     name = "AtkSharp";
-    version = "3.22.25.56";
-    sha256 = "069fm4wplxb4s1i6mdj00b22zqpz6pg9miglcj8mkf1b4lnn09g0";
+    version = "3.22.25.128";
+    sha256 = "0fg01zi7v6127043jzxzihirsdp187pyj83gfa6p79cx763l7z94";
   })
   (fetchNuGet {
     name = "CairoSharp";
-    version = "3.22.25.56";
-    sha256 = "0b7p4yj88wgayh464j3rkbc4js8z57wxy3mprgvx86i3rc2v5jd9";
+    version = "3.22.25.128";
+    sha256 = "1rjdxd4fq5z3n51qx8vrcaf4i277ccc62jxk88xzbsxapdmjjdf9";
+  })
+  (fetchNuGet {
+    name = "CommandLineParser";
+    version = "2.8.0";
+    sha256 = "1m32xyilv2b7k55jy8ddg08c20glbcj2yi545kxs9hj2ahanhrbb";
   })
   (fetchNuGet {
     name = "Concentus";
@@ -15,39 +20,34 @@
     sha256 = "0y5z444wrbhlmsqpy2sxmajl1fbf74843lvgj3y6vz260dn2q0l0";
   })
   (fetchNuGet {
+    name = "Crc32.NET";
+    version = "1.2.0";
+    sha256 = "0qaj3192k1vfji87zf50rhydn5mrzyzybrs2k4v7ap29k8i0vi5h";
+  })
+  (fetchNuGet {
     name = "DiscordRichPresence";
-    version = "1.0.150";
-    sha256 = "0qmbi4sccia3w80q8xfvj3bw62nvz047wq198n2b2aflkf47bq79";
+    version = "1.0.175";
+    sha256 = "180sax976327d70qbinv07f65g3w2zbw80n49hckg8wd4rw209vd";
   })
   (fetchNuGet {
     name = "FFmpeg.AutoGen";
-    version = "4.3.0";
-    sha256 = "03lb3xzgwxik8nljq87pr1b9bsxbsl3a4kvy0kqkw9f57n29ihvk";
+    version = "4.4.0";
+    sha256 = "02n4az1jv30078019png9gbspygz051inxsn6w4iar20dqp55g2w";
   })
   (fetchNuGet {
     name = "GdkSharp";
-    version = "3.22.25.56";
-    sha256 = "0f708dwy6i9hghxs711scwkww28lvfjd6gykk7xv921vich5xvy6";
+    version = "3.22.25.128";
+    sha256 = "0bmn0ddaw8797pnhpyl03h2zl8i5ha67yv38gly4ydy50az2xhj7";
   })
   (fetchNuGet {
     name = "GioSharp";
-    version = "3.22.25.56";
-    sha256 = "1i7x1bakv5sq27ppl6w79c1wbvnfhf1713plc9ixaznh1fclcnwr";
+    version = "3.22.25.128";
+    sha256 = "0syfa1f2hg7wsxln5lh86n8m1lihhprc51b6km91gkl25l5hw5bv";
   })
   (fetchNuGet {
     name = "GLibSharp";
-    version = "3.22.25.56";
-    sha256 = "12czfm0lgjcy9hgqsiycwfv124dq619svrnsi036246i5hycj37w";
-  })
-  (fetchNuGet {
-    name = "GLWidget";
-    version = "1.0.2";
-    sha256 = "0nb46jiscnsywwdfy7zhx1bw4jfmca3s6l8dhbi99gc4bvp8ar7p";
-  })
-  (fetchNuGet {
-    name = "GtkSharp";
-    version = "3.22.25.56";
-    sha256 = "18dbn834wimdmxmgsqd81hyvjyyzgbnayzvz9f714cgw4yjkjyqs";
+    version = "3.22.25.128";
+    sha256 = "1j8i5izk97ga30z1qpd765zqd2q5w71y8bhnkqq4bj59768fyxp5";
   })
   (fetchNuGet {
     name = "GtkSharp.Dependencies";
@@ -55,34 +55,34 @@
     sha256 = "1g1rhcn38ww97638rds6l5bysra43hkhv47fy71fvq89623zgyxn";
   })
   (fetchNuGet {
+    name = "GtkSharp";
+    version = "3.22.25.128";
+    sha256 = "0z0wx0p3gc02r8d7y88k1rw307sb2vapbr1k1yc5qdc38fxz5jsy";
+  })
+  (fetchNuGet {
     name = "LibHac";
-    version = "0.11.3";
-    sha256 = "0xj2ip3bjy29xwy4fn5fncjadwbbg59sa3580cmkj47aab9cddyn";
+    version = "0.12.0";
+    sha256 = "08r9b9cdcbz6339sw8r5dfy2a8iw53df0j3xq9rygkg02xspimld";
   })
   (fetchNuGet {
     name = "Microsoft.AspNetCore.App.Runtime.linux-x64";
-    version = "3.1.2";
-    sha256 = "19wfh9yg4n2khbl7pvf6ngx95m5p8lw4l9y935pv7nh4xgwk02p9";
+    version = "5.0.5";
+    sha256 = "026m19pddhkx5idwpi6mp1yl9yfcfgm2qjp1jh54mdja1d7ng0vk";
   })
   (fetchNuGet {
     name = "Microsoft.AspNetCore.App.Runtime.osx-x64";
-    version = "3.1.2";
-    sha256 = "1v7i4f1k3j8xavbfwb7qr5f680gg5nblrmx5zcsj7l07q4wbnmwl";
+    version = "5.0.5";
+    sha256 = "09nsi9fa8kb3jpnim0hdap3jabskvpr4fmpvnj5wsh3gp91vqvgb";
   })
   (fetchNuGet {
     name = "Microsoft.AspNetCore.App.Runtime.win-x64";
-    version = "3.1.2";
-    sha256 = "1gciv56vzfpl86lb9gzvyfj8w2qd7jhdrbxph6l1aykwzqbxf7bd";
+    version = "5.0.5";
+    sha256 = "10g2vdsz685agqbd7h7dd9gvs584prpai0zv37r59wzlynj1assl";
   })
   (fetchNuGet {
     name = "Microsoft.CodeCoverage";
-    version = "16.2.0";
-    sha256 = "07h1ylca2j7a4hznq4m4b8nrzv1lw7gcf848k2a3nbm6rapv61ki";
-  })
-  (fetchNuGet {
-    name = "Microsoft.CodeCoverage";
-    version = "16.5.0";
-    sha256 = "0610wzn4qyywf9lb4538vwqhprxc4g0g7gjbmnjzvx97jr5nd5mf";
+    version = "16.8.0";
+    sha256 = "1y05sjk7wgd29a47v1yhn2s1lrd8wgazkilvmjbvivmrrm3fqjs8";
   })
   (fetchNuGet {
     name = "Microsoft.CSharp";
@@ -95,29 +95,34 @@
     sha256 = "0mp8ihqlb7fsa789frjzidrfjc1lrhk88qp3xm5qvr7vf4wy4z8x";
   })
   (fetchNuGet {
+    name = "Microsoft.NET.Test.Sdk";
+    version = "16.8.0";
+    sha256 = "1ln2mva7j2mpsj9rdhpk8vhm3pgd8wn563xqdcwd38avnhp74rm9";
+  })
+  (fetchNuGet {
     name = "Microsoft.NETCore.App.Host.osx-x64";
-    version = "3.1.2";
-    sha256 = "0sy1h7ffq8s3bkvf1carf4rn9qf7hn0yv6dcjklgh3g9jhlsq34f";
+    version = "5.0.5";
+    sha256 = "14d6wz593dwm2j3apd3ny10idk8bfxqgfrparhc1q7q4i66y21ws";
   })
   (fetchNuGet {
     name = "Microsoft.NETCore.App.Host.win-x64";
-    version = "3.1.2";
-    sha256 = "1yqsnl4my2q1ps666162kn0h34wyfajiwqs6snhrww195b59msdv";
+    version = "5.0.5";
+    sha256 = "1233y31z46yqzjgwpa6mmb1h63iqp6wbly6mbwkjqm2adx1wkp47";
   })
   (fetchNuGet {
     name = "Microsoft.NETCore.App.Runtime.linux-x64";
-    version = "3.1.2";
-    sha256 = "0a332ia5pabnz7mdfc99a5hlc7drnwzlc7cj9b5c3an6dq636p66";
+    version = "5.0.5";
+    sha256 = "1h5yry6k9bpqqis2fb1901csb8kipm7anm174fjj41r317vzfjfa";
   })
   (fetchNuGet {
     name = "Microsoft.NETCore.App.Runtime.osx-x64";
-    version = "3.1.2";
-    sha256 = "1wb8h30di1mix8liz937snl1w8hbblixrpiazjskxclp3i7m1rg3";
+    version = "5.0.5";
+    sha256 = "1a1ijdk61l0h25sj9ypcf96vz1c08ca7q5809g82qpi9m34kw8b8";
   })
   (fetchNuGet {
     name = "Microsoft.NETCore.App.Runtime.win-x64";
-    version = "3.1.2";
-    sha256 = "0aj005mh57ynscf87cpfshc3ff22l4svf6lqz0hpqsi0hlidqwqx";
+    version = "5.0.5";
+    sha256 = "1gc4msk61jgj9ill4icp0mn523g411iqpxphp0fykfvqdpqyqg46";
   })
   (fetchNuGet {
     name = "Microsoft.NETCore.Platforms";
@@ -136,8 +141,8 @@
   })
   (fetchNuGet {
     name = "Microsoft.NETCore.Platforms";
-    version = "3.1.0";
-    sha256 = "1gc1x8f95wk8yhgznkwsg80adk1lc65v9n5rx4yaa4bc5dva0z3j";
+    version = "5.0.0";
+    sha256 = "0mwpwdflidzgzfx2dlpkvvnkgkr2ayaf0s80737h4wa35gaj11rc";
   })
   (fetchNuGet {
     name = "Microsoft.NETCore.Targets";
@@ -150,34 +155,14 @@
     sha256 = "193xwf33fbm0ni3idxzbr5fdq3i2dlfgihsac9jj7whj0gd902nh";
   })
   (fetchNuGet {
-    name = "Microsoft.NET.Test.Sdk";
-    version = "16.2.0";
-    sha256 = "1nr5jxchdy3p7jm4fm73d5yivghjisdsyafma8fs5d1v49bhgckq";
-  })
-  (fetchNuGet {
-    name = "Microsoft.NET.Test.Sdk";
-    version = "16.5.0";
-    sha256 = "19f5bvzci5mmfz81jwc4dax4qdf7w4k67n263383mn8mawf22bfq";
-  })
-  (fetchNuGet {
-    name = "Microsoft.TestPlatform.ObjectModel";
-    version = "16.2.0";
-    sha256 = "1ywzyx75d61wm75l7wglxzglg5k9nq66wd56m52hmmg8mf253z57";
-  })
-  (fetchNuGet {
     name = "Microsoft.TestPlatform.ObjectModel";
-    version = "16.5.0";
-    sha256 = "02h7j1fr0fwcggn0wgddh59k8b2wmly3snckwhswzqvks5rvfnnw";
-  })
-  (fetchNuGet {
-    name = "Microsoft.TestPlatform.TestHost";
-    version = "16.2.0";
-    sha256 = "05dx9nv1skc5ji79ji5vz6c93b09w9xh70iyy6j5ca978ga92i6g";
+    version = "16.8.0";
+    sha256 = "0ii9d88py6mjsxzj9v3zx4izh6rb9ma6s9kj85xmc0xrw7jc2g3m";
   })
   (fetchNuGet {
     name = "Microsoft.TestPlatform.TestHost";
-    version = "16.5.0";
-    sha256 = "08cvss66lqa92h55dxkbrzn796jckhlyj53zz22x3qyr6xi21v5v";
+    version = "16.8.0";
+    sha256 = "1rh8cga1km3jfafkwfjr0dwqrxb4306hf7fipwba9h02w7vlhb9a";
   })
   (fetchNuGet {
     name = "Microsoft.Win32.Primitives";
@@ -191,11 +176,6 @@
   })
   (fetchNuGet {
     name = "Microsoft.Win32.Registry";
-    version = "4.0.0";
-    sha256 = "1spf4m9pikkc19544p29a47qnhcd885klncahz133hbnyqbkmz9k";
-  })
-  (fetchNuGet {
-    name = "Microsoft.Win32.Registry";
     version = "4.3.0";
     sha256 = "1gxyzxam8163vk1kb6xzxjj4iwspjsz9zhgn1w9rjzciphaz0ig7";
   })
@@ -206,13 +186,13 @@
   })
   (fetchNuGet {
     name = "Microsoft.Win32.Registry";
-    version = "4.7.0";
-    sha256 = "0bx21jjbs7l5ydyw4p6cn07chryxpmchq2nl5pirzz4l3b0q4dgs";
+    version = "5.0.0";
+    sha256 = "102hvhq2gmlcbq8y2cb7hdr2dnmjzfp2k3asr1ycwrfacwyaak7n";
   })
   (fetchNuGet {
     name = "Microsoft.Win32.SystemEvents";
-    version = "4.5.0";
-    sha256 = "0fnkv3ky12227zqg4zshx4kw2mvysq2ppxjibfw02cc3iprv4njq";
+    version = "5.0.0";
+    sha256 = "0sja4ba0mrvdamn0r9mhq38b9dxi08yb3c1hzh29n1z6ws1hlrcq";
   })
   (fetchNuGet {
     name = "Mono.Posix.NETStandard";
@@ -256,28 +236,33 @@
   })
   (fetchNuGet {
     name = "NUnit3TestAdapter";
-    version = "3.15.1";
-    sha256 = "1nhpvzxbxgymmkb3bd5ci40rg8k71bfx2ghbgc99znvnvhf2034y";
+    version = "3.17.0";
+    sha256 = "0kxc6z3b8ccdrcyqz88jm5yh5ch9nbg303v67q8sp5hhs8rl8nk6";
   })
   (fetchNuGet {
-    name = "NUnit3TestAdapter";
-    version = "3.16.1";
-    sha256 = "1pzhmapfdszsfza7zjr3zrlz4fssdxsyiwmlj76a40mbhxhfa4q9";
+    name = "OpenTK.Core";
+    version = "4.5.0";
+    sha256 = "06qxczikp0aah20d4skk3g588dgh2vn2xffn0ajyyv0475m61s9m";
   })
   (fetchNuGet {
-    name = "OpenTK.NetStandard";
-    version = "1.0.5.12";
-    sha256 = "1n8j6k47189l5b6rnhyq391d84v6zkpiiqq41cccb6qizvrcgl69";
+    name = "OpenTK.Graphics";
+    version = "4.5.0";
+    sha256 = "180g5c92fhhhpmwl6paihx4h1bil7akaihlz2qy124n28pf4s988";
   })
   (fetchNuGet {
-    name = "PangoSharp";
-    version = "3.22.25.56";
-    sha256 = "12b0761nfsci4rvzcba4hrh5rcn6q24qaxwwz66myb82c999qj8w";
+    name = "OpenTK.Mathematics";
+    version = "4.5.0";
+    sha256 = "1h9dxhq1llxdbgdzsi87ijqgj2ilr3rv0zkxhaa65xrc5x8j8fva";
   })
   (fetchNuGet {
-    name = "runtime.any.System.Collections";
-    version = "4.0.11";
-    sha256 = "1x44bm1cgv28zmrp095wf9mn8a6a0ivnzp9v14dcbhx06igxzgg0";
+    name = "OpenTK.OpenAL";
+    version = "4.5.0";
+    sha256 = "0lqxpc3vnxglql42x2frvq5bpkl5cf3dpnf9nx6pr3q6qnhigkfb";
+  })
+  (fetchNuGet {
+    name = "PangoSharp";
+    version = "3.22.25.128";
+    sha256 = "0dkl9j0yd65s5ds9xj5z6yb7yca7wlycqz25m8dng20d13sqr1zp";
   })
   (fetchNuGet {
     name = "runtime.any.System.Collections";
@@ -286,11 +271,6 @@
   })
   (fetchNuGet {
     name = "runtime.any.System.Diagnostics.Tools";
-    version = "4.0.1";
-    sha256 = "0qcpm90hrm9gx9pmxlvfml65jm0bwpr5dg3r7l7xm9nvmibvc7n7";
-  })
-  (fetchNuGet {
-    name = "runtime.any.System.Diagnostics.Tools";
     version = "4.3.0";
     sha256 = "1wl76vk12zhdh66vmagni66h5xbhgqq7zkdpgw21jhxhvlbcl8pk";
   })
@@ -300,24 +280,14 @@
     sha256 = "00j6nv2xgmd3bi347k00m7wr542wjlig53rmj28pmw7ddcn97jbn";
   })
   (fetchNuGet {
-    name = "runtime.any.System.Globalization";
-    version = "4.0.11";
-    sha256 = "0240rp66pi5bw1xklmh421hj7arwcdmjmgfkiq1cbc6nrm8ah286";
-  })
-  (fetchNuGet {
-    name = "runtime.any.System.Globalization";
-    version = "4.3.0";
-    sha256 = "1daqf33hssad94lamzg01y49xwndy2q97i2lrb7mgn28656qia1x";
-  })
-  (fetchNuGet {
     name = "runtime.any.System.Globalization.Calendars";
     version = "4.3.0";
     sha256 = "1ghhhk5psqxcg6w88sxkqrc35bxcz27zbqm2y5p5298pv3v7g201";
   })
   (fetchNuGet {
-    name = "runtime.any.System.IO";
-    version = "4.1.0";
-    sha256 = "0kasfkjiml2kk8prnyn1990nhsahnjggvqwszqjdsfwfl43vpcb5";
+    name = "runtime.any.System.Globalization";
+    version = "4.3.0";
+    sha256 = "1daqf33hssad94lamzg01y49xwndy2q97i2lrb7mgn28656qia1x";
   })
   (fetchNuGet {
     name = "runtime.any.System.IO";
@@ -325,39 +295,19 @@
     sha256 = "0l8xz8zn46w4d10bcn3l4yyn4vhb3lrj2zw8llvz7jk14k4zps5x";
   })
   (fetchNuGet {
-    name = "runtime.any.System.Reflection";
-    version = "4.1.0";
-    sha256 = "06kcs059d5czyakx75rvlwa2mr86156w18fs7chd03f7084l7mq6";
-  })
-  (fetchNuGet {
-    name = "runtime.any.System.Reflection";
-    version = "4.3.0";
-    sha256 = "02c9h3y35pylc0zfq3wcsvc5nqci95nrkq0mszifc0sjx7xrzkly";
-  })
-  (fetchNuGet {
-    name = "runtime.any.System.Reflection.Extensions";
-    version = "4.0.1";
-    sha256 = "05k34ijz9g9csh0vbbv3g3lrxl163izwcfncmbcl7k073h32rzkr";
-  })
-  (fetchNuGet {
     name = "runtime.any.System.Reflection.Extensions";
     version = "4.3.0";
     sha256 = "0zyri97dfc5vyaz9ba65hjj1zbcrzaffhsdlpxc9bh09wy22fq33";
   })
   (fetchNuGet {
     name = "runtime.any.System.Reflection.Primitives";
-    version = "4.0.1";
-    sha256 = "1zxrpvixr5fqzkxpnin6g6gjq6xajy1snghz99ds2dwbhm276rhz";
-  })
-  (fetchNuGet {
-    name = "runtime.any.System.Reflection.Primitives";
     version = "4.3.0";
     sha256 = "0x1mm8c6iy8rlxm8w9vqw7gb7s1ljadrn049fmf70cyh42vdfhrf";
   })
   (fetchNuGet {
-    name = "runtime.any.System.Resources.ResourceManager";
-    version = "4.0.1";
-    sha256 = "1jmgs7hynb2rff48623wnyb37558bbh1q28k9c249j5r5sgsr5kr";
+    name = "runtime.any.System.Reflection";
+    version = "4.3.0";
+    sha256 = "02c9h3y35pylc0zfq3wcsvc5nqci95nrkq0mszifc0sjx7xrzkly";
   })
   (fetchNuGet {
     name = "runtime.any.System.Resources.ResourceManager";
@@ -365,49 +315,19 @@
     sha256 = "03kickal0iiby82wa5flar18kyv82s9s6d4xhk5h4bi5kfcyfjzl";
   })
   (fetchNuGet {
-    name = "runtime.any.System.Runtime";
-    version = "4.1.0";
-    sha256 = "0mjr2bi7wvnkphfjqgkyf8vfyvy15a829jz6mivl6jmksh2bx40m";
-  })
-  (fetchNuGet {
-    name = "runtime.any.System.Runtime";
-    version = "4.3.0";
-    sha256 = "1cqh1sv3h5j7ixyb7axxbdkqx6cxy00p4np4j91kpm492rf4s25b";
-  })
-  (fetchNuGet {
-    name = "runtime.any.System.Runtime.Handles";
-    version = "4.0.1";
-    sha256 = "1kswgqhy34qvc49i981fk711s7knd6z13bp0rin8ms6axkh98nas";
-  })
-  (fetchNuGet {
     name = "runtime.any.System.Runtime.Handles";
     version = "4.3.0";
     sha256 = "0bh5bi25nk9w9xi8z23ws45q5yia6k7dg3i4axhfqlnj145l011x";
   })
   (fetchNuGet {
     name = "runtime.any.System.Runtime.InteropServices";
-    version = "4.1.0";
-    sha256 = "0gm8if0hcmp1qys1wmx4970k2x62pqvldgljsyzbjhiy5644vl8z";
-  })
-  (fetchNuGet {
-    name = "runtime.any.System.Runtime.InteropServices";
     version = "4.3.0";
     sha256 = "0c3g3g3jmhlhw4klrc86ka9fjbl7i59ds1fadsb2l8nqf8z3kb19";
   })
   (fetchNuGet {
-    name = "runtime.any.System.Text.Encoding";
-    version = "4.0.11";
-    sha256 = "0m4vgmzi1ky8xlj0r7xcyazxln3j9dlialnk6d2gmgrfnzf8f9m7";
-  })
-  (fetchNuGet {
-    name = "runtime.any.System.Text.Encoding";
+    name = "runtime.any.System.Runtime";
     version = "4.3.0";
-    sha256 = "0aqqi1v4wx51h51mk956y783wzags13wa7mgqyclacmsmpv02ps3";
-  })
-  (fetchNuGet {
-    name = "runtime.any.System.Text.Encoding.Extensions";
-    version = "4.0.11";
-    sha256 = "0d1rxxpvg9v7wlibsfgz0r4hwigpadas822qf8m8fs1gma9gs877";
+    sha256 = "1cqh1sv3h5j7ixyb7axxbdkqx6cxy00p4np4j91kpm492rf4s25b";
   })
   (fetchNuGet {
     name = "runtime.any.System.Text.Encoding.Extensions";
@@ -415,9 +335,9 @@
     sha256 = "0lqhgqi0i8194ryqq6v2gqx0fb86db2gqknbm0aq31wb378j7ip8";
   })
   (fetchNuGet {
-    name = "runtime.any.System.Threading.Tasks";
-    version = "4.0.11";
-    sha256 = "1qzdp09qs8br5qxzlm1lgbjn4n57fk8vr1lzrmli2ysdg6x1xzvk";
+    name = "runtime.any.System.Text.Encoding";
+    version = "4.3.0";
+    sha256 = "0aqqi1v4wx51h51mk956y783wzags13wa7mgqyclacmsmpv02ps3";
   })
   (fetchNuGet {
     name = "runtime.any.System.Threading.Tasks";
@@ -445,16 +365,6 @@
     sha256 = "0c2p354hjx58xhhz7wv6div8xpi90sc6ibdm40qin21bvi7ymcaa";
   })
   (fetchNuGet {
-    name = "runtime.native.System";
-    version = "4.0.0";
-    sha256 = "1ppk69xk59ggacj9n7g6fyxvzmk1g5p4fkijm0d7xqfkig98qrkf";
-  })
-  (fetchNuGet {
-    name = "runtime.native.System";
-    version = "4.3.0";
-    sha256 = "15hgf6zaq9b8br2wi1i3x0zvmk410nlmsmva9p0bbg73v6hml5k4";
-  })
-  (fetchNuGet {
     name = "runtime.native.System.IO.Compression";
     version = "4.1.0";
     sha256 = "0d720z4lzyfcabmmnvh0bnj76ll7djhji2hmfh3h44sdkjnlkknk";
@@ -465,14 +375,24 @@
     sha256 = "1hgv2bmbaskx77v8glh7waxws973jn4ah35zysnkxmf0196sfxg6";
   })
   (fetchNuGet {
+    name = "runtime.native.System.Security.Cryptography.OpenSsl";
+    version = "4.3.0";
+    sha256 = "18pzfdlwsg2nb1jjjjzyb5qlgy6xjxzmhnfaijq5s2jw3cm3ab97";
+  })
+  (fetchNuGet {
     name = "runtime.native.System.Security.Cryptography";
     version = "4.0.0";
     sha256 = "0k57aa2c3b10wl3hfqbgrl7xq7g8hh3a3ir44b31dn5p61iiw3z9";
   })
   (fetchNuGet {
-    name = "runtime.native.System.Security.Cryptography.OpenSsl";
+    name = "runtime.native.System";
+    version = "4.0.0";
+    sha256 = "1ppk69xk59ggacj9n7g6fyxvzmk1g5p4fkijm0d7xqfkig98qrkf";
+  })
+  (fetchNuGet {
+    name = "runtime.native.System";
     version = "4.3.0";
-    sha256 = "18pzfdlwsg2nb1jjjjzyb5qlgy6xjxzmhnfaijq5s2jw3cm3ab97";
+    sha256 = "15hgf6zaq9b8br2wi1i3x0zvmk410nlmsmva9p0bbg73v6hml5k4";
   })
   (fetchNuGet {
     name = "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl";
@@ -521,21 +441,11 @@
   })
   (fetchNuGet {
     name = "runtime.unix.System.Diagnostics.Debug";
-    version = "4.0.11";
-    sha256 = "05ndbai4vpqrry0ghbfgqc8xblmplwjgndxmdn1zklqimczwjg2d";
-  })
-  (fetchNuGet {
-    name = "runtime.unix.System.Diagnostics.Debug";
     version = "4.3.0";
     sha256 = "1lps7fbnw34bnh3lm31gs5c0g0dh7548wfmb8zz62v0zqz71msj5";
   })
   (fetchNuGet {
     name = "runtime.unix.System.IO.FileSystem";
-    version = "4.0.1";
-    sha256 = "02wnlydnbhai0zy7c3kihg0cis0l1b2z78kyi1ci47c5v0jklwha";
-  })
-  (fetchNuGet {
-    name = "runtime.unix.System.IO.FileSystem";
     version = "4.3.0";
     sha256 = "14nbkhvs7sji5r1saj2x8daz82rnf9kx28d3v2qss34qbr32dzix";
   })
@@ -551,21 +461,11 @@
   })
   (fetchNuGet {
     name = "runtime.unix.System.Private.Uri";
-    version = "4.0.1";
-    sha256 = "0ic5dgc45jkhcr1g9xmmzjm7ffiw4cymm0fprczlx4fnww4783nm";
-  })
-  (fetchNuGet {
-    name = "runtime.unix.System.Private.Uri";
     version = "4.3.0";
     sha256 = "1jx02q6kiwlvfksq1q9qr17fj78y5v6mwsszav4qcz9z25d5g6vk";
   })
   (fetchNuGet {
     name = "runtime.unix.System.Runtime.Extensions";
-    version = "4.1.0";
-    sha256 = "0x1cwd7cvifzmn5x1wafvj75zdxlk3mxy860igh3x1wx0s8167y4";
-  })
-  (fetchNuGet {
-    name = "runtime.unix.System.Runtime.Extensions";
     version = "4.3.0";
     sha256 = "0pnxxmm8whx38dp6yvwgmh22smknxmqs5n513fc7m4wxvs1bvi4p";
   })
@@ -581,21 +481,11 @@
   })
   (fetchNuGet {
     name = "runtime.win.System.Diagnostics.Debug";
-    version = "4.0.11";
-    sha256 = "1ylkj4v7aq00svij7aq82d86afpwqgrqf2kpikabxl26p19ry9wm";
-  })
-  (fetchNuGet {
-    name = "runtime.win.System.Diagnostics.Debug";
     version = "4.3.0";
     sha256 = "16fbn4bcynad1ygdq0yk1wmckvs8jvrrf104xa5dc2hlc8y3x58f";
   })
   (fetchNuGet {
     name = "runtime.win.System.IO.FileSystem";
-    version = "4.0.1";
-    sha256 = "1dn9k6x8h27b6vbqh72hsfxax4fwf30jj8lc5328rg52lw29cyn1";
-  })
-  (fetchNuGet {
-    name = "runtime.win.System.IO.FileSystem";
     version = "4.3.0";
     sha256 = "1c01nklbxywszsbfaxc76hsz7gdxac3jkphrywfkdsi3v4bwd6g8";
   })
@@ -611,38 +501,48 @@
   })
   (fetchNuGet {
     name = "runtime.win.System.Runtime.Extensions";
-    version = "4.1.0";
-    sha256 = "1zmx2msa04ka8mgh8viahi4pqpp86vdhzij2rg1jg131bwlv59yw";
-  })
-  (fetchNuGet {
-    name = "runtime.win.System.Runtime.Extensions";
     version = "4.3.0";
     sha256 = "1700famsxndccfbcdz9q14qb20p49lax67mqwpgy4gx3vja1yczr";
   })
   (fetchNuGet {
+    name = "Ryujinx.Audio.OpenAL.Dependencies";
+    version = "1.21.0.1";
+    sha256 = "0z5k42h252nr60d02p2ww9190d7k1kzrb26vil4ydfhxqqqv6w9l";
+  })
+  (fetchNuGet {
     name = "Ryujinx.Graphics.Nvdec.Dependencies";
-    version = "4.3.0";
-    sha256 = "0szgbdhyhvzpw8nb9k2ww37p5qipab1pdll8idkk57y5xnl2f7ll";
+    version = "4.4.0-build7";
+    sha256 = "0g1l3lgs0ffxp64ka81v6q1cgsdirl1qlf73255v29r3v337074m";
+  })
+  (fetchNuGet {
+    name = "Ryujinx.SDL2-CS";
+    version = "2.0.15-build11";
+    sha256 = "0s4h69l2b508l5wxp4v4ip8k83k78p3963xxv8bfamin9517przi";
+  })
+  (fetchNuGet {
+    name = "SharpZipLib";
+    version = "1.3.0";
+    sha256 = "1pizj82wisch28nfdaszwqm9bz19lnl0s5mq8c0zybm2vhnrhvk4";
   })
   (fetchNuGet {
-    name = "SkiaSharp";
-    version = "1.68.1.1";
-    sha256 = "013yzsk798dwxdf2y5yx675x96nagfapkri5k3pgsjnmyfp1lvzk";
+    name = "SixLabors.Fonts";
+    version = "1.0.0-beta0013";
+    sha256 = "0r0aw8xxd32rwcawawcz6asiyggz02hnzg5hvz8gimq8hvwx1wql";
   })
   (fetchNuGet {
-    name = "SkiaSharp.NativeAssets.Linux";
-    version = "1.68.1.1";
-    sha256 = "07448kn9x56pxlnkxp2dpr5jmwj62k48y5m4608mwci32vs675hn";
+    name = "SixLabors.ImageSharp.Drawing";
+    version = "1.0.0-beta11";
+    sha256 = "0hl0rs3kr1zdnx3gdssxgli6fyvmwzcfp99f4db71s0i8j8b2bp5";
   })
   (fetchNuGet {
-    name = "SkiaSharp.Views.Desktop.Common";
-    version = "1.68.1.1";
-    sha256 = "0wkj952iha7w2i8mvl0mksz2wqkx7vi7xylh10xgddld8kkm03r7";
+    name = "SixLabors.ImageSharp";
+    version = "1.0.2";
+    sha256 = "0fhk9sn8k18slfb26wz8mal0j699f7djwhxgv97snz6b10wynfaj";
   })
   (fetchNuGet {
-    name = "SkiaSharp.Views.Gtk3";
-    version = "1.68.1.1";
-    sha256 = "19fgshim2i60p55j4jcr0biq6k2xwal5dsmbgvyrrajnssaj3r95";
+    name = "SPB";
+    version = "0.0.3-build15";
+    sha256 = "0h00yi2j65q31r5npsziq2rpiw832vf9r72j1hjqibp2l5m6v6yw";
   })
   (fetchNuGet {
     name = "System.AppContext";
@@ -666,18 +566,8 @@
   })
   (fetchNuGet {
     name = "System.CodeDom";
-    version = "4.7.0";
-    sha256 = "1lch8gwmw420wsvbv9ir4v5g1ij2ag23cbgi3c9gramj1h4vhlz2";
-  })
-  (fetchNuGet {
-    name = "System.Collections";
-    version = "4.0.11";
-    sha256 = "1ga40f5lrwldiyw6vy67d0sg7jd7ww6kgwbksm19wrvq9hr0bsm6";
-  })
-  (fetchNuGet {
-    name = "System.Collections";
-    version = "4.3.0";
-    sha256 = "19r4y64dqyrq6k4706dnyhhw7fs24kpp3awak7whzss39dakpxk9";
+    version = "5.0.0";
+    sha256 = "14zs2wqkmdlxzj8ikx19n321lsbarx5vl2a8wrachymxn8zb5njh";
   })
   (fetchNuGet {
     name = "System.Collections.Concurrent";
@@ -685,44 +575,24 @@
     sha256 = "07y08kvrzpak873pmyxs129g1ch8l27zmg51pcyj2jvq03n0r0fc";
   })
   (fetchNuGet {
-    name = "System.Collections.Immutable";
-    version = "1.2.0";
-    sha256 = "1jm4pc666yiy7af1mcf7766v710gp0h40p228ghj6bavx7xfa38m";
-  })
-  (fetchNuGet {
-    name = "System.Collections.NonGeneric";
-    version = "4.0.1";
-    sha256 = "19994r5y5bpdhj7di6w047apvil8lh06lh2c2yv9zc4fc5g9bl4d";
-  })
-  (fetchNuGet {
     name = "System.Collections.NonGeneric";
     version = "4.3.0";
     sha256 = "07q3k0hf3mrcjzwj8fwk6gv3n51cb513w4mgkfxzm3i37sc9kz7k";
   })
   (fetchNuGet {
     name = "System.Collections.Specialized";
-    version = "4.0.1";
-    sha256 = "1wbv7y686p5x169rnaim7sln67ivmv6r57falrnx8aap9y33mam9";
-  })
-  (fetchNuGet {
-    name = "System.Collections.Specialized";
     version = "4.3.0";
     sha256 = "1sdwkma4f6j85m3dpb53v9vcgd0zyc9jb33f8g63byvijcj39n20";
   })
   (fetchNuGet {
-    name = "System.ComponentModel";
-    version = "4.0.1";
-    sha256 = "0v4qpmqlzyfad2kswxxj2frnaqqhz9201c3yn8fmmarx5vlzg52z";
+    name = "System.Collections";
+    version = "4.0.11";
+    sha256 = "1ga40f5lrwldiyw6vy67d0sg7jd7ww6kgwbksm19wrvq9hr0bsm6";
   })
   (fetchNuGet {
-    name = "System.ComponentModel";
+    name = "System.Collections";
     version = "4.3.0";
-    sha256 = "0986b10ww3nshy30x9sjyzm0jx339dkjxjj3401r3q0f6fx2wkcb";
-  })
-  (fetchNuGet {
-    name = "System.ComponentModel.EventBasedAsync";
-    version = "4.0.11";
-    sha256 = "07r5i7xwban347nsfw28hhjwpr78ywksjyhywvhj1yr0s7sr00wh";
+    sha256 = "19r4y64dqyrq6k4706dnyhhw7fs24kpp3awak7whzss39dakpxk9";
   })
   (fetchNuGet {
     name = "System.ComponentModel.EventBasedAsync";
@@ -731,23 +601,18 @@
   })
   (fetchNuGet {
     name = "System.ComponentModel.Primitives";
-    version = "4.1.0";
-    sha256 = "0wb5mnaag0w4fnyc40x19j8v2vshxp266razw64bcqfyj1whb1q0";
-  })
-  (fetchNuGet {
-    name = "System.ComponentModel.Primitives";
     version = "4.3.0";
     sha256 = "1svfmcmgs0w0z9xdw2f2ps05rdxmkxxhf0l17xk9l1l8xfahkqr0";
   })
   (fetchNuGet {
     name = "System.ComponentModel.TypeConverter";
-    version = "4.1.0";
-    sha256 = "178cva9p1cs043h5n2fry5xkzr3wc9n0hwbxa8m3ymld9m6wcv0y";
+    version = "4.3.0";
+    sha256 = "17ng0p7v3nbrg3kycz10aqrrlw4lz9hzhws09pfh8gkwicyy481x";
   })
   (fetchNuGet {
-    name = "System.ComponentModel.TypeConverter";
+    name = "System.ComponentModel";
     version = "4.3.0";
-    sha256 = "17ng0p7v3nbrg3kycz10aqrrlw4lz9hzhws09pfh8gkwicyy481x";
+    sha256 = "0986b10ww3nshy30x9sjyzm0jx339dkjxjj3401r3q0f6fx2wkcb";
   })
   (fetchNuGet {
     name = "System.Console";
@@ -771,30 +636,15 @@
   })
   (fetchNuGet {
     name = "System.Diagnostics.Process";
-    version = "4.1.0";
-    sha256 = "061lrcs7xribrmq7kab908lww6kn2xn1w3rdc41q189y0jibl19s";
-  })
-  (fetchNuGet {
-    name = "System.Diagnostics.Process";
     version = "4.3.0";
     sha256 = "0g4prsbkygq8m21naqmcp70f24a1ksyix3dihb1r1f71lpi3cfj7";
   })
   (fetchNuGet {
-    name = "System.Diagnostics.TextWriterTraceListener";
-    version = "4.0.0";
-    sha256 = "1xigiwkwyxak0dhm0p8i2zb7a9syly9cdb5s9zkr9rbad4f2fqhs";
-  })
-  (fetchNuGet {
     name = "System.Diagnostics.Tools";
     version = "4.0.1";
     sha256 = "19cknvg07yhakcvpxg3cxa0bwadplin6kyxd8mpjjpwnp56nl85x";
   })
   (fetchNuGet {
-    name = "System.Diagnostics.TraceSource";
-    version = "4.0.0";
-    sha256 = "1mc7r72xznczzf6mz62dm8xhdi14if1h8qgx353xvhz89qyxsa3h";
-  })
-  (fetchNuGet {
     name = "System.Diagnostics.Tracing";
     version = "4.1.0";
     sha256 = "1d2r76v1x610x61ahfpigda89gd13qydz6vbwzhpqlyvq8jj6394";
@@ -806,8 +656,8 @@
   })
   (fetchNuGet {
     name = "System.Drawing.Common";
-    version = "4.5.0";
-    sha256 = "0knqa0zsm91nfr34br8gx5kjqq4v81zdhqkacvs2hzc8nqk0ddhc";
+    version = "5.0.1";
+    sha256 = "14h722wq58k1wmgxmpws91xc7kh8109ijw0hcxjq9qkbhbi6pwmb";
   })
   (fetchNuGet {
     name = "System.Dynamic.Runtime";
@@ -815,16 +665,6 @@
     sha256 = "1pla2dx8gkidf7xkciig6nifdsb494axjvzvann8g2lp3dbqasm9";
   })
   (fetchNuGet {
-    name = "System.Globalization";
-    version = "4.0.11";
-    sha256 = "070c5jbas2v7smm660zaf1gh0489xanjqymkvafcs4f8cdrs1d5d";
-  })
-  (fetchNuGet {
-    name = "System.Globalization";
-    version = "4.3.0";
-    sha256 = "1cp68vv683n6ic2zqh2s1fn4c2sd87g5hpp6l4d4nj4536jz98ki";
-  })
-  (fetchNuGet {
     name = "System.Globalization.Calendars";
     version = "4.0.1";
     sha256 = "0bv0alrm2ck2zk3rz25lfyk9h42f3ywq77mx1syl6vvyncnpg4qh";
@@ -840,14 +680,19 @@
     sha256 = "02a5zfxavhv3jd437bsncbhd2fp1zv4gxzakp1an9l6kdq1mcqls";
   })
   (fetchNuGet {
-    name = "System.IO";
-    version = "4.1.0";
-    sha256 = "1g0yb8p11vfd0kbkyzlfsbsp5z44lwsvyc0h3dpw6vqnbi035ajp";
+    name = "System.Globalization";
+    version = "4.0.11";
+    sha256 = "070c5jbas2v7smm660zaf1gh0489xanjqymkvafcs4f8cdrs1d5d";
   })
   (fetchNuGet {
-    name = "System.IO";
+    name = "System.Globalization";
     version = "4.3.0";
-    sha256 = "05l9qdrzhm4s5dixmx68kxwif4l99ll5gqmh7rqgw554fx0agv5f";
+    sha256 = "1cp68vv683n6ic2zqh2s1fn4c2sd87g5hpp6l4d4nj4536jz98ki";
+  })
+  (fetchNuGet {
+    name = "System.IO.Compression.ZipFile";
+    version = "4.0.1";
+    sha256 = "0h72znbagmgvswzr46mihn7xm7chfk2fhrp5krzkjf29pz0i6z82";
   })
   (fetchNuGet {
     name = "System.IO.Compression";
@@ -855,9 +700,14 @@
     sha256 = "0iym7s3jkl8n0vzm3jd6xqg9zjjjqni05x45dwxyjr2dy88hlgji";
   })
   (fetchNuGet {
-    name = "System.IO.Compression.ZipFile";
+    name = "System.IO.FileSystem.Primitives";
     version = "4.0.1";
-    sha256 = "0h72znbagmgvswzr46mihn7xm7chfk2fhrp5krzkjf29pz0i6z82";
+    sha256 = "1s0mniajj3lvbyf7vfb5shp4ink5yibsx945k6lvxa96r8la1612";
+  })
+  (fetchNuGet {
+    name = "System.IO.FileSystem.Primitives";
+    version = "4.3.0";
+    sha256 = "0j6ndgglcf4brg2lz4wzsh1av1gh8xrzdsn9f0yznskhqn1xzj9c";
   })
   (fetchNuGet {
     name = "System.IO.FileSystem";
@@ -870,14 +720,19 @@
     sha256 = "0z2dfrbra9i6y16mm9v1v6k47f0fm617vlb7s5iybjjsz6g1ilmw";
   })
   (fetchNuGet {
-    name = "System.IO.FileSystem.Primitives";
-    version = "4.0.1";
-    sha256 = "1s0mniajj3lvbyf7vfb5shp4ink5yibsx945k6lvxa96r8la1612";
+    name = "System.IO";
+    version = "4.1.0";
+    sha256 = "1g0yb8p11vfd0kbkyzlfsbsp5z44lwsvyc0h3dpw6vqnbi035ajp";
   })
   (fetchNuGet {
-    name = "System.IO.FileSystem.Primitives";
+    name = "System.IO";
     version = "4.3.0";
-    sha256 = "0j6ndgglcf4brg2lz4wzsh1av1gh8xrzdsn9f0yznskhqn1xzj9c";
+    sha256 = "05l9qdrzhm4s5dixmx68kxwif4l99ll5gqmh7rqgw554fx0agv5f";
+  })
+  (fetchNuGet {
+    name = "System.Linq.Expressions";
+    version = "4.1.0";
+    sha256 = "1gpdxl6ip06cnab7n3zlcg6mqp7kknf73s8wjinzi4p0apw82fpg";
   })
   (fetchNuGet {
     name = "System.Linq";
@@ -890,14 +745,9 @@
     sha256 = "1w0gmba695rbr80l1k2h4mrwzbzsyfl2z4klmpbsvsg5pm4a56s7";
   })
   (fetchNuGet {
-    name = "System.Linq.Expressions";
-    version = "4.1.0";
-    sha256 = "1gpdxl6ip06cnab7n3zlcg6mqp7kknf73s8wjinzi4p0apw82fpg";
-  })
-  (fetchNuGet {
     name = "System.Management";
-    version = "4.7.0";
-    sha256 = "0aw61jl6l78liiq04afxplz0ad5qbyg6vmyjaqrlnrv7whb58n66";
+    version = "5.0.0";
+    sha256 = "09hyv3p0zd549577clydlb2szl84m4gvdjnsry73n8b12ja7d75s";
   })
   (fetchNuGet {
     name = "System.Net.Http";
@@ -925,46 +775,21 @@
     sha256 = "05kji1mv4sl75iwmc613p873145nynm02xiajx8pn0h2kx53d23s";
   })
   (fetchNuGet {
+    name = "System.Numerics.Vectors";
+    version = "4.5.0";
+    sha256 = "1kzrj37yzawf1b19jq0253rcs8hsq1l2q8g69d7ipnhzb0h97m59";
+  })
+  (fetchNuGet {
     name = "System.ObjectModel";
     version = "4.0.12";
     sha256 = "1sybkfi60a4588xn34nd9a58png36i0xr4y4v4kqpg8wlvy5krrj";
   })
   (fetchNuGet {
-    name = "System.Private.DataContractSerialization";
-    version = "4.1.1";
-    sha256 = "1xk9wvgzipssp1393nsg4n16zbr5481k03nkdlj954hzq5jkx89r";
-  })
-  (fetchNuGet {
-    name = "System.Private.Uri";
-    version = "4.0.1";
-    sha256 = "0k57qhawjysm4cpbfpc49kl4av7lji310kjcamkl23bwgij5ld9j";
-  })
-  (fetchNuGet {
     name = "System.Private.Uri";
     version = "4.3.0";
     sha256 = "04r1lkdnsznin0fj4ya1zikxiqr0h6r6a1ww2dsm60gqhdrf0mvx";
   })
   (fetchNuGet {
-    name = "System.Reflection";
-    version = "4.1.0";
-    sha256 = "1js89429pfw79mxvbzp8p3q93il6rdff332hddhzi5wqglc4gml9";
-  })
-  (fetchNuGet {
-    name = "System.Reflection";
-    version = "4.3.0";
-    sha256 = "0xl55k0mw8cd8ra6dxzh974nxif58s3k1rjv1vbd7gjbjr39j11m";
-  })
-  (fetchNuGet {
-    name = "System.Reflection.Emit";
-    version = "4.0.1";
-    sha256 = "0ydqcsvh6smi41gyaakglnv252625hf29f7kywy2c70nhii2ylqp";
-  })
-  (fetchNuGet {
-    name = "System.Reflection.Emit";
-    version = "4.3.0";
-    sha256 = "11f8y3qfysfcrscjpjym9msk7lsfxkk4fmz9qq95kn3jd0769f74";
-  })
-  (fetchNuGet {
     name = "System.Reflection.Emit.ILGeneration";
     version = "4.0.1";
     sha256 = "1pcd2ig6bg144y10w7yxgc9d22r7c7ww7qn1frdfwgxr24j9wvv0";
@@ -985,6 +810,16 @@
     sha256 = "0ql7lcakycrvzgi9kxz1b3lljd990az1x6c4jsiwcacrvimpib5c";
   })
   (fetchNuGet {
+    name = "System.Reflection.Emit";
+    version = "4.0.1";
+    sha256 = "0ydqcsvh6smi41gyaakglnv252625hf29f7kywy2c70nhii2ylqp";
+  })
+  (fetchNuGet {
+    name = "System.Reflection.Emit";
+    version = "4.3.0";
+    sha256 = "11f8y3qfysfcrscjpjym9msk7lsfxkk4fmz9qq95kn3jd0769f74";
+  })
+  (fetchNuGet {
     name = "System.Reflection.Extensions";
     version = "4.0.1";
     sha256 = "0m7wqwq0zqq9gbpiqvgk3sr92cbrw7cp3xn53xvw7zj6rz6fdirn";
@@ -995,11 +830,6 @@
     sha256 = "02bly8bdc98gs22lqsfx9xicblszr2yan7v2mmw3g7hy6miq5hwq";
   })
   (fetchNuGet {
-    name = "System.Reflection.Metadata";
-    version = "1.3.0";
-    sha256 = "1y5m6kryhjpqqm2g3h3b6bzig13wkiw954x3b7icqjm6xypm1x3b";
-  })
-  (fetchNuGet {
     name = "System.Reflection.Primitives";
     version = "4.0.1";
     sha256 = "1bangaabhsl4k9fg8khn83wm6yial8ik1sza7401621jc6jrym28";
@@ -1020,6 +850,16 @@
     sha256 = "0y2ssg08d817p0vdag98vn238gyrrynjdj4181hdg780sif3ykp1";
   })
   (fetchNuGet {
+    name = "System.Reflection";
+    version = "4.1.0";
+    sha256 = "1js89429pfw79mxvbzp8p3q93il6rdff332hddhzi5wqglc4gml9";
+  })
+  (fetchNuGet {
+    name = "System.Reflection";
+    version = "4.3.0";
+    sha256 = "0xl55k0mw8cd8ra6dxzh974nxif58s3k1rjv1vbd7gjbjr39j11m";
+  })
+  (fetchNuGet {
     name = "System.Resources.ResourceManager";
     version = "4.0.1";
     sha256 = "0b4i7mncaf8cnai85jv3wnw6hps140cxz8vylv2bik6wyzgvz7bi";
@@ -1030,14 +870,14 @@
     sha256 = "0sjqlzsryb0mg4y4xzf35xi523s4is4hz9q4qgdvlvgivl7qxn49";
   })
   (fetchNuGet {
-    name = "System.Runtime";
-    version = "4.1.0";
-    sha256 = "02hdkgk13rvsd6r9yafbwzss8kr55wnj8d5c7xjnp8gqrwc8sn0m";
+    name = "System.Runtime.CompilerServices.Unsafe";
+    version = "4.7.0";
+    sha256 = "16r6sn4czfjk8qhnz7bnqlyiaaszr0ihinb7mq9zzr1wba257r54";
   })
   (fetchNuGet {
-    name = "System.Runtime";
-    version = "4.3.0";
-    sha256 = "066ixvgbf2c929kgknshcxqj6539ax7b9m570cp8n179cpfkapz7";
+    name = "System.Runtime.CompilerServices.Unsafe";
+    version = "5.0.0-preview.7.20364.11";
+    sha256 = "19sl184f6rjhfsizq0vapysazd6yd66lf638rszvrdhqlsxssz2m";
   })
   (fetchNuGet {
     name = "System.Runtime.Extensions";
@@ -1060,16 +900,6 @@
     sha256 = "0sw2gfj2xr7sw9qjn0j3l9yw07x73lcs97p8xfc9w1x9h5g5m7i8";
   })
   (fetchNuGet {
-    name = "System.Runtime.InteropServices";
-    version = "4.1.0";
-    sha256 = "01kxqppx3dr3b6b286xafqilv4s2n0gqvfgzfd4z943ga9i81is1";
-  })
-  (fetchNuGet {
-    name = "System.Runtime.InteropServices";
-    version = "4.3.0";
-    sha256 = "00hywrn4g7hva1b2qri2s6rabzwgxnbpw9zfxmz28z09cpwwgh7j";
-  })
-  (fetchNuGet {
     name = "System.Runtime.InteropServices.RuntimeInformation";
     version = "4.0.0";
     sha256 = "0glmvarf3jz5xh22iy3w9v3wyragcm4hfdr17v90vs7vcrm7fgp6";
@@ -1080,9 +910,14 @@
     sha256 = "0q18r1sh4vn7bvqgd6dmqlw5v28flbpj349mkdish2vjyvmnb2ii";
   })
   (fetchNuGet {
-    name = "System.Runtime.Loader";
-    version = "4.0.0";
-    sha256 = "0lpfi3psqcp6zxsjk2qyahal7zaawviimc8lhrlswhip2mx7ykl0";
+    name = "System.Runtime.InteropServices";
+    version = "4.1.0";
+    sha256 = "01kxqppx3dr3b6b286xafqilv4s2n0gqvfgzfd4z943ga9i81is1";
+  })
+  (fetchNuGet {
+    name = "System.Runtime.InteropServices";
+    version = "4.3.0";
+    sha256 = "00hywrn4g7hva1b2qri2s6rabzwgxnbpw9zfxmz28z09cpwwgh7j";
   })
   (fetchNuGet {
     name = "System.Runtime.Numerics";
@@ -1090,24 +925,29 @@
     sha256 = "1y308zfvy0l5nrn46mqqr4wb4z1xk758pkk8svbz8b5ij7jnv4nn";
   })
   (fetchNuGet {
-    name = "System.Runtime.Serialization.Json";
-    version = "4.0.2";
-    sha256 = "08ypbzs0sb302ga04ds5b2wxa2gg0q50zpa0nvc87ipjhs0v66dn";
-  })
-  (fetchNuGet {
     name = "System.Runtime.Serialization.Primitives";
     version = "4.1.1";
     sha256 = "042rfjixknlr6r10vx2pgf56yming8lkjikamg3g4v29ikk78h7k";
   })
   (fetchNuGet {
+    name = "System.Runtime";
+    version = "4.1.0";
+    sha256 = "02hdkgk13rvsd6r9yafbwzss8kr55wnj8d5c7xjnp8gqrwc8sn0m";
+  })
+  (fetchNuGet {
+    name = "System.Runtime";
+    version = "4.3.0";
+    sha256 = "066ixvgbf2c929kgknshcxqj6539ax7b9m570cp8n179cpfkapz7";
+  })
+  (fetchNuGet {
     name = "System.Security.AccessControl";
     version = "4.5.0";
     sha256 = "1wvwanz33fzzbnd2jalar0p0z3x0ba53vzx1kazlskp7pwyhlnq0";
   })
   (fetchNuGet {
     name = "System.Security.AccessControl";
-    version = "4.7.0";
-    sha256 = "0n0k0w44flkd8j0xw7g3g3vhw7dijfm51f75xkm1qxnbh4y45mpz";
+    version = "5.0.0";
+    sha256 = "17n3lrrl6vahkqmhlpn3w20afgz09n7i6rv0r3qypngwi7wqdr5r";
   })
   (fetchNuGet {
     name = "System.Security.Claims";
@@ -1150,11 +990,6 @@
     sha256 = "0clg1bv55mfv5dq00m19cp634zx6inm31kf8ppbq1jgyjf2185dh";
   })
   (fetchNuGet {
-    name = "System.Security.Principal";
-    version = "4.3.0";
-    sha256 = "12cm2zws06z4lfc4dn31iqv7072zyi4m910d4r6wm8yx85arsfxf";
-  })
-  (fetchNuGet {
     name = "System.Security.Principal.Windows";
     version = "4.3.0";
     sha256 = "00a0a7c40i3v4cb20s2cmh9csb5jv2l0frvnlzyfxh848xalpdwr";
@@ -1166,18 +1001,13 @@
   })
   (fetchNuGet {
     name = "System.Security.Principal.Windows";
-    version = "4.7.0";
-    sha256 = "1a56ls5a9sr3ya0nr086sdpa9qv0abv31dd6fp27maqa9zclqq5d";
-  })
-  (fetchNuGet {
-    name = "System.Text.Encoding";
-    version = "4.0.11";
-    sha256 = "1dyqv0hijg265dwxg6l7aiv74102d6xjiwplh2ar1ly6xfaa4iiw";
+    version = "5.0.0";
+    sha256 = "1mpk7xj76lxgz97a5yg93wi8lj0l8p157a5d50mmjy3gbz1904q8";
   })
   (fetchNuGet {
-    name = "System.Text.Encoding";
+    name = "System.Security.Principal";
     version = "4.3.0";
-    sha256 = "1f04lkir4iladpp51sdgmis9dj4y8v08cka0mbmsy0frc9a4gjqr";
+    sha256 = "12cm2zws06z4lfc4dn31iqv7072zyi4m910d4r6wm8yx85arsfxf";
   })
   (fetchNuGet {
     name = "System.Text.Encoding.Extensions";
@@ -1190,6 +1020,16 @@
     sha256 = "11q1y8hh5hrp5a3kw25cb6l00v5l5dvirkz8jr3sq00h1xgcgrxy";
   })
   (fetchNuGet {
+    name = "System.Text.Encoding";
+    version = "4.0.11";
+    sha256 = "1dyqv0hijg265dwxg6l7aiv74102d6xjiwplh2ar1ly6xfaa4iiw";
+  })
+  (fetchNuGet {
+    name = "System.Text.Encoding";
+    version = "4.3.0";
+    sha256 = "1f04lkir4iladpp51sdgmis9dj4y8v08cka0mbmsy0frc9a4gjqr";
+  })
+  (fetchNuGet {
     name = "System.Text.RegularExpressions";
     version = "4.1.0";
     sha256 = "1mw7vfkkyd04yn2fbhm38msk7dz2xwvib14ygjsb8dq2lcvr18y7";
@@ -1200,24 +1040,19 @@
     sha256 = "1bgq51k7fwld0njylfn7qc5fmwrk2137gdq7djqdsw347paa9c2l";
   })
   (fetchNuGet {
-    name = "System.Threading";
-    version = "4.0.11";
-    sha256 = "19x946h926bzvbsgj28csn46gak2crv2skpwsx80hbgazmkgb1ls";
-  })
-  (fetchNuGet {
-    name = "System.Threading";
+    name = "System.Threading.Overlapped";
     version = "4.3.0";
-    sha256 = "0rw9wfamvhayp5zh3j7p1yfmx9b5khbf4q50d8k5rk993rskfd34";
+    sha256 = "1nahikhqh9nk756dh8p011j36rlcp1bzz3vwi2b4m1l2s3vz8idm";
   })
   (fetchNuGet {
-    name = "System.Threading.Overlapped";
-    version = "4.0.1";
-    sha256 = "0fi79az3vmqdp9mv3wh2phblfjls89zlj6p9nc3i9f6wmfarj188";
+    name = "System.Threading.Tasks.Extensions";
+    version = "4.0.0";
+    sha256 = "1cb51z062mvc2i8blpzmpn9d9mm4y307xrwi65di8ri18cz5r1zr";
   })
   (fetchNuGet {
-    name = "System.Threading.Overlapped";
+    name = "System.Threading.Tasks.Extensions";
     version = "4.3.0";
-    sha256 = "1nahikhqh9nk756dh8p011j36rlcp1bzz3vwi2b4m1l2s3vz8idm";
+    sha256 = "1xxcx2xh8jin360yjwm4x4cf5y3a2bwpn2ygkfkwkicz7zk50s2z";
   })
   (fetchNuGet {
     name = "System.Threading.Tasks";
@@ -1230,32 +1065,12 @@
     sha256 = "134z3v9abw3a6jsw17xl3f6hqjpak5l682k2vz39spj4kmydg6k7";
   })
   (fetchNuGet {
-    name = "System.Threading.Tasks.Extensions";
-    version = "4.0.0";
-    sha256 = "1cb51z062mvc2i8blpzmpn9d9mm4y307xrwi65di8ri18cz5r1zr";
-  })
-  (fetchNuGet {
-    name = "System.Threading.Tasks.Extensions";
-    version = "4.3.0";
-    sha256 = "1xxcx2xh8jin360yjwm4x4cf5y3a2bwpn2ygkfkwkicz7zk50s2z";
-  })
-  (fetchNuGet {
-    name = "System.Threading.Thread";
-    version = "4.0.0";
-    sha256 = "1gxxm5fl36pjjpnx1k688dcw8m9l7nmf802nxis6swdaw8k54jzc";
-  })
-  (fetchNuGet {
     name = "System.Threading.Thread";
     version = "4.3.0";
     sha256 = "0y2xiwdfcph7znm2ysxanrhbqqss6a3shi1z3c779pj2s523mjx4";
   })
   (fetchNuGet {
     name = "System.Threading.ThreadPool";
-    version = "4.0.10";
-    sha256 = "0fdr61yjcxh5imvyf93n2m3n5g9pp54bnw2l1d2rdl9z6dd31ypx";
-  })
-  (fetchNuGet {
-    name = "System.Threading.ThreadPool";
     version = "4.3.0";
     sha256 = "027s1f4sbx0y1xqw2irqn6x161lzj8qwvnh2gn78ciiczdv10vf1";
   })
@@ -1265,6 +1080,16 @@
     sha256 = "15n54f1f8nn3mjcjrlzdg6q3520571y012mx7v991x2fvp73lmg6";
   })
   (fetchNuGet {
+    name = "System.Threading";
+    version = "4.0.11";
+    sha256 = "19x946h926bzvbsgj28csn46gak2crv2skpwsx80hbgazmkgb1ls";
+  })
+  (fetchNuGet {
+    name = "System.Threading";
+    version = "4.3.0";
+    sha256 = "0rw9wfamvhayp5zh3j7p1yfmx9b5khbf4q50d8k5rk993rskfd34";
+  })
+  (fetchNuGet {
     name = "System.Xml.ReaderWriter";
     version = "4.0.11";
     sha256 = "0c6ky1jk5ada9m94wcadih98l6k1fvf6vi7vhn1msjixaha419l5";
@@ -1281,37 +1106,17 @@
   })
   (fetchNuGet {
     name = "System.Xml.XmlDocument";
-    version = "4.0.1";
-    sha256 = "0ihsnkvyc76r4dcky7v3ansnbyqjzkbyyia0ir5zvqirzan0bnl1";
-  })
-  (fetchNuGet {
-    name = "System.Xml.XmlDocument";
     version = "4.3.0";
     sha256 = "0bmz1l06dihx52jxjr22dyv5mxv6pj4852lx68grjm7bivhrbfwi";
   })
   (fetchNuGet {
-    name = "System.Xml.XmlSerializer";
-    version = "4.0.11";
-    sha256 = "01nzc3gdslw90qfykq4qzr2mdnqxjl4sj0wp3fixiwdmlmvpib5z";
-  })
-  (fetchNuGet {
-    name = "System.Xml.XPath";
-    version = "4.0.1";
-    sha256 = "0fjqgb6y66d72d5n8qq1h213d9nv2vi8mpv8p28j3m9rccmsh04m";
+    name = "System.Xml.XPath.XmlDocument";
+    version = "4.3.0";
+    sha256 = "1h9lh7qkp0lff33z847sdfjj8yaz98ylbnkbxlnsbflhj9xyfqrm";
   })
   (fetchNuGet {
     name = "System.Xml.XPath";
     version = "4.3.0";
     sha256 = "1cv2m0p70774a0sd1zxc8fm8jk3i5zk2bla3riqvi8gsm0r4kpci";
   })
-  (fetchNuGet {
-    name = "System.Xml.XPath.XmlDocument";
-    version = "4.0.1";
-    sha256 = "0l7yljgif41iv5g56l3nxy97hzzgck2a7rhnfnljhx9b0ry41bvc";
-  })
-  (fetchNuGet {
-    name = "System.Xml.XPath.XmlDocument";
-    version = "4.3.0";
-    sha256 = "1h9lh7qkp0lff33z847sdfjj8yaz98ylbnkbxlnsbflhj9xyfqrm";
-  })
 ]
diff --git a/pkgs/misc/emulators/ryujinx/log.patch b/pkgs/misc/emulators/ryujinx/log.patch
index d25e22fbd37..57e96e5c25c 100644
--- a/pkgs/misc/emulators/ryujinx/log.patch
+++ b/pkgs/misc/emulators/ryujinx/log.patch
@@ -1,13 +1,21 @@
-diff --git a/Ryujinx.Common/Configuration/LoggerModule.cs b/Ryujinx.Common/Configuration/LoggerModule.cs
-index 20c0fb46..ce933730 100644
---- a/Ryujinx.Common/Configuration/LoggerModule.cs
-+++ b/Ryujinx.Common/Configuration/LoggerModule.cs
-@@ -75,7 +75,7 @@ namespace Ryujinx.Configuration
+diff --git a/Ryujinx/Configuration/LoggerModule.cs b/Ryujinx/Configuration/LoggerModule.cs
+index 44631ea0..534576bc 100644
+--- a/Ryujinx/Configuration/LoggerModule.cs
++++ b/Ryujinx/Configuration/LoggerModule.cs
+@@ -1,6 +1,7 @@
+ using Ryujinx.Common;
+ using Ryujinx.Common.Logging;
+ using System;
++using System.IO;
+
+ namespace Ryujinx.Configuration
+ {
+@@ -74,7 +75,7 @@ namespace Ryujinx.Configuration
              if (e.NewValue)
              {
                  Logger.AddTarget(new AsyncLogTargetWrapper(
 -                    new FileLogTarget(AppDomain.CurrentDomain.BaseDirectory, "file"),
-+		      new FileLogTarget(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Ryujinx"), "file"),
++                    new FileLogTarget(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Ryujinx"), "file"),
                      1000,
                      AsyncLogTargetOverflowAction.Block
                  ));
diff --git a/pkgs/misc/emulators/ryujinx/fetch-deps.sh b/pkgs/misc/emulators/ryujinx/updater.sh
index ce9873a1692..a2f47baa067 100755
--- a/pkgs/misc/emulators/ryujinx/fetch-deps.sh
+++ b/pkgs/misc/emulators/ryujinx/updater.sh
@@ -1,10 +1,36 @@
-#!/usr/bin/env nix-shell
-#!nix-shell -i bash -p curl jq common-updater-scripts dotnet-sdk_3
+#! /usr/bin/env nix-shell
+#! nix-shell -i bash -p coreutils gnused curl common-updater-scripts nix-prefetch-git jq dotnet-sdk_5
 set -eo pipefail
 cd "$(dirname "${BASH_SOURCE[0]}")"
 
 deps_file="$(realpath "./deps.nix")"
 
+nix-prefetch-git https://github.com/ryujinx/ryujinx --quiet > repo_info
+new_hash="$(jq -r ".sha256" < repo_info)"
+new_rev="$(jq -r ".rev" < repo_info)"
+rm repo_info
+
+new_version="$(
+    curl -s https://ci.appveyor.com/api/projects/gdkchan/ryujinx/branch/master \
+        | grep -Po '"version":.*?[^\\]",' \
+        | sed  's/"version":"\(.*\)",/\1/'
+    )"
+old_version="$(sed -nE 's/\s*version = "(.*)".*/\1/p' ./default.nix)"
+
+if [[ "$new_version" == "$old_version" ]]; then
+  echo "Already up to date! Doing nothing"
+  exit 0
+fi
+
+cd ../../../..
+update-source-version ryujinx "$new_version" "$new_hash" --rev="$new_rev"
+
+store_src="$(nix-build . -A ryujinx.src --no-out-link)"
+src="$(mktemp -d /tmp/ryujinx-src.XXX)"
+cp -rT "$store_src" "$src"
+chmod -R +w "$src"
+pushd "$src"
+
 # Setup empty nuget package folder to force reinstall.
 mkdir ./nuget_tmp.packages
 cat >./nuget_tmp.config <<EOF
diff --git a/pkgs/misc/emulators/sameboy/default.nix b/pkgs/misc/emulators/sameboy/default.nix
new file mode 100644
index 00000000000..ee91a010df7
--- /dev/null
+++ b/pkgs/misc/emulators/sameboy/default.nix
@@ -0,0 +1,48 @@
+{ lib, stdenv, fetchFromGitHub, gtk3, rgbds, SDL2, wrapGAppsHook, glib }:
+
+stdenv.mkDerivation rec {
+  pname = "sameboy";
+  version = "0.14.2";
+
+  src = fetchFromGitHub {
+    owner = "LIJI32";
+    repo = "SameBoy";
+    rev = "v${version}";
+    sha256 = "sha256-VGyB0Em9VFU1Z1K2XfbS9wGs6gZ8/eH/FiaFAKnFdaA=";
+  };
+
+  enableParallelBuilding = true;
+  # glib and wrapGAppsHook are needed to make the Open ROM menu work.
+  nativeBuildInputs = [ rgbds glib wrapGAppsHook ];
+  buildInputs = [ SDL2 ];
+
+  makeFlags = [
+    "CONF=release"
+    "FREEDESKTOP=true"
+    "PREFIX=$(out)"
+  ];
+
+  postPatch = ''
+    substituteInPlace OpenDialog/gtk.c \
+      --replace '"libgtk-3.so"' '"${gtk3}/lib/libgtk-3.so"'
+  '';
+
+  meta = with lib; {
+    homepage = "https://sameboy.github.io";
+    description = "Game Boy, Game Boy Color, and Super Game Boy emulator";
+
+    longDescription = ''
+      SameBoy is a user friendly Game Boy, Game Boy Color and Super
+      Game Boy emulator for macOS, Windows and Unix-like platforms.
+      SameBoy is extremely accurate and includes a wide range of
+      powerful debugging features, making it ideal for both casual
+      players and developers. In addition to accuracy and developer
+      capabilities, SameBoy has all the features one would expect from
+      an emulator – from save states to scaling filters.
+    '';
+
+    license = licenses.mit;
+    maintainers = with maintainers; [ NieDzejkob ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/misc/emulators/simh/default.nix b/pkgs/misc/emulators/simh/default.nix
new file mode 100644
index 00000000000..1e939538cda
--- /dev/null
+++ b/pkgs/misc/emulators/simh/default.nix
@@ -0,0 +1,62 @@
+{ lib, stdenv
+, fetchFromGitHub
+, SDL2
+, SDL2_ttf
+, libpcap
+, vde2
+, pcre
+}:
+
+stdenv.mkDerivation rec {
+  pname = "simh";
+  version = "3.11-1";
+
+  src = fetchFromGitHub {
+    owner = "simh";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-65+YfOWpVXPeT64TZcSaWJY+ODQ0q/pwF9jb8xGdpIs=";
+  };
+
+  buildInputs = [ SDL2 SDL2_ttf libpcap vde2 pcre ];
+
+  dontConfigure = true;
+
+  makeFlags = [ "GCC=${stdenv.cc.targetPrefix}cc" "CC_STD=-std=c99" "LDFLAGS=-lm" ];
+
+  preInstall = ''
+    install -d ${placeholder "out"}/bin
+    install -d ${placeholder "out"}/share/simh
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    for i in BIN/*; do
+      install -D $i ${placeholder "out"}/bin
+    done
+    for i in VAX/*bin; do
+      install -D $i ${placeholder "out"}/share/simh
+    done
+    runHook postInstall
+  '';
+
+  postInstall = ''
+    (cd $out/bin; for i in *; do ln -s $i simh-$i; done)
+  '';
+
+  meta = with lib; {
+    homepage = "http://simh.trailing-edge.com/";
+    description = "A collection of simulators of historic hardware";
+    longDescription = ''
+      SimH (History Simulator) is a collection of simulators for historically
+      significant or just plain interesting computer hardware and software from
+      the past. The goal of the project is to create highly portable system
+      simulators and to publish them as freeware on the Internet, with freely
+      available copies of significant or representative software.
+    '';
+    license = with licenses; mit;
+    maintainers = with maintainers; [ AndersonTorres ];
+    platforms = with platforms; unix;
+  };
+}
+# TODO: install documentation
diff --git a/pkgs/misc/emulators/simplenes/default.nix b/pkgs/misc/emulators/simplenes/default.nix
index d4805a62d76..d073098507e 100644
--- a/pkgs/misc/emulators/simplenes/default.nix
+++ b/pkgs/misc/emulators/simplenes/default.nix
@@ -1,4 +1,4 @@
-{ stdenv
+{ lib, stdenv
 , fetchFromGitHub
 , cmake
 , sfml
@@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
     cp ./SimpleNES $out/bin
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/amhndu/SimpleNES";
     description = "An NES emulator written in C++";
     license = licenses.gpl3;
diff --git a/pkgs/misc/emulators/snes9x-gtk/default.nix b/pkgs/misc/emulators/snes9x-gtk/default.nix
index f33af245f71..8cebc664bca 100644
--- a/pkgs/misc/emulators/snes9x-gtk/default.nix
+++ b/pkgs/misc/emulators/snes9x-gtk/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, meson, ninja, pkgconfig, wrapGAppsHook
+{ lib, stdenv, fetchFromGitHub, meson, ninja, pkg-config, wrapGAppsHook
 , SDL2, zlib, gtk3, libxml2, libXv, epoxy, minizip, pulseaudio, portaudio }:
 
 stdenv.mkDerivation rec {
@@ -12,14 +12,13 @@ stdenv.mkDerivation rec {
     sha256 = "12hpn7zcdvp30ldpw2zf115yjqv55n1ldjbids7vx0lvbpr06dm1";
   };
 
-  enableParallelBuilding = true;
-  nativeBuildInputs = [ meson ninja pkgconfig wrapGAppsHook ];
+  nativeBuildInputs = [ meson ninja pkg-config wrapGAppsHook ];
   buildInputs = [ SDL2 zlib gtk3 libxml2 libXv epoxy minizip pulseaudio portaudio ];
 
   preConfigure = "cd gtk";
 
-  meta = with stdenv.lib; {
-    homepage = "http://www.snes9x.com";
+  meta = with lib; {
+    homepage = "https://www.snes9x.com";
     description = "Super Nintendo Entertainment System (SNES) emulator";
 
     longDescription = ''
@@ -29,7 +28,8 @@ stdenv.mkDerivation rec {
       includes some real gems that were only ever released in Japan.
     '';
 
-    license = licenses.lgpl2;
+    # see https://github.com/snes9xgit/snes9x/blob/master/LICENSE for exact details
+    license = licenses.unfreeRedistributable;
     maintainers = with maintainers; [ qknight ];
     platforms = platforms.linux;
   };
diff --git a/pkgs/misc/emulators/stella/default.nix b/pkgs/misc/emulators/stella/default.nix
index 4c657fc30bb..ff90ae8908b 100644
--- a/pkgs/misc/emulators/stella/default.nix
+++ b/pkgs/misc/emulators/stella/default.nix
@@ -1,35 +1,42 @@
-{ stdenv, fetchFromGitHub, pkgconfig, SDL2 }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, pkg-config
+, SDL2
+}:
 
-with stdenv.lib;
 stdenv.mkDerivation rec {
-
   pname = "stella";
-  version = "6.2.1";
+  version = "6.5.2";
 
   src = fetchFromGitHub {
     owner = "stella-emu";
-    repo = "stella";
+    repo = pname;
     rev = version;
-    sha256 = "1yhszswwg217x8d2qlcasi9l97y1z6w1pgliys4p27zv5b1ygy7p";
+    hash = "sha256-CDLMOqSgRx75tjBoLycis/cckCNwgdlb9TRBlD3Dd04=";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ SDL2 ];
-  
+
   enableParallelBuilding = true;
 
-  meta = {
+  meta = with lib;{
+    homepage = "https://stella-emu.github.io/";
     description = "An open-source Atari 2600 VCS emulator";
     longDescription = ''
-    Stella is a multi-platform Atari 2600 VCS emulator released under
-    the GNU General Public License (GPL). Stella was originally
-    developed for Linux by Bradford W. Mott, and is currently
-    maintained by Stephen Anthony.
-    As of its 3.5 release, Stella is officially donationware. 
+      Stella is a multi-platform Atari 2600 VCS emulator released under the GNU
+      General Public License (GPL). Stella was originally developed for Linux by
+      Bradford W. Mott, and is currently maintained by Stephen Anthony. Since
+      its original release several people have joined the development team to
+      port Stella to other operating systems such as AcornOS, AmigaOS, DOS,
+      FreeBSD, IRIX, Linux, OS/2, MacOS, Unix, and Windows. The development team
+      is working hard to perfect the emulator and we hope you enjoy our effort.
+
+      As of its 3.5 release, Stella is officially donationware.
     '';
-    homepage = "http://stella-emu.github.io/";
-    license = licenses.gpl2;
-    maintainers = [ maintainers.AndersonTorres ];
-    platforms = platforms.linux;
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ AndersonTorres ];
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/misc/emulators/termtekst/default.nix b/pkgs/misc/emulators/termtekst/default.nix
index 8186aba1ee5..56f56cffad9 100644
--- a/pkgs/misc/emulators/termtekst/default.nix
+++ b/pkgs/misc/emulators/termtekst/default.nix
@@ -21,7 +21,7 @@ python3Packages.buildPythonApplication rec {
     '';
 
   meta = with lib; {
-    description = ''Console NOS Teletekst viewer in Python'';
+    description = "Console NOS Teletekst viewer in Python";
     longDescription = ''
       Small Python app using curses to display Dutch NOS Teletekst on
       the Linux console. The original Teletekst font includes 2x6
diff --git a/pkgs/misc/emulators/tilem/default.nix b/pkgs/misc/emulators/tilem/default.nix
new file mode 100644
index 00000000000..bde706e2304
--- /dev/null
+++ b/pkgs/misc/emulators/tilem/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, fetchurl
+, lib
+, pkg-config
+, glib
+, gtk2
+, libticonv
+, libtifiles2
+, libticables2
+, libticalcs2
+}:
+
+stdenv.mkDerivation rec {
+  pname = "tilem";
+  version = "2.0";
+  src = fetchurl {
+    url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.bz2";
+    sha256 = "1ba38xzhp3yf21ip3cgql6jzy49jc34sfnjsl4syxyrd81d269zw";
+  };
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ glib gtk2 libticonv libtifiles2 libticables2 libticalcs2 ];
+  NIX_CFLAGS_COMPILE = [ "-lm" ];
+  meta = with lib; {
+    homepage = "http://lpg.ticalc.org/prj_tilem/";
+    description = "Emulator and debugger for Texas Instruments Z80-based graphing calculators";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ siraben luc65r ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/pkgs/misc/emulators/uae/default.nix b/pkgs/misc/emulators/uae/default.nix
index 7b52430aa01..803efe5149c 100644
--- a/pkgs/misc/emulators/uae/default.nix
+++ b/pkgs/misc/emulators/uae/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, pkgconfig, gtk2, alsaLib, SDL}:
+{lib, stdenv, fetchurl, pkg-config, gtk2, alsa-lib, SDL}:
 
 stdenv.mkDerivation rec {
   name = "uae-0.8.29";
@@ -10,17 +10,17 @@ stdenv.mkDerivation rec {
 
   configureFlags = [ "--with-sdl" "--with-sdl-sound" "--with-sdl-gfx" "--with-alsa" ];
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ gtk2 alsaLib SDL ];
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ gtk2 alsa-lib SDL ];
 
   hardeningDisable = [ "format" ];
   LDFLAGS = [ "-lm" ];
 
   meta = {
     description = "Ultimate/Unix/Unusable Amiga Emulator";
-    license = stdenv.lib.licenses.gpl2Plus;
+    license = lib.licenses.gpl2Plus;
     homepage = "http://web.archive.org/web/20130901222855/http://www.amigaemulator.org/";
-    maintainers = [ stdenv.lib.maintainers.sander ];
-    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ lib.maintainers.sander ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/misc/emulators/vbam/default.nix b/pkgs/misc/emulators/vbam/default.nix
index 2aae72b3e20..bb5e7cea4e0 100644
--- a/pkgs/misc/emulators/vbam/default.nix
+++ b/pkgs/misc/emulators/vbam/default.nix
@@ -1,12 +1,13 @@
-{ stdenv
+{ lib, stdenv
 , cairo
 , cmake
 , fetchFromGitHub
+, fetchpatch
 , ffmpeg
 , gettext
 , libGLU, libGL
 , openal
-, pkgconfig
+, pkg-config
 , SDL2
 , sfml
 , zip
@@ -23,7 +24,7 @@ stdenv.mkDerivation rec {
     sha256 = "1kgpbvng3c12ws0dy92zc0azd94h0i3j4vm7b67zc8mi3pqsppdg";
   };
 
-  nativeBuildInputs = [ cmake pkgconfig ];
+  nativeBuildInputs = [ cmake pkg-config ];
 
   buildInputs = [
     cairo
@@ -46,12 +47,21 @@ stdenv.mkDerivation rec {
     "-DENABLE_SDL='true'"
   ];
 
-  meta =  with stdenv.lib; {
+  patches = [
+    (fetchpatch {
+      # https://github.com/visualboyadvance-m/visualboyadvance-m/pull/793
+      name = "fix-build-SDL-2.0.14.patch";
+      url = "https://github.com/visualboyadvance-m/visualboyadvance-m/commit/619a5cce683ec4b1d03f08f316ba276d8f8cd824.patch";
+      sha256 = "099cbzgq4r9g83bvdra8a0swfl1vpfng120wf4q7h6vs0n102rk9";
+    })
+  ];
+
+  meta =  with lib; {
     description = "A merge of the original Visual Boy Advance forks";
     license = licenses.gpl2;
     maintainers = with maintainers; [ lassulus ];
     homepage = "https://vba-m.com/";
-    platforms = stdenv.lib.platforms.linux;
+    platforms = lib.platforms.linux;
     badPlatforms = [ "aarch64-linux" ];
   };
 }
diff --git a/pkgs/misc/emulators/vice/default.nix b/pkgs/misc/emulators/vice/default.nix
index c80d820059f..f8b9e5906f3 100644
--- a/pkgs/misc/emulators/vice/default.nix
+++ b/pkgs/misc/emulators/vice/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchurl, bison, flex, perl, libpng, giflib, libjpeg, alsaLib, readline, libGLU, libGL, libXaw
-, pkgconfig, gtk2, SDL, autoreconfHook, makeDesktopItem
+{ lib, stdenv, fetchurl, bison, flex, perl, libpng, giflib, libjpeg, alsa-lib, readline, libGLU, libGL, libXaw
+, pkg-config, gtk2, SDL, autoreconfHook, makeDesktopItem
 }:
 
 stdenv.mkDerivation rec {
@@ -10,8 +10,8 @@ stdenv.mkDerivation rec {
     sha256 = "0h0jbml02s2a36hr78dxv1zshmfhxp1wadpcdl09aq416fb1bf1y";
   };
 
-  buildInputs = [ bison flex perl libpng giflib libjpeg alsaLib readline libGLU libGL
-    pkgconfig gtk2 SDL autoreconfHook libXaw ];
+  buildInputs = [ bison flex perl libpng giflib libjpeg alsa-lib readline libGLU libGL
+    pkg-config gtk2 SDL autoreconfHook libXaw ];
   dontDisableStatic = true;
   configureFlags = [ "--enable-fullscreen --enable-gnomeui" ];
 
@@ -46,8 +46,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "Commodore 64, 128 and other emulators";
     homepage = "http://www.viceteam.org";
-    license = stdenv.lib.licenses.gpl2Plus;
-    maintainers = [ stdenv.lib.maintainers.sander ];
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.gpl2Plus;
+    maintainers = [ lib.maintainers.sander ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/misc/emulators/wine/base.nix b/pkgs/misc/emulators/wine/base.nix
index 025158b0717..0023d9878b3 100644
--- a/pkgs/misc/emulators/wine/base.nix
+++ b/pkgs/misc/emulators/wine/base.nix
@@ -1,7 +1,9 @@
 { stdenv, lib, pkgArches, callPackage,
-  name, version, src, monos, geckos, platforms,
-  pkgconfig, fontforge, makeWrapper, flex, bison,
+  name, version, src, mingwGccs, monos, geckos, platforms,
+  bison, flex, fontforge, makeWrapper, pkg-config,
+  autoconf, hexdump, perl,
   supportFlags,
+  patches,
   buildScript ? null, configureFlags ? []
 }:
 
@@ -9,18 +11,32 @@ with import ./util.nix { inherit lib; };
 
 let
   vkd3d = callPackage ./vkd3d.nix {};
+  patches' = patches;
 in
 stdenv.mkDerivation ((lib.optionalAttrs (buildScript != null) {
   builder = buildScript;
 }) // rec {
   inherit name src configureFlags;
 
+  # Fixes "Compiler cannot create executables" building wineWow with mingwSupport
+  strictDeps = true;
+
   nativeBuildInputs = [
-    pkgconfig fontforge makeWrapper flex bison
-  ];
+    bison
+    flex
+    fontforge
+    makeWrapper
+    pkg-config
+
+    # Required by staging
+    autoconf
+    hexdump
+    perl
+  ]
+  ++ lib.optionals supportFlags.mingwSupport mingwGccs;
 
   buildInputs = toBuildInputs pkgArches (with supportFlags; (pkgs:
-  [ pkgs.freetype ]
+  [ pkgs.freetype pkgs.perl pkgs.xorg.libX11 ]
   ++ lib.optional stdenv.isLinux         pkgs.libcap
   ++ lib.optional pngSupport             pkgs.libpng
   ++ lib.optional jpegSupport            pkgs.libjpeg
@@ -43,7 +59,7 @@ stdenv.mkDerivation ((lib.optionalAttrs (buildScript != null) {
   ++ lib.optional gphoto2Support         pkgs.libgphoto2
   ++ lib.optional ldapSupport            pkgs.openldap
   ++ lib.optional fontconfigSupport      pkgs.fontconfig
-  ++ lib.optional alsaSupport            pkgs.alsaLib
+  ++ lib.optional alsaSupport            pkgs.alsa-lib
   ++ lib.optional pulseaudioSupport      pkgs.libpulseaudio
   ++ lib.optional xineramaSupport        pkgs.xorg.libXinerama
   ++ lib.optional udevSupport            pkgs.udev
@@ -65,13 +81,9 @@ stdenv.mkDerivation ((lib.optionalAttrs (buildScript != null) {
   ])
   ++ lib.optionals stdenv.isLinux  (with pkgs.xorg; [
      libXi libXcursor libXrandr libXrender libXxf86vm libXcomposite libXext
-  ])
-  ++ [ pkgs.xorg.libX11 pkgs.perl ]));
+  ])));
 
-  patches = [
-    # Also look for root certificates at $NIX_SSL_CERT_FILE
-    ./cert-path.patch
-  ];
+  patches = [ ] ++ patches';
 
   # Wine locates a lot of libraries dynamically through dlopen().  Add
   # them to the RPATH so that the user doesn't have to set them in
@@ -87,13 +99,6 @@ stdenv.mkDerivation ((lib.optionalAttrs (buildScript != null) {
   # elements specified above.
   dontPatchELF = true;
 
-  # Disable stripping to avoid breaking placeholder DLLs/EXEs.
-  # Symptoms of broken placeholders are: when the wineprefix is created
-  # drive_c/windows/system32 will only contain a few files instead of
-  # hundreds, there will be an error about winemenubuilder and MountMgr
-  # on startup of Wine, and the Drives tab in winecfg will show an error.
-  dontStrip = true;
-
   ## FIXME
   # Add capability to ignore known failing tests
   # and enable doCheck
@@ -136,14 +141,16 @@ stdenv.mkDerivation ((lib.optionalAttrs (buildScript != null) {
   # https://bugs.winehq.org/show_bug.cgi?id=43530
   # https://github.com/NixOS/nixpkgs/issues/31989
   hardeningDisable = [ "bindnow" ]
-    ++ lib.optional (stdenv.hostPlatform.isDarwin) "fortify";
+    ++ lib.optional (stdenv.hostPlatform.isDarwin) "fortify"
+    ++ lib.optional (supportFlags.mingwSupport) "format";
 
   passthru = { inherit pkgArches; };
   meta = {
     inherit version platforms;
     homepage = "https://www.winehq.org/";
-    license = with stdenv.lib.licenses; [ lgpl21Plus ];
+    license = with lib.licenses; [ lgpl21Plus ];
     description = "An Open Source implementation of the Windows API on top of X, OpenGL, and Unix";
-    maintainers = with stdenv.lib.maintainers; [ avnik raskin bendlas ];
+    maintainers = with lib.maintainers; [ avnik raskin bendlas ];
+    mainProgram = "wine";
   };
 })
diff --git a/pkgs/misc/emulators/wine/cert-path.patch b/pkgs/misc/emulators/wine/cert-path.patch
index da01a477810..18a90e1a9af 100644
--- a/pkgs/misc/emulators/wine/cert-path.patch
+++ b/pkgs/misc/emulators/wine/cert-path.patch
@@ -1,24 +1,23 @@
-diff --git a/dlls/crypt32/rootstore.c b/dlls/crypt32/rootstore.c
-index f795181..fb4926a 100644
---- a/dlls/crypt32/rootstore.c
-+++ b/dlls/crypt32/rootstore.c
-@@ -18,6 +18,7 @@
- #include "config.h"
+diff --git a/dlls/crypt32/unixlib.c b/dlls/crypt32/unixlib.c
+index 035f2d936bb..959716d727a 100644
+--- a/dlls/crypt32/unixlib.c
++++ b/dlls/crypt32/unixlib.c
+@@ -24,6 +24,7 @@
+ #include "wine/port.h"
+ 
  #include <stdarg.h>
- #include <stdio.h>
-+#include <stdlib.h> /* getenv */
- #include <sys/types.h>
- #ifdef HAVE_SYS_STAT_H
- #include <sys/stat.h>
-@@ -916,6 +917,11 @@ static void read_trusted_roots_from_known_locations(HCERTSTORE store)
++#include <stdlib.h>
+ #include <dirent.h>
+ #include <fcntl.h>
+ #include <unistd.h>
+@@ -605,6 +606,10 @@ static void load_root_certs(void)
  
-         for (i = 0; !ret && i < ARRAY_SIZE(CRYPT_knownLocations); i++)
-             ret = import_certs_from_path(CRYPT_knownLocations[i], from, TRUE);
-+
-+        char *nix_cert_file = getenv("NIX_SSL_CERT_FILE");
-+        if (nix_cert_file != NULL)
-+            ret = import_certs_from_path(nix_cert_file, from, TRUE);
+     for (i = 0; i < ARRAY_SIZE(CRYPT_knownLocations) && list_empty(&root_cert_list); i++)
+         import_certs_from_path( CRYPT_knownLocations[i], TRUE );
 +
-         check_and_store_certs(from, store);
-     }
-     CertCloseStore(from, 0);
++    char *nix_cert_file = getenv("NIX_SSL_CERT_FILE");
++    if (nix_cert_file != NULL)
++        import_certs_from_path(nix_cert_file, TRUE);
+ }
+ 
+ static BOOL WINAPI enum_root_certs( void *buffer, SIZE_T size, SIZE_T *needed )
diff --git a/pkgs/misc/emulators/wine/default.nix b/pkgs/misc/emulators/wine/default.nix
index 368e2845ca4..6def48b4f59 100644
--- a/pkgs/misc/emulators/wine/default.nix
+++ b/pkgs/misc/emulators/wine/default.nix
@@ -44,6 +44,7 @@
   sdlSupport ? false,
   faudioSupport ? false,
   vkd3dSupport ? false,
+  mingwSupport ? wineRelease != "stable",
 }:
 
 let wine-build = build: release:
@@ -56,7 +57,7 @@ let wine-build = build: release:
                   gsmSupport gphoto2Support ldapSupport fontconfigSupport alsaSupport
                   pulseaudioSupport xineramaSupport gtkSupport openclSupport xmlSupport tlsSupport
                   openglSupport gstreamerSupport udevSupport vulkanSupport sdlSupport faudioSupport
-                  vkd3dSupport;
+                  vkd3dSupport mingwSupport;
         };
       });
 
diff --git a/pkgs/misc/emulators/wine/packages.nix b/pkgs/misc/emulators/wine/packages.nix
index 3ea60e62c66..c4fec3360e1 100644
--- a/pkgs/misc/emulators/wine/packages.nix
+++ b/pkgs/misc/emulators/wine/packages.nix
@@ -1,4 +1,4 @@
-{ stdenv_32bit, lib, pkgs, pkgsi686Linux, callPackage,
+{ stdenv_32bit, lib, pkgs, pkgsi686Linux, pkgsCross, callPackage,
   wineRelease ? "stable",
   supportFlags
 }:
@@ -7,16 +7,18 @@ let src = lib.getAttr wineRelease (callPackage ./sources.nix {});
 in with src; {
   wine32 = pkgsi686Linux.callPackage ./base.nix {
     name = "wine-${version}";
-    inherit src version supportFlags;
+    inherit src version supportFlags patches;
     pkgArches = [ pkgsi686Linux ];
     geckos = [ gecko32 ];
+    mingwGccs = with pkgsCross; [ mingw32.buildPackages.gcc ];
     monos =  [ mono ];
     platforms = [ "i686-linux" "x86_64-linux" ];
   };
   wine64 = callPackage ./base.nix {
     name = "wine64-${version}";
-    inherit src version supportFlags;
+    inherit src version supportFlags patches;
     pkgArches = [ pkgs ];
+    mingwGccs = with pkgsCross; [ mingwW64.buildPackages.gcc ];
     geckos = [ gecko64 ];
     monos =  [ mono ];
     configureFlags = [ "--enable-win64" ];
@@ -24,10 +26,11 @@ in with src; {
   };
   wineWow = callPackage ./base.nix {
     name = "wine-wow-${version}";
-    inherit src version supportFlags;
+    inherit src version supportFlags patches;
     stdenv = stdenv_32bit;
     pkgArches = [ pkgs pkgsi686Linux ];
     geckos = [ gecko32 gecko64 ];
+    mingwGccs = with pkgsCross; [ mingw32.buildPackages.gcc mingwW64.buildPackages.gcc ];
     monos =  [ mono ];
     buildScript = ./builder-wow.sh;
     platforms = [ "x86_64-linux" ];
diff --git a/pkgs/misc/emulators/wine/sources.nix b/pkgs/misc/emulators/wine/sources.nix
index f669c71c677..6accb486d57 100644
--- a/pkgs/misc/emulators/wine/sources.nix
+++ b/pkgs/misc/emulators/wine/sources.nix
@@ -13,9 +13,9 @@ let fetchurl = args@{url, sha256, ...}:
 in rec {
 
   stable = fetchurl rec {
-    version = "5.0";
-    url = "https://dl.winehq.org/wine/source/5.0/wine-${version}.tar.xz";
-    sha256 = "1d0kcy338radq07hrnzcpc9lc9j2fvzjh37q673002x8d6x5058q";
+    version = "6.0.1";
+    url = "https://dl.winehq.org/wine/source/6.0/wine-${version}.tar.xz";
+    sha256 = "sha256-Ogmh7Jyh6h1PcpWY14JxeXP09kRYZn+7dX0SLzoB2ko=";
 
     ## see http://wiki.winehq.org/Gecko
     gecko32 = fetchurl rec {
@@ -31,36 +31,52 @@ in rec {
 
     ## see http://wiki.winehq.org/Mono
     mono = fetchurl rec {
-      version = "4.9.4";
-      url = "https://dl.winehq.org/wine/wine-mono/${version}/wine-mono-${version}.msi";
-      sha256 = "1p8g45xphxnns7dkg9rbaknarbjy5cjhrngaf0fsgk9z68wgz9ji";
+      version = "5.1.1";
+      url = "https://dl.winehq.org/wine/wine-mono/${version}/wine-mono-${version}-x86.msi";
+      sha256 = "09wjrfxbw0072iv6d2vqnkc3y7dzj15vp8mv4ay44n1qp5ji4m3l";
     };
+
+    patches = [
+      # Also look for root certificates at $NIX_SSL_CERT_FILE
+      ./cert-path.patch
+    ];
   };
 
   unstable = fetchurl rec {
     # NOTE: Don't forget to change the SHA256 for staging as well.
-    version = "5.14";
-    url = "https://dl.winehq.org/wine/source/5.x/wine-${version}.tar.xz";
-    sha256 = "1vy9gyvf05vkysgvp4kq4qd116nvif69di55x3dnf3p96wsn2hpl";
-    inherit (stable) mono gecko32 gecko64;
+    version = "6.13";
+    url = "https://dl.winehq.org/wine/source/6.x/wine-${version}.tar.xz";
+    sha256 = "sha256-4DohoBHUXSrp8iIED7dpC5cVY3bnQx+GHyAHPq8k8oo=";
+    inherit (stable) gecko32 gecko64;
+
+    ## see http://wiki.winehq.org/Mono
+    mono = fetchurl rec {
+      version = "6.2.0";
+      url = "https://dl.winehq.org/wine/wine-mono/${version}/wine-mono-${version}-x86.msi";
+      sha256 = "sha256-zY1TUT2DV7KHama6sIllTvmUH0LvaQ+1VcZJP1OB28o=";
+    };
+
+    patches = [
+      # Also look for root certificates at $NIX_SSL_CERT_FILE
+      ./cert-path.patch
+     ];
   };
 
   staging = fetchFromGitHub rec {
     # https://github.com/wine-staging/wine-staging/releases
     inherit (unstable) version;
-    sha256 = "0cvsasnidbg77dc2vjrw708rpy2jqdir9imqjcjppa4h1k8a2wcs";
+    sha256 = "sha256-3IpO+eQ/+DiQZH6en5Q/p+j441LDvjn4i9Ex7PY8KCk=";
     owner = "wine-staging";
     repo = "wine-staging";
     rev = "v${version}";
 
-    # Just keep list empty, if current release haven't broken patchsets
-    disabledPatchsets = [ "xactengine-initial" ];
+    disabledPatchsets = [ ];
   };
 
   winetricks = fetchFromGitHub rec {
     # https://github.com/Winetricks/winetricks/releases
-    version = "20200412";
-    sha256 = "0ccr8wdmhkhbccxs5hvn44ppl969n8j0c3rnnir5v6akjcb2nzzv";
+    version = "20210206";
+    sha256 = "sha256-tnwownY9A05nYlkYaoCQZjeGGHuE+kJYzA7MPE2bXnQ=";
     owner = "Winetricks";
     repo = "winetricks";
     rev = version;
diff --git a/pkgs/misc/emulators/wine/staging.nix b/pkgs/misc/emulators/wine/staging.nix
index f3b9fa30420..abfc4f832a3 100644
--- a/pkgs/misc/emulators/wine/staging.nix
+++ b/pkgs/misc/emulators/wine/staging.nix
@@ -1,14 +1,14 @@
-{ stdenv, callPackage, wineUnstable }:
+{ lib, callPackage, wineUnstable }:
 
 with callPackage ./util.nix {};
 
 let patch = (callPackage ./sources.nix {}).staging;
     build-inputs = pkgNames: extra:
       (mkBuildInputs wineUnstable.pkgArches pkgNames) ++ extra;
-in assert stdenv.lib.getVersion wineUnstable == patch.version;
+in assert lib.getVersion wineUnstable == patch.version;
 
-(stdenv.lib.overrideDerivation wineUnstable (self: {
-  buildInputs = build-inputs [ "perl" "utillinux" "autoconf" "gitMinimal" ] self.buildInputs;
+(lib.overrideDerivation wineUnstable (self: {
+  buildInputs = build-inputs [ "perl" "util-linux" "autoconf" "gitMinimal" ] self.buildInputs;
 
   name = "${self.name}-staging";
 
@@ -18,7 +18,7 @@ in assert stdenv.lib.getVersion wineUnstable == patch.version;
     chmod +w patches
     cd patches
     patchShebangs gitapply.sh
-    ./patchinstall.sh DESTDIR="$PWD/.." --all ${stdenv.lib.concatMapStringsSep " " (ps: "-W ${ps}") patch.disabledPatchsets}
+    ./patchinstall.sh DESTDIR="$PWD/.." --all ${lib.concatMapStringsSep " " (ps: "-W ${ps}") patch.disabledPatchsets}
     cd ..
   '';
 })) // {
diff --git a/pkgs/misc/emulators/wine/util.nix b/pkgs/misc/emulators/wine/util.nix
index b90a68e72df..cd5bd03130b 100644
--- a/pkgs/misc/emulators/wine/util.nix
+++ b/pkgs/misc/emulators/wine/util.nix
@@ -3,7 +3,7 @@ rec {
   toPackages = pkgNames: pkgs:
     map (pn: lib.getAttr pn pkgs) pkgNames;
   toBuildInputs = pkgArches: archPkgs:
-    lib.concatLists (map archPkgs pkgArches);  
+    lib.concatLists (map archPkgs pkgArches);
   mkBuildInputs = pkgArches: pkgNames:
     toBuildInputs pkgArches (toPackages pkgNames);
 }
diff --git a/pkgs/misc/emulators/wine/vkd3d.nix b/pkgs/misc/emulators/wine/vkd3d.nix
index 082eb0b90c6..303d33df217 100644
--- a/pkgs/misc/emulators/wine/vkd3d.nix
+++ b/pkgs/misc/emulators/wine/vkd3d.nix
@@ -1,22 +1,22 @@
-{ stdenv, fetchurl, vulkan-headers, spirv-headers, vulkan-loader }:
+{ lib, stdenv, fetchurl, vulkan-headers, spirv-headers, vulkan-loader }:
 
 #TODO: MoltenVK
 #TODO: unstable
 
 stdenv.mkDerivation rec {
   pname = "vkd3d";
-  version = "1.1";
+  version = "1.2";
 
   src = fetchurl {
     url = "https://dl.winehq.org/vkd3d/source/vkd3d-${version}.tar.xz";
-    sha256 = "1dkayp95g1691w7n2yn1q9y7klq5xa921dgmn9a5vil0rihxqnj9";
+    sha256 = "0szr1lw3xbgi9qjm13d1q4gyzzwv8i5wfxiwjg6dmwphrc7h6jxh";
   };
 
   buildInputs = [ vulkan-headers spirv-headers vulkan-loader ];
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A 3d library build on top on Vulkan with a similar api to DirectX 12";
     homepage = "https://source.winehq.org/git/vkd3d.git";
     license = licenses.lgpl21;
diff --git a/pkgs/misc/emulators/wine/winetricks.nix b/pkgs/misc/emulators/wine/winetricks.nix
index ab183dfd38e..cfde64fc33a 100644
--- a/pkgs/misc/emulators/wine/winetricks.nix
+++ b/pkgs/misc/emulators/wine/winetricks.nix
@@ -1,4 +1,4 @@
-{ stdenv, callPackage, wine, perl, which, coreutils, zenity, curl
+{ lib, stdenv, callPackage, wine, perl, which, coreutils, zenity, curl
 , cabextract, unzip, p7zip, gnused, gnugrep, bash } :
 
 stdenv.mkDerivation rec {
@@ -9,8 +9,9 @@ stdenv.mkDerivation rec {
   buildInputs = [ perl which ];
 
   # coreutils is for sha1sum
-  pathAdd = stdenv.lib.concatMapStringsSep ":" (x: x + "/bin")
-    [ wine perl which coreutils zenity curl cabextract unzip p7zip gnused gnugrep bash ];
+  pathAdd = lib.concatMapStringsSep ":" (x: x + "/bin")
+    (lib.filter (x: x != null)
+      [ wine perl which coreutils zenity curl cabextract unzip p7zip gnused gnugrep bash ]);
 
   makeFlags = [ "PREFIX=$(out)" ];
 
@@ -24,8 +25,8 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "A script to install DLLs needed to work around problems in Wine";
-    license = stdenv.lib.licenses.lgpl21;
+    license = lib.licenses.lgpl21;
     homepage = "https://github.com/Winetricks/winetricks";
-    platforms = with stdenv.lib.platforms; linux;
+    platforms = with lib.platforms; linux;
   };
 }
diff --git a/pkgs/misc/emulators/wxmupen64plus/default.nix b/pkgs/misc/emulators/wxmupen64plus/default.nix
index 4e90a524aa7..8621d213b79 100644
--- a/pkgs/misc/emulators/wxmupen64plus/default.nix
+++ b/pkgs/misc/emulators/wxmupen64plus/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, python, wxGTK29, mupen64plus, SDL, libX11, libGLU, libGL
+{ lib, stdenv, fetchurl, python, wxGTK29, mupen64plus, SDL, libX11, libGLU, libGL
 , wafHook }:
 
 stdenv.mkDerivation {
@@ -24,7 +24,7 @@ stdenv.mkDerivation {
 
   meta = {
     description = "GUI for the Mupen64Plus 2.0 emulator";
-    license = stdenv.lib.licenses.gpl2Plus;
+    license = lib.licenses.gpl2Plus;
     homepage = "https://bitbucket.org/auria/wxmupen64plus/wiki/Home";
   };
 }
diff --git a/pkgs/misc/emulators/xcpc/default.nix b/pkgs/misc/emulators/xcpc/default.nix
index 3806d25e5d0..633d44bb5ae 100644
--- a/pkgs/misc/emulators/xcpc/default.nix
+++ b/pkgs/misc/emulators/xcpc/default.nix
@@ -1,9 +1,9 @@
-{ stdenv, fetchurl, pkgconfig, glib, libXaw, libX11, libXext
+{ lib, stdenv, fetchurl, pkg-config, glib, libXaw, libX11, libXext
   , libDSKSupport ? true, libdsk
   , motifSupport ? false, lesstif
 }:
 
-with stdenv.lib;
+with lib;
 stdenv.mkDerivation rec {
   version = "20070122";
   pname = "xcpc";
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
     sha256 = "0hxsbhmyzyyrlidgg0q8izw55q0z40xrynw5a1c3frdnihj9jf7n";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
 
   buildInputs = [ glib libdsk libXaw libX11 libXext ]
     ++ optional libDSKSupport libdsk
@@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
     description = "A portable Amstrad CPC 464/664/6128 emulator written in C";
     homepage = "https://www.xcpc-emulator.net";
     license = licenses.gpl2Plus;
-    maintainers = [ maintainers.genesis ];
+    maintainers = [ ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/misc/emulators/yabause/default.nix b/pkgs/misc/emulators/yabause/default.nix
index 584a7b47dc7..17b7b563c15 100644
--- a/pkgs/misc/emulators/yabause/default.nix
+++ b/pkgs/misc/emulators/yabause/default.nix
@@ -1,4 +1,4 @@
-{ mkDerivation, stdenv, fetchurl, cmake, pkgconfig, qtbase, qt5, libGLU, libGL
+{ mkDerivation, lib, fetchurl, cmake, pkg-config, qtbase, qt5, libGLU, libGL
 , freeglut ? null, openal ? null, SDL2 ? null }:
 
 mkDerivation rec {
@@ -10,7 +10,7 @@ mkDerivation rec {
     sha256 = "1cn2rjjb7d9pkr4g5bqz55vd4pzyb7hg94cfmixjkzzkw0zw8d23";
   };
 
-  nativeBuildInputs = [ cmake pkgconfig ];
+  nativeBuildInputs = [ cmake pkg-config ];
   buildInputs = [ qtbase qt5.qtmultimedia libGLU libGL freeglut openal SDL2 ];
 
   patches = [
@@ -26,7 +26,7 @@ mkDerivation rec {
     "-DYAB_PORTS=qt"
   ] ;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "An open-source Sega Saturn emulator";
     homepage = "https://yabause.org/";
     license = licenses.gpl2Plus;
diff --git a/pkgs/misc/emulators/yapesdl/default.nix b/pkgs/misc/emulators/yapesdl/default.nix
new file mode 100644
index 00000000000..5f4b7771fb5
--- /dev/null
+++ b/pkgs/misc/emulators/yapesdl/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, pkg-config
+, SDL2
+}:
+
+stdenv.mkDerivation rec {
+  pname = "yapesdl";
+  version = "0.70.2";
+
+  src = fetchFromGitHub {
+    owner = "calmopyrin";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-51P6wNaSfVA3twu+yRUKXguEmVBvuuEnHxH1Zl1vsCc=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+  ];
+  buildInputs = [
+    SDL2
+  ];
+
+  makeFlags = [ "CC=${stdenv.cc.targetPrefix}c++" ];
+
+  installPhase = ''
+    runHook preInstall
+    install --directory $out/bin $out/share/doc/$pname
+    install yapesdl $out/bin/
+    install README.SDL $out/share/doc/$pname/
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "http://yape.plus4.net/";
+    description = "Multiplatform Commodore 64 and 264 family emulator";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ AndersonTorres ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/misc/emulators/yuzu/base.nix b/pkgs/misc/emulators/yuzu/base.nix
new file mode 100644
index 00000000000..4bee17c6954
--- /dev/null
+++ b/pkgs/misc/emulators/yuzu/base.nix
@@ -0,0 +1,86 @@
+{ pname, version, src, branchName
+, stdenv, lib, wrapQtAppsHook
+, cmake, pkg-config
+, libpulseaudio, libjack2, alsa-lib, sndio
+, vulkan-loader, vulkan-headers
+, qtbase, qtwebengine, qttools
+, nlohmann_json, rapidjson
+, zlib, zstd, libzip, lz4
+, glslang
+, boost173
+, catch2
+, fmt_8
+, SDL2
+, udev
+, libusb1
+, ffmpeg
+}:
+
+stdenv.mkDerivation rec {
+  inherit pname version src;
+
+  nativeBuildInputs = [ cmake pkg-config wrapQtAppsHook ];
+  buildInputs = [
+    libpulseaudio libjack2 alsa-lib sndio
+    vulkan-loader vulkan-headers
+    qtbase qtwebengine qttools
+    nlohmann_json rapidjson
+    zlib zstd libzip lz4
+    glslang
+    boost173
+    catch2
+    fmt_8
+    SDL2
+    udev
+    libusb1
+    ffmpeg
+  ];
+
+  cmakeFlags = [
+    "-DYUZU_USE_BUNDLED_QT=OFF"
+    "-DYUZU_USE_BUNDLED_SDL2=OFF"
+    "-DYUZU_USE_BUNDLED_FFMPEG=OFF"
+    "-DENABLE_QT_TRANSLATION=ON"
+    "-DYUZU_USE_QT_WEB_ENGINE=ON"
+    "-DUSE_DISCORD_PRESENCE=ON"
+  ];
+
+  # This changes `ir/opt` to `ir/var/empty` in `externals/dynarmic/src/dynarmic/CMakeLists.txt`
+  # making the build fail, as that path does not exist
+  dontFixCmake = true;
+
+  preConfigure = ''
+    # Trick the configure system. This prevents a check for submodule directories.
+    rm -f .gitmodules
+
+    # see https://github.com/NixOS/nixpkgs/issues/114044, setting this through cmakeFlags does not work.
+    cmakeFlagsArray+=(
+      "-DTITLE_BAR_FORMAT_IDLE=yuzu ${branchName} ${version}"
+      "-DTITLE_BAR_FORMAT_RUNNING=yuzu ${branchName} ${version} | {3}"
+    )
+  '';
+
+  # Fix vulkan detection
+  postFixup = ''
+    wrapProgram $out/bin/yuzu --prefix LD_LIBRARY_PATH : ${vulkan-loader}/lib
+    wrapProgram $out/bin/yuzu-cmd --prefix LD_LIBRARY_PATH : ${vulkan-loader}/lib
+  '';
+
+  meta = with lib; {
+    homepage = "https://yuzu-emu.org";
+    description = "The ${branchName} branch of an experimental Nintendo Switch emulator written in C++";
+    longDescription = ''
+      An experimental Nintendo Switch emulator written in C++.
+      Using the mainline branch is recommanded for general usage.
+      Using the early-access branch is recommanded if you would like to try out experimental features, with a cost of stability.
+    '';
+    license = with licenses; [
+      gpl2Plus
+      # Icons
+      cc-by-nd-30 cc0
+    ];
+    maintainers = with maintainers; [ ivar joshuafern ];
+    platforms = platforms.linux;
+    broken = stdenv.isAarch64; # Currently aarch64 is not supported.
+  };
+}
diff --git a/pkgs/misc/emulators/yuzu/default.nix b/pkgs/misc/emulators/yuzu/default.nix
new file mode 100644
index 00000000000..0e4fe692ae3
--- /dev/null
+++ b/pkgs/misc/emulators/yuzu/default.nix
@@ -0,0 +1,28 @@
+{ branch ? "mainline", libsForQt5, fetchFromGitHub }:
+let
+  inherit libsForQt5 fetchFromGitHub;
+in {
+  mainline = libsForQt5.callPackage ./base.nix rec {
+    pname = "yuzu-mainline";
+    version = "679";
+    branchName = branch;
+    src = fetchFromGitHub {
+      owner = "yuzu-emu";
+      repo = "yuzu-mainline";
+      rev = "mainline-0-${version}";
+      sha256 = "1wkxkgfff5nn30mn2pqcrlsr7fja6bgaallsx1ainlcbamfyspcz";
+      fetchSubmodules = true;
+    };
+  };
+  early-access = libsForQt5.callPackage ./base.nix rec {
+    pname = "yuzu-ea";
+    version = "1874";
+    branchName = branch;
+    src = fetchFromGitHub {
+      owner = "pineappleEA";
+      repo = "pineapple-src";
+      rev = "EA-${version}";
+      sha256 = "0ryrz7dl1sg30vvd7wrf05pjj8swah86055fn7qm6mr2bfslww0h";
+    };
+  };
+}.${branch}
diff --git a/pkgs/misc/emulators/zsnes/default.nix b/pkgs/misc/emulators/zsnes/default.nix
index 142a49b8d18..4a6b1fbda27 100644
--- a/pkgs/misc/emulators/zsnes/default.nix
+++ b/pkgs/misc/emulators/zsnes/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchFromGitHub, nasm, SDL, zlib, libpng, ncurses, libGLU, libGL
+{ lib, stdenv, fetchFromGitHub, nasm, SDL, zlib, libpng, ncurses, libGLU, libGL
 , makeDesktopItem }:
 
 let
@@ -55,8 +55,8 @@ in stdenv.mkDerivation {
 
   meta = {
     description = "A Super Nintendo Entertainment System Emulator";
-    license = stdenv.lib.licenses.gpl2Plus;
-    maintainers = [ stdenv.lib.maintainers.sander ];
+    license = lib.licenses.gpl2Plus;
+    maintainers = [ lib.maintainers.sander ];
     homepage = "http://www.zsnes.com";
     platforms = [ "i686-linux" "x86_64-linux" ];
   };
diff --git a/pkgs/misc/flashfocus/default.nix b/pkgs/misc/flashfocus/default.nix
index 98f368132a9..6a8786be6ea 100644
--- a/pkgs/misc/flashfocus/default.nix
+++ b/pkgs/misc/flashfocus/default.nix
@@ -1,17 +1,27 @@
-{ lib, buildPythonApplication, fetchPypi, xcffib, pyyaml, click, i3ipc, marshmallow, cffi, xpybutil, pytestrunner }:
+{ lib, python3 }:
 
-
-buildPythonApplication rec {
+python3.pkgs.buildPythonApplication rec {
   pname = "flashfocus";
-  version = "2.2.2";
+  version = "2.2.3";
 
-  src = fetchPypi {
+  src = python3.pkgs.fetchPypi {
     inherit pname version;
-    sha256 = "1z20d596rnc7cs0rrd221gjn14dmbr11djv94y9p4v7rr788sswv";
+    sha256 = "0cn44hryvz2wl7xklaslxsb3l2i3f8jkgmml0n9v2ks22j5l4r4h";
   };
 
-  nativeBuildInputs = [ pytestrunner ];
-  propagatedBuildInputs = [ i3ipc xcffib click cffi xpybutil marshmallow pyyaml ];
+  nativeBuildInputs = with python3.pkgs; [
+    pytest-runner
+  ];
+
+  propagatedBuildInputs = with python3.pkgs; [
+    i3ipc
+    xcffib
+    click
+    cffi
+    xpybutil
+    marshmallow
+    pyyaml
+  ];
 
   # Tests require access to a X session
   doCheck = false;
diff --git a/pkgs/misc/frescobaldi/default.nix b/pkgs/misc/frescobaldi/default.nix
index 830d5bea36a..60fee5a6c86 100644
--- a/pkgs/misc/frescobaldi/default.nix
+++ b/pkgs/misc/frescobaldi/default.nix
@@ -2,23 +2,29 @@
 
 buildPythonApplication rec {
   pname = "frescobaldi";
-  version = "3.1.1";
+  version = "3.1.3";
 
   src = fetchFromGitHub {
     owner = "wbsoft";
     repo = "frescobaldi";
     rev = "v${version}";
-    sha256 = "07hjlq29npasn2bsb3qrzr1gikyvcc85avx0sxybfih329bvjk03";
+    sha256 = "1p8f4vn2dpqndw1dylmg7wms6vi69zcfj544c908s4r8rrmbycyf";
   };
 
   propagatedBuildInputs = with python3Packages; [
-    lilypond pygame python-ly sip
+    lilypond pygame python-ly sip_4
     pyqt5 poppler-qt5
     pyqtwebengine
   ];
 
   nativeBuildInputs = [ pyqtwebengine.wrapQtAppsHook ];
 
+  # Needed because source is fetched from git
+  preBuild = ''
+    make -C i18n
+    make -C linux
+  '';
+
   # no tests in shipped with upstream
   doCheck = false;
 
@@ -29,9 +35,9 @@ buildPythonApplication rec {
 
   meta = with lib; {
     homepage = "https://frescobaldi.org/";
-    description = ''Frescobaldi is a LilyPond sheet music text editor'';
+    description = "A LilyPond sheet music text editor";
     longDescription = ''
-      Powerful text editor with syntax highlighting and automatic completion, 
+      Powerful text editor with syntax highlighting and automatic completion,
       Music view with advanced Point & Click, Midi player to proof-listen
       LilyPond-generated MIDI files, Midi capturing to enter music,
       Powerful Score Wizard to quickly setup a music score, Snippet Manager
diff --git a/pkgs/misc/ghostscript/0001-Bug-702364-Fix-missing-echogs-dependencies.patch b/pkgs/misc/ghostscript/0001-Bug-702364-Fix-missing-echogs-dependencies.patch
deleted file mode 100644
index dd31260302c..00000000000
--- a/pkgs/misc/ghostscript/0001-Bug-702364-Fix-missing-echogs-dependencies.patch
+++ /dev/null
@@ -1,835 +0,0 @@
---- a/contrib/contrib.mak	2020-03-19 09:21:42.000000000 +0100
-+++ b/contrib/contrib.mak	2020-05-14 13:41:03.202258445 +0200
-@@ -22,6 +22,10 @@
- CONTRIB_MAK=$(CONTRIBDIR)$(D)contrib.mak $(TOP_MAKEFILES)
- CONTRIBSRC=$(CONTRIBDIR)$(D)
- 
-+# Almost all device drivers depend on the following:
-+CONTDEVH=$(gserrors_h) $(gx_h) $(gxdevice_h)
-+CONTDEV=$(AK) $(ECHOGS_XE) $(GDEVH)
-+
- ###### --------------------------- Catalog -------------------------- ######
- 
- # The following drivers are user-contributed, and maintained (if at all) by
-@@ -185,19 +189,19 @@
- 	$(DEVCC) $(DEVO_)gdevbjca.$(OBJ) $(C_) $(CONTRIBSRC)gdevbjca.c
- 
- $(DD)bjcmono.dev : $(bjc_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)bjcmono $(bjc_)
- 
- $(DD)bjcgray.dev : $(bjc_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)bjcgray $(bjc_)
- 
- $(DD)bjccmyk.dev : $(bjc_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)bjccmyk $(bjc_)
- 
- $(DD)bjccolor.dev : $(bjc_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)bjccolor $(bjc_)
- 
- 
-@@ -208,25 +212,25 @@
- # Author: Uli Wortmann (uliw@erdw.ethz.ch), Martin Gerbershagen (ger@ulm.temic.de)
- # Printer: HP 670
- $(DD)cdj670.dev : $(cdeskjet8_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV2) $(DD)cdj670 $(cdeskjet8_)
- 
- # Author: Uli Wortmann (uliw@erdw.ethz.ch)
- # Printer: HP 850
- $(DD)cdj850.dev : $(cdeskjet8_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV2) $(DD)cdj850 $(cdeskjet8_)
- 
- # Author: Uli Wortmann (uliw@erdw.ethz.ch), Martin Gerbershagen (ger@ulm.temic.de)
- # Printer: HP 890
- $(DD)cdj890.dev : $(cdeskjet8_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV2) $(DD)cdj890 $(cdeskjet8_)
- 
- # Author: Uli Wortmann (uliw@erdw.ethz.ch), Martin Gerbershagen (ger@ulm.temic.de)
- # Printer: HP 1600
- $(DD)cdj1600.dev : $(cdeskjet8_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV2) $(DD)cdj1600 $(cdeskjet8_)
- 
- $(DEVOBJ)gdevcd8.$(OBJ) : $(CONTRIBSRC)gdevcd8.c $(PDEVH) $(math__h)\
-@@ -244,7 +248,8 @@
- 
- # Author: Matthew Gelhaus (mgelhaus@proaxis.com)
- # Printer: HP 880c
--$(DD)cdj880.dev : $(cdeskjet8_) $(DD)page.dev
-+$(DD)cdj880.dev : $(cdeskjet8_) $(DD)page.dev $(CONTDEV) \
-+                  $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV2) $(DD)cdj880 $(cdeskjet8_)
- 
- 
-@@ -255,7 +260,7 @@
- # Author: Rene Harsch (rene@harsch.net)
- # Printer: HP 970Cxi
- $(DD)cdj970.dev : $(cdeskjet9_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV2) $(DD)cdj970 $(cdeskjet9_)
- 
- $(DEVOBJ)gdevdj9.$(OBJ) : $(CONTRIBSRC)gdevdj9.c $(PDEVH) $(math__h) $(string__h)\
-@@ -268,7 +273,7 @@
- ### NOTE:  Same as chp2200 (some PJL and CRD changes).
- 
- $(DD)cdnj500.dev : $(cdeskjet8_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV2) $(DD)cdnj500 $(cdeskjet8_)
- 
- 
-@@ -277,7 +282,7 @@
- ### NOTE:  Depends on the presence of the cdj850 section.
- 
- $(DD)chp2200.dev : $(cdeskjet8_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV2) $(DD)chp2200 $(cdeskjet8_)
- 
- 
-@@ -288,11 +293,11 @@
- GDIMONO=$(DEVOBJ)gdevgdi.$(OBJ) $(HPPCL)
- 
- $(DD)gdi.dev : $(GDIMONO) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)gdi $(GDIMONO)
- 
- $(DD)samsunggdi.dev : $(GDIMONO) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)samsunggdi $(GDIMONO)
- 
- $(DEVOBJ)gdevgdi.$(OBJ) : $(CONTRIBSRC)gdevgdi.c $(PDEVH) $(gdevpcl_h) \
-@@ -306,17 +311,17 @@
- 
- hl1250_=$(DEVOBJ)gdevhl12.$(OBJ) $(HPDLJM)
- $(DD)hl1250.dev : $(hl1250_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)hl1250 $(hl1250_)
- 
- $(DD)hl1240.dev : $(hl1250_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)hl1240 $(hl1250_)
- 
- # Author: Marek Michalkiewicz <marekm@linux.org.pl>
- # Printer: Brother HL-1250 (may work with some other models too)
- $(DEVOBJ)gdevhl12.$(OBJ) : $(CONTRIBSRC)gdevhl12.c $(PDEVH) $(gdevdljm_h) \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(DEVCC) $(DEVO_)gdevhl12.$(OBJ) $(C_) $(CONTRIBSRC)gdevhl12.c
- 
- 
-@@ -327,37 +332,37 @@
- # Author: Ulrich Mueller (ulm@vsnhd1.cern.ch)
- # Printer: DEC LN03
- $(DD)ln03.dev : $(ln03_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)ln03 $(ln03_)
- 
- # Author: Nick Brown (nick.brown@coe.int)
- # Printer: DEClaser 2100
- $(DD)dl2100.dev : $(ln03_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)dl2100 $(ln03_)
- 
- # Author: Ian MacPhedran (macphed@dvinci.USask.CA)
- # Printer: DEC LA50
- $(DD)la50.dev : $(ln03_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                          $(CONTDEV)  $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)la50 $(ln03_)
- 
- # Author: Bruce Lowekamp (lowekamp@csugrad.cs.vt.edu)
- # Printer: DEC LA70
- $(DD)la70.dev : $(ln03_) $(DD)page.dev \
--                         $(CONTRIB_MAK) $(MAKEDIRS)
-+                         $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)la70 $(ln03_)
- 
- # Author: Ian MacPhedran (macphed@dvinci.USask.CA)
- # Printer: DEC LA75
- $(DD)la75.dev : $(ln03_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)la75 $(ln03_)
- 
- # Author: Andre' Beck (Andre_Beck@IRS.Inf.TU-Dresden.de)
- # Printer: DEC LA75plus
- $(DD)la75plus.dev : $(ln03_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)la75plus $(ln03_)
- 
- $(DEVOBJ)gdevln03.$(OBJ) : $(CONTRIBSRC)gdevln03.c $(PDEVH) \
-@@ -380,233 +385,233 @@
- 	$(DEVCC) -DA4 $(DEVO_)gdevescv.$(OBJ) $(C_) $(escv_opts) $(ESCV_SRC)gdevescv.c
- 
- $(DD)alc1900.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)alc1900 $(escv_)
- 
- $(DD)alc2000.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)alc2000 $(escv_)
- 
- $(DD)alc4000.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)alc4000 $(escv_)
- 
- $(DD)alc4100.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)alc4100 $(escv_)
- 
- $(DD)alc8500.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)alc8500 $(escv_)
- 
- $(DD)alc8600.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)alc8600 $(escv_)
- 
- $(DD)alc9100.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)alc9100 $(escv_)
- 
- $(DD)lp3000c.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp3000c $(escv_)
- 
- $(DD)lp8000c.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp8000c $(escv_)
- 
- $(DD)lp8200c.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp8200c $(escv_)
- 
- $(DD)lp8300c.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp8300c $(escv_)
- 
- $(DD)lp8500c.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp8500c $(escv_)
- 
- $(DD)lp8800c.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp8800c $(escv_)
- 
- $(DD)lp9000c.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp9000c $(escv_)
- 
- $(DD)lp9200c.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp9200c $(escv_)
- 
- $(DD)lp9500c.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp9500c $(escv_)
- 
- $(DD)lp9800c.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp9800c $(escv_)
- 
- $(DD)lps6500.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lps6500 $(escv_)
- 
- $(DD)epl2050.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)epl2050 $(escv_)
- 
- $(DD)epl2050p.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)epl2050p $(escv_)
- 
- $(DD)epl2120.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)epl2120 $(escv_)
- 
- $(DD)epl2500.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)epl2500 $(escv_)
- 
- $(DD)epl2750.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)epl2750 $(escv_)
- 
- $(DD)epl5800.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)epl5800 $(escv_)
- 
- $(DD)epl5900.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)epl5900 $(escv_)
- 
- $(DD)epl6100.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)epl6100 $(escv_)
- 
- $(DD)epl6200.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)epl6200 $(escv_)
- 
- $(DD)lp1800.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp1800 $(escv_)
- 
- $(DD)lp1900.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp1900 $(escv_)
- 
- $(DD)lp2200.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp2200 $(escv_)
- 
- $(DD)lp2400.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp2400 $(escv_)
- 
- $(DD)lp2500.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp2500 $(escv_)
- 
- $(DD)lp7500.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp7500 $(escv_)
- 
- $(DD)lp7700.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp7700 $(escv_)
- 
- $(DD)lp7900.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                          $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp7900 $(escv_)
- 
- $(DD)lp8100.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp8100 $(escv_)
- 
- $(DD)lp8300f.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp8300f $(escv_)
- 
- $(DD)lp8400f.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp8400f $(escv_)
- 
- $(DD)lp8600.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp8600 $(escv_)
- 
- $(DD)lp8600f.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp8600f $(escv_)
- 
- $(DD)lp8700.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp8700 $(escv_)
- 
- $(DD)lp8900.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp8900 $(escv_)
- 
- $(DD)lp9000b.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp9000b $(escv_)
- 
- $(DD)lp9100.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp9100 $(escv_)
- 
- $(DD)lp9200b.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp9200b $(escv_)
- 
- $(DD)lp9300.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp9300 $(escv_)
- 
- $(DD)lp9400.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp9400 $(escv_)
- 
- $(DD)lp9600.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp9600 $(escv_)
- 
- $(DD)lp9600s.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp9600s $(escv_)
- 
- $(DD)lps4500.dev : $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lps4500 $(escv_)
- 
- $(DD)eplcolor.dev: $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)eplcolor $(escv_)
- 
- $(DD)eplmono.dev: $(escv_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)eplmono $(escv_)
- 
- # ------ The Lexmark 5700 and 7000 devices ------ #
- 
- lex7000_=$(DEVOBJ)gdevlx7.$(OBJ)
- $(DD)lex7000.dev : $(lex7000_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lex7000 $(lex7000_)
- 
- lex5700_=$(DEVOBJ)gdevlx7.$(OBJ)
- $(DD)lex5700.dev : $(lex5700_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lex5700 $(lex5700_)
- 
- lex3200_=$(DEVOBJ)gdevlx7.$(OBJ)
- $(DD)lex3200.dev : $(lex3200_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lex3200 $(lex3200_)
- 
- lex2050_=$(DEVOBJ)gdevlx7.$(OBJ)
- $(DD)lex2050.dev : $(lex2050_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lex2050 $(lex2050_)
- 
- $(DEVOBJ)gdevlx7.$(OBJ) : $(CONTRIBSRC)gdevlx7.c $(PDEVH) \
-@@ -623,7 +628,7 @@
- 	$(DEVCC) $(DEVO_)gdevlx32.$(OBJ) $(C_) $(CONTRIBSRC)gdevlx32.c
- 
- $(DD)lxm3200.dev : $(lxm3200_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lxm3200 $(lxm3200_)
- 
- 
-@@ -649,13 +654,13 @@
- 	$(DEVCC) $(DEVO_)gdevlips.$(OBJ) $(LIPS_OPT) $(C_) $(LIPS_SRC)gdevlips.c
- 
- $(DD)lips4.dev : $(lipsr_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lips4 $(lipsr_)
- 
- lipsv_=$(DEVOBJ)gdevl4v.$(OBJ) $(DEVOBJ)gdevlips.$(OBJ)
- 
- $(DD)lips4v.dev : $(ECHOGS_XE) $(lipsv_) $(DD)vector.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETDEV) $(DD)lips4v $(lipsv_)
- 	$(ADDMOD) $(DD)lips4v -include $(GLD)vector
- 
-@@ -668,11 +673,11 @@
- ### --------------- Some extra devices: lips2p, bjc880j ---------------- ###
- 
- $(DD)lips2p.dev : $(lipsr_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lips2p $(lipsr_)
- 
- $(DD)bjc880j.dev : $(lipsr_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)bjc880j $(lipsr_)
- 
- 
-@@ -681,15 +686,15 @@
- md2k_=$(DEVOBJ)gdevmd2k.$(OBJ)
- 
- $(DD)md2k.dev : $(md2k_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)md2k $(md2k_)
- 
- $(DD)md5k.dev : $(md2k_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)md5k $(md2k_)
- 
- $(DEVOBJ)gdevmd2k.$(OBJ) : $(CONTRIBSRC)gdevmd2k.c $(PDEVH) $(gsparam_h) \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(DEVCC) $(DEVO_)gdevmd2k.$(OBJ) $(C_) $(CONTRIBSRC)gdevmd2k.c
-  
- 
-@@ -697,7 +702,7 @@
- 
- oki4w_=$(DEVOBJ)gdevop4w.$(OBJ)
- $(DD)oki4w.dev : $(oki4w_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)oki4w $(oki4w_)
- 
- # Author: Ivan Schreter (ivan@shadow.sk)
-@@ -720,11 +725,11 @@
- 	$(DEVCC) $(DEVO_)gdevopvp.$(OBJ) $(OPVP_OPT) $(C_) $(OPVP_SRC)gdevopvp.c
- 
- $(DD)opvp.dev : $(opvp_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)opvp $(opvp_)
- 
- $(DD)oprp.dev : $(opvp_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)oprp $(opvp_)
- 
- 
-@@ -901,78 +906,78 @@
- 
- # The generic pcl3 device with selectable subdevices
- $(DD)pcl3.dev : $(pcl3_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)pcl3 $(pcl3_)
- 
- # Fixed devices for specific printers
- $(DD)hpdjplus.dev : $(pcl3_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)hpdjplus $(pcl3_)
- $(DD)hpdjportable.dev : $(pcl3_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)hpdjportable $(pcl3_)
- $(DD)hpdj310.dev : $(pcl3_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)hpdj310 $(pcl3_)
- $(DD)hpdj320.dev : $(pcl3_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)hpdj320 $(pcl3_)
- $(DD)hpdj340.dev : $(pcl3_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)hpdj340 $(pcl3_)
- $(DD)hpdj400.dev : $(pcl3_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)hpdj400 $(pcl3_)
- $(DD)hpdj500.dev : $(pcl3_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)hpdj500 $(pcl3_)
- $(DD)hpdj500c.dev : $(pcl3_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)hpdj500c $(pcl3_)
- $(DD)hpdj510.dev : $(pcl3_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)hpdj510 $(pcl3_)
- $(DD)hpdj520.dev : $(pcl3_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)hpdj520 $(pcl3_)
- $(DD)hpdj540.dev : $(pcl3_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)hpdj540 $(pcl3_)
- $(DD)hpdj550c.dev : $(pcl3_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)hpdj550c $(pcl3_)
- $(DD)hpdj560c.dev : $(pcl3_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)hpdj560c $(pcl3_)
- $(DD)hpdj600.dev : $(pcl3_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)hpdj600 $(pcl3_)
- $(DD)hpdj660c.dev : $(pcl3_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)hpdj660c $(pcl3_)
- $(DD)hpdj670c.dev : $(pcl3_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)hpdj670c $(pcl3_)
- $(DD)hpdj680c.dev : $(pcl3_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)hpdj680c $(pcl3_)
- $(DD)hpdj690c.dev : $(pcl3_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)hpdj690c $(pcl3_)
- $(DD)hpdj850c.dev : $(pcl3_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)hpdj850c $(pcl3_)
- $(DD)hpdj855c.dev : $(pcl3_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)hpdj855c $(pcl3_)
- $(DD)hpdj870c.dev : $(pcl3_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)hpdj870c $(pcl3_)
- $(DD)hpdj890c.dev : $(pcl3_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)hpdj890c $(pcl3_)
- $(DD)hpdj1120c.dev : $(pcl3_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)hpdj1120c $(pcl3_)
- 
- #------------------------------------------------------------------------------
-@@ -1009,7 +1014,7 @@
- 
- xes_=$(DEVOBJ)gdevxes.$(OBJ)
- $(DD)xes.dev : $(xes_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)xes $(xes_)
- 
- # Author: Peter Flass (flass@lbdrscs.bitnet)
-@@ -1029,16 +1034,16 @@
- 
- pr201_=$(DEVOBJ)gdevp201.$(OBJ) $(DEVOBJ)gdevprn.$(OBJ)
- 
--$(DD)pr201.dev : $(pr201_) $(CONTRIB_MAK) $(MAKEDIRS)
-+$(DD)pr201.dev : $(pr201_) $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)pr201 $(pr201_)
- 
--$(DD)pr150.dev : $(pr201_) $(CONTRIB_MAK) $(MAKEDIRS)
-+$(DD)pr150.dev : $(pr201_) $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)pr150 $(pr201_)
- 
--$(DD)pr1000.dev : $(pr201_) $(CONTRIB_MAK) $(MAKEDIRS)
-+$(DD)pr1000.dev : $(pr201_) $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)pr1000 $(pr201_)
- 
--$(DD)pr1000_4.dev : $(pr201_) $(CONTRIB_MAK) $(MAKEDIRS)
-+$(DD)pr1000_4.dev : $(pr201_) $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)pr1000_4 $(pr201_)
- 
- $(DEVOBJ)gdevp201.$(OBJ) : $(JAPSRC)gdevp201.c $(PDEVH) \
-@@ -1049,7 +1054,7 @@
- 
- jj100_=$(DEVOBJ)gdevj100.$(OBJ) $(DEVOBJ)gdevprn.$(OBJ)
- 
--$(DD)jj100.dev : $(jj100_) $(CONTRIB_MAK) $(MAKEDIRS)
-+$(DD)jj100.dev : $(jj100_) $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)jj100 $(jj100_)
- 
- $(DEVOBJ)gdevj100.$(OBJ) : $(JAPSRC)gdevj100.c $(PDEVH) \
-@@ -1061,11 +1066,11 @@
- bj10v_=$(DEVOBJ)gdev10v.$(OBJ) $(DEVOBJ)gdevprn.$(OBJ)
- 
- $(DD)bj10v.dev : $(bj10v_) \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)bj10v $(bj10v_)
- 
- $(DD)bj10vh.dev : $(bj10v_) \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)bj10vh $(bj10v_)
- 
- # Uncomment the following line if you are using MS-DOS on PC9801 series.
-@@ -1080,7 +1085,7 @@
- dmprt_=$(DEVOBJ)gdevdmpr.$(OBJ) $(DEVOBJ)dviprlib.$(OBJ) $(DEVOBJ)gdevprn.$(OBJ)
- 
- $(DD)dmprt.dev : $(dmprt_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETDEV) $(DD)dmprt $(dmprt_)
- 	$(ADDMOD) $(DD)dmprt -ps dmp_init
- 
-@@ -1110,19 +1115,19 @@
- 	$(DEVCC) -DA4 $(DEVO_)gdevmjc.$(OBJ) $(C_) $(JAPSRC)gdevmjc.c
- 
- $(DD)mj700v2c.dev : $(mj700v2c_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)mj700v2c $(mj700v2c_)
- 
- $(DD)mj500c.dev : $(mj700v2c_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)mj500c $(mj700v2c_)
- 
- $(DD)mj6000c.dev : $(mj700v2c_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)mj6000c $(mj700v2c_)
- 
- $(DD)mj8000c.dev : $(mj700v2c_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)mj8000c $(mj700v2c_)
- 
- ### ----------------- The Fujitsu FMPR printer device ----------------- ###
-@@ -1130,7 +1135,7 @@
- fmpr_=$(DEVOBJ)gdevfmpr.$(OBJ) $(DEVOBJ)gdevprn.$(OBJ)
- 
- $(DD)fmpr.dev : $(fmpr_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)fmpr $(fmpr_)
- 
- $(DEVOBJ)gdevfmpr.$(OBJ) : $(JAPSRC)gdevfmpr.c $(PDEVH) \
-@@ -1142,7 +1147,7 @@
- fmlbp_=$(DEVOBJ)gdevfmlbp.$(OBJ) $(DEVOBJ)gdevprn.$(OBJ)
- 
- $(DD)fmlbp.dev : $(fmlbp_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)fmlbp $(fmlbp_)
- 
- $(DEVOBJ)gdevfmlbp.$(OBJ) : $(JAPSRC)gdevfmlbp.c $(PDEVH) \
-@@ -1159,7 +1164,7 @@
- ml6_=$(DEVOBJ)gdevml6.$(OBJ) $(DEVOBJ)gdevprn.$(OBJ)
- 
- $(DD)ml600.dev : $(ml6_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)ml600 $(ml6_)
- 
- $(DEVOBJ)gdevml6.$(OBJ) : $(JAPSRC)gdevml6.c $(PDEVH) \
-@@ -1172,11 +1177,11 @@
- lbp3x0_=$(DEVOBJ)gdevlbp3.$(OBJ)
- 
- $(DD)lbp310.dev :$(lbp3x0_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lbp310 $(lbp3x0_)
- 
- $(DD)lbp320.dev :$(lbp3x0_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lbp320 $(lbp3x0_)
- 
- $(DEVOBJ)gdevlbp3.$(OBJ) : $(JAPSRC)gdevlbp3.c $(PDEVH)
-@@ -1191,7 +1196,7 @@
- 	$(DEVCC) -DA4 $(DEVO_)gdevnpdl.$(OBJ) $(LIPS_OPT) $(C_) $(JAPSRC)gdevnpdl.c
- 
- $(DD)npdl.dev : $(npdl_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)npdl $(npdl_)
- 
- ### ------- EPSON ESC/Page printer device ----------------- ###
-@@ -1203,11 +1208,11 @@
- 	$(DEVCC) -DA4 $(DEVO_)gdevespg.$(OBJ) $(LIPS_OPT) $(C_) $(JAPSRC)gdevespg.c
- 
- $(DD)escpage.dev : $(escpage_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)escpage $(escpage_)
- 
- $(DD)lp2000.dev : $(escpage_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)lp2000 $(escpage_)
- 
- ### --- The RICOH RPDL language printer device ------ ###
-@@ -1218,7 +1223,7 @@
- 	$(DEVCC) $(DEVO_)gdevrpdl.$(OBJ) $(LIPS_OPT) $(C_) $(JAPSRC)gdevrpdl.c
- 
- $(DD)rpdl.dev : $(rpdl_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)rpdl $(rpdl_)
- 
- ### ---------- RICOH RPDL IV(600dpi) printer devices ---------- ###
-@@ -1240,15 +1245,15 @@
- alps_=$(DEVOBJ)gdevalps.$(OBJ)
- 
- $(DD)md50Mono.dev : $(alps_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)md50Mono $(alps_)
- 
- $(DD)md50Eco.dev : $(alps_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)md50Eco $(alps_)
- 
- $(DD)md1xMono.dev : $(alps_) $(DD)page.dev \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
-+                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)md1xMono $(alps_)
- 
- $(DEVOBJ)gdevalps.$(OBJ) : $(JAPSRC)gdevalps.c $(PDEVH) \
diff --git a/pkgs/misc/ghostscript/default.nix b/pkgs/misc/ghostscript/default.nix
index d3d06d98cb1..760ec2bc053 100644
--- a/pkgs/misc/ghostscript/default.nix
+++ b/pkgs/misc/ghostscript/default.nix
@@ -1,4 +1,4 @@
-{ config, stdenv, lib, fetchurl, pkgconfig, zlib, expat, openssl, autoconf
+{ config, stdenv, lib, fetchurl, pkg-config, zlib, expat, openssl, autoconf
 , libjpeg, libpng, libtiff, freetype, fontconfig, libpaper, jbig2dec
 , libiconv, ijs, lcms2, fetchpatch
 , cupsSupport ? config.ghostscript.cups or (!stdenv.isDarwin), cups ? null
@@ -9,10 +9,6 @@ assert x11Support -> xlibsWrapper != null;
 assert cupsSupport -> cups != null;
 
 let
-  version = "9.${ver_min}";
-  ver_min = "52";
-  sha512 = "1ksm3v4nw8acc4j817n44l1c65ijk0mr3mp4kryy17jz41bmzzql5d8vr40h59n9dmf8b2wmnbq45bj3an1zrpfagavlf0i9s436jjc";
-
   fonts = stdenv.mkDerivation {
     name = "ghostscript-fonts";
 
@@ -37,31 +33,27 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "ghostscript";
-  inherit version;
+  version = "9.53.3";
 
   src = fetchurl {
-    url = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs9${ver_min}/${pname}-${version}.tar.xz";
-    inherit sha512;
+    url = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs9${lib.versions.minor version}${lib.versions.patch version}/${pname}-${version}.tar.xz";
+    sha512 = "2vif3vgxa5wma16yxvhhkymk4p309y5204yykarq94r5rk890556d2lj5w7acnaa2ymkym6y0zd4vq9sy9ca2346igg2c6dxqkjr0zb";
   };
 
   patches = [
     (fetchpatch {
-      name = "CVE-2020-15900.patch";
-      url = "https://github.com/ArtifexSoftware/ghostpdl/commit/5d499272b95a6b890a1397e11d20937de000d31b.patch";
-      sha256 = "1nnnrn8q33x7nc8227ygc60f3mj4bjzrhj40sxp6dah58rb5x5jz";
+      url = "https://github.com/ArtifexSoftware/ghostpdl/commit/41ef9a0bc36b9db7115fbe9623f989bfb47bbade.patch";
+      sha256 = "1qpc6q1fpxshqc0mqgg36kng47kgljk50bmr8p7wn21jgfkh7m8w";
     })
     ./urw-font-files.patch
     ./doc-no-ref.diff
-    # rebased version of upstream http://git.ghostscript.com/?p=ghostpdl.git;a=patch;h=1b4c3669a20c,
-    # Remove on update to version > 9.52
-    ./0001-Bug-702364-Fix-missing-echogs-dependencies.patch
   ];
 
   outputs = [ "out" "man" "doc" ];
 
   enableParallelBuilding = true;
 
-  nativeBuildInputs = [ pkgconfig autoconf ];
+  nativeBuildInputs = [ pkg-config autoconf ];
   buildInputs =
     [ zlib expat openssl
       libjpeg libpng libtiff freetype fontconfig libpaper jbig2dec
@@ -105,17 +97,27 @@ stdenv.mkDerivation rec {
     cp -r Resource "$out/share/ghostscript/${version}"
 
     ln -s "${fonts}" "$out/share/ghostscript/fonts"
-  '' + stdenv.lib.optionalString stdenv.isDarwin ''
+  '' + lib.optionalString stdenv.isDarwin ''
     for file in $out/lib/*.dylib* ; do
       install_name_tool -id "$file" $file
     done
   '';
 
+  # dynamic library name only contains maj.min, eg. '9.53'
+  dylib_version = lib.versions.majorMinor version;
   preFixup = lib.optionalString stdenv.isDarwin ''
-    install_name_tool -change libgs.dylib.${version} $out/lib/libgs.dylib.${version} $out/bin/gs
+    install_name_tool -change libgs.dylib.$dylib_version $out/lib/libgs.dylib.$dylib_version $out/bin/gs
   '';
 
-  passthru = { inherit version; };
+  # validate dynamic linkage
+  doInstallCheck = true;
+  installCheckPhase = ''
+    runHook preInstallCheck
+
+    $out/bin/gs --version
+
+    runHook postInstallCheck
+  '';
 
   meta = {
     homepage = "https://www.ghostscript.com/";
@@ -130,9 +132,9 @@ stdenv.mkDerivation rec {
       of output drivers for various file formats and printers.
     '';
 
-    license = stdenv.lib.licenses.agpl3;
+    license = lib.licenses.agpl3;
 
-    platforms = stdenv.lib.platforms.all;
-    maintainers = [ stdenv.lib.maintainers.viric ];
+    platforms = lib.platforms.all;
+    maintainers = [ lib.maintainers.viric ];
   };
 }
diff --git a/pkgs/misc/gnash/default.nix b/pkgs/misc/gnash/default.nix
index 5a4eb1e7f33..9f5f022b853 100644
--- a/pkgs/misc/gnash/default.nix
+++ b/pkgs/misc/gnash/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchgit, fetchpatch, autoreconfHook
-, pkgconfig, libtool, boost, SDL
+{ lib, stdenv, fetchgit, fetchpatch, autoreconfHook
+, pkg-config, libtool, boost, SDL
 , glib, pango, gettext, curl, xorg
 , libpng, libjpeg, giflib, speex, atk
 
@@ -24,7 +24,7 @@
 , enablePlugins  ? false, xulrunner ? null, npapi_sdk ? null
 }:
 
-with stdenv.lib;
+with lib;
 
 let
   available = x: x != null;
@@ -80,7 +80,7 @@ stdenv.mkDerivation {
     sed -i 's|jemalloc.h|jemalloc/jemalloc.h|' libbase/jemalloc_gnash.c
   '';
 
-  nativeBuildInputs = [ autoreconfHook pkgconfig libtool ];
+  nativeBuildInputs = [ autoreconfHook pkg-config libtool ];
   buildInputs = [
     glib gettext boost curl SDL speex
     xorg.libXmu xorg.libSM xorg.libXt
@@ -109,7 +109,7 @@ stdenv.mkDerivation {
     })
   ];
 
-  configureFlags = with stdenv.lib; [
+  configureFlags = with lib; [
     "--with-boost-incl=${boost.dev}/include"
     "--with-boost-lib=${boost.out}/lib"
     "--enable-renderer=${concatStringsSep "," renderers}"
diff --git a/pkgs/misc/gnuk/generic.nix b/pkgs/misc/gnuk/generic.nix
index c7bbb3b530d..b614dd52a37 100644
--- a/pkgs/misc/gnuk/generic.nix
+++ b/pkgs/misc/gnuk/generic.nix
@@ -1,5 +1,5 @@
-{ stdenv, gcc-arm-embedded, binutils-arm-embedded, makeWrapper
-, python, pythonPackages
+{ lib, stdenv, gcc-arm-embedded, binutils-arm-embedded, makeWrapper
+, python2Packages
 
 # Extra options
 , device ? "fsij", vid ? "234b", pid ? "0000"
@@ -15,7 +15,7 @@ stdenv.mkDerivation {
   inherit src;
 
   nativeBuildInputs = [ gcc-arm-embedded binutils-arm-embedded makeWrapper ];
-  buildInputs = [ python ] ++ (with pythonPackages; [ pyusb colorama ]);
+  buildInputs = with python2Packages; [ python pyusb colorama ];
 
   configurePhase = ''
     cd src
@@ -43,7 +43,7 @@ stdenv.mkDerivation {
     chmod +x $out/bin/{unlock,flash}
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://www.fsij.org/pages/gnuk";
     description = "An implementation of USB cryptographic token for gpg";
     license = licenses.gpl3;
diff --git a/pkgs/misc/hdt/default.nix b/pkgs/misc/hdt/default.nix
index 8a4c7c3e6f5..9e1efd5f836 100644
--- a/pkgs/misc/hdt/default.nix
+++ b/pkgs/misc/hdt/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, autoreconfHook, libtool, pkgconfig, zlib, serd }:
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, libtool, pkg-config, zlib, serd }:
 
 stdenv.mkDerivation rec {
   pname = "hdt";
@@ -13,13 +13,13 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ zlib serd ];
 
-  nativeBuildInputs = [ autoreconfHook libtool pkgconfig ];
+  nativeBuildInputs = [ autoreconfHook libtool pkg-config ];
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://www.rdfhdt.org/";
-    description = "Header Dictionary Triples (HDT) is a compression format for RDF data that can also be queried for Triple Patterns.";
+    description = "Header Dictionary Triples (HDT) is a compression format for RDF data that can also be queried for Triple Patterns";
     license = licenses.lgpl21;
     platforms = platforms.linux;
     maintainers = [ maintainers.koslambrou ];
diff --git a/pkgs/misc/jackaudio/default.nix b/pkgs/misc/jackaudio/default.nix
index d5007560762..7474a304f03 100644
--- a/pkgs/misc/jackaudio/default.nix
+++ b/pkgs/misc/jackaudio/default.nix
@@ -1,42 +1,42 @@
-{ stdenv, fetchFromGitHub, pkgconfig, python3Packages, makeWrapper
+{ lib, stdenv, fetchFromGitHub, pkg-config, python3Packages, makeWrapper
 , bash, libsamplerate, libsndfile, readline, eigen, celt
 , wafHook
 # Darwin Dependencies
 , aften, AudioUnit, CoreAudio, libobjc, Accelerate
 
 # Optional Dependencies
-, dbus ? null, libffado ? null, alsaLib ? null
+, dbus ? null, libffado ? null, alsa-lib ? null
 , libopus ? null
 
 # Extra options
 , prefix ? ""
 }:
 
-with stdenv.lib;
+with lib;
 let
   inherit (python3Packages) python dbus-python;
-  shouldUsePkg = pkg: if pkg != null && stdenv.lib.any (stdenv.lib.meta.platformMatch stdenv.hostPlatform) pkg.meta.platforms then pkg else null;
+  shouldUsePkg = pkg: if pkg != null && lib.meta.availableOn stdenv.hostPlatform pkg then pkg else null;
 
   libOnly = prefix == "lib";
 
   optDbus = if stdenv.isDarwin then null else shouldUsePkg dbus;
   optPythonDBus = if libOnly then null else shouldUsePkg dbus-python;
   optLibffado = if libOnly then null else shouldUsePkg libffado;
-  optAlsaLib = if libOnly then null else shouldUsePkg alsaLib;
+  optAlsaLib = if libOnly then null else shouldUsePkg alsa-lib;
   optLibopus = shouldUsePkg libopus;
 in
 stdenv.mkDerivation rec {
   name = "${prefix}jack2-${version}";
-  version = "1.9.14";
+  version = "1.9.17";
 
   src = fetchFromGitHub {
     owner = "jackaudio";
     repo = "jack2";
     rev = "v${version}";
-    sha256 = "1prxg1l8wrxfp2mh7l4mvjvmml6816fciq1la88ylhwm1qnfvnax";
+    sha256 = "sha256-T6UJpLsXrsIL3HaChfVP52w0v9DCs/sJqty2/kAWNfE=";
   };
 
-  nativeBuildInputs = [ pkgconfig python makeWrapper wafHook ];
+  nativeBuildInputs = [ pkg-config python makeWrapper wafHook ];
   buildInputs = [ libsamplerate libsndfile readline eigen celt
     optDbus optPythonDBus optLibffado optAlsaLib optLibopus
   ] ++ optionals stdenv.isDarwin [
@@ -48,6 +48,9 @@ stdenv.mkDerivation rec {
         --replace /bin/bash ${bash}/bin/bash
   '';
 
+  PKGCONFIG = "${stdenv.cc.targetPrefix}pkg-config";
+
+  dontAddWafCrossFlags = "true";
   wafConfigureFlags = [
     "--classic"
     "--autostart=${if (optDbus != null) then "dbus" else "classic"}"
diff --git a/pkgs/misc/jackaudio/jack1.nix b/pkgs/misc/jackaudio/jack1.nix
index 2b5d0d960ca..aebe32497c1 100644
--- a/pkgs/misc/jackaudio/jack1.nix
+++ b/pkgs/misc/jackaudio/jack1.nix
@@ -1,13 +1,13 @@
-{ stdenv, fetchurl, pkgconfig
+{ lib, stdenv, fetchurl, pkg-config
 
 # Optional Dependencies
-, alsaLib ? null, db ? null, libuuid ? null, libffado ? null, celt ? null
+, alsa-lib ? null, db ? null, libuuid ? null, libffado ? null, celt ? null
 }:
 
 let
-  shouldUsePkg = pkg: if pkg != null && stdenv.lib.any (stdenv.lib.meta.platformMatch stdenv.hostPlatform) pkg.meta.platforms then pkg else null;
+  shouldUsePkg = pkg: if pkg != null && lib.meta.availableOn stdenv.hostPlatform pkg then pkg else null;
 
-  optAlsaLib = shouldUsePkg alsaLib;
+  optAlsaLib = shouldUsePkg alsa-lib;
   optDb = shouldUsePkg db;
   optLibuuid = shouldUsePkg libuuid;
   optLibffado = shouldUsePkg libffado;
@@ -23,14 +23,14 @@ stdenv.mkDerivation rec {
   };
 
   configureFlags = [
-    (stdenv.lib.enableFeature (optLibffado != null) "firewire")
+    (lib.enableFeature (optLibffado != null) "firewire")
   ];
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ optAlsaLib optDb optLibffado optCelt ];
   propagatedBuildInputs = [ optLibuuid ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "JACK audio connection kit";
     homepage = "https://jackaudio.org";
     license = with licenses; [ gpl2 lgpl21 ];
diff --git a/pkgs/misc/jitsi-meet-prosody/default.nix b/pkgs/misc/jitsi-meet-prosody/default.nix
new file mode 100644
index 00000000000..0ab939af0f7
--- /dev/null
+++ b/pkgs/misc/jitsi-meet-prosody/default.nix
@@ -0,0 +1,36 @@
+{ lib, stdenv, fetchurl, dpkg, nixosTests }:
+
+stdenv.mkDerivation rec {
+  pname = "jitsi-meet-prosody";
+  version = "1.0.5056";
+  src = fetchurl {
+    url = "https://download.jitsi.org/stable/${pname}_${version}-1_all.deb";
+    sha256 = "06qxa9h2ry92xrk2jklp76nv3sl8nvykdvsqmhn33lz6q6vmw2xr";
+  };
+
+  dontBuild = true;
+
+  unpackCmd = "${dpkg}/bin/dpkg-deb -x $src debcontents";
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/share
+    mv usr/share/jitsi-meet/prosody-plugins $out/share/
+    runHook postInstall
+  '';
+
+  passthru.tests = {
+    single-node-smoke-test = nixosTests.jitsi-meet;
+  };
+
+  meta = with lib; {
+    description = "Prosody configuration for Jitsi Meet";
+    longDescription = ''
+        This package contains configuration for Prosody to be used with Jitsi Meet.
+    '';
+    homepage = "https://github.com/jitsi/jitsi-meet/";
+    license = licenses.asl20;
+    maintainers = teams.jitsi.members;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/misc/lguf-brightness/default.nix b/pkgs/misc/lguf-brightness/default.nix
index 02ce011c59d..efdc8e15148 100644
--- a/pkgs/misc/lguf-brightness/default.nix
+++ b/pkgs/misc/lguf-brightness/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, cmake, libusb1, ncurses5 }:
+{ lib, stdenv, fetchFromGitHub, cmake, libusb1, ncurses5 }:
 
 stdenv.mkDerivation rec {
   pname = "lguf-brightness";
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
     install -D lguf_brightness $out/bin/lguf_brightness
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Adjust brightness for LG UltraFine 4K display (cross platform)";
     homepage = "https://github.com/periklis/lguf-brightness";
     license = licenses.lgpl21Plus;
diff --git a/pkgs/misc/libcardiacarrest/default.nix b/pkgs/misc/libcardiacarrest/default.nix
index 0c3370814bc..4139c5b0f13 100644
--- a/pkgs/misc/libcardiacarrest/default.nix
+++ b/pkgs/misc/libcardiacarrest/default.nix
@@ -1,6 +1,6 @@
-{ stdenv, fetchFromGitHub, pkgconfig, glib, libpulseaudio }:
+{ lib, stdenv, fetchFromGitHub, pkg-config, glib, libpulseaudio }:
 
-with stdenv.lib;
+with lib;
 
 stdenv.mkDerivation rec {
   pname = "libcardiacarrest";
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
 
   outputs = [ "out" "dev" ];
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
 
   buildInputs = [ glib ];
 
diff --git a/pkgs/misc/lightspark/default.nix b/pkgs/misc/lightspark/default.nix
index 833d8a82990..a00e784df09 100644
--- a/pkgs/misc/lightspark/default.nix
+++ b/pkgs/misc/lightspark/default.nix
@@ -1,36 +1,34 @@
-{ stdenv, fetchFromGitHub, pkgconfig, cmake, curl, zlib, ffmpeg_3, glew, pcre
-, rtmpdump, cairo, boost, SDL2, SDL2_mixer, libjpeg, gnome2, lzma, nasm
+{ lib, stdenv, fetchFromGitHub, pkg-config, cmake, curl, zlib, ffmpeg, glew, pcre
+, rtmpdump, cairo, boost, SDL2, SDL2_mixer, libjpeg, pango, xz, nasm
 , llvm, glibmm
 }:
 
 stdenv.mkDerivation rec {
   pname = "lightspark";
-  version = "0.8.2";
+  version = "0.8.5";
 
   src = fetchFromGitHub {
     owner = "lightspark";
     repo = "lightspark";
     rev = version;
-    sha256 = "04wn6d6gmpf848x0yghw26m9syv0hm6q5dwqiw3fxhs155jjqfgv";
+    sha256 = "sha256-F+zCwKTPWkp+VWYvYN5+VbBJeQAwspKy7+Uv+ZstowA=";
   };
 
-  patchPhase = ''
+  postPatch = ''
     sed -i 's/SET(ETCDIR "\/etc")/SET(ETCDIR "etc")/g' CMakeLists.txt
   '';
 
-  nativeBuildInputs = [ pkgconfig cmake ];
+  nativeBuildInputs = [ pkg-config cmake ];
 
   buildInputs = [
-    curl zlib ffmpeg_3 glew pcre rtmpdump cairo boost SDL2 SDL2_mixer libjpeg
-    gnome2.pango lzma nasm llvm glibmm
+    curl zlib ffmpeg glew pcre rtmpdump cairo boost SDL2 SDL2_mixer libjpeg
+    pango xz nasm llvm glibmm
   ];
 
-  enableParallelBuilding = true;
-
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Open source Flash Player implementation";
     homepage = "https://lightspark.github.io/";
-    license = licenses.lgpl3;
+    license = licenses.lgpl3Plus;
     maintainers = with maintainers; [ jchw ];
     platforms = platforms.linux;
   };
diff --git a/pkgs/misc/lilypond/default.nix b/pkgs/misc/lilypond/default.nix
index 9e76693ce8f..b75f9c3f800 100644
--- a/pkgs/misc/lilypond/default.nix
+++ b/pkgs/misc/lilypond/default.nix
@@ -1,5 +1,5 @@
 { stdenv, lib, fetchurl, ghostscript, gyre-fonts, texinfo, imagemagick, texi2html, guile
-, python2, gettext, flex, perl, bison, pkgconfig, autoreconfHook, dblatex
+, python3, gettext, flex, perl, bison, pkg-config, autoreconfHook, dblatex
 , fontconfig, freetype, pango, fontforge, help2man, zip, netpbm, groff
 , makeWrapper, t1utils
 , texlive, tex ? texlive.combine {
@@ -9,15 +9,13 @@
 
 stdenv.mkDerivation rec {
   pname = "lilypond";
-  version = "2.20.0";
+  version = "2.22.1";
 
   src = fetchurl {
     url = "http://lilypond.org/download/sources/v${lib.versions.majorMinor version}/lilypond-${version}.tar.gz";
-    sha256 = "0qd6pd4siss016ffmcyw5qc6pr2wihnvrgd4kh1x725w7wr02nar";
+    sha256 = "sha256-cqwtVMMQwxQcC3gtTgvvkALVUZz0ZjJ1mx8D72lpzDA=";
   };
 
-  patches = [ ./findlib.patch ];
-
   postInstall = ''
     for f in "$out/bin/"*; do
         # Override default argv[0] setting so LilyPond can find
@@ -40,11 +38,11 @@ stdenv.mkDerivation rec {
     export HOME=$TMPDIR/home
   '';
 
-  nativeBuildInputs = [ autoreconfHook bison flex makeWrapper pkgconfig ];
+  nativeBuildInputs = [ autoreconfHook bison flex makeWrapper pkg-config ];
 
   buildInputs =
     [ ghostscript texinfo imagemagick texi2html guile dblatex tex zip netpbm
-      python2 gettext perl fontconfig freetype pango
+      python3 gettext perl fontconfig freetype pango
       fontforge help2man groff t1utils
     ];
 
diff --git a/pkgs/misc/lilypond/findlib.patch b/pkgs/misc/lilypond/findlib.patch
deleted file mode 100644
index 30e130bc8ad..00000000000
--- a/pkgs/misc/lilypond/findlib.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff --git a/stepmake/stepmake/executable-vars.make b/stepmake/stepmake/executable-vars.make
-index 3825101..bf37d16 100644
---- a/stepmake/stepmake/executable-vars.make
-+++ b/stepmake/stepmake/executable-vars.make
-@@ -1,4 +1,4 @@
--MODULE_LIBES =$(addprefix $(outdir)/../, $(addsuffix /$(outbase)/library.a, $(MODULE_LIBS)))
-+MODULE_LIBES =$(addprefix , $(addsuffix /$(outbase)/library.a, $(MODULE_LIBS)))
- LOADLIBES = $(MODULE_LIBES) $($(PACKAGE)_LIBES) $(CONFIG_LIBS)
- 
- EXECUTABLE = $(outdir)/$(NAME)
-
-diff --git a/make/stepmake.make b/make/stepmake.make
-index 604341b..7f0d9d8 100644
---- a/make/stepmake.make
-+++ b/make/stepmake.make
-@@ -87,7 +87,7 @@ outdir=$(outroot)/$(outbase)
- config_h=$(top-build-dir)/config$(CONFIGSUFFIX).hh
- 
- # The outdir that was configured for: best guess to find binaries
--outconfbase=out$(CONFIGSUFFIX)
-+outconfbase=$(outdir)
- outconfdir=$(outroot)/$(outconfbase)
- 
- # user package
diff --git a/pkgs/misc/lilypond/fonts.nix b/pkgs/misc/lilypond/fonts.nix
index deeedf67995..ca87db757cc 100644
--- a/pkgs/misc/lilypond/fonts.nix
+++ b/pkgs/misc/lilypond/fonts.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, lilypond }:
+{ lib, stdenv, fetchFromGitHub, lilypond }:
 
 let
 
@@ -29,7 +29,7 @@ let
         done
       '';
 
-      meta = with stdenv.lib; {
+      meta = with lib; {
         inherit (lilypond.meta) homepage platforms;
         description = "${fontName} font for LilyPond";
         license = licenses.ofl;
diff --git a/pkgs/misc/lilypond/unstable.nix b/pkgs/misc/lilypond/unstable.nix
deleted file mode 100644
index 68f48a2db64..00000000000
--- a/pkgs/misc/lilypond/unstable.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ stdenv, fetchgit, lilypond, ghostscript, gyre-fonts }:
-
-let
-
-  version = "2.19.83";
-
-in
-
-lilypond.overrideAttrs (oldAttrs: {
-  inherit version;
-
-  src = fetchgit {
-    url = "https://git.savannah.gnu.org/r/lilypond.git";
-    rev = "release/${version}-1";
-    sha256 = "1ycyx9x76d79jh7wlwyyhdjkyrwnhzqpw006xn2fk35s0jrm2iz0";
-  };
-
-  meta = oldAttrs.meta // {
-    broken = stdenv.isDarwin;
-  };
-})
diff --git a/pkgs/misc/lilypond/with-fonts.nix b/pkgs/misc/lilypond/with-fonts.nix
index 1036f474b14..47cbb59f2f0 100644
--- a/pkgs/misc/lilypond/with-fonts.nix
+++ b/pkgs/misc/lilypond/with-fonts.nix
@@ -1,13 +1,14 @@
-{ stdenv, lndir, symlinkJoin, makeWrapper
+{ lib, lndir, symlinkJoin, makeWrapper
 , lilypond, openlilylib-fonts
 }:
 
-stdenv.lib.appendToName "with-fonts" (symlinkJoin {
+lib.appendToName "with-fonts" (symlinkJoin {
   inherit (lilypond) meta name version ;
 
   paths = [ lilypond ] ++ openlilylib-fonts.all;
 
-  buildInputs = [ makeWrapper lndir ];
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ lndir ];
 
   postBuild = ''
     for p in $out/bin/*; do
diff --git a/pkgs/misc/logging/beats/6.x.nix b/pkgs/misc/logging/beats/6.x.nix
index c3bca18a9a4..81b8ba0ab5b 100644
--- a/pkgs/misc/logging/beats/6.x.nix
+++ b/pkgs/misc/logging/beats/6.x.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, elk6Version, buildGoPackage, libpcap, systemd }:
+{ lib, fetchFromGitHub, elk6Version, buildGoPackage, libpcap, nixosTests, systemd }:
 
 let beat = package : extraArgs : buildGoPackage (rec {
       name = "${package}-${version}";
@@ -15,17 +15,24 @@ let beat = package : extraArgs : buildGoPackage (rec {
 
       subPackages = [ package ];
 
-      meta = with stdenv.lib; {
+      meta = with lib; {
         homepage = "https://www.elastic.co/products/beats";
         license = licenses.asl20;
         maintainers = with maintainers; [ fadenb basvandijk ];
         platforms = platforms.linux;
       };
     } // extraArgs);
-in {
+in rec {
   filebeat6   = beat "filebeat"   {meta.description = "Lightweight shipper for logfiles";};
   heartbeat6  = beat "heartbeat"  {meta.description = "Lightweight shipper for uptime monitoring";};
-  metricbeat6 = beat "metricbeat" {meta.description = "Lightweight shipper for metrics";};
+  metricbeat6 = beat "metricbeat" {
+    meta.description = "Lightweight shipper for metrics";
+    passthru.tests =
+      assert metricbeat6.drvPath == nixosTests.elk.ELK-6.elkPackages.metricbeat.drvPath;
+      {
+        elk = nixosTests.elk.ELK-6;
+      };
+  };
   packetbeat6 = beat "packetbeat" {
     buildInputs = [ libpcap ];
     meta.broken = true;
@@ -46,7 +53,7 @@ in {
       journal entries from Linuxes with systemd.
     '';
     buildInputs = [ systemd.dev ];
-    postFixup = let libPath = stdenv.lib.makeLibraryPath [ systemd.lib ]; in ''
+    postFixup = let libPath = lib.makeLibraryPath [ (lib.getLib systemd) ]; in ''
       patchelf --set-rpath ${libPath} "$out/bin/journalbeat"
     '';
   };
diff --git a/pkgs/misc/logging/beats/7.x.nix b/pkgs/misc/logging/beats/7.x.nix
index 61c89339fe7..77e14e96c54 100644
--- a/pkgs/misc/logging/beats/7.x.nix
+++ b/pkgs/misc/logging/beats/7.x.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, elk7Version, buildGoPackage, libpcap, systemd }:
+{ lib, fetchFromGitHub, elk7Version, buildGoPackage, libpcap, nixosTests, systemd }:
 
 let beat = package : extraArgs : buildGoPackage (rec {
       name = "${package}-${version}";
@@ -15,17 +15,24 @@ let beat = package : extraArgs : buildGoPackage (rec {
 
       subPackages = [ package ];
 
-      meta = with stdenv.lib; {
+      meta = with lib; {
         homepage = "https://www.elastic.co/products/beats";
         license = licenses.asl20;
         maintainers = with maintainers; [ fadenb basvandijk ];
         platforms = platforms.linux;
       };
     } // extraArgs);
-in {
+in rec {
   filebeat7   = beat "filebeat"   {meta.description = "Lightweight shipper for logfiles";};
   heartbeat7  = beat "heartbeat"  {meta.description = "Lightweight shipper for uptime monitoring";};
-  metricbeat7 = beat "metricbeat" {meta.description = "Lightweight shipper for metrics";};
+  metricbeat7 = beat "metricbeat" {
+    meta.description = "Lightweight shipper for metrics";
+    passthru.tests =
+      assert metricbeat7.drvPath == nixosTests.elk.ELK-7.elkPackages.metricbeat.drvPath;
+      {
+        elk = nixosTests.elk.ELK-7;
+      };
+  };
   packetbeat7 = beat "packetbeat" {
     buildInputs = [ libpcap ];
     meta.description = "Network packet analyzer that ships data to Elasticsearch";
@@ -45,7 +52,7 @@ in {
       journal entries from Linuxes with systemd.
     '';
     buildInputs = [ systemd.dev ];
-    postFixup = let libPath = stdenv.lib.makeLibraryPath [ systemd.lib ]; in ''
+    postFixup = let libPath = lib.makeLibraryPath [ (lib.getLib systemd) ]; in ''
       patchelf --set-rpath ${libPath} "$out/bin/journalbeat"
     '';
   };
diff --git a/pkgs/misc/long-shebang/default.nix b/pkgs/misc/long-shebang/default.nix
index 753e1f490bb..6ad7c8496ed 100644
--- a/pkgs/misc/long-shebang/default.nix
+++ b/pkgs/misc/long-shebang/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }: let
+{ lib, stdenv, fetchurl }: let
   version = "1.2.0";
 in stdenv.mkDerivation {
   pname = "long-shebang";
@@ -14,8 +14,8 @@ in stdenv.mkDerivation {
 
     homepage = "https://github.com/shlevy/long-shebang";
 
-    license = stdenv.lib.licenses.mit;
+    license = lib.licenses.mit;
 
-    platforms = stdenv.lib.platforms.unix;
+    platforms = lib.platforms.unix;
   };
 }
diff --git a/pkgs/misc/mnemonicode/default.nix b/pkgs/misc/mnemonicode/default.nix
index ec0dd0b1fd5..352dd038fb5 100644
--- a/pkgs/misc/mnemonicode/default.nix
+++ b/pkgs/misc/mnemonicode/default.nix
@@ -21,7 +21,7 @@ stdenv.mkDerivation {
       back to data on the other side.
     '';
     license = licenses.mit;
-    platforms = platforms.linux;
+    platforms = platforms.all;
     maintainers = [ maintainers.cstrahan ];
   };
 }
diff --git a/pkgs/misc/mxt-app/default.nix b/pkgs/misc/mxt-app/default.nix
index 6ceb4d6c1a3..099300634e8 100644
--- a/pkgs/misc/mxt-app/default.nix
+++ b/pkgs/misc/mxt-app/default.nix
@@ -1,22 +1,22 @@
-{ stdenv, fetchFromGitHub, autoreconfHook, libtool }:
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, libtool }:
 
 stdenv.mkDerivation rec {
-  version="1.28";
+  version="1.32";
   pname = "mxt-app";
 
   src = fetchFromGitHub {
     owner = "atmel-maxtouch";
     repo = "mxt-app";
     rev = "v${version}";
-    sha256 = "1z2mir4ib9xzxmy0daazzvlga41n80zch1xyp1iz98rrdsnvd1la";
+    sha256 = "1z1g5h14j3yw3r9phgir33s9j07ns9c0r5lkl49940pzqycnrwbj";
   };
 
   nativeBuildInputs = [ autoreconfHook ];
   buildInputs = [ libtool ];
- 
+
   hardeningDisable = [ "fortify" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Command line utility for Atmel maXTouch devices";
     homepage = "https://github.com/atmel-maxtouch/mxt-app";
     license = licenses.bsd2;
diff --git a/pkgs/misc/my-env/default.nix b/pkgs/misc/my-env/default.nix
index fb8de9b6a71..8a35525b3e8 100644
--- a/pkgs/misc/my-env/default.nix
+++ b/pkgs/misc/my-env/default.nix
@@ -6,15 +6,15 @@
     packageOverrides = pkgs : with pkgs; {
       sdlEnv = pkgs.myEnvFun {
           name = "sdl";
-  nativeBuildInputs = [ pkgconfig ];
-          buildInputs = [ stdenv SDL SDL_image SDL_ttf SDL_gfx cmake SDL_net];
+          nativeBuildInputs = [ cmake pkg-config ];
+          buildInputs = [ stdenv SDL SDL_image SDL_ttf SDL_gfx SDL_net];
       };
     };
   }
 
-  # Then you can install it by:  
+  # Then you can install it by:
   #  $ nix-env -i env-sdl
-  # And you can load it simply calling:  
+  # And you can load it simply calling:
   #  $ load-env-sdl
   # and this will update your env vars to have 'make' and 'gcc' finding the SDL
   # headers and libs.
@@ -29,7 +29,7 @@
     let complicatedMyEnv = { name, buildInputs ? [], cTags ? [], extraCmds ? ""}:
             pkgs.myEnvFun {
               inherit name;
-            buildInputs = buildInputs 
+            buildInputs = buildInputs
                   ++ map (x : sourceWithTagsDerivation
                     ( (addCTaggingInfo x ).passthru.sourceWithTags ) ) cTags;
             extraCmds = ''
diff --git a/pkgs/misc/openrussian-cli/default.nix b/pkgs/misc/openrussian-cli/default.nix
new file mode 100644
index 00000000000..ce9a9e49c4c
--- /dev/null
+++ b/pkgs/misc/openrussian-cli/default.nix
@@ -0,0 +1,61 @@
+{ stdenv, lib, fetchFromGitHub, gnumake, pkg-config, wget, unzip, gawk
+, sqlite, which, luaPackages, installShellFiles, makeWrapper
+}:
+stdenv.mkDerivation rec {
+  pname   = "openrussian-cli";
+  version = "1.0.0";
+
+  src = fetchFromGitHub {
+    owner   = "rhaberkorn";
+    repo    = "openrussian-cli";
+    rev     = version;
+    sha256  = "1ria7s7dpqip2wdwn35wmkry84g8ghdqnxc9cbxzzq63vl6pgvcn";
+  };
+
+  nativeBuildInputs = [
+    gnumake pkg-config wget unzip gawk sqlite which installShellFiles makeWrapper
+  ];
+
+  buildInputs = with luaPackages; [ lua luasql-sqlite3 luautf8 ];
+
+  makeFlags = [
+    "LUA=${luaPackages.lua}/bin/lua"
+    "LUAC=${luaPackages.lua}/bin/luac"
+  ];
+
+  dontConfigure = true;
+
+  # Disable check as it's too slow.
+  # doCheck = true;
+
+  #This is needed even though it's the default for some reason.
+  checkTarget = "check";
+
+  # Can't use "make install" here
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/bin $out/share/openrussian
+    cp openrussian-sqlite3.db $out/share/openrussian
+    cp openrussian $out/bin
+
+    wrapProgram $out/bin/openrussian \
+      --prefix LUA_PATH ';' "$LUA_PATH" \
+      --prefix LUA_CPATH ';' "$LUA_CPATH"
+
+    runHook postInstall
+  '';
+
+  postInstall = ''
+    installShellCompletion --cmd openrussian --bash ./openrussian-completion.bash
+    installManPage ./openrussian.1
+  '';
+
+  meta = with lib; {
+    homepage    = "https://github.com/rhaberkorn/openrussian-cli";
+    description = "Offline Console Russian Dictionary (based on openrussian.org)";
+    license     = with licenses; [ gpl3Only mit cc-by-sa-40 ];
+    maintainers = with maintainers; [ zane ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/pkgs/misc/ptouch-print/default.nix b/pkgs/misc/ptouch-print/default.nix
new file mode 100644
index 00000000000..f9889cfe4be
--- /dev/null
+++ b/pkgs/misc/ptouch-print/default.nix
@@ -0,0 +1,34 @@
+{ lib, stdenv
+, fetchgit
+, autoreconfHook
+, gd
+, libusb1
+}:
+
+stdenv.mkDerivation rec {
+  pname = "ptouch-print";
+  version = "1.4.3";
+
+  src = fetchgit {
+    url = "https://mockmoon-cybernetics.ch/cgi/cgit/linux/ptouch-print.git";
+    rev = "v${version}";
+    sha256 = "0i57asg2hj1nfwy5lcb0vhrpvb9dqfhf81vh4i929h1kiqhlw2hx";
+  };
+
+  nativeBuildInputs = [
+    autoreconfHook
+  ];
+
+  buildInputs = [
+    gd
+    libusb1
+  ];
+
+  meta = with lib; {
+    description = "Command line tool to print labels on Brother P-Touch printers on Linux";
+    license = licenses.gpl3Plus;
+    homepage = "https://mockmoon-cybernetics.ch/computer/p-touch2430pc/";
+    maintainers = with maintainers; [ shamilton ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/misc/pylode/default.nix b/pkgs/misc/pylode/default.nix
new file mode 100644
index 00000000000..33e78bc1523
--- /dev/null
+++ b/pkgs/misc/pylode/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, python3Packages
+, fetchFromGitHub
+}:
+
+python3Packages.buildPythonApplication rec {
+  pname = "pyLODE";
+  version = "2.8.6";
+
+  src = fetchFromGitHub {
+    owner = "RDFLib";
+    repo = pname;
+    rev = version;
+    sha256 = "0zbk5lj9vlg32rmvw1himlw63kxd7sim7nzglrjs5zm6vpi4x5ch";
+  };
+
+  propagatedBuildInputs = with python3Packages; [
+    python-dateutil
+    falcon
+    gunicorn
+    isodate
+    jinja2
+    markdown
+    rdflib
+    rdflib-jsonld
+    requests
+    six
+    beautifulsoup4
+  ];
+
+  meta = with lib; {
+    description = "An OWL ontology documentation tool using Python and templating, based on LODE";
+    homepage = "https://github.com/RDFLib/pyLODE";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ koslambrou ];
+  };
+}
diff --git a/pkgs/misc/riscv-pk/default.nix b/pkgs/misc/riscv-pk/default.nix
index 3e1f63e5e30..66b7321c780 100644
--- a/pkgs/misc/riscv-pk/default.nix
+++ b/pkgs/misc/riscv-pk/default.nix
@@ -1,15 +1,14 @@
-{ stdenv, fetchFromGitHub, autoreconfHook, payload ? null }: let
-  rev = "e5846a2bc707eaa58dc8ab6a8d20a090c6ee8570";
-  sha256 = "1clynpp70fnbgsjgxx7xi0vrdrj1v0h8zpv0x26i324kp2gwylf4";
-  revCount = "438";
-  shortRev = "e5846a2";
-in stdenv.mkDerivation {
-  name = "riscv-pk-0.1pre${revCount}_${shortRev}";
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, payload ? null }:
+
+stdenv.mkDerivation rec {
+  pname = "riscv-pk";
+  version = "1.0.0";
 
   src = fetchFromGitHub {
     owner = "riscv";
     repo = "riscv-pk";
-    inherit rev sha256;
+    rev = "v${version}";
+    sha256 = "1cc0rz4q3a1zw8756b8yysw8lb5g4xbjajh5lvqbjix41hbdx6xz";
   };
 
   nativeBuildInputs = [ autoreconfHook ];
@@ -21,7 +20,7 @@ in stdenv.mkDerivation {
 
   configureScript = "../configure";
 
-  configureFlags = stdenv.lib.optional (payload != null)
+  configureFlags = lib.optional (payload != null)
     "--with-payload=${payload}";
 
   hardeningDisable = [ "all" ];
@@ -33,10 +32,10 @@ in stdenv.mkDerivation {
   '';
 
   meta = {
-    description = "RISC-V Proxy Kernel and Bootloader.";
+    description = "RISC-V Proxy Kernel and Bootloader";
     homepage = "https://github.com/riscv/riscv-pk";
-    license = stdenv.lib.licenses.bsd3;
-    platforms = stdenv.lib.platforms.riscv;
-    maintainers = [ stdenv.lib.maintainers.shlevy ];
+    license = lib.licenses.bsd3;
+    platforms = lib.platforms.riscv;
+    maintainers = [ lib.maintainers.shlevy ];
   };
 }
diff --git a/pkgs/misc/rkdeveloptool/default.nix b/pkgs/misc/rkdeveloptool/default.nix
index 8ce4fd8e14c..517a8cc6532 100644
--- a/pkgs/misc/rkdeveloptool/default.nix
+++ b/pkgs/misc/rkdeveloptool/default.nix
@@ -1,21 +1,24 @@
-{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, libusb1 }:
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, pkg-config, libusb1 }:
 
 stdenv.mkDerivation {
   pname = "rkdeveloptool";
-  version = "unstable-2019-07-01";
+  version = "unstable-2021-02-03";
 
   src = fetchFromGitHub {
     owner = "rockchip-linux";
     repo = "rkdeveloptool";
-    rev = "6e92ebcf8b1812da02663494a68972f956e490d3";
-    sha256 = "0zwrkqfxd671iy69v3q0844gfdpm1yk51i9qh2rqc969bd8glxga";
+    rev = "e607a5d6ad3f6af66d3daf3f6370e6dc9763a20d";
+    sha256 = "08m0yfds5rpr5l0s75ynfarq3hrv94l3aadld17cz5gqapqcfs2n";
   };
 
-  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
 
   buildInputs = [ libusb1 ];
 
-  meta = with stdenv.lib; {
+  # main.cpp:1568:36: error: '%s' directive output may be truncated writing up to 557 bytes into a region of size 5
+  CPPFLAGS = "-Wno-error=format-truncation";
+
+  meta = with lib; {
     homepage = "https://github.com/rockchip-linux/rkdeveloptool";
     description = "A tool from Rockchip to communicate with Rockusb devices";
     license = licenses.gpl2;
diff --git a/pkgs/misc/sailsd/default.nix b/pkgs/misc/sailsd/default.nix
index 0dca0701098..d2f91c42638 100644
--- a/pkgs/misc/sailsd/default.nix
+++ b/pkgs/misc/sailsd/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, pkgconfig, jansson }:
+{ lib, stdenv, fetchFromGitHub, pkg-config, jansson }:
 
 let
   libsailing = fetchFromGitHub {
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
     sha256 = "1s4nlffp683binbdxwwzbsci61kbjylbcr1jf44sv1h1r5d5js05";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ jansson libsailing ];
 
   INSTALL_PATH = "$(out)";
@@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
       --replace gcc cc
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Simulator daemon for autonomous sailing boats";
     homepage = "https://github.com/sails-simulator/sailsd";
     license = licenses.gpl3;
diff --git a/pkgs/misc/scimark/default.nix b/pkgs/misc/scimark/default.nix
new file mode 100644
index 00000000000..7558c676ba5
--- /dev/null
+++ b/pkgs/misc/scimark/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, stdenv
+, fetchurl
+, unzip
+}:
+
+stdenv.mkDerivation rec {
+  pname = "scimark";
+  version = "4c";
+
+  src = fetchurl {
+    url = "https://math.nist.gov/scimark2/${pname}${version}.zip";
+    hash = "sha256-kcg5vKYp0B7+bC/CmFMO/tMwxf9q6nvuFv0vRSy3MbE=";
+  };
+
+  nativeBuildInputs = [
+    unzip
+  ];
+
+  dontConfigure = true;
+
+  installPhase = ''
+    install -d $out/bin/
+    install scimark4 $out/bin/
+  '';
+
+  meta = with lib; {
+    homepage = "https://math.nist.gov/scimark2/index.html";
+    description = "Scientific and numerical computing benchmark (ANSI C version)";
+    license = licenses.publicDomain;
+    maintainers = with maintainers; [ AndersonTorres ];
+    platforms = platforms.all;
+  };
+}
+# TODO [ AndersonTorres ]: Java version
diff --git a/pkgs/misc/scrcpy/default.nix b/pkgs/misc/scrcpy/default.nix
index adebcbd633d..00b143b1b58 100644
--- a/pkgs/misc/scrcpy/default.nix
+++ b/pkgs/misc/scrcpy/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, fetchFromGitHub, makeWrapper
+{ lib, stdenv, fetchurl, fetchFromGitHub, makeWrapper
 , meson
 , ninja
 , pkg-config
@@ -10,10 +10,10 @@
 }:
 
 let
-  version = "1.15.1";
+  version = "1.18";
   prebuilt_server = fetchurl {
     url = "https://github.com/Genymobile/scrcpy/releases/download/v${version}/scrcpy-server-v${version}";
-    sha256 = "1hrp2rfwl06ff2b2i12ccka58l1brvn6xqgm1f38k36s61mbs1py";
+    sha256 = "18si7k9hyqa77yy9w747kl2x2pivyigny49dwzx9sfd9xmmmq734";
   };
 in
 stdenv.mkDerivation rec {
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
     owner = "Genymobile";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0ijar1cycj42p39cgpnwdwr6nz5pyr6vacr1gvc0f6k92pl8vr13";
+    sha256 = "019948v63qhmp742hmar7a98ss673m0wdycpphjhfl1kg4iihiya";
   };
 
   # postPatch:
@@ -54,7 +54,7 @@ stdenv.mkDerivation rec {
     wrapProgram "$out/bin/scrcpy" --prefix PATH : "${platform-tools}/bin"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Display and control Android devices over USB or TCP/IP";
     homepage = "https://github.com/Genymobile/scrcpy";
     license = licenses.asl20;
diff --git a/pkgs/misc/scream-receivers/default.nix b/pkgs/misc/scream-receivers/default.nix
deleted file mode 100644
index 6c0f73f1b25..00000000000
--- a/pkgs/misc/scream-receivers/default.nix
+++ /dev/null
@@ -1,56 +0,0 @@
-{ stdenv, lib, fetchFromGitHub, alsaLib
-, pulseSupport ? false, libpulseaudio ? null
-}:
-
-stdenv.mkDerivation rec {
-  pname = "scream-receivers";
-  version = "3.4";
-
-  src = fetchFromGitHub {
-    owner = "duncanthrax";
-    repo = "scream";
-    rev = version;
-    sha256 = "1ig89bmzfrm57nd8lamzsdz5z81ks5vjvq3f0xhgm2dk2mrgjsj3";
-  };
-
-  buildInputs = [ alsaLib ] ++ lib.optional pulseSupport libpulseaudio;
-
-  buildPhase = ''
-    (cd Receivers/alsa && make)
-    (cd Receivers/alsa-ivshmem && make)
-  '' + lib.optionalString pulseSupport ''
-    (cd Receivers/pulseaudio && make)
-    (cd Receivers/pulseaudio-ivshmem && make)
-  '';
-
-  installPhase = ''
-    mkdir -p $out/bin
-    mv ./Receivers/alsa/scream-alsa $out/bin/
-    mv ./Receivers/alsa-ivshmem/scream-ivshmem-alsa $out/bin/
-  '' + lib.optionalString pulseSupport ''
-    mv ./Receivers/pulseaudio/scream-pulse $out/bin/
-    mv ./Receivers/pulseaudio-ivshmem/scream-ivshmem-pulse $out/bin/
-  '';
-
-  doInstallCheck = true;
-  installCheckPhase = ''
-    export PATH=$PATH:$out/bin
-    set -o verbose
-    set +o pipefail
-
-    # Programs exit with code 1 when testing help, so grep for a string
-    scream-alsa -h 2>&1 | grep -q Usage:
-    scream-ivshmem-alsa 2>&1 | grep -q Usage:
-  '' + lib.optionalString pulseSupport ''
-    scream-pulse -h 2>&1 | grep -q Usage:
-    scream-ivshmem-pulse 2>&1 | grep -q Usage:
-  '';
-
-  meta = with lib; {
-    description = "Audio receivers for the Scream virtual network sound card";
-    homepage = "https://github.com/duncanthrax/scream";
-    license = licenses.mspl;
-    platforms = platforms.linux;
-    maintainers = with maintainers; [ ];
-  };
-}
diff --git a/pkgs/misc/screensavers/alock/default.nix b/pkgs/misc/screensavers/alock/default.nix
index c9340b2503e..d10082a71e3 100644
--- a/pkgs/misc/screensavers/alock/default.nix
+++ b/pkgs/misc/screensavers/alock/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchgit, pkgconfig, autoreconfHook
+{ lib, stdenv, fetchgit, pkg-config, autoreconfHook
 , libX11, pam, libgcrypt, libXrender, imlib2 }:
 
 stdenv.mkDerivation rec {
@@ -20,13 +20,13 @@ stdenv.mkDerivation rec {
     "--enable-imlib2"
   ];
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [
     autoreconfHook libX11
     pam libgcrypt libXrender imlib2
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/Arkq/alock";
     description = "Simple screen lock application for X server";
     longDescription = ''
diff --git a/pkgs/misc/screensavers/betterlockscreen/default.nix b/pkgs/misc/screensavers/betterlockscreen/default.nix
index 36f89819570..facac2717c4 100644
--- a/pkgs/misc/screensavers/betterlockscreen/default.nix
+++ b/pkgs/misc/screensavers/betterlockscreen/default.nix
@@ -1,17 +1,17 @@
 {
-  stdenv, makeWrapper, fetchFromGitHub,
+  lib, stdenv, makeWrapper, fetchFromGitHub,
   imagemagick, i3lock-color, xdpyinfo, xrandr, bc, feh, procps, xrdb
 }:
 
 stdenv.mkDerivation rec {
   pname = "betterlockscreen";
-  version = "3.0.1";
+  version = "3.2.0";
 
   src = fetchFromGitHub {
     owner = "pavanjadhaw";
     repo = "betterlockscreen";
     rev = version;
-    sha256 = "0jc8ifb69shmd0avx6vny4m1w5dfxkkf5vnm7qcrmc8yflb0s3z6";
+    sha256 = "sha256-UOMCTHtw1C+MiJL6AQ+8gqmmbqrs1QTzEi1Ar03PyMs=";
   };
 
   nativeBuildInputs = [ makeWrapper ];
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
   installPhase =
     let
       PATH =
-        stdenv.lib.makeBinPath
+        lib.makeBinPath
         [imagemagick i3lock-color xdpyinfo xrandr bc feh procps xrdb];
     in ''
       mkdir -p $out/bin
@@ -29,8 +29,8 @@ stdenv.mkDerivation rec {
       wrapProgram "$out/bin/betterlockscreen" --prefix PATH : "$out/bin:${PATH}"
     '';
 
-  meta = with stdenv.lib; {
-    description = "Betterlockscreen is a simple minimal lock screen which allows you to cache images with different filters and lockscreen with blazing speed.";
+  meta = with lib; {
+    description = "A simple minimal lock screen which allows you to cache images with different filters and lockscreen with blazing speed";
     homepage = "https://github.com/pavanjadhaw/betterlockscreen";
     license = licenses.mit;
     platforms = platforms.linux;
diff --git a/pkgs/misc/screensavers/betterlockscreen/replace-i3lock.patch b/pkgs/misc/screensavers/betterlockscreen/replace-i3lock.patch
index 3bbbfcfd613..439c3561f96 100644
--- a/pkgs/misc/screensavers/betterlockscreen/replace-i3lock.patch
+++ b/pkgs/misc/screensavers/betterlockscreen/replace-i3lock.patch
@@ -1,12 +1,14 @@
+diff --git a/betterlockscreen b/betterlockscreen
+index 6dd06e0..746d820 100755
 --- a/betterlockscreen
 +++ b/betterlockscreen
-@@ -76,7 +76,7 @@ prelock() {
+@@ -87,7 +87,7 @@ prelock() {
  lock() {
  	#$1 image path
  
 -	i3lock \
 +	i3lock-color \
+ 		-c 00000000 \
  		-t -i "$1" \
  		--timepos='x+110:h-70' \
- 		--datepos='x+43:h-45' \
 
diff --git a/pkgs/misc/screensavers/electricsheep/default.nix b/pkgs/misc/screensavers/electricsheep/default.nix
index 71a248bcfa1..d1aa7d9911b 100644
--- a/pkgs/misc/screensavers/electricsheep/default.nix
+++ b/pkgs/misc/screensavers/electricsheep/default.nix
@@ -1,22 +1,22 @@
-{ stdenv, fetchFromGitHub, autoreconfHook, wxGTK30, libav, lua5_1, curl
-, libpng, xorg, pkgconfig, flam3, libgtop, boost, tinyxml, freeglut, libGLU, libGL
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, wxGTK30, ffmpeg, lua5_1, curl
+, libpng, xorg, pkg-config, flam3, libgtop, boost, tinyxml, freeglut, libGLU, libGL
 , glee }:
 
 stdenv.mkDerivation rec {
   pname = "electricsheep";
-  version = "2.7b33-2017-10-20";
+  version = "3.0.2-2019-10-05";
 
   src = fetchFromGitHub {
     owner = "scottdraves";
     repo = pname;
-    rev = "c02c19b9364733fc73826e105fc983a89a8b4f40";
+    rev = "37ba0fd692d6581f8fe009ed11c9650cd8174123";
     sha256 = "1z49l53j1lhk7ahdy96lm9r0pklwpf2i5s6y2l2rn6l4z8dxkjmk";
   };
 
-  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
 
   buildInputs = [
-    wxGTK30 libav lua5_1 curl libpng xorg.libXrender
+    wxGTK30 ffmpeg lua5_1 curl libpng xorg.libXrender
     flam3 libgtop boost tinyxml freeglut libGLU libGL glee
   ];
 
@@ -29,14 +29,18 @@ stdenv.mkDerivation rec {
     "CPPFLAGS=-I${glee}/include/GL"
   ];
 
+  makeFlags = [
+    ''CXXFLAGS+="-DGL_GLEXT_PROTOTYPES"''
+  ];
+
   preBuild = ''
     sed -i "s|/usr|$out|" Makefile
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Electric Sheep, a distributed screen saver for evolving artificial organisms";
     homepage = "https://electricsheep.org/";
-    maintainers = with maintainers; [ nand0p fpletz ];
+    maintainers = with maintainers; [ fpletz ];
     platforms = platforms.linux;
     license = licenses.gpl1;
   };
diff --git a/pkgs/misc/screensavers/i3lock-pixeled/default.nix b/pkgs/misc/screensavers/i3lock-pixeled/default.nix
index 5ffe5f72265..cb7a2fd1e18 100644
--- a/pkgs/misc/screensavers/i3lock-pixeled/default.nix
+++ b/pkgs/misc/screensavers/i3lock-pixeled/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, i3lock, imagemagick, scrot, playerctl, fetchFromGitLab }:
+{ lib, stdenv, i3lock, imagemagick, scrot, playerctl, fetchFromGitLab }:
 
 stdenv.mkDerivation rec {
   pname = "i3lock-pixeled";
@@ -30,8 +30,8 @@ stdenv.mkDerivation rec {
        --replace playerctl "${playerctl}/bin/playerctl"
   '';
 
-  meta = with stdenv.lib; {
-    description = "Simple i3lock helper which pixels a screenshot by scaling it down and up to get a pixeled version of the screen when the lock is active.";
+  meta = with lib; {
+    description = "Simple i3lock helper which pixels a screenshot by scaling it down and up to get a pixeled version of the screen when the lock is active";
     homepage = "https://gitlab.com/Ma27/i3lock-pixeled";
     license = licenses.mit;
     platforms = platforms.linux;
diff --git a/pkgs/misc/screensavers/light-locker/default.nix b/pkgs/misc/screensavers/light-locker/default.nix
index c4915bec895..ef1143f4143 100644
--- a/pkgs/misc/screensavers/light-locker/default.nix
+++ b/pkgs/misc/screensavers/light-locker/default.nix
@@ -1,9 +1,9 @@
-{ stdenv
+{ lib, stdenv
 , fetchFromGitHub
 , nix-update-script
 , meson
 , ninja
-, pkgconfig
+, pkg-config
 , gtk3
 , glib
 , intltool
@@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
     intltool
     meson
     ninja
-    pkgconfig
+    pkg-config
     wrapGAppsHook
   ];
 
@@ -71,7 +71,7 @@ stdenv.mkDerivation rec {
     };
   };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/the-cavalry/light-locker";
     description = "A simple session-locker for LightDM";
     longDescription = ''
diff --git a/pkgs/misc/screensavers/multilockscreen/default.nix b/pkgs/misc/screensavers/multilockscreen/default.nix
new file mode 100644
index 00000000000..b0c157c778a
--- /dev/null
+++ b/pkgs/misc/screensavers/multilockscreen/default.nix
@@ -0,0 +1,47 @@
+{
+  lib, stdenv, makeWrapper, fetchFromGitHub, writeShellScriptBin,
+  imagemagick, i3lock-color, xdpyinfo, xrandr, bc, feh, procps, xrdb, xset,
+  gnused, gnugrep, coreutils
+}:
+let
+  i3lock = writeShellScriptBin "i3lock" ''
+    ${i3lock-color}/bin/i3lock-color "$@"
+  '';
+  binPath = lib.makeBinPath [
+    imagemagick i3lock
+    xdpyinfo xrandr xset
+    bc feh procps xrdb
+    gnused gnugrep coreutils
+  ];
+in
+stdenv.mkDerivation rec {
+  pname = "multilockscreen";
+  version = "1.2.0";
+
+  src = fetchFromGitHub {
+    owner = "jeffmhubbard";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1bfpbazvhaz9x356nsghz0czysh9b75g79cd9s35v0x0rrzdr9qj";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp multilockscreen $out/bin/multilockscreen
+    wrapProgram "$out/bin/multilockscreen" --prefix PATH : "${binPath}"
+  '';
+
+  meta = with lib; {
+    description = "Wrapper script for i3lock-color";
+    longDescription = ''
+      multilockscreen is a wrapper script for i3lock-color.
+      It allows you to cache background images for i3lock-color with a variety of different effects and adds a stylish indicator.
+    '';
+    homepage = "https://github.com/jeffmhubbard/multilockscreen";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ kylesferrazza ];
+  };
+}
diff --git a/pkgs/misc/screensavers/physlock/default.nix b/pkgs/misc/screensavers/physlock/default.nix
index c27ac344e05..d25a777e650 100644
--- a/pkgs/misc/screensavers/physlock/default.nix
+++ b/pkgs/misc/screensavers/physlock/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, pam, systemd }:
+{ lib, stdenv, fetchFromGitHub, pam, systemd }:
 
 stdenv.mkDerivation rec {
   version = "v13";
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
 
   makeFlags = [ "PREFIX=$(out)" "SESSION=systemd" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A secure suspend/hibernate-friendly alternative to `vlock -an`";
     license = licenses.gpl2;
     platforms = platforms.linux;
diff --git a/pkgs/misc/screensavers/pipes/default.nix b/pkgs/misc/screensavers/pipes/default.nix
index 94d6299d383..be605192acc 100644
--- a/pkgs/misc/screensavers/pipes/default.nix
+++ b/pkgs/misc/screensavers/pipes/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, makeWrapper, coreutils, ncurses }:
+{ lib, stdenv, fetchurl, makeWrapper, coreutils, ncurses }:
 
 stdenv.mkDerivation rec {
   pname = "pipes";
@@ -9,17 +9,17 @@ stdenv.mkDerivation rec {
     sha256 = "09m4alb3clp3rhnqga5v6070p7n1gmnwp2ssqhq87nf2ipfpcaak";
   };
 
-  buildInputs = [ makeWrapper ];
+  nativeBuildInputs = [ makeWrapper ];
 
   installPhase = ''
     mkdir $out -p
     make PREFIX=$out/ install
 
     wrapProgram $out/bin/pipes.sh \
-      --set PATH "${stdenv.lib.makeBinPath [ coreutils ncurses ]}"
+      --set PATH "${lib.makeBinPath [ coreutils ncurses ]}"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/pipeseroni/pipes.sh";
     description = "Animated pipes terminal screensaver";
     license = licenses.mit;
diff --git a/pkgs/misc/screensavers/rss-glx/default.nix b/pkgs/misc/screensavers/rss-glx/default.nix
index 467f762de86..981db782c7c 100644
--- a/pkgs/misc/screensavers/rss-glx/default.nix
+++ b/pkgs/misc/screensavers/rss-glx/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, pkgconfig, xlibsWrapper, libXext, libGLU, libGL, imagemagick, libtiff, bzip2}:
+{lib, stdenv, fetchurl, pkg-config, xlibsWrapper, libXext, libGLU, libGL, imagemagick6, libtiff, bzip2}:
 
 stdenv.mkDerivation rec {
   version = "0.9.1";
@@ -9,10 +9,10 @@ stdenv.mkDerivation rec {
     sha256 = "1aikafjqrfmv23jnrrm5d56dg6injh4l67zjdxzdapv9chw7g3cg";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ libGLU libGL xlibsWrapper imagemagick libtiff bzip2 ];
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ libGLU libGL xlibsWrapper imagemagick6 libtiff bzip2 ];
 
-  NIX_CFLAGS_COMPILE = "-I${imagemagick.dev}/include/ImageMagick";
+  NIX_CFLAGS_COMPILE = "-I${imagemagick6.dev}/include/ImageMagick";
   NIX_LDFLAGS= "-rpath ${libXext}/lib";
 
   meta = {
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
       This package currently contains all of the screensavers from the
       original collection, plus a few others.
     '';
-    license = stdenv.lib.licenses.gpl2;
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.gpl2;
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/misc/screensavers/slock/default.nix b/pkgs/misc/screensavers/slock/default.nix
index 7df635c10c7..800a81d2ffc 100644
--- a/pkgs/misc/screensavers/slock/default.nix
+++ b/pkgs/misc/screensavers/slock/default.nix
@@ -1,10 +1,10 @@
-{ stdenv, fetchurl, writeText
+{ lib, stdenv, fetchurl, writeText
 , xorgproto, libX11, libXext, libXrandr
 # default header can be obtained from
 # https://git.suckless.org/slock/tree/config.def.h
 , conf ? null }:
 
-with stdenv.lib;
+with lib;
 stdenv.mkDerivation rec {
   name = "slock-1.4";
 
diff --git a/pkgs/misc/screensavers/vlock/default.nix b/pkgs/misc/screensavers/vlock/default.nix
index 83d82e2b3b3..4813e249307 100644
--- a/pkgs/misc/screensavers/vlock/default.nix
+++ b/pkgs/misc/screensavers/vlock/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pam }:
+{ lib, stdenv, fetchurl, pam }:
 
 stdenv.mkDerivation {
   name = "vlock-2.2.2";
@@ -20,10 +20,10 @@ stdenv.mkDerivation {
 
   buildInputs = [ pam ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Virtual console locking program";
     license = licenses.gpl2;
-    maintainers = [ maintainers.lethalman ];
+    maintainers = [ ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/misc/screensavers/xautolock/default.nix b/pkgs/misc/screensavers/xautolock/default.nix
index cefcdbc75a3..cdb12b55464 100644
--- a/pkgs/misc/screensavers/xautolock/default.nix
+++ b/pkgs/misc/screensavers/xautolock/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, xlibsWrapper
+{ lib, stdenv, fetchFromGitHub, xlibsWrapper
 , imake, gccmakedep, libXScrnSaver, xorgproto
 }:
 
@@ -25,8 +25,8 @@ stdenv.mkDerivation rec {
 
   installTargets = [ "install" "install.man" ];
 
-  meta = with stdenv.lib; {
-    description = "Launch a given program when your X session has been idle for a given time.";
+  meta = with lib; {
+    description = "Launch a given program when your X session has been idle for a given time";
     homepage = "http://www.ibiblio.org/pub/linux/X11/screensavers";
     maintainers = with maintainers; [ peti ];
     platforms = platforms.linux;
diff --git a/pkgs/misc/screensavers/xlockmore/default.nix b/pkgs/misc/screensavers/xlockmore/default.nix
index 01ee818f256..600528a7944 100644
--- a/pkgs/misc/screensavers/xlockmore/default.nix
+++ b/pkgs/misc/screensavers/xlockmore/default.nix
@@ -1,17 +1,18 @@
 { stdenv, lib, fetchurl, pam ? null, libX11, libXext, libXinerama
-, libXdmcp, libXt }:
+, libXdmcp, libXt, autoreconfHook }:
 
 stdenv.mkDerivation rec {
-  name = "xlockmore-5.64";
+  name = "xlockmore-5.66";
 
   src = fetchurl {
     url = "http://sillycycle.com/xlock/${name}.tar.xz";
-    sha256 = "0fbh6avdzsm1prafglr2xdd8c4ibkddi6xxywvqgvzp0zb2kqimr";
+    sha256 = "sha256-WXalw2YoKNFFIskOBvKN3PyOV3iP3gjri3pw6e87q3E=";
     curlOpts = "--user-agent 'Mozilla/5.0'";
   };
 
   # Optionally, it can use GTK.
-  buildInputs = [ pam libX11 libXext libXinerama libXdmcp libXt ];
+  buildInputs = [ pam libX11 libXext.dev libXinerama libXdmcp libXt ];
+  nativeBuildInputs = [ autoreconfHook ];
 
   # Don't try to install `xlock' setuid. Password authentication works
   # fine via PAM without super user privileges.
diff --git a/pkgs/misc/screensavers/xscreensaver/default.nix b/pkgs/misc/screensavers/xscreensaver/default.nix
index 71108c9c689..6b90d6f58e1 100644
--- a/pkgs/misc/screensavers/xscreensaver/default.nix
+++ b/pkgs/misc/screensavers/xscreensaver/default.nix
@@ -1,63 +1,57 @@
-{ stdenv, fetchurl, pkgconfig, bc, perl, perlPackages, pam, libXext, libXScrnSaver, libX11
-, libXrandr, libXmu, libXxf86vm, libXrender, libXxf86misc, libjpeg, libGLU, libGL, gtk2
-, libxml2, libglade, intltool, xorg, makeWrapper, gle, gdk-pixbuf, gdk-pixbuf-xlib
+{ lib, stdenv, fetchurl
+, pkg-config, intltool
+, perl, gettext, libX11, libXext, libXi, libXt
+, libXft, libXinerama, libXrandr, libXxf86vm, libGL, libGLU, gle
+, gtk2, gdk-pixbuf, gdk-pixbuf-xlib, libxml2, pam
+, systemd
 , forceInstallAllHacks ? false
+, withSystemd ? stdenv.isLinux
 }:
 
 stdenv.mkDerivation rec {
-  version = "5.44";
+  version = "6.00";
   pname = "xscreensaver";
 
   src = fetchurl {
     url = "https://www.jwz.org/${pname}/${pname}-${version}.tar.gz";
-    sha256 = "15bv05vpfjwsrqbazrjmm382jd7vvw0mp6y9vasn6wvxzjf0in3k";
+    sha256 = "WFCIl0chuCjr1x/T67AZ0b8xITPJVurJZy1h9rSddwY=";
   };
 
-  buildInputs =
-    [ pkgconfig bc perl libjpeg libGLU libGL gtk2 libxml2 libglade pam
-      libXext libXScrnSaver libX11 libXrandr libXmu libXxf86vm libXrender
-      libXxf86misc intltool xorg.appres makeWrapper gle gdk-pixbuf
-      gdk-pixbuf-xlib
-    ];
+  nativeBuildInputs = [
+    pkg-config intltool
+  ];
 
-  preConfigure =
-    ''
-      # Fix installation paths for GTK resources.
-      sed -e 's%@GTK_DATADIR@%@datadir@% ; s%@PO_DATADIR@%@datadir@%' \
-          -i driver/Makefile.in po/Makefile.in.in
-    '';
+  buildInputs = [
+    perl gettext libX11 libXext libXi libXt
+    libXft libXinerama libXrandr libXxf86vm libGL libGLU gle
+    gtk2 gdk-pixbuf gdk-pixbuf-xlib libxml2 pam
+  ] ++ lib.optional withSystemd systemd;
 
-  configureFlags =
-    [ "--with-gl" "--with-pam" "--with-pixbuf" "--with-proc-interrupts"
-      "--with-dpms-ext" "--with-randr-ext" "--with-xinerama-ext"
-      "--with-xf86vmode-ext" "--with-xf86gamma-ext" "--with-randr-ext"
-      "--with-xshm-ext" "--with-xdbe-ext"
-      "--with-x-app-defaults=\${out}/share/xscreensaver/app-defaults"
-    ];
+  preConfigure = ''
+    # Fix installation paths for GTK resources.
+    sed -e 's%@GTK_DATADIR@%@datadir@% ; s%@PO_DATADIR@%@datadir@%' \
+      -i driver/Makefile.in po/Makefile.in.in
+  '';
 
-  postInstall = ''
-      wrapProgram $out/bin/xscreensaver-text \
-        --prefix PATH : ${stdenv.lib.makeBinPath [xorg.appres]}
-      wrapProgram $out/bin/xscreensaver-getimage-file \
-        --set PERL5LIB "$out/${perlPackages.perl.libPrefix}:${with perlPackages; makePerlPath [
-              EncodeLocale HTTPDate HTTPMessage IOSocketSSL LWP LWPProtocolHttps
-              MozillaCA NetHTTP NetSSLeay TryTiny URI
-              ]}"
-  ''
-  + stdenv.lib.optionalString forceInstallAllHacks ''
-    make -C hacks/glx dnalogo
-    cat hacks/Makefile.in | grep -E '([a-z0-9]+):[[:space:]]*\1[.]o' | cut -d : -f 1  | xargs make -C hacks
-    cat hacks/glx/Makefile.in | grep -E '([a-z0-9]+):[[:space:]]*\1[.]o' | cut -d : -f 1  | xargs make -C hacks/glx
-    cp -f $(find hacks -type f -perm -111 "!" -name "*.*" )  "$out/libexec/xscreensaver"
-  ''
-  ;
+  configureFlags = [
+    "--with-app-defaults=${placeholder "out"}/share/xscreensaver/app-defaults"
+  ];
+
+  postInstall = lib.optionalString forceInstallAllHacks ''
+    make -j$NIX_BUILD_CORES -C hacks/glx dnalogo
+    cat hacks/Makefile.in \
+      | grep -E '([a-z0-9]+):[[:space:]]*\1[.]o' | cut -d : -f 1 | xargs make -j$NIX_BUILD_CORES -C hacks
+    cat hacks/glx/Makefile.in \
+      | grep -E '([a-z0-9]+):[[:space:]]*\1[.]o' | cut -d : -f 1 | xargs make -j$NIX_BUILD_CORES -C hacks/glx
+    cp -f $(find hacks -type f -perm -111 "!" -name "*.*" ) "$out/libexec/xscreensaver"
+  '';
 
   meta = {
     homepage = "https://www.jwz.org/xscreensaver/";
     description = "A set of screensavers";
-    maintainers = with stdenv.lib.maintainers; [ raskin ];
-    platforms = stdenv.lib.platforms.unix; # Once had cygwin problems
-    inherit version;
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ raskin ];
+    platforms = lib.platforms.unix; # Once had cygwin problems
     downloadPage = "https://www.jwz.org/xscreensaver/download.html";
     updateWalker = true;
   };
diff --git a/pkgs/misc/screensavers/xss-lock/default.nix b/pkgs/misc/screensavers/xss-lock/default.nix
index b7b0e27ad46..c6dafd2a812 100644
--- a/pkgs/misc/screensavers/xss-lock/default.nix
+++ b/pkgs/misc/screensavers/xss-lock/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, cmake, docutils, pkgconfig, glib, libpthreadstubs
+{ lib, stdenv, fetchFromGitHub, cmake, docutils, pkg-config, glib, libpthreadstubs
 , libXau, libXdmcp, xcbutil }:
 
 stdenv.mkDerivation {
@@ -11,11 +11,10 @@ stdenv.mkDerivation {
     sha256 = "040nqgfh564frvqkrkmak3x3h0yadz6kzk81jkfvd9vd20a9drh7";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ cmake docutils glib libpthreadstubs libXau
-                  libXdmcp xcbutil ];
+  nativeBuildInputs = [ cmake pkg-config docutils ];
+  buildInputs = [ glib libpthreadstubs libXau libXdmcp xcbutil ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Use external locker (such as i3lock) as X screen saver";
     license = licenses.mit;
     maintainers = with maintainers; [ malyn offline ];
diff --git a/pkgs/misc/screensavers/xssproxy/default.nix b/pkgs/misc/screensavers/xssproxy/default.nix
index cff03f3bed0..5e1c4208413 100644
--- a/pkgs/misc/screensavers/xssproxy/default.nix
+++ b/pkgs/misc/screensavers/xssproxy/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, glib, pkgconfig, xorg, dbus }:
+{ lib, stdenv, fetchFromGitHub, glib, pkg-config, xorg, dbus }:
 
 let rev = "1.0.0"; in
 
@@ -12,7 +12,7 @@ stdenv.mkDerivation {
     sha256 = "0c83wmipnsdnbihc5niyczs7jrkss2s8n6iwwjdia7hkjzbd0hl7";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ glib xorg.libX11 xorg.libXScrnSaver dbus ];
 
   makeFlags = [
@@ -23,8 +23,8 @@ stdenv.mkDerivation {
   meta = {
     description = "Forward freedesktop.org Idle Inhibition Service calls to Xss";
     homepage = "https://github.com/timakro/xssproxy";
-    license = stdenv.lib.licenses.gpl3;
-    maintainers = with stdenv.lib.maintainers; [ benley ];
-    platforms = stdenv.lib.platforms.unix;
+    license = lib.licenses.gpl3;
+    maintainers = with lib.maintainers; [ benley ];
+    platforms = lib.platforms.unix;
   };
 }
diff --git a/pkgs/misc/screensavers/xtrlock-pam/default.nix b/pkgs/misc/screensavers/xtrlock-pam/default.nix
index ca4623e3068..c563cca05ef 100644
--- a/pkgs/misc/screensavers/xtrlock-pam/default.nix
+++ b/pkgs/misc/screensavers/xtrlock-pam/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchgit, python, pkgconfig, xlibsWrapper, pam }:
+{ lib, stdenv, fetchgit, python, pkg-config, xlibsWrapper, pam }:
 
 stdenv.mkDerivation {
   name = "xtrlock-pam-3.4-post-20150909";
@@ -9,7 +9,7 @@ stdenv.mkDerivation {
     sha256 = "1z2wlhi5d05b18pvwz146kp0lkcc6z2mnilk01mk19hzbziyqmsc";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ python xlibsWrapper pam ];
 
   configurePhase = ''
@@ -22,7 +22,7 @@ stdenv.mkDerivation {
     homepage = "https://github.com/aanatoly/xtrlock-pam";
     description = "PAM based X11 screen locker";
     license = "unknown";
-    maintainers = with stdenv.lib.maintainers; [ tstrobel ];
-    platforms = with stdenv.lib.platforms; linux;
+    maintainers = with lib.maintainers; [ tstrobel ];
+    platforms = with lib.platforms; linux;
   };
 }
diff --git a/pkgs/misc/seafile-shared/default.nix b/pkgs/misc/seafile-shared/default.nix
index 7546c7626ed..cc6d0ced6d1 100644
--- a/pkgs/misc/seafile-shared/default.nix
+++ b/pkgs/misc/seafile-shared/default.nix
@@ -1,22 +1,33 @@
-{stdenv, fetchFromGitHub, which, autoreconfHook, pkgconfig, vala, python2, curl, libevent, glib, libsearpc, sqlite, intltool, fuse, ccnet, libuuid }:
+{ lib, stdenv
+, fetchFromGitHub
+, autoreconfHook
+, curl
+, libevent
+, libsearpc
+, libuuid
+, pkg-config
+, python3
+, sqlite
+, vala
+}:
 
 stdenv.mkDerivation rec {
   pname = "seafile-shared";
-  version = "7.0.7";
+  version = "8.0.3";
 
   src = fetchFromGitHub {
     owner = "haiwen";
     repo = "seafile";
     rev = "v${version}";
-    sha256 = "0vgzb923x2q2w1zgbc56d50a5qj9xm77lg7czfzg3va7vd921gy8";
+    sha256 = "QflLh3fj+jOq/8etr9aG8LGrvtIlB/htVkWbdO+GIbM=";
   };
 
   nativeBuildInputs = [
     autoreconfHook
     vala
-    pkgconfig
-    python2
-    python2.pkgs.wrapPython
+    pkg-config
+    python3
+    python3.pkgs.wrapPython
   ];
 
   buildInputs = [
@@ -30,10 +41,10 @@ stdenv.mkDerivation rec {
   configureFlags = [
     "--disable-server"
     "--disable-console"
+    "--with-python3"
   ];
 
-  pythonPath = with python2.pkgs; [
-    future
+  pythonPath = with python3.pkgs; [
     libsearpc
   ];
 
@@ -41,7 +52,7 @@ stdenv.mkDerivation rec {
     wrapPythonPrograms
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/haiwen/seafile";
     description = "Shared components of Seafile: seafile-daemon, libseafile, libseafile python bindings, manuals, and icons";
     license = licenses.gpl3;
diff --git a/pkgs/misc/sndio/default.nix b/pkgs/misc/sndio/default.nix
index c415714f573..9e4035801f1 100644
--- a/pkgs/misc/sndio/default.nix
+++ b/pkgs/misc/sndio/default.nix
@@ -1,24 +1,20 @@
-{ stdenv, fetchurl, alsaLib }:
+{ lib, stdenv, fetchurl, alsa-lib, fixDarwinDylibNames }:
 
 stdenv.mkDerivation rec {
   pname = "sndio";
-  version = "1.6.0";
-  enableParallelBuilding = true;
-  buildInputs = stdenv.lib.optionals stdenv.isLinux [ alsaLib ];
+  version = "1.8.0";
 
   src = fetchurl {
     url = "http://www.sndio.org/sndio-${version}.tar.gz";
-    sha256 = "1havdx3q4mipgddmd2bnygr1yh6y64567m1yqwjapkhsq550dq4r";
+    sha256 = "027hlqji0h2cm96rb8qvkdmwxl56l59bgn828nvmwak2c2i5k703";
   };
 
-  postFixup = stdenv.lib.optionalString stdenv.isDarwin ''
-    install_name_tool -id $out/lib/libsndio.7.0.dylib $out/lib/libsndio.7.0.dylib
-    for file in $out/bin/*; do
-      install_name_tool -change libsndio.7.0.dylib $out/lib/libsndio.dylib $file
-    done
-  '';
+  nativeBuildInputs = lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames;
+  buildInputs = lib.optional stdenv.hostPlatform.isLinux alsa-lib;
+
+  enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://www.sndio.org";
     description = "Small audio and MIDI framework part of the OpenBSD project";
     license = licenses.isc;
diff --git a/pkgs/misc/solfege/default.nix b/pkgs/misc/solfege/default.nix
index 05e13f3c9aa..fc7062d904c 100644
--- a/pkgs/misc/solfege/default.nix
+++ b/pkgs/misc/solfege/default.nix
@@ -1,7 +1,7 @@
-{ lib, fetchurl, gettext, pkgconfig, texinfo, wrapGAppsHook
+{ lib, fetchurl, gettext, pkg-config, texinfo, wrapGAppsHook
 , buildPythonApplication, pycairo, pygobject3
 , gobject-introspection, gtk3, librsvg
-, alsaUtils, timidity, mpg123, vorbis-tools, csound, lilypond
+, alsa-utils, timidity, mpg123, vorbis-tools, csound, lilypond
 }:
 
 buildPythonApplication rec {
@@ -15,15 +15,16 @@ buildPythonApplication rec {
   patches = [
     ./css.patch
     ./menubar.patch
+    ./texinfo.patch
     ./webbrowser.patch
   ];
 
-  nativeBuildInputs = [ gettext pkgconfig texinfo wrapGAppsHook ];
+  nativeBuildInputs = [ gettext pkg-config texinfo wrapGAppsHook ];
   buildInputs = [ gobject-introspection gtk3 librsvg ];
   propagatedBuildInputs = [ pycairo pygobject3 ];
 
   preBuild = ''
-    sed -i -e 's|wav_player=.*|wav_player=${alsaUtils}/bin/aplay|' \
+    sed -i -e 's|wav_player=.*|wav_player=${alsa-utils}/bin/aplay|' \
            -e 's|midi_player=.*|midi_player=${timidity}/bin/timidity|' \
            -e 's|mp3_player=.*|mp3_player=${mpg123}/bin/mpg123|' \
            -e 's|ogg_player=.*|ogg_player=${vorbis-tools}/bin/ogg123|' \
@@ -38,7 +39,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Ear training program";
-    homepage = "http://www.solfege.org/";
+    homepage = "https://www.solfege.org/";
     license = licenses.gpl3;
     platforms = platforms.linux;
     maintainers = with maintainers; [ bjornfor orivej ];
diff --git a/pkgs/misc/solfege/texinfo.patch b/pkgs/misc/solfege/texinfo.patch
new file mode 100644
index 00000000000..d681b3e901b
--- /dev/null
+++ b/pkgs/misc/solfege/texinfo.patch
@@ -0,0 +1,20 @@
+Fix build with texinfo 6.7. Otherwise
+
+    makeinfo -I topdocs --no-split --no-headers --output AUTHORS topdocs/AUTHORS.texi
+
+fails with
+
+    utf8 "\xC1" does not map to Unicode at /nix/store/...-texinfo-6.7/share/texinfo/Texinfo/ParserNonXS.pm line 1796, <FH> line 38.
+
+--- a/topdocs/AUTHORS.texi
++++ b/topdocs/AUTHORS.texi
+@@ -1,2 +1,3 @@
+ \input texinfo
++@documentencoding ISO-8859-1
+ @setfilename AUTHORS.info
+--- a/topdocs/README.texi
++++ b/topdocs/README.texi
+@@ -1,2 +1,3 @@
+ \input texinfo
++@documentencoding ISO-8859-1
+ @setfilename README.info
diff --git a/pkgs/misc/sound-of-sorting/default.nix b/pkgs/misc/sound-of-sorting/default.nix
index 07e50c8379e..6e838803dea 100644
--- a/pkgs/misc/sound-of-sorting/default.nix
+++ b/pkgs/misc/sound-of-sorting/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, SDL2, wxGTK } :
+{ lib, stdenv, fetchFromGitHub, SDL2, wxGTK } :
 
 stdenv.mkDerivation rec {
 
@@ -12,16 +12,16 @@ stdenv.mkDerivation rec {
     sha256 = "01bpzn38cwn9zlydzvnfz9k7mxdnjnvgnbcpx7i4al8fha7x9lw8";
   };
 
-  buildInputs = 
+  buildInputs =
   [ wxGTK SDL2 ];
 
   preConfigure = ''
     export SDL_CONFIG=${SDL2.dev}/bin/sdl2-config
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Audibilization and Visualization of Sorting Algorithms";
-    homepage = "http://panthema.net/2013/sound-of-sorting/";
+    homepage = "https://panthema.net/2013/sound-of-sorting/";
     license = with licenses; gpl3;
     maintainers = with maintainers; [ AndersonTorres ];
   };
diff --git a/pkgs/misc/source-and-tags/default.nix b/pkgs/misc/source-and-tags/default.nix
index 7c082cbbbb0..966a451c060 100644
--- a/pkgs/misc/source-and-tags/default.nix
+++ b/pkgs/misc/source-and-tags/default.nix
@@ -1,6 +1,6 @@
 { stdenv, lib, glibcLocales, unzip, hasktags, ctags } : {
   # optional srcDir
-  annotatedWithSourceAndTagInfo = x : (x ? passthru && x.passthru ? sourceWithTags 
+  annotatedWithSourceAndTagInfo = x : (x ? passthru && x.passthru ? sourceWithTags
                                       || x ? meta && x.meta ? sourceWithTags );
   # hack because passthru doesn't work the way I'd expect. Don't have time to spend on this right now
   # that's why I'm abusing meta for the same purpose in ghcsAndLibs
@@ -10,12 +10,12 @@
 
   # createTagFiles =  [ { name  = "my_tag_name_without_suffix", tagCmd = "ctags -R . -o \$TAG_FILE"; } ]
   # tag command must create file named $TAG_FILE
-  sourceWithTagsDerivation = {name, src, srcDir ? ".", tagSuffix ? "_tags", createTagFiles ? []} :  
+  sourceWithTagsDerivation = {name, src, srcDir ? ".", tagSuffix ? "_tags", createTagFiles ? []} :
     stdenv.mkDerivation {
     phases = "unpackPhase buildPhase";
     inherit src srcDir tagSuffix;
     name = "${name}-source-with-tags";
-    buildInputs = [ unzip ];
+    nativeBuildInputs = [ unzip ];
     # using separate tag directory so that you don't have to glob that much files when starting your editor
     # is this a good choice?
     buildPhase =
@@ -72,7 +72,7 @@
 
 
   addCTaggingInfo = deriv :
-    deriv // { 
+    deriv // {
       passthru = {
         sourceWithTags = {
          inherit (deriv) src;
diff --git a/pkgs/misc/stabber/default.nix b/pkgs/misc/stabber/default.nix
index 2c63bf40d36..eb0d6a4109d 100644
--- a/pkgs/misc/stabber/default.nix
+++ b/pkgs/misc/stabber/default.nix
@@ -1,8 +1,8 @@
-{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, glib, expat
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, pkg-config, glib, expat
 , libmicrohttpd
 }:
 
-with stdenv.lib;
+with lib;
 
 stdenv.mkDerivation {
   pname = "stabber-unstable";
@@ -19,7 +19,7 @@ stdenv.mkDerivation {
     mkdir m4
   '';
 
-  buildInputs = [ autoreconfHook pkgconfig glib expat libmicrohttpd ];
+  buildInputs = [ autoreconfHook pkg-config glib expat libmicrohttpd ];
 
   meta = {
     description = "Stubbed XMPP Server";
diff --git a/pkgs/misc/t-rec/default.nix b/pkgs/misc/t-rec/default.nix
new file mode 100644
index 00000000000..b9663cee5c3
--- /dev/null
+++ b/pkgs/misc/t-rec/default.nix
@@ -0,0 +1,37 @@
+{ lib, stdenv, imagemagick, ffmpeg, rustPlatform, fetchFromGitHub, makeWrapper
+, libiconv, Foundation }:
+
+let
+  binPath = lib.makeBinPath [
+    imagemagick
+    ffmpeg
+  ];
+in
+rustPlatform.buildRustPackage rec {
+  pname = "t-rec";
+  version = "0.6.0";
+
+  src = fetchFromGitHub {
+    owner = "sassman";
+    repo = "t-rec-rs";
+    rev = "v${version}";
+    sha256 = "InArrBqfhDrsonjmCIPTBVOA/s2vYml9Ay6cdrKLd7c=";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ imagemagick ]
+    ++ lib.optionals stdenv.isDarwin [ libiconv Foundation ];
+
+  postInstall = ''
+    wrapProgram "$out/bin/t-rec" --prefix PATH : "${binPath}"
+  '';
+
+  cargoSha256 = "4gwfrC65YlXV6Wu2ninK1TvMNUkY1GstVYPr0FK+xLU=";
+
+  meta = with lib; {
+    description = "Blazingly fast terminal recorder that generates animated gif images for the web written in rust";
+    homepage = "https://github.com/sassman/t-rec-rs";
+    license = with licenses; [ gpl3Only ];
+    maintainers = [ maintainers.hoverbear ];
+  };
+}
diff --git a/pkgs/misc/talkfilters/default.nix b/pkgs/misc/talkfilters/default.nix
index a622eca7795..0f265f7e259 100644
--- a/pkgs/misc/talkfilters/default.nix
+++ b/pkgs/misc/talkfilters/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 let
   pname = "talkfilters";
@@ -18,9 +18,9 @@ stdenv.mkDerivation {
   meta = {
     description = "Converts English text into text that mimics a stereotyped or humorous dialect";
     homepage = "http://www.hyperrealm.com/talkfilters/talkfilters.html";
-    license = stdenv.lib.licenses.gpl2;
-    maintainers = with stdenv.lib.maintainers; [ ikervagyok ];
-    platforms = with stdenv.lib.platforms; unix;
+    license = lib.licenses.gpl2;
+    maintainers = with lib.maintainers; [ ikervagyok ];
+    platforms = with lib.platforms; unix;
   };
 }
 
diff --git a/pkgs/misc/tmux-plugins/default.nix b/pkgs/misc/tmux-plugins/default.nix
index dd05bb4aa3b..b4978e200ab 100644
--- a/pkgs/misc/tmux-plugins/default.nix
+++ b/pkgs/misc/tmux-plugins/default.nix
@@ -1,7 +1,6 @@
 { lib
 , fetchFromGitHub
 , pkgs
-, reattach-to-user-namespace
 , stdenv
 }:
 
@@ -10,10 +9,10 @@ let
 
   addRtp = path: rtpFilePath: attrs: derivation:
     derivation // { rtp = "${derivation}/${path}/${rtpFilePath}"; } // {
-      overrideAttrs = f: mkDerivation (attrs // f attrs);
+      overrideAttrs = f: mkTmuxPlugin (attrs // f attrs);
     };
 
-  mkDerivation = a@{
+  mkTmuxPlugin = a@{
     pluginName,
     rtpFilePath ? (builtins.replaceStrings ["-"] ["_"] pluginName) + ".tmux",
     namePrefix ? "tmuxplugin-",
@@ -25,10 +24,11 @@ let
     preInstall ? "",
     postInstall ? "",
     path ? lib.getName pluginName,
-    dependencies ? [],
     ...
   }:
-    addRtp "${rtpPath}/${path}" rtpFilePath a (stdenv.mkDerivation (a // {
+    if lib.hasAttr "dependencies" a then
+      throw "dependencies attribute is obselete. see NixOS/nixpkgs#118034" # added 2021-04-01
+    else addRtp "${rtpPath}/${path}" rtpFilePath a (stdenv.mkDerivation (a // {
       pname = namePrefix + pluginName;
 
       inherit pluginName unpackPhase configurePhase buildPhase addonInfo preInstall postInstall;
@@ -45,15 +45,14 @@ let
 
         runHook postInstall
       '';
-
-      dependencies = [ pkgs.bash ] ++ dependencies;
     }));
 
 in rec {
+  inherit mkTmuxPlugin;
 
-  inherit mkDerivation;
+  mkDerivation = throw "tmuxPlugins.mkDerivation is deprecated, use tmuxPlugins.mkTmuxPlugin instead"; # added 2021-03-14
 
-  battery = mkDerivation {
+  battery = mkTmuxPlugin {
     pluginName = "battery";
     version = "unstable-2019-07-04";
     src = fetchFromGitHub {
@@ -64,19 +63,36 @@ in rec {
     };
   };
 
-  continuum = mkDerivation {
+  continuum = mkTmuxPlugin {
     pluginName = "continuum";
-    version = "unstable-2018-02-23";
+    version = "unstable-2020-10-16";
     src = fetchFromGitHub {
       owner = "tmux-plugins";
       repo = "tmux-continuum";
-      rev = "1531b3770a7cf7373d15fedd239c5331b99342d1";
-      sha256 = "1w3f7gzvv1k25yfr6d1snr2z88p8f87cahrbaslmyphdxpy0fa4m";
+      rev = "26eb5ffce0b559d682b9f98c8d4b6c370ecb639b";
+      sha256 = "1glwa89bv2r92qz579a49prk3jf612cpd5hw46j4wfb35xhnj3ab";
+    };
+    meta = {
+      homepage = "https://github.com/tmux-plugins/tmux-continuum";
+      description = "continous saving of tmux environment";
+      longDescription =
+      ''
+        Features:
+        * continuous saving of tmux environment
+        * automatic tmux start when computer/server is turned on
+        * automatic restore when tmux is started
+
+        Together, these features enable uninterrupted tmux usage. No matter the
+        computer or server restarts, if the machine is on, tmux will be there how
+        you left it off the last time it was used.
+      '';
+      license = lib.licenses.mit;
+      platforms = lib.platforms.unix;
+      maintainers = with lib.maintainers; [ ronanmacf ];
     };
-    dependencies = [ resurrect ];
   };
 
-  copycat = mkDerivation {
+  copycat = mkTmuxPlugin {
     pluginName = "copycat";
     version = "unstable-2020-01-09";
     src = fetchFromGitHub {
@@ -87,18 +103,18 @@ in rec {
     };
   };
 
-  cpu = mkDerivation {
+  cpu = mkTmuxPlugin {
     pluginName = "cpu";
-    version = "unstable-2020-04-05";
+    version = "unstable-2020-07-25";
     src = fetchFromGitHub {
       owner = "tmux-plugins";
       repo = "tmux-cpu";
-      rev = "8858050756e1fc3c081d37894b441f05ea893a67";
-      sha256 = "1bydzrnd9y5y46hjr844p4ylx2dpijn6pv3w94yyvwbyswmirhff";
+      rev = "20120a38ade17057441482b43eb5390e6ea2c1c1";
+      sha256 = "1gdz2awyd9icvyiw2p40gwymh6ngjhb9mkiv63ix53snp9ii794i";
     };
   };
 
-  ctrlw = mkDerivation rec {
+  ctrlw = mkTmuxPlugin rec {
     pluginName = "ctrlw";
     version = "0.1.1";
     src = fetchFromGitHub {
@@ -109,7 +125,53 @@ in rec {
     };
   };
 
-  fingers = mkDerivation rec {
+  dracula = mkTmuxPlugin rec {
+    pluginName = "dracula";
+    version = "2.0.0";
+    src = fetchFromGitHub {
+      owner = "dracula";
+      repo = "tmux";
+      rev = "v${version}";
+      sha256 = "ILs+GMltb2AYNUecFMyQZ/AuETB0PCFF2InSnptVBos=";
+    };
+    meta = with lib; {
+      homepage = "https://draculatheme.com/tmux";
+      description = "A feature packed Dracula theme for tmux!";
+      license = licenses.mit;
+      platforms = platforms.unix;
+      maintainers = with maintainers; [ ethancedwards8 ];
+    };
+  };
+
+  extrakto = mkTmuxPlugin {
+    pluginName = "extrakto";
+    version = "unstable-2021-04-04";
+    src = fetchFromGitHub {
+      owner = "laktak";
+      repo = "extrakto";
+      rev = "de8ac3e8a9fa887382649784ed8cae81f5757f77";
+      sha256 = "0mkp9r6mipdm7408w7ls1vfn6i3hj19nmir2bvfcp12b69zlzc47";
+    };
+    nativeBuildInputs = [ pkgs.makeWrapper ];
+    postInstall = ''
+    for f in extrakto.sh open.sh tmux-extrakto.sh; do
+      wrapProgram $target/scripts/$f \
+        --prefix PATH : ${with pkgs; lib.makeBinPath (
+        [ pkgs.fzf pkgs.python3 pkgs.xclip ]
+        )}
+    done
+
+    '';
+    meta = {
+      homepage = "https://github.com/laktak/extrakto";
+      description = "Fuzzy find your text with fzf instead of selecting it by hand ";
+      license = lib.licenses.mit;
+      platforms = lib.platforms.unix;
+      maintainers = with lib.maintainers; [ kidd ];
+    };
+  };
+
+  fingers = mkTmuxPlugin rec {
     pluginName = "fingers";
     rtpFilePath = "tmux-fingers.tmux";
     version = "1.0.1";
@@ -120,10 +182,18 @@ in rec {
       sha256 = "0gp37m3d0irrsih96qv2yalvr1wmf1n64589d4qzyzq16lzyjcr0";
       fetchSubmodules = true;
     };
-    dependencies = [ pkgs.gawk ];
+    nativeBuildInputs = [ pkgs.makeWrapper ];
+    postInstall = ''
+      for f in config.sh tmux-fingers.sh setup-fingers-mode-bindings.sh; do
+      wrapProgram $target/scripts/$f \
+        --prefix PATH : ${with pkgs; lib.makeBinPath (
+          [ gawk ] ++ lib.optionals stdenv.isDarwin [ reattach-to-user-namespace ]
+        )}
+      done
+    '';
   };
 
-  fpp = mkDerivation {
+  fpp = mkTmuxPlugin {
     pluginName = "fpp";
     version = "unstable-2016-03-08";
     src = fetchFromGitHub {
@@ -135,10 +205,9 @@ in rec {
     postInstall = ''
       sed -i -e 's|fpp |${pkgs.fpp}/bin/fpp |g' $target/fpp.tmux
     '';
-    dependencies = [ pkgs.fpp ];
   };
 
-  fzf-tmux-url = mkDerivation {
+  fzf-tmux-url = mkTmuxPlugin {
     pluginName = "fzf-tmux-url";
     rtpFilePath = "fzf-url.tmux";
     version = "unstable-2019-12-02";
@@ -150,7 +219,7 @@ in rec {
     };
   };
 
-  gruvbox = mkDerivation {
+  gruvbox = mkTmuxPlugin {
     pluginName = "gruvbox";
     rtpFilePath = "gruvbox-tpm.tmux";
     version = "unstable-2019-05-05";
@@ -162,7 +231,29 @@ in rec {
     };
   };
 
-  logging = mkDerivation {
+  jump = mkTmuxPlugin {
+    pluginName = "jump";
+    version = "2020-06-26";
+    rtpFilePath = "tmux-jump.tmux";
+    src = fetchFromGitHub {
+      owner = "schasse";
+      repo = "tmux-jump";
+      rev = "416f613d3eaadbe1f6f9eda77c49430527ebaffb";
+      sha256 = "1xbzdyhsgaq2in0f8f491gwjmx6cxpkf2c35d2dk0kg4jfs505sz";
+    };
+    postInstall = ''
+      sed -i -e 's|ruby|${pkgs.ruby}/bin/ruby|g' $target/scripts/tmux-jump.sh
+    '';
+    meta = with lib; {
+      homepage = "https://github.com/schasse/tmux-jump";
+      description = "Vimium/Easymotion like navigation for tmux";
+      license = licenses.gpl3;
+      platforms = platforms.unix;
+      maintainers = with maintainers; [ arnarg ];
+    };
+  };
+
+  logging = mkTmuxPlugin {
     pluginName = "logging";
     version = "unstable-2019-04-19";
     src = fetchFromGitHub {
@@ -173,7 +264,7 @@ in rec {
     };
   };
 
-  net-speed = mkDerivation {
+  net-speed = mkTmuxPlugin {
     pluginName = "net-speed";
     version = "unstable-2018-12-02";
     src = fetchFromGitHub {
@@ -184,7 +275,18 @@ in rec {
     };
   };
 
-  maildir-counter = mkDerivation {
+  nord = mkTmuxPlugin rec {
+    pluginName = "nord";
+    version = "0.3.0";
+    src = pkgs.fetchFromGitHub {
+      owner = "arcticicestudio";
+      repo = "nord-tmux";
+      rev = "v${version}";
+      sha256 = "14xhh49izvjw4ycwq5gx4if7a0bcnvgsf3irywc3qps6jjcf5ymk";
+    };
+  };
+
+  maildir-counter = mkTmuxPlugin {
     pluginName = "maildir-counter";
     version = "unstable-2016-11-25";
     src = fetchFromGitHub {
@@ -195,7 +297,7 @@ in rec {
     };
   };
 
-  online-status = mkDerivation {
+  online-status = mkTmuxPlugin {
     pluginName = "online-status";
     version = "unstable-2018-11-30";
     src = fetchFromGitHub {
@@ -206,7 +308,7 @@ in rec {
     };
   };
 
-  open = mkDerivation {
+  open = mkTmuxPlugin {
     pluginName = "open";
     version = "unstable-2019-12-02";
     src = fetchFromGitHub {
@@ -217,7 +319,19 @@ in rec {
     };
   };
 
-  pain-control = mkDerivation {
+  onedark-theme = mkTmuxPlugin {
+    pluginName = "onedark-theme";
+    rtpFilePath = "tmux-onedark-theme.tmux";
+    version = "unstable-2020-06-07";
+    src = fetchFromGitHub {
+      owner = "odedlaz";
+      repo = "tmux-onedark-theme";
+      rev = "3607ef889a47dd3b4b31f66cda7f36da6f81b85c";
+      sha256 = "19jljshwp2p83b634cd1mw69091x42jj0dg40ipw61qy6642h2m5";
+    };
+  };
+
+  pain-control = mkTmuxPlugin {
     pluginName = "pain-control";
     version = "unstable-2020-02-18";
     src = fetchFromGitHub {
@@ -228,7 +342,7 @@ in rec {
     };
   };
 
-  plumb = mkDerivation rec {
+  plumb = mkTmuxPlugin rec {
     pluginName = "plumb";
     version = "0.1.1";
     src = fetchFromGitHub {
@@ -242,7 +356,19 @@ in rec {
     '';
   };
 
-  prefix-highlight = mkDerivation {
+  power-theme = mkTmuxPlugin {
+    pluginName = "power";
+    rtpFilePath = "tmux-power.tmux";
+    version = "unstable-2020-11-18";
+    src = pkgs.fetchFromGitHub {
+      owner = "wfxr";
+      repo = "tmux-power";
+      rev = "aec44aa5e00cc39eb71c668b1d73823270058e7d";
+      sha256 = "11nm8cylx10d565g17acy0bj12n6dcbxp71zca2bmg0j1dq859cm";
+    };
+  };
+
+  prefix-highlight = mkTmuxPlugin {
     pluginName = "prefix-highlight";
     version = "unstable-2020-03-26";
     src = fetchFromGitHub {
@@ -253,18 +379,44 @@ in rec {
     };
   };
 
-  resurrect = mkDerivation {
+  resurrect = mkTmuxPlugin {
     pluginName = "resurrect";
-    version = "unstable-2020-03-21";
+    version = "unstable-2020-09-18";
     src = fetchFromGitHub {
       owner = "tmux-plugins";
       repo = "tmux-resurrect";
-      rev = "327c0481ad20c429b4e692e092659f8b3346b08f";
-      sha256 = "0nxfqazww36wwv49dzd39kq4jfls20834hf1458sf5pvmv5cmbyw";
+      rev = "e4825055c92e54b0c6ec572afc9b6c4723aba6c8";
+      sha256 = "0a96drkx1kpadkbxabcnvb542p75xdh2dbizvlq2lac5ldpb4hmx";
+    };
+    meta = {
+      homepage = "https://github.com/tmux-plugins/tmux-resurrect";
+      description = "Restore tmux environment after system restart";
+      longDescription =
+        ''
+          This plugin goes to great lengths to save and restore all the details
+          from your tmux environment. Here's what's been taken care of:
+
+          * all sessions, windows, panes and their order
+          * current working directory for each pane
+          * exact pane layouts within windows (even when zoomed)
+          * active and alternative session
+          * active and alternative window for each session
+          * windows with focus
+          * active pane for each window
+          * "grouped sessions" (useful feature when using tmux with multiple monitors)
+          * programs running within a pane! More details in the restoring programs doc.
+
+          Optional:
+          * restoring vim and neovim sessions
+          * restoring pane contents
+      '';
+      license = lib.licenses.mit;
+      platforms = lib.platforms.unix;
+      maintainers = with lib.maintainers; [ ronanmacf ];
     };
   };
 
-  sensible = mkDerivation {
+  sensible = mkTmuxPlugin {
     pluginName = "sensible";
     version = "unstable-2017-09-05";
     src = fetchFromGitHub {
@@ -273,12 +425,12 @@ in rec {
       rev = "e91b178ff832b7bcbbf4d99d9f467f63fd1b76b5";
       sha256 = "1z8dfbwblrbmb8sgb0k8h1q0dvfdz7gw57las8nwd5gj6ss1jyvx";
     };
-    postInstall = lib.optionalString pkgs.stdenv.isDarwin ''
-      sed -e 's:reattach-to-user-namespace:${reattach-to-user-namespace}/bin/reattach-to-user-namespace:g' -i $target/sensible.tmux
+    postInstall = lib.optionalString stdenv.isDarwin ''
+      sed -e 's:reattach-to-user-namespace:${pkgs.reattach-to-user-namespace}/bin/reattach-to-user-namespace:g' -i $target/sensible.tmux
     '';
   };
 
-  sessionist = mkDerivation {
+  sessionist = mkTmuxPlugin {
     pluginName = "sessionist";
     version = "unstable-2017-12-03";
     src = fetchFromGitHub {
@@ -289,7 +441,7 @@ in rec {
     };
   };
 
-  sidebar = mkDerivation {
+  sidebar = mkTmuxPlugin {
     pluginName = "sidebar";
     version = "unstable-2018-11-30";
     src = fetchFromGitHub {
@@ -300,7 +452,7 @@ in rec {
     };
   };
 
-  sysstat = mkDerivation {
+  sysstat = mkTmuxPlugin {
     pluginName = "sysstat";
     version = "unstable-2017-12-12";
     src = fetchFromGitHub {
@@ -311,7 +463,26 @@ in rec {
     };
   };
 
-  tmux-colors-solarized = mkDerivation {
+  tilish = mkTmuxPlugin {
+    pluginName = "tilish";
+    version = "2020-08-12";
+    src = fetchFromGitHub {
+      owner = "jabirali";
+      repo = "tmux-tilish";
+      rev = "73d2404cdc0ef6bd7fbc8982edae0b0e2a4dd860";
+      sha256 = "1x58h3bg9d69j40fh8rcjpxvg0i6j04pj8p3jk57l3cghxis5j05";
+    };
+
+    meta = with lib; {
+      homepage = "https://github.com/jabirali/tmux-tilish";
+      description = "Plugin which makes tmux work and feel like i3wm";
+      license = licenses.mit;
+      platforms = platforms.unix;
+      maintainers = with maintainers; [ arnarg ];
+    };
+  };
+
+  tmux-colors-solarized = mkTmuxPlugin {
     pluginName = "tmuxcolors";
     version = "unstable-2019-07-14";
     src = fetchFromGitHub {
@@ -322,7 +493,43 @@ in rec {
     };
   };
 
-  urlview = mkDerivation {
+  tmux-fzf = mkTmuxPlugin {
+    pluginName = "tmux-fzf";
+    rtpFilePath = "main.tmux";
+    version = "unstable-2020-12-07";
+    src = fetchFromGitHub {
+      owner = "sainnhe";
+      repo = "tmux-fzf";
+      rev = "5efeb91086040a3becf5372fb38258acd0579954";
+      sha256 = "1z0zmsf8asxs9wbwvkiyd81h93wb2ikl8nxxc26sdpi6l333q5s9";
+    };
+    postInstall = ''
+      find $target -type f -print0 | xargs -0 sed -i -e 's|fzf |${pkgs.fzf}/bin/fzf |g'
+      find $target -type f -print0 | xargs -0 sed -i -e 's|sed |${pkgs.gnused}/bin/sed |g'
+      find $target -type f -print0 | xargs -0 sed -i -e 's|tput |${pkgs.ncurses}/bin/tput |g'
+    '';
+    meta = {
+      homepage = "https://github.com/sainnhe/tmux-fzf";
+      description = "Use fzf to manage your tmux work environment! ";
+      longDescription =
+        ''
+        Features:
+        * Manage sessions (attach, detach*, rename, kill*).
+        * Manage windows (switch, link, move, swap, rename, kill*).
+        * Manage panes (switch, break, join*, swap, layout, kill*, resize).
+        * Multiple selection (support for actions marked by *).
+        * Search commands and append to command prompt.
+        * Search key bindings and execute.
+        * User menu.
+        * Popup window support.
+      '';
+      license = lib.licenses.mit;
+      platforms = lib.platforms.unix;
+      maintainers = with lib.maintainers; [ kyleondy ];
+    };
+  };
+
+  urlview = mkTmuxPlugin {
     pluginName = "urlview";
     version = "unstable-2016-01-06";
     src = fetchFromGitHub {
@@ -334,10 +541,28 @@ in rec {
     postInstall = ''
       sed -i -e '14,20{s|urlview|${pkgs.urlview}/bin/urlview|g}' $target/urlview.tmux
     '';
-    dependencies = [ pkgs.urlview ];
   };
 
-  vim-tmux-navigator = mkDerivation {
+  vim-tmux-focus-events = mkTmuxPlugin {
+    pluginName = "vim-tmux-focus-events";
+    version = "unstable-2020-10-05";
+    src = fetchFromGitHub {
+      owner = "tmux-plugins";
+      repo = "vim-tmux-focus-events";
+      rev = "a568192ca0de4ca0bd7b3cd0249aad491625c941";
+      sha256 = "130l73v18md95djkc4s9d0fr018f8f183sjcgy7dgldwdaxlqdi1";
+    };
+
+    meta = with lib; {
+      homepage = "https://github.com/tmux-plugins/vim-tmux-focus-events";
+      description = "Makes FocusGained and FocusLost autocommand events work in vim when using tmux";
+      license = licenses.mit;
+      platforms = platforms.unix;
+      maintainers = with maintainers; [ ronanmacf ];
+    };
+  };
+
+  vim-tmux-navigator = mkTmuxPlugin {
     pluginName = "vim-tmux-navigator";
     rtpFilePath = "vim-tmux-navigator.tmux";
     version = "unstable-2019-12-10";
@@ -349,15 +574,14 @@ in rec {
     };
   };
 
-  yank = mkDerivation {
+  yank = mkTmuxPlugin {
     pluginName = "yank";
-    version = "unstable-2019-12-02";
+    version = "unstable-2021-06-20";
     src = fetchFromGitHub {
       owner = "tmux-plugins";
       repo = "tmux-yank";
-      rev = "648005db64d9bf3c4650eff694ecb6cf3e42b0c8";
-      sha256 = "1zg9k8yk1iw01vl8m44w4sv20lln4l0lq9dafc09lxmgxm9dllj4";
+      rev = "1b1a436e19f095ae8f825243dbe29800a8acd25c";
+      sha256 = "hRvkBf+YrWycecnDixAsD4CAHg3KsioomfJ/nLl5Zgs=";
     };
   };
-
 }
diff --git a/pkgs/misc/tpm2-pkcs11/default.nix b/pkgs/misc/tpm2-pkcs11/default.nix
index a089488b0e0..232b86b1e7a 100644
--- a/pkgs/misc/tpm2-pkcs11/default.nix
+++ b/pkgs/misc/tpm2-pkcs11/default.nix
@@ -1,18 +1,18 @@
 { stdenv, lib, fetchFromGitHub, substituteAll
-, pkgconfig, autoreconfHook, autoconf-archive, makeWrapper, patchelf
+, pkg-config, autoreconfHook, autoconf-archive, makeWrapper, patchelf
 , tpm2-tss, tpm2-tools, opensc, openssl, sqlite, python37, glibc, libyaml
 , abrmdSupport ? true, tpm2-abrmd ? null
 }:
 
 stdenv.mkDerivation rec {
   pname = "tpm2-pkcs11";
-  version = "1.2.0";
+  version = "1.5.0";
 
   src = fetchFromGitHub {
     owner = "tpm2-software";
     repo = pname;
     rev = version;
-    sha256 = "0ydd88jc4pyf1v7008h2gf0napv6xpw4jn5w87slj9fphjdkwjiz";
+    sha256 = "0sm73a762c7qd6x3f052m00d7daprifimsfa17dfdf4jvy9fqy56";
   };
 
   patches = lib.singleton (
@@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
   '';
 
   nativeBuildInputs = [
-    pkgconfig autoreconfHook autoconf-archive makeWrapper patchelf
+    pkg-config autoreconfHook autoconf-archive makeWrapper patchelf
   ];
   buildInputs = [
     tpm2-tss tpm2-tools opensc openssl sqlite libyaml
@@ -74,6 +74,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/tpm2-software/tpm2-pkcs11";
     license = licenses.bsd2;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ lschuermann ];
+    maintainers = with maintainers; [ matthiasbeyer ];
   };
 }
diff --git a/pkgs/misc/uboot/0001-configs-rpi-allow-for-bigger-kernels.patch b/pkgs/misc/uboot/0001-configs-rpi-allow-for-bigger-kernels.patch
new file mode 100644
index 00000000000..3d0324a692c
--- /dev/null
+++ b/pkgs/misc/uboot/0001-configs-rpi-allow-for-bigger-kernels.patch
@@ -0,0 +1,45 @@
+From 3d0ce353cf62efea11aa88f814aa23bf8c04acc9 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Milan=20P=C3=A4ssler?= <milan@petabyte.dev>
+Date: Mon, 11 Jan 2021 15:13:10 +0100
+Subject: [PATCH] configs/rpi: allow for bigger kernels
+
+---
+ include/configs/rpi.h | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/include/configs/rpi.h b/include/configs/rpi.h
+index 834f1cd..10ab1e7 100644
+--- a/include/configs/rpi.h
++++ b/include/configs/rpi.h
+@@ -153,20 +153,20 @@
+  * more than ~700M away from the start of the kernel image but this number can
+  * be larger OR smaller depending on e.g. the 'vmalloc=xxxM' command line
+  * parameter given to the kernel. So reserving memory from low to high
+- * satisfies this constraint again. Reserving 1M at 0x02600000-0x02700000 for
+- * the DTB leaves rest of the free RAM to the initrd starting at 0x02700000.
++ * satisfies this constraint again. Reserving 1M at 0x02e00000-0x02f00000 for
++ * the DTB leaves rest of the free RAM to the initrd starting at 0x02f00000.
+  * Even with the smallest possible CPU-GPU memory split of the CPU getting
+- * only 64M, the remaining 25M starting at 0x02700000 should allow quite
+- * large initrds before they start colliding with U-Boot.
++ * only 64M, the remaining 17M starting at 0x02f00000 should allow reasonably
++ * sized initrds before they start colliding with U-Boot.
+  */
+ #define ENV_MEM_LAYOUT_SETTINGS \
+ 	"fdt_high=" FDT_HIGH "\0" \
+ 	"initrd_high=" INITRD_HIGH "\0" \
+ 	"kernel_addr_r=0x00080000\0" \
+-	"scriptaddr=0x02400000\0" \
+-	"pxefile_addr_r=0x02500000\0" \
+-	"fdt_addr_r=0x02600000\0" \
+-	"ramdisk_addr_r=0x02700000\0"
++	"scriptaddr=0x02c00000\0" \
++	"pxefile_addr_r=0x02d00000\0" \
++	"fdt_addr_r=0x02e00000\0" \
++	"ramdisk_addr_r=0x02f00000\0"
+ 
+ #if CONFIG_IS_ENABLED(CMD_MMC)
+ 	#define BOOT_TARGET_MMC(func) \
+-- 
+2.29.2
+
diff --git a/pkgs/misc/uboot/default.nix b/pkgs/misc/uboot/default.nix
index 85df90a9fe1..71f3e13fc90 100644
--- a/pkgs/misc/uboot/default.nix
+++ b/pkgs/misc/uboot/default.nix
@@ -18,10 +18,10 @@
 }:
 
 let
-  defaultVersion = "2020.07";
+  defaultVersion = "2021.04";
   defaultSrc = fetchurl {
     url = "ftp://ftp.denx.de/pub/u-boot/u-boot-${defaultVersion}.tar.bz2";
-    sha256 = "0sjzy262x93aaqd6z24ziaq19xjjjk5f577ivf768vmvwsgbzxf1";
+    sha256 = "06p1vymf0dl6jc2xy5w7p42mpgppa46lmpm2ishmgsycnldqnhqd";
   };
   buildUBoot = {
     version ? null
@@ -40,7 +40,9 @@ let
 
     src = if src == null then defaultSrc else src;
 
-    patches = extraPatches;
+    patches = [
+      ./0001-configs-rpi-allow-for-bigger-kernels.patch
+    ] ++ extraPatches;
 
     postPatch = ''
       patchShebangs tools
@@ -53,7 +55,10 @@ let
       dtc
       flex
       openssl
-      (buildPackages.python3.withPackages (p: [ p.libfdt ]))
+      (buildPackages.python3.withPackages (p: [
+        p.libfdt
+        p.setuptools # for pkg_resources
+      ]))
       swig
     ];
     depsBuildBuild = [ buildPackages.stdenv.cc ];
@@ -83,6 +88,11 @@ let
       mkdir -p ${installDir}
       cp ${lib.concatStringsSep " " filesToInstall} ${installDir}
 
+      mkdir -p "$out/nix-support"
+      ${lib.concatMapStrings (file: ''
+        echo "file binary-dist ${installDir}/${builtins.baseNameOf file}" >> "$out/nix-support/hydra-build-products"
+      '') filesToInstall}
+
       runHook postInstall
     '';
 
@@ -173,10 +183,32 @@ in {
     '';
   };
 
+  ubootNanoPCT4 = buildUBoot rec {
+    rkbin = fetchFromGitHub {
+      owner = "armbian";
+      repo = "rkbin";
+      rev = "3bd0321cae5ef881a6005fb470009ad5a5d1462d";
+      sha256 = "09r4dzxsbs3pff4sh70qnyp30s3rc7pkc46v1m3152s7jqjasp31";
+    };
+
+    defconfig = "nanopc-t4-rk3399_defconfig";
+
+    extraMeta = {
+      platforms = ["aarch64-linux"];
+      license = lib.licenses.unfreeRedistributableFirmware;
+    };
+    BL31="${armTrustedFirmwareRK3399}/bl31.elf";
+    filesToInstall = ["u-boot.itb" "idbloader.img"];
+    postBuild = ''
+      ./tools/mkimage -n rk3399 -T rksd -d ${rkbin}/rk33/rk3399_ddr_800MHz_v1.24.bin idbloader.img
+      cat ${rkbin}/rk33/rk3399_miniloader_v1.19.bin >> idbloader.img
+    '';
+  };
+
   ubootNovena = buildUBoot {
     defconfig = "novena_defconfig";
     extraMeta.platforms = ["armv7l-linux"];
-    filesToInstall = ["u-boot.bin" "SPL"];
+    filesToInstall = ["u-boot-dtb.img" "SPL"];
   };
 
   # Flashing instructions:
@@ -244,6 +276,12 @@ in {
     filesToInstall = ["u-boot-sunxi-with-spl.bin"];
   };
 
+  ubootOrangePiZero = buildUBoot {
+    defconfig = "orangepi_zero_defconfig";
+    extraMeta.platforms = ["armv7l-linux"];
+    filesToInstall = ["u-boot-sunxi-with-spl.bin"];
+  };
+
   ubootPcduino3Nano = buildUBoot {
     defconfig = "Linksprite_pcDuino3_Nano_defconfig";
     extraMeta.platforms = ["armv7l-linux"];
@@ -271,6 +309,13 @@ in {
     filesToInstall = ["u-boot-sunxi-with-spl.bin"];
   };
 
+  ubootPinebookPro = buildUBoot {
+    defconfig = "pinebook-pro-rk3399_defconfig";
+    extraMeta.platforms = ["aarch64-linux"];
+    BL31 = "${armTrustedFirmwareRK3399}/bl31.elf";
+    filesToInstall = [ "u-boot.itb" "idbloader.img"];
+  };
+
   ubootQemuAarch64 = buildUBoot {
     defconfig = "qemu_arm64_defconfig";
     extraMeta.platforms = ["aarch64-linux"];
@@ -307,6 +352,18 @@ in {
     filesToInstall = ["u-boot.bin"];
   };
 
+  ubootRaspberryPi4_32bit = buildUBoot {
+    defconfig = "rpi_4_32b_defconfig";
+    extraMeta.platforms = ["armv7l-linux"];
+    filesToInstall = ["u-boot.bin"];
+  };
+
+  ubootRaspberryPi4_64bit = buildUBoot {
+    defconfig = "rpi_4_defconfig";
+    extraMeta.platforms = ["aarch64-linux"];
+    filesToInstall = ["u-boot.bin"];
+  };
+
   ubootRaspberryPiZero = buildUBoot {
     defconfig = "rpi_0_w_defconfig";
     extraMeta.platforms = ["armv6l-linux"];
@@ -344,6 +401,13 @@ in {
 
   ubootRockPro64 = buildUBoot {
     extraMakeFlags = [ "all" "u-boot.itb" ];
+    extraPatches = [
+      # https://patchwork.ozlabs.org/project/uboot/list/?series=237654&archive=both&state=*
+      (fetchpatch {
+        url = "https://patchwork.ozlabs.org/series/237654/mbox/";
+        sha256 = "0aiw9zk8w4msd3v8nndhkspjify0yq6a5f0zdy6mhzs0ilq896c3";
+      })
+    ];
     defconfig = "rockpro64-rk3399_defconfig";
     extraMeta.platforms = ["aarch64-linux"];
     BL31="${armTrustedFirmwareRK3399}/bl31.elf";
@@ -387,4 +451,11 @@ in {
     extraMeta.platforms = ["armv7l-linux"];
     filesToInstall = ["u-boot.img" "SPL"];
   };
+
+  ubootRockPi4 = buildUBoot {
+    defconfig = "rock-pi-4-rk3399_defconfig";
+    extraMeta.platforms = ["aarch64-linux"];
+    BL31 = "${armTrustedFirmwareRK3399}/bl31.elf";
+    filesToInstall = [ "u-boot.itb" "idbloader.img"];
+  };
 }
diff --git a/pkgs/misc/uboot/nanonote.nix b/pkgs/misc/uboot/nanonote.nix
deleted file mode 100644
index fb3b98f478e..00000000000
--- a/pkgs/misc/uboot/nanonote.nix
+++ /dev/null
@@ -1,59 +0,0 @@
-{stdenv, fetchurl, fetchgit}:
-
-# All this file is made for the Marvell Sheevaplug
-   
-stdenv.mkDerivation {
-  name = "uboot-qb-2010.06";
-   
-  src = fetchurl {
-    url = "ftp://ftp.denx.de/pub/u-boot/u-boot-2010.06.tar.bz2";
-    sha256 = "1j0bl8x5i5m1pn62z450gbw30pbrj7sgs3fjp2l2giczv49cn33r";
-  };
-
-  srcPatches = fetchgit {
-    url = "git://projects.qi-hardware.com/openwrt-xburst.git";
-    rev = "3244d5ef9f93802f9b9b6f4405636424abf6fa83";
-    sha256 = "0mg87s10hpz41dr1zbd3bcl8i64gwvh3f1nrz8cb8c49099miqla";
-  };
-
-  patchPhase = ''
-    cp -R $srcPatches/package/uboot-xburst/files/* .
-    for a in $srcPatches/package/uboot-xburst/patches/*; do
-        patch -p1 < $a
-    done
-    chmod +w -R *
-    sed -i -e 's/console=ttyS0,57600n8//' include/configs/qi_lb60.h
-    # Load more than 2MiB for the kernel
-    sed -i -e 's/0x200000;bootm/0x400000;bootm/' include/configs/qi_lb60.h
-  '';
-
-  makeFlags = [
-    "CROSS_COMPILE=${stdenv.cc.targetPrefix}"
-  ];
-
-  # Add reiserfs support
-  configurePhase = ''
-    make mrproper
-    make qi_lb60_config
-  '';
-
-  preBuild= ''
-    # A variable named 'src' used to affect the build in some uboot...
-    unset -v src
-  '';
-
-  dontStrip = true;
-
-  installPhase = ''
-    mkdir -p $out
-    cp u-boot-nand.bin $out
-    cp u-boot u-boot.map $out
-
-    mkdir -p $out/bin
-    cp tools/{envcrc,mkimage} $out/bin
-  '';
-
-  meta = {
-    platforms = stdenv.lib.platforms.mips;
-  };
-}
diff --git a/pkgs/misc/uq/default.nix b/pkgs/misc/uq/default.nix
index 5c0fb954910..e0c62ca92ca 100755
--- a/pkgs/misc/uq/default.nix
+++ b/pkgs/misc/uq/default.nix
@@ -14,7 +14,7 @@ rustPlatform.buildRustPackage rec {
     sha256 = "1qqqmdk0v1d3ckasmmw5lbrkvhkv0nws4bzi9cfi1ndhrbvbkbxb";
   };
 
-  cargoSha256 = "1fv13rbghfw7114h7sda04gpqrjrsgnnki0p9kdd6r6sk5cbhn9x";
+  cargoSha256 = "1p6008vxm2pi9v31qhsq7zysanal6rcvcl8553373bkqlfd7w5c4";
 
   meta = with lib; {
     description = "A simple, user-friendly alternative to sort | uniq";
diff --git a/pkgs/misc/urbit/default.nix b/pkgs/misc/urbit/default.nix
index 031b65a1ef6..9ea1fc64c3f 100644
--- a/pkgs/misc/urbit/default.nix
+++ b/pkgs/misc/urbit/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchFromGitHub, curl, git, gmp, libsigsegv, meson, ncurses, ninja
-, openssl, pkgconfig, re2c, zlib
+{ lib, stdenv, fetchFromGitHub, curl, git, gmp, libsigsegv, meson, ncurses, ninja
+, openssl, pkg-config, re2c, zlib
 }:
 
 stdenv.mkDerivation rec {
@@ -14,14 +14,14 @@ stdenv.mkDerivation rec {
     fetchSubmodules = true;
   };
 
-  nativeBuildInputs = [ pkgconfig ninja meson ];
+  nativeBuildInputs = [ pkg-config ninja meson ];
   buildInputs = [ curl git gmp libsigsegv ncurses openssl re2c zlib ];
 
   postPatch = ''
     patchShebangs .
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "An operating function";
     homepage = "https://urbit.org";
     license = licenses.mit;
diff --git a/pkgs/misc/vim-plugins/aliases.nix b/pkgs/misc/vim-plugins/aliases.nix
index 4cfb6ccd372..67607fe4562 100644
--- a/pkgs/misc/vim-plugins/aliases.nix
+++ b/pkgs/misc/vim-plugins/aliases.nix
@@ -1,8 +1,7 @@
 # Deprecated aliases - for backward compatibility
+lib:
 
-lib: overriden:
-
-with overriden;
+final: prev:
 
 let
   # Removing recurseForDerivation prevents derivations of aliased attribute
@@ -21,12 +20,12 @@ let
 
   # Make sure that we are not shadowing something from
   # all-packages.nix.
-  checkInPkgs = n: alias: if builtins.hasAttr n overriden
+  checkInPkgs = n: alias: if builtins.hasAttr n prev
                           then throw "Alias ${n} is still in vim-plugins"
                           else alias;
 
   mapAliases = aliases:
-     lib.mapAttrs (n: alias: removeDistribute
+    lib.mapAttrs (n: alias: removeDistribute
                              (removeRecurseForDerivations
                               (checkInPkgs n alias)))
                      aliases;
@@ -36,7 +35,7 @@ let
   ) (builtins.fromJSON (builtins.readFile ./deprecated.json));
 
 in
-mapAliases ({
+mapAliases (with prev; {
   airline             = vim-airline;
   alternative         = a-vim; # backwards compat, added 2014-10-21
   bats                = bats-vim;
@@ -83,6 +82,7 @@ mapAliases ({
   hlint-refactor      = hlint-refactor-vim;
   hoogle              = vim-hoogle;
   Hoogle              = vim-hoogle;
+  indent-blankline-nvim-lua = indent-blankline-nvim; # backwards compat, added 2021-07-05
   ipython             = vim-ipython;
   latex-live-preview  = vim-latex-live-preview;
   maktaba             = vim-maktaba;
diff --git a/pkgs/misc/vim-plugins/build-vim-plugin.nix b/pkgs/misc/vim-plugins/build-vim-plugin.nix
index 4ca99b09af5..6960b790539 100644
--- a/pkgs/misc/vim-plugins/build-vim-plugin.nix
+++ b/pkgs/misc/vim-plugins/build-vim-plugin.nix
@@ -1,4 +1,4 @@
-{ stdenv
+{ lib, stdenv
 , rtpPath ? "share/vim-plugins"
 , vim
 }:
@@ -18,7 +18,7 @@ rec {
     buildPhase ? "",
     preInstall ? "",
     postInstall ? "",
-    path ? stdenv.lib.getName name,
+    path ? lib.getName name,
     addonInfo ? null,
     ...
   }:
diff --git a/pkgs/misc/vim-plugins/default.nix b/pkgs/misc/vim-plugins/default.nix
index e6bca9484a2..cbc6ec7380b 100644
--- a/pkgs/misc/vim-plugins/default.nix
+++ b/pkgs/misc/vim-plugins/default.nix
@@ -5,8 +5,12 @@ let
 
   inherit (vimUtils.override {inherit vim;}) buildVimPluginFrom2Nix;
 
+  inherit (lib) extends;
+
+  initialPackages = self: {};
+
   plugins = callPackage ./generated.nix {
-    inherit buildVimPluginFrom2Nix overrides;
+    inherit buildVimPluginFrom2Nix;
   };
 
   # TL;DR
@@ -21,8 +25,13 @@ let
     inherit llvmPackages;
   };
 
-  aliases = lib.optionalAttrs (config.allowAliases or true) (import ./aliases.nix lib plugins);
+  aliases = if (config.allowAliases or true) then (import ./aliases.nix lib) else final: prev: {};
 
+  extensible-self = lib.makeExtensible
+    (extends aliases
+      (extends overrides
+        (extends plugins initialPackages)
+      )
+    );
 in
-
-plugins // aliases
+  extensible-self
diff --git a/pkgs/misc/vim-plugins/deprecated.json b/pkgs/misc/vim-plugins/deprecated.json
index 218a1ab622f..41373adf62b 100644
--- a/pkgs/misc/vim-plugins/deprecated.json
+++ b/pkgs/misc/vim-plugins/deprecated.json
@@ -3,6 +3,10 @@
         "date": "2020-03-27",
         "new": "vim-gist"
     },
+    "nvim-lsp": {
+        "date": "2020-08-31",
+        "new": "nvim-lspconfig"
+    },
     "vim-jade": {
         "date": "2020-03-27",
         "new": "vim-pug"
@@ -15,4 +19,4 @@
         "date": "2020-03-27",
         "new": "YouCompleteMe"
     }
-}
\ No newline at end of file
+}
diff --git a/pkgs/misc/vim-plugins/generated.nix b/pkgs/misc/vim-plugins/generated.nix
index 0db9069b748..4a7201c2906 100644
--- a/pkgs/misc/vim-plugins/generated.nix
+++ b/pkgs/misc/vim-plugins/generated.nix
@@ -1,7 +1,7 @@
 # This file has been generated by ./pkgs/misc/vim-plugins/update.py. Do not edit!
-{ lib, buildVimPluginFrom2Nix, fetchFromGitHub, overrides ? (self: super: {}) }:
-let
-  packages = ( self:
+{ lib, buildVimPluginFrom2Nix, fetchFromGitHub }:
+
+final: prev:
 {
   a-vim = buildVimPluginFrom2Nix {
     pname = "a-vim";
@@ -39,14 +39,26 @@ let
     meta.homepage = "https://github.com/eikenb/acp/";
   };
 
+  aerial-nvim = buildVimPluginFrom2Nix {
+    pname = "aerial-nvim";
+    version = "2021-07-17";
+    src = fetchFromGitHub {
+      owner = "stevearc";
+      repo = "aerial.nvim";
+      rev = "e641878818c5545afd09b093a368f2d03f169273";
+      sha256 = "1zykpbd42nwvpkgbq0hh52micyybxyvia6558fp6nlcs56bdmqf4";
+    };
+    meta.homepage = "https://github.com/stevearc/aerial.nvim/";
+  };
+
   agda-vim = buildVimPluginFrom2Nix {
     pname = "agda-vim";
-    version = "2020-07-26";
+    version = "2020-11-23";
     src = fetchFromGitHub {
       owner = "derekelkins";
       repo = "agda-vim";
-      rev = "3c92e212a05eb254849a597d8d002abf69699aa0";
-      sha256 = "0m3kinhzjk0cky372j1kw6hhy14khshkh9jbw35a5q18c4xvy4pq";
+      rev = "81b0a1a612621f3b8d9ce30c48527cc85a950f1c";
+      sha256 = "1yqvcyw8zaryqy2hbbq4iaf5af0n4wpw07i8508z7dp9ib92w85v";
     };
     meta.homepage = "https://github.com/derekelkins/agda-vim/";
   };
@@ -65,12 +77,12 @@ let
 
   ale = buildVimPluginFrom2Nix {
     pname = "ale";
-    version = "2020-08-20";
+    version = "2021-07-23";
     src = fetchFromGitHub {
       owner = "dense-analysis";
       repo = "ale";
-      rev = "2b785688ead505dcbc1007374d3dca9914aa247a";
-      sha256 = "1n91vm354fd45vvg4skvx7s9mpjpsk1l61n2x5ylqr8dlm7vgjkw";
+      rev = "530b38de342a21cce330a32af0c1b66671d335c2";
+      sha256 = "1qvdywgn79fvjdyk2bj7ym9fa65l96dcnp69yhravb9rinrawb5i";
     };
     meta.homepage = "https://github.com/dense-analysis/ale/";
   };
@@ -87,14 +99,26 @@ let
     meta.homepage = "https://github.com/vim-scripts/align/";
   };
 
+  aniseed = buildVimPluginFrom2Nix {
+    pname = "aniseed";
+    version = "2021-07-19";
+    src = fetchFromGitHub {
+      owner = "Olical";
+      repo = "aniseed";
+      rev = "c15c4e49d6ecb7ad7252902bb1b4310ba161617a";
+      sha256 = "13pnlx4rqjc51vrq9d8kyjjxb2apw3y6j2xh68ii746klinjpjy5";
+    };
+    meta.homepage = "https://github.com/Olical/aniseed/";
+  };
+
   ansible-vim = buildVimPluginFrom2Nix {
     pname = "ansible-vim";
-    version = "2020-07-13";
+    version = "2021-06-01";
     src = fetchFromGitHub {
       owner = "pearofducks";
       repo = "ansible-vim";
-      rev = "cfdde31672bce2f60bedc36842ab9bca8d28ba5b";
-      sha256 = "01lpnvdym9izaq29kbgwa7kl303nnzsn0cpqq75bv7glymglbn0m";
+      rev = "804099202b72ffd4bf4ea4ce24d8d7bac8b9ae2d";
+      sha256 = "0p93g0zi8j6bf5zh0ng9vdl9f76dan524g22jpb8c0xmm6ywns5l";
     };
     meta.homepage = "https://github.com/pearofducks/ansible-vim/";
   };
@@ -135,18 +159,54 @@ let
     meta.homepage = "https://github.com/vim-scripts/argtextobj.vim/";
   };
 
+  async-vim = buildVimPluginFrom2Nix {
+    pname = "async-vim";
+    version = "2021-03-21";
+    src = fetchFromGitHub {
+      owner = "prabirshrestha";
+      repo = "async.vim";
+      rev = "0fb846e1eb3c2bf04d52a57f41088afb3395212e";
+      sha256 = "1glzg0i53wkm383y1vbddbyp1ivlsx2hivjchiw60sr9gccn8f8l";
+    };
+    meta.homepage = "https://github.com/prabirshrestha/async.vim/";
+  };
+
+  asyncomplete-vim = buildVimPluginFrom2Nix {
+    pname = "asyncomplete-vim";
+    version = "2021-05-04";
+    src = fetchFromGitHub {
+      owner = "prabirshrestha";
+      repo = "asyncomplete.vim";
+      rev = "6c653c3f8f1c1cf7a34522c9555d5160f36d29ee";
+      sha256 = "1zzdybfswlh66gw8a3imkwf7m6g13rlf6dqyg71c6bfmn3zlx2l0";
+    };
+    meta.homepage = "https://github.com/prabirshrestha/asyncomplete.vim/";
+  };
+
   ats-vim = buildVimPluginFrom2Nix {
     pname = "ats-vim";
-    version = "2020-03-24";
+    version = "2020-09-04";
     src = fetchFromGitHub {
       owner = "vmchale";
       repo = "ats-vim";
-      rev = "a17576687217a2e8066356cc211afb99b5de65e8";
-      sha256 = "0dv60za39v2w5d9mbk1r263fqpv11bdfyqp39b0snw40f0kh92z0";
+      rev = "8e3e722b6d09ed81313573b4e7b108b265628ff1";
+      sha256 = "1jj4q8dmal7rgizqm59dbgjf8by8lxjwnbg39gkbmjiwhdj8q67h";
     };
     meta.homepage = "https://github.com/vmchale/ats-vim/";
   };
 
+  aurora = buildVimPluginFrom2Nix {
+    pname = "aurora";
+    version = "2021-07-17";
+    src = fetchFromGitHub {
+      owner = "ray-x";
+      repo = "aurora";
+      rev = "af110b7f6080bdc4685cdd5551ba1f79a81910f1";
+      sha256 = "1h2czb183lliib95jn4dxq8cn713s22dc4hd1cj19bzqy4j39qhi";
+    };
+    meta.homepage = "https://github.com/ray-x/aurora/";
+  };
+
   auto-git-diff = buildVimPluginFrom2Nix {
     pname = "auto-git-diff";
     version = "2019-09-23";
@@ -171,6 +231,18 @@ let
     meta.homepage = "https://github.com/jiangmiao/auto-pairs/";
   };
 
+  auto-session = buildVimPluginFrom2Nix {
+    pname = "auto-session";
+    version = "2021-07-15";
+    src = fetchFromGitHub {
+      owner = "rmagatti";
+      repo = "auto-session";
+      rev = "f5e5dda7587db72b074edbc3b573d52df639f9a5";
+      sha256 = "1ddr28v44llmfsdf2l3ybgwijhv49dddghdk396nk0sw883a3hs8";
+    };
+    meta.homepage = "https://github.com/rmagatti/auto-session/";
+  };
+
   autoload_cscope-vim = buildVimPluginFrom2Nix {
     pname = "autoload_cscope-vim";
     version = "2011-01-28";
@@ -185,12 +257,12 @@ let
 
   awesome-vim-colorschemes = buildVimPluginFrom2Nix {
     pname = "awesome-vim-colorschemes";
-    version = "2020-08-15";
+    version = "2021-07-09";
     src = fetchFromGitHub {
       owner = "rafi";
       repo = "awesome-vim-colorschemes";
-      rev = "0e04854da7695854e7df7c3c771e72ac55a60040";
-      sha256 = "1i6y0p7fcvzgxkm82xrypwh7xgp1ywyvqlpglf93bgq8ygsll0v9";
+      rev = "dbb29a451bb5441e860e70a35b925e43ab307e3f";
+      sha256 = "1qd9rfbq0b9jj38arv2mwyrlg7vfpia293lbyhxgn3ilsl85m63h";
     };
     meta.homepage = "https://github.com/rafi/awesome-vim-colorschemes/";
   };
@@ -207,6 +279,18 @@ let
     meta.homepage = "https://github.com/ayu-theme/ayu-vim/";
   };
 
+  barbar-nvim = buildVimPluginFrom2Nix {
+    pname = "barbar-nvim";
+    version = "2021-06-12";
+    src = fetchFromGitHub {
+      owner = "romgrk";
+      repo = "barbar.nvim";
+      rev = "33639e53d0bf69444275ed048c5bfd7e29396634";
+      sha256 = "0zqc4j0nbdhap8a67529n2k4k53xnqxrjsn2a4sdqdwvm207y6r9";
+    };
+    meta.homepage = "https://github.com/romgrk/barbar.nvim/";
+  };
+
   base16-vim = buildVimPluginFrom2Nix {
     pname = "base16-vim";
     version = "2019-06-07";
@@ -243,14 +327,50 @@ let
     meta.homepage = "https://github.com/rbgrouleff/bclose.vim/";
   };
 
+  BetterLua-vim = buildVimPluginFrom2Nix {
+    pname = "BetterLua-vim";
+    version = "2020-08-14";
+    src = fetchFromGitHub {
+      owner = "euclidianAce";
+      repo = "BetterLua.vim";
+      rev = "d2d6c115575d09258a794a6f20ac60233eee59d5";
+      sha256 = "1rvlx21kw8865dg6q97hx9i2s1n8mn1nyhn0m7dkx625pghsx3js";
+    };
+    meta.homepage = "https://github.com/euclidianAce/BetterLua.vim/";
+  };
+
+  bracey-vim = buildVimPluginFrom2Nix {
+    pname = "bracey-vim";
+    version = "2021-05-11";
+    src = fetchFromGitHub {
+      owner = "turbio";
+      repo = "bracey.vim";
+      rev = "457933c107db65ff7e2695e07209a9a2934544b7";
+      sha256 = "1x8c8l9x4i9n2rlh3a8zha0ni85v04p32w7yciwxp7ddlwzf3lwh";
+    };
+    meta.homepage = "https://github.com/turbio/bracey.vim/";
+  };
+
+  brainfuck-vim = buildVimPluginFrom2Nix {
+    pname = "brainfuck-vim";
+    version = "2021-01-28";
+    src = fetchFromGitHub {
+      owner = "fruit-in";
+      repo = "brainfuck-vim";
+      rev = "721bbe54df26906f79ed481069435596741f67f3";
+      sha256 = "130njfiwbgd6gpy52xm5ayadh9q11ahsin1a60y54a99qd8jz6wi";
+    };
+    meta.homepage = "https://github.com/fruit-in/brainfuck-vim/";
+  };
+
   bufexplorer = buildVimPluginFrom2Nix {
     pname = "bufexplorer";
-    version = "2020-02-17";
+    version = "2021-04-20";
     src = fetchFromGitHub {
       owner = "jlanzarotta";
       repo = "bufexplorer";
-      rev = "29258f58357acc10c672585a9efe8913d756734d";
-      sha256 = "00wjwk9yzfclrbd4p59b5wpl21s2vjs4ahn30xhpza93bk513wnq";
+      rev = "99557c451ff6ed3bbb9b9f6215ad57e919740635";
+      sha256 = "0grkkbvrdnkmvq7wfj0rf128fzlbi3m5z8k4fg66l6gfiyp86zyc";
     };
     meta.homepage = "https://github.com/jlanzarotta/bufexplorer/";
   };
@@ -269,12 +389,12 @@ let
 
   calendar-vim = buildVimPluginFrom2Nix {
     pname = "calendar-vim";
-    version = "2020-08-15";
+    version = "2021-01-30";
     src = fetchFromGitHub {
       owner = "itchyny";
       repo = "calendar.vim";
-      rev = "9b2dcc18ba104820eac1701aaca44dcc24d90eb4";
-      sha256 = "1vy0np1i8whyw9wfkcx564kvlxspwvrp4sznk6iixjln6ha7ngil";
+      rev = "4e454c2ca9a489f2631df24845615744bd594b61";
+      sha256 = "12vmysyvavvf1173i0m7jfzh2jsfqx5p7mdm3iafg4iv0209rz66";
     };
     meta.homepage = "https://github.com/itchyny/calendar.vim/";
   };
@@ -293,16 +413,28 @@ let
 
   caw-vim = buildVimPluginFrom2Nix {
     pname = "caw-vim";
-    version = "2020-06-01";
+    version = "2021-04-15";
     src = fetchFromGitHub {
       owner = "tyru";
       repo = "caw.vim";
-      rev = "0725e7c273e2c39d8730adc78e0fd20e0d57d173";
-      sha256 = "14rsjy5lllmb84vs5q111cb17c6nwc37zf460kh8ii1ijziyqhy2";
+      rev = "42637427b1760f3f3006fafe95fb3e25fedca07b";
+      sha256 = "1xyc50y7cicqwvzqyj0jm3bzqbwcy39v4mdjjx2czlmzzgv8qlqy";
     };
     meta.homepage = "https://github.com/tyru/caw.vim/";
   };
 
+  chadtree = buildVimPluginFrom2Nix {
+    pname = "chadtree";
+    version = "2021-07-24";
+    src = fetchFromGitHub {
+      owner = "ms-jpq";
+      repo = "chadtree";
+      rev = "139ca9bb8685a2d9b807d869a49a85fcd42811f7";
+      sha256 = "1739vvb9rzlkyrq63lgadhf2azaszy2xhy52hw91rczg8xw7zfc5";
+    };
+    meta.homepage = "https://github.com/ms-jpq/chadtree/";
+  };
+
   changeColorScheme-vim = buildVimPluginFrom2Nix {
     pname = "changeColorScheme-vim";
     version = "2010-10-18";
@@ -327,14 +459,26 @@ let
     meta.homepage = "https://github.com/chrisbra/CheckAttach/";
   };
 
+  ci_dark = buildVimPluginFrom2Nix {
+    pname = "ci_dark";
+    version = "2021-06-20";
+    src = fetchFromGitHub {
+      owner = "yunlingz";
+      repo = "ci_dark";
+      rev = "8ff6b42196ccb1f84b781a8ccb10bc117ad58e88";
+      sha256 = "0ym3sg6vd0jwqq33dx5vfblhf0hjis9zfp0fcsn4iyiq0rf7jphz";
+    };
+    meta.homepage = "https://github.com/yunlingz/ci_dark/";
+  };
+
   clang_complete = buildVimPluginFrom2Nix {
     pname = "clang_complete";
-    version = "2020-05-06";
+    version = "2020-09-18";
     src = fetchFromGitHub {
       owner = "xavierd";
       repo = "clang_complete";
-      rev = "10e5102af5d1b16ba7aa3fb51d67153041f82ed7";
-      sha256 = "0crynvmdp9a5rws5hfnsn19kxqviyp29n8fz40wq7k1g5vrhvdl7";
+      rev = "293a1062274a06be61797612034bd8d87851406e";
+      sha256 = "1whipcrr4pcg1bkivq3l753v3f3glbhkdd6wp6f9czspr7hx2h2d";
     };
     meta.homepage = "https://github.com/xavierd/clang_complete/";
   };
@@ -353,218 +497,50 @@ let
 
   coc-clap = buildVimPluginFrom2Nix {
     pname = "coc-clap";
-    version = "2020-07-17";
+    version = "2021-05-10";
     src = fetchFromGitHub {
       owner = "vn-ki";
       repo = "coc-clap";
-      rev = "09d9059c243a25c5859fd73fff6b664d8bf5eed0";
-      sha256 = "057kad7nwc75c92d2al6q25gs7vrf0l14529iclrgd61vg369sva";
+      rev = "8622be2674f3197bec8a0c4cfd177eb8455f45e6";
+      sha256 = "063azqsibg25iv2c9smn4k6933frrwarqz640b14c041sgi6h8cx";
     };
     meta.homepage = "https://github.com/vn-ki/coc-clap/";
   };
 
-  coc-css = buildVimPluginFrom2Nix {
-    pname = "coc-css";
-    version = "2020-06-28";
-    src = fetchFromGitHub {
-      owner = "neoclide";
-      repo = "coc-css";
-      rev = "a8cde12697de70dddf235ada61dc3601a6c04b57";
-      sha256 = "03n7czxiraa9pjcdfigmxgwyprpijbs0vhmzccxx0nwm038291y6";
-    };
-    meta.homepage = "https://github.com/neoclide/coc-css/";
-  };
-
   coc-denite = buildVimPluginFrom2Nix {
     pname = "coc-denite";
-    version = "2019-01-19";
+    version = "2021-02-24";
     src = fetchFromGitHub {
       owner = "neoclide";
       repo = "coc-denite";
-      rev = "f0cf609724249e662fef54169b484b7d089032f9";
-      sha256 = "0jknvcf1cf53bwyhf1rhm5fa7nsp0l7sihns1qybph8hayb5rwvp";
+      rev = "37016bc170014e36fc8212b2dc7ce7adda48bbe3";
+      sha256 = "0kpw2gfkpdfsi2kwm6rbzmz3diyinc3lcf91rxm8wyw486sp0s10";
     };
     meta.homepage = "https://github.com/neoclide/coc-denite/";
   };
 
-  coc-emmet = buildVimPluginFrom2Nix {
-    pname = "coc-emmet";
-    version = "2020-07-16";
-    src = fetchFromGitHub {
-      owner = "neoclide";
-      repo = "coc-emmet";
-      rev = "8f25e0b7deb1cd54ce096cf713147662c43781f6";
-      sha256 = "0z9y8nxzjqf78l7hmq59by559f178jxhadn82h1hwqmdjpq72jcm";
-    };
-    meta.homepage = "https://github.com/neoclide/coc-emmet/";
-  };
-
-  coc-eslint = buildVimPluginFrom2Nix {
-    pname = "coc-eslint";
-    version = "2020-05-21";
-    src = fetchFromGitHub {
-      owner = "neoclide";
-      repo = "coc-eslint";
-      rev = "eed42192dab175bbf249e21c18c85cbd5afdd92a";
-      sha256 = "1a9csiyj7abksar917acfjgypmc28rcfsqga0p1550mjxvkjr2ia";
-    };
-    meta.homepage = "https://github.com/neoclide/coc-eslint/";
-  };
-
-  coc-explorer = buildVimPluginFrom2Nix {
-    pname = "coc-explorer";
-    version = "2020-08-12";
-    src = fetchFromGitHub {
-      owner = "weirongxu";
-      repo = "coc-explorer";
-      rev = "b05b60c9e53a657f4a7c4dcf064032ce806cd0f4";
-      sha256 = "10z3xrkkj0140a8cbix7yrky7nsczjcdflnl7a8b0ywwq16jd3hp";
-    };
-    meta.homepage = "https://github.com/weirongxu/coc-explorer/";
-  };
-
   coc-fzf = buildVimPluginFrom2Nix {
     pname = "coc-fzf";
-    version = "2020-08-20";
+    version = "2021-06-26";
     src = fetchFromGitHub {
       owner = "antoinemadec";
       repo = "coc-fzf";
-      rev = "341ea7db0ab85a2ecb3a067ca721c1327fcd7013";
-      sha256 = "0gqs6xdnmg33xraxqv10jl7dhaca19dlidmc86zdki2hg1bckr9b";
+      rev = "5b133aaa8c15f1c6fa831713892efd87189b0637";
+      sha256 = "18cb39d113z8yxriidc0dmkkkzpp6x5hl414n5fcqwhjk5h514rn";
     };
     meta.homepage = "https://github.com/antoinemadec/coc-fzf/";
   };
 
-  coc-git = buildVimPluginFrom2Nix {
-    pname = "coc-git";
-    version = "2020-08-21";
-    src = fetchFromGitHub {
-      owner = "neoclide";
-      repo = "coc-git";
-      rev = "5a768cd395fc94e0448c596fafaf5f78d15fb968";
-      sha256 = "019mb2v7ldyzjjh86kxyxrbrgyf9chgp0f0nkwk0fiwf2qi2141y";
-    };
-    meta.homepage = "https://github.com/neoclide/coc-git/";
-  };
-
-  coc-go = buildVimPluginFrom2Nix {
-    pname = "coc-go";
-    version = "2020-08-12";
+  coc-lua = buildVimPluginFrom2Nix {
+    pname = "coc-lua";
+    version = "2021-07-22";
     src = fetchFromGitHub {
       owner = "josa42";
-      repo = "coc-go";
-      rev = "b068394634189ede2fb96b742cadcaa852bf46b0";
-      sha256 = "099dgk3kc814hgnpd0jhc6sz3d7512i86i99n6hq6yswsg7n1d51";
-    };
-    meta.homepage = "https://github.com/josa42/coc-go/";
-  };
-
-  coc-highlight = buildVimPluginFrom2Nix {
-    pname = "coc-highlight";
-    version = "2019-10-18";
-    src = fetchFromGitHub {
-      owner = "neoclide";
-      repo = "coc-highlight";
-      rev = "b4e82ebd5fe855d004dd481e2ecf2fa88faed284";
-      sha256 = "06h64jq8cgj5hc19inidns046kkb76750179jsw7xv5zbp93ygap";
-    };
-    meta.homepage = "https://github.com/neoclide/coc-highlight/";
-  };
-
-  coc-html = buildVimPluginFrom2Nix {
-    pname = "coc-html";
-    version = "2020-07-28";
-    src = fetchFromGitHub {
-      owner = "neoclide";
-      repo = "coc-html";
-      rev = "36aaa65d5ee7d998727776739d03affcc26bbe5b";
-      sha256 = "07vb9jgy9bpq5k1gymr2ys8smafcrybf0nmpkfsq8scqxsydnnq9";
-    };
-    meta.homepage = "https://github.com/neoclide/coc-html/";
-  };
-
-  coc-imselect = buildVimPluginFrom2Nix {
-    pname = "coc-imselect";
-    version = "2020-02-18";
-    src = fetchFromGitHub {
-      owner = "neoclide";
-      repo = "coc-imselect";
-      rev = "01442d2fb7d344122e59755f59782a0e1bf7d294";
-      sha256 = "1vqx9yna66njdw1my15ac6djr3yvnb6das96nx12mpingnw85kky";
-    };
-    meta.homepage = "https://github.com/neoclide/coc-imselect/";
-  };
-
-  coc-java = buildVimPluginFrom2Nix {
-    pname = "coc-java";
-    version = "2020-08-11";
-    src = fetchFromGitHub {
-      owner = "neoclide";
-      repo = "coc-java";
-      rev = "aed8ccb10acf1863fb0fe622f21c3a0be18e362f";
-      sha256 = "1hrwj4x09gnqnwv43bxx9w2y3nrhqbjc3yl2q8ck22212s66wkpi";
-    };
-    meta.homepage = "https://github.com/neoclide/coc-java/";
-  };
-
-  coc-jest = buildVimPluginFrom2Nix {
-    pname = "coc-jest";
-    version = "2020-05-27";
-    src = fetchFromGitHub {
-      owner = "neoclide";
-      repo = "coc-jest";
-      rev = "431471caa9011868327fff0f9f7e0a944b7ca33b";
-      sha256 = "0vcri3kp8njsp4zgl74vc6ydhxq5spzx6pm798jh2lvrid2byvg9";
-    };
-    meta.homepage = "https://github.com/neoclide/coc-jest/";
-  };
-
-  coc-json = buildVimPluginFrom2Nix {
-    pname = "coc-json";
-    version = "2020-05-12";
-    src = fetchFromGitHub {
-      owner = "neoclide";
-      repo = "coc-json";
-      rev = "66b482dbc8008b9a111e6141aa2e63baa16fb2d4";
-      sha256 = "0ixqk417ba1yz7lnjkir5h9h8qm5jc9sh2190vmddxr8wgxhjhbb";
-    };
-    meta.homepage = "https://github.com/neoclide/coc-json/";
-  };
-
-  coc-lists = buildVimPluginFrom2Nix {
-    pname = "coc-lists";
-    version = "2020-07-23";
-    src = fetchFromGitHub {
-      owner = "neoclide";
-      repo = "coc-lists";
-      rev = "bf352d6befd23804897a08b50fa6edcea676a7b3";
-      sha256 = "0r8sbw4pgaay2zjh2rv1x926hs8jixznanc2dxjvicjnmgbg1nmn";
+      repo = "coc-lua";
+      rev = "b9b2b1c0991ab1a5d3b5822296c341815da00f6c";
+      sha256 = "1f6g0vhd8x90j75f60j4k7ii1zi9y0nhzrahk5h04gr2qm9pnvsf";
     };
-    meta.homepage = "https://github.com/neoclide/coc-lists/";
-  };
-
-  coc-markdownlint = buildVimPluginFrom2Nix {
-    pname = "coc-markdownlint";
-    version = "2020-08-02";
-    src = fetchFromGitHub {
-      owner = "fannheyward";
-      repo = "coc-markdownlint";
-      rev = "a1d6162a898b1538eb061675a63251cbd4eb8470";
-      sha256 = "0gmci9x7kppv14lr8x8fnmkq1rp5lm8x66904fy419jipnl96g6g";
-    };
-    meta.homepage = "https://github.com/fannheyward/coc-markdownlint/";
-  };
-
-  coc-metals = buildVimPluginFrom2Nix {
-    pname = "coc-metals";
-    version = "2020-08-19";
-    src = fetchFromGitHub {
-      owner = "ckipp01";
-      repo = "coc-metals";
-      rev = "14c820dad44b057e2b8343f7d8896529cd973ee6";
-      sha256 = "0569by8x73dpb3hapbx73x9fg2wzzb965mkkifqgdq4wdg6wizkx";
-    };
-    meta.homepage = "https://github.com/ckipp01/coc-metals/";
+    meta.homepage = "https://github.com/josa42/coc-lua/";
   };
 
   coc-neco = buildVimPluginFrom2Nix {
@@ -579,268 +555,52 @@ let
     meta.homepage = "https://github.com/neoclide/coc-neco/";
   };
 
-  coc-pairs = buildVimPluginFrom2Nix {
-    pname = "coc-pairs";
-    version = "2020-03-09";
-    src = fetchFromGitHub {
-      owner = "neoclide";
-      repo = "coc-pairs";
-      rev = "79deeaabdc4f091c22f3dd67d439a0a336e8aa7e";
-      sha256 = "1w6p2dk7yj8ldxg1qxh9zpn9ypm6gn66gi0vbax33wf5c0dmp0v9";
-    };
-    meta.homepage = "https://github.com/neoclide/coc-pairs/";
-  };
-
-  coc-prettier = buildVimPluginFrom2Nix {
-    pname = "coc-prettier";
-    version = "2020-07-23";
-    src = fetchFromGitHub {
-      owner = "neoclide";
-      repo = "coc-prettier";
-      rev = "4857302b60bb0c9db20fa8db71b0eac4696c9254";
-      sha256 = "114yn1sc457jc9jp5hvw3k0dvm0i9bcn6v2dqvb9dgwskq78ca7f";
-    };
-    meta.homepage = "https://github.com/neoclide/coc-prettier/";
-  };
-
-  coc-python = buildVimPluginFrom2Nix {
-    pname = "coc-python";
-    version = "2020-06-15";
-    src = fetchFromGitHub {
-      owner = "neoclide";
-      repo = "coc-python";
-      rev = "241c6b39e6618279b619926269431ef45de87840";
-      sha256 = "1x3lrk4x7qhp9pg8x11k36pcgd5f45la4r77fq82jy307s5dny20";
-    };
-    meta.homepage = "https://github.com/neoclide/coc-python/";
-  };
-
-  coc-r-lsp = buildVimPluginFrom2Nix {
-    pname = "coc-r-lsp";
-    version = "2019-12-07";
-    src = fetchFromGitHub {
-      owner = "neoclide";
-      repo = "coc-r-lsp";
-      rev = "a1b97e36c601975a8d730b6965f25592b1ecd1e7";
-      sha256 = "04g1kbgm8p0asrsibmg4w6wj8i2xzwc70g7rkcs2bj3pakbkvws6";
-    };
-    meta.homepage = "https://github.com/neoclide/coc-r-lsp/";
-  };
-
-  coc-rls = buildVimPluginFrom2Nix {
-    pname = "coc-rls";
-    version = "2020-08-11";
-    src = fetchFromGitHub {
-      owner = "neoclide";
-      repo = "coc-rls";
-      rev = "49ed83bb6d6bc01142ba18774575987b12857aee";
-      sha256 = "05lbfl60ka9zx8s6ack92v3vk3zj47w1fscdfkdqafcaqizlgia1";
-    };
-    meta.homepage = "https://github.com/neoclide/coc-rls/";
-  };
-
-  coc-rust-analyzer = buildVimPluginFrom2Nix {
-    pname = "coc-rust-analyzer";
-    version = "2020-08-20";
-    src = fetchFromGitHub {
-      owner = "fannheyward";
-      repo = "coc-rust-analyzer";
-      rev = "ac57b7b3cdaee3cfb56b76a8fc13444337f09276";
-      sha256 = "0n26d63qifhnsrpwq8x587mh9y83rmayc2car222hjqbrg705r28";
-    };
-    meta.homepage = "https://github.com/fannheyward/coc-rust-analyzer/";
-  };
-
-  coc-smartf = buildVimPluginFrom2Nix {
-    pname = "coc-smartf";
-    version = "2019-07-26";
-    src = fetchFromGitHub {
-      owner = "neoclide";
-      repo = "coc-smartf";
-      rev = "d40714eab8e5fe26fac492ffd30e98cd1bfbdec5";
-      sha256 = "0kfrq5hk8zn24cl7fiy48nyvd30a2dva93c61079axkdg9912yd7";
-    };
-    meta.homepage = "https://github.com/neoclide/coc-smartf/";
-  };
-
-  coc-snippets = buildVimPluginFrom2Nix {
-    pname = "coc-snippets";
-    version = "2020-06-10";
-    src = fetchFromGitHub {
-      owner = "neoclide";
-      repo = "coc-snippets";
-      rev = "a36f36afe7094562756202d1bb88c1f80597393e";
-      sha256 = "117idj29gk8psj27zmwazanwxf4br08mlkcpnkxyw6blm5aibzpp";
-    };
-    meta.homepage = "https://github.com/neoclide/coc-snippets/";
-  };
-
-  coc-solargraph = buildVimPluginFrom2Nix {
-    pname = "coc-solargraph";
-    version = "2020-08-16";
-    src = fetchFromGitHub {
-      owner = "neoclide";
-      repo = "coc-solargraph";
-      rev = "e61385cc483768afc8d8c064b5c98baa474d0d9c";
-      sha256 = "1hiy12h85z8m6i4nc92jpi6z0zph8rpdmgb75czhy5y0cjwkn59q";
-    };
-    meta.homepage = "https://github.com/neoclide/coc-solargraph/";
-  };
-
   coc-spell-checker = buildVimPluginFrom2Nix {
     pname = "coc-spell-checker";
-    version = "2020-08-01";
+    version = "2020-09-15";
     src = fetchFromGitHub {
       owner = "iamcco";
       repo = "coc-spell-checker";
-      rev = "c1fe3de47f6ba93d4c44b514e530517c19a75880";
-      sha256 = "1yvcbfrd5lxgmxbvphpbzcw8ni6zjqmg2flkrvnz59b9rmafn8dg";
+      rev = "a76ebbff41fec61bb7a3c2556a670720db3f9ff9";
+      sha256 = "0i2znngg8jyxgns1kqi5168c4899wj2b8h8n14yy6pxgidhgqvzp";
     };
     meta.homepage = "https://github.com/iamcco/coc-spell-checker/";
   };
 
-  coc-stylelint = buildVimPluginFrom2Nix {
-    pname = "coc-stylelint";
-    version = "2019-08-20";
-    src = fetchFromGitHub {
-      owner = "neoclide";
-      repo = "coc-stylelint";
-      rev = "288a372261cbc23ae4a6e26b1621c6e3218d00ad";
-      sha256 = "1qir8diqnv1a78lzw9p3jsbni52gdg38rx1lj5i4iyff9282ir2x";
-    };
-    meta.homepage = "https://github.com/neoclide/coc-stylelint/";
-  };
-
-  coc-tabnine = buildVimPluginFrom2Nix {
-    pname = "coc-tabnine";
-    version = "2020-01-06";
-    src = fetchFromGitHub {
-      owner = "neoclide";
-      repo = "coc-tabnine";
-      rev = "442c829185ecab2268d1b9fd076c5286bbd39562";
-      sha256 = "0as4b33nnp7anqbxkkja8lp37y4a74b3507zyk3gmmna0my1ca3r";
-    };
-    meta.homepage = "https://github.com/neoclide/coc-tabnine/";
-  };
-
-  coc-tslint = buildVimPluginFrom2Nix {
-    pname = "coc-tslint";
-    version = "2019-07-03";
-    src = fetchFromGitHub {
-      owner = "neoclide";
-      repo = "coc-tslint";
-      rev = "6128761577806d7047fa05d1a527945490d6316c";
-      sha256 = "1vi4vrawknkd5wjyb0j143jbfis9vaanl219a7argirwjs057vpd";
-    };
-    meta.homepage = "https://github.com/neoclide/coc-tslint/";
-  };
-
-  coc-tslint-plugin = buildVimPluginFrom2Nix {
-    pname = "coc-tslint-plugin";
-    version = "2019-07-18";
-    src = fetchFromGitHub {
-      owner = "neoclide";
-      repo = "coc-tslint-plugin";
-      rev = "acc1356253a5088f630d9910b5fc13dc5d108bbc";
-      sha256 = "1cjgimqgd70x5zhw641z6g4hc54vrkg3r4sscg092gkrdpkq3969";
-    };
-    meta.homepage = "https://github.com/neoclide/coc-tslint-plugin/";
-  };
-
-  coc-tsserver = buildVimPluginFrom2Nix {
-    pname = "coc-tsserver";
-    version = "2020-08-20";
-    src = fetchFromGitHub {
-      owner = "neoclide";
-      repo = "coc-tsserver";
-      rev = "e4f3ab555b35a0057d22dcc8bb7b7af7e43546d6";
-      sha256 = "0i1fpvbl228jhh50fbz8cppv2v20zy0zywb1qgh9hsmw6pfgjg1w";
-    };
-    meta.homepage = "https://github.com/neoclide/coc-tsserver/";
-  };
-
-  coc-vetur = buildVimPluginFrom2Nix {
-    pname = "coc-vetur";
-    version = "2020-06-28";
-    src = fetchFromGitHub {
-      owner = "neoclide";
-      repo = "coc-vetur";
-      rev = "37c70071a93aeacf23ac651cd6e9f7ed11582033";
-      sha256 = "037p3zkavfyh75wclibd2iwd1ds8kzi72q8zy7rwdchwxw57xwhj";
-    };
-    meta.homepage = "https://github.com/neoclide/coc-vetur/";
-  };
-
-  coc-vimlsp = buildVimPluginFrom2Nix {
-    pname = "coc-vimlsp";
-    version = "2020-08-01";
-    src = fetchFromGitHub {
-      owner = "iamcco";
-      repo = "coc-vimlsp";
-      rev = "efb672fe82d8619d83d3978714393e13aee8e296";
-      sha256 = "16whzvyzbx8zh7z33w7pir264dmbapkanb15mkazfhkh0wm3sfvf";
-    };
-    meta.homepage = "https://github.com/iamcco/coc-vimlsp/";
-  };
-
-  coc-vimtex = buildVimPluginFrom2Nix {
-    pname = "coc-vimtex";
-    version = "2020-07-22";
-    src = fetchFromGitHub {
-      owner = "neoclide";
-      repo = "coc-vimtex";
-      rev = "4c88459c1ccf0c0e1935b73f216d974a3c89f4e5";
-      sha256 = "0gk38r8060linhbcsqfhv7bxggz4fqi4chsfpxf6b0rnmca851pa";
-    };
-    meta.homepage = "https://github.com/neoclide/coc-vimtex/";
-  };
-
-  coc-wxml = buildVimPluginFrom2Nix {
-    pname = "coc-wxml";
-    version = "2019-06-20";
-    src = fetchFromGitHub {
-      owner = "neoclide";
-      repo = "coc-wxml";
-      rev = "f02550939d33a0175c34186904c376bbae878e60";
-      sha256 = "1448019dzdy55j4plhzlnp2qkfzk0zkqqs7kn94ndn60hn1x889m";
-    };
-    meta.homepage = "https://github.com/neoclide/coc-wxml/";
-  };
-
-  coc-yaml = buildVimPluginFrom2Nix {
-    pname = "coc-yaml";
-    version = "2020-08-21";
+  coc-nvim = buildVimPluginFrom2Nix {
+    pname = "coc-nvim";
+    version = "2021-07-22";
     src = fetchFromGitHub {
       owner = "neoclide";
-      repo = "coc-yaml";
-      rev = "a453c70b2507d66e48a2d4e89f78cb5f340f140f";
-      sha256 = "0av0jv0g01cpkf5rsicniq7maa6c509bc3gs5piczf5za990nrsx";
+      repo = "coc.nvim";
+      rev = "479b4ac1d09cec838a232e49ad54b79f2217ad4c";
+      sha256 = "0lxpcyvgii8xal6s16aw6y4430709xsba3kn1jwm1lbnrz5mhqwb";
     };
-    meta.homepage = "https://github.com/neoclide/coc-yaml/";
+    meta.homepage = "https://github.com/neoclide/coc.nvim/";
   };
 
-  coc-yank = buildVimPluginFrom2Nix {
-    pname = "coc-yank";
-    version = "2020-06-02";
+  codi-vim = buildVimPluginFrom2Nix {
+    pname = "codi-vim";
+    version = "2021-01-11";
     src = fetchFromGitHub {
-      owner = "neoclide";
-      repo = "coc-yank";
-      rev = "7983c28509a61a7eb014e178525845797f5779ed";
-      sha256 = "1mjdd1kqvc5hzygjs2gv8vrpr3wc2a9590cr6vq0pfllxbkyqjng";
+      owner = "metakirby5";
+      repo = "codi.vim";
+      rev = "cf62681a4962ce1873e4b2a5e0bf401dcd42890f";
+      sha256 = "15j08qa7sklm0pilfn3ljgq75hrv8y9h8xzj8ibrafp29640gkfl";
     };
-    meta.homepage = "https://github.com/neoclide/coc-yank/";
+    meta.homepage = "https://github.com/metakirby5/codi.vim/";
   };
 
-  coc-nvim = buildVimPluginFrom2Nix {
-    pname = "coc-nvim";
-    version = "2020-08-08";
+  colorbuddy-nvim = buildVimPluginFrom2Nix {
+    pname = "colorbuddy-nvim";
+    version = "2021-04-16";
     src = fetchFromGitHub {
-      owner = "neoclide";
-      repo = "coc.nvim";
-      rev = "806ce47583d66d0b574a3c993526033971e700cf";
-      sha256 = "1v29l7jrp1n141q8lywas5jflbjid6rryym732ga41yjqkrmlvip";
+      owner = "tjdevries";
+      repo = "colorbuddy.nvim";
+      rev = "87c80e3f4a590d0387d9b128d1f1fc456759408a";
+      sha256 = "19gfmyhmwpr8gi03w44zm056zrzaj74hplpl4psy9mylvb0ghf0k";
     };
-    meta.homepage = "https://github.com/neoclide/coc.nvim/";
+    meta.homepage = "https://github.com/tjdevries/colorbuddy.nvim/";
   };
 
   colorizer = buildVimPluginFrom2Nix {
@@ -869,12 +629,12 @@ let
 
   command-t = buildVimPluginFrom2Nix {
     pname = "command-t";
-    version = "2020-06-02";
+    version = "2021-06-07";
     src = fetchFromGitHub {
       owner = "wincent";
       repo = "command-t";
-      rev = "ea7a889bda2849ba87fc12053bf6dd14467d7b72";
-      sha256 = "02rswhlkgbapnjzqi2nv95ag08p9cjlqscwv6i17f9kvba929hkl";
+      rev = "6a00a2cabfb5ee3f49ff556ceea56892825c0397";
+      sha256 = "0z2zr2mfc5m4xn8b0j0br7q96hs42md5wd53viv0zmw67i2pnbcs";
       fetchSubmodules = true;
     };
     meta.homepage = "https://github.com/wincent/command-t/";
@@ -882,28 +642,112 @@ let
 
   committia-vim = buildVimPluginFrom2Nix {
     pname = "committia-vim";
-    version = "2020-05-14";
+    version = "2020-08-27";
     src = fetchFromGitHub {
       owner = "rhysd";
       repo = "committia.vim";
-      rev = "2cded48477a5e308c77a0d289cc9b540669b701f";
-      sha256 = "1g6ykdh7d16q6nvpvmxx4ss8w7cisx5r8qmbrrvhpwmbb3894pxp";
+      rev = "1d288281586d1e6b52646a4c412df3dd3a2fe231";
+      sha256 = "11ik72qi7fvxkz7fnyisaa0xscy4pksq8l2pvclywzg3lcclhxp1";
     };
     meta.homepage = "https://github.com/rhysd/committia.vim/";
   };
 
+  compe-conjure = buildVimPluginFrom2Nix {
+    pname = "compe-conjure";
+    version = "2021-02-02";
+    src = fetchFromGitHub {
+      owner = "tami5";
+      repo = "compe-conjure";
+      rev = "809853ff8098dffcf8ba5ac89bcf07806eb8f981";
+      sha256 = "0p7p4bgkh05zy0gzmq0g9nn9npykh1l17cvfzjyhcb3n1sczpjzf";
+    };
+    meta.homepage = "https://github.com/tami5/compe-conjure/";
+  };
+
+  compe-latex-symbols = buildVimPluginFrom2Nix {
+    pname = "compe-latex-symbols";
+    version = "2021-05-14";
+    src = fetchFromGitHub {
+      owner = "GoldsteinE";
+      repo = "compe-latex-symbols";
+      rev = "70f58e53e142e3c59fe0f673dd54ce690ae57367";
+      sha256 = "0p4xss3zyp6002hsa6dx989zhp672mc30b57w5cjhcgbknw0iy1l";
+    };
+    meta.homepage = "https://github.com/GoldsteinE/compe-latex-symbols/";
+  };
+
+  compe-tabnine = buildVimPluginFrom2Nix {
+    pname = "compe-tabnine";
+    version = "2021-07-07";
+    src = fetchFromGitHub {
+      owner = "tzachar";
+      repo = "compe-tabnine";
+      rev = "a4d7b60dc538b724c4bc7df50687a879bcf764c7";
+      sha256 = "1lhy2m4awni2pmz9b7b1hkjmaaf4napgihykqwhm9rshsb0xzgvx";
+    };
+    meta.homepage = "https://github.com/tzachar/compe-tabnine/";
+  };
+
+  compe-tmux = buildVimPluginFrom2Nix {
+    pname = "compe-tmux";
+    version = "2021-07-19";
+    src = fetchFromGitHub {
+      owner = "andersevenrud";
+      repo = "compe-tmux";
+      rev = "82d2139de0279a20a70da61320042adf31b94798";
+      sha256 = "06dyrknc6gap8ybsjai4ndr4cdhzkwz1hnxilz9ffcbplzwldhs5";
+    };
+    meta.homepage = "https://github.com/andersevenrud/compe-tmux/";
+  };
+
+  compe-zsh = buildVimPluginFrom2Nix {
+    pname = "compe-zsh";
+    version = "2021-04-03";
+    src = fetchFromGitHub {
+      owner = "tamago324";
+      repo = "compe-zsh";
+      rev = "1a46a0ee661242f6a015b2abead34b606bb97171";
+      sha256 = "0m8fmsx4bwmgqgjpwpldckp68hpx6qfschwdg275xsxkzw8pdnbk";
+    };
+    meta.homepage = "https://github.com/tamago324/compe-zsh/";
+  };
+
+  completion-buffers = buildVimPluginFrom2Nix {
+    pname = "completion-buffers";
+    version = "2021-01-17";
+    src = fetchFromGitHub {
+      owner = "steelsojka";
+      repo = "completion-buffers";
+      rev = "c36871b2a44b59761387f4972c617b44dcec5e75";
+      sha256 = "14rxmy3cjrl7lr4yvrk7nkhc5h8rlpj7xjixzgr0vmnbsl885kyh";
+    };
+    meta.homepage = "https://github.com/steelsojka/completion-buffers/";
+  };
+
   completion-nvim = buildVimPluginFrom2Nix {
     pname = "completion-nvim";
-    version = "2020-08-13";
+    version = "2021-07-03";
     src = fetchFromGitHub {
       owner = "nvim-lua";
       repo = "completion-nvim";
-      rev = "43cb0b123544b602bd31747a3d8cf52ef0660723";
-      sha256 = "0qllj4zqbw2fhp17lqk0xmbraq86gl9gjp9vszpd9jbw7h4lh168";
+      rev = "22624f0aa5d1fdd0c84456300d2390b223c1a226";
+      sha256 = "133zmiblkh145abrv9xagzq3qw504g1nvm5v1vmxhxsa7rilr376";
     };
     meta.homepage = "https://github.com/nvim-lua/completion-nvim/";
   };
 
+  completion-tabnine = buildVimPluginFrom2Nix {
+    pname = "completion-tabnine";
+    version = "2020-12-08";
+    src = fetchFromGitHub {
+      owner = "aca";
+      repo = "completion-tabnine";
+      rev = "278a6c6ae65fa753f21add8d797572043d8315d5";
+      sha256 = "00a0bpjpnykr625dyavczg5ca4mbbw2j0g7l66v3kjn67r2wr18y";
+    };
+    meta.homepage = "https://github.com/aca/completion-tabnine/";
+  };
+
   completion-treesitter = buildVimPluginFrom2Nix {
     pname = "completion-treesitter";
     version = "2020-06-26";
@@ -928,30 +772,66 @@ let
     meta.homepage = "https://github.com/chikatoike/concealedyank.vim/";
   };
 
+  conflict-marker-vim = buildVimPluginFrom2Nix {
+    pname = "conflict-marker-vim";
+    version = "2020-09-23";
+    src = fetchFromGitHub {
+      owner = "rhysd";
+      repo = "conflict-marker.vim";
+      rev = "6a9b8f92a57ea8a90cbf62c960db9e5894be2d7a";
+      sha256 = "0vw5kvnmwwia65gni97vk42b9s47r3p5bglrhpcxsvs3f4s250vq";
+    };
+    meta.homepage = "https://github.com/rhysd/conflict-marker.vim/";
+  };
+
   conjure = buildVimPluginFrom2Nix {
     pname = "conjure";
-    version = "2020-08-12";
+    version = "2021-07-23";
     src = fetchFromGitHub {
       owner = "Olical";
       repo = "conjure";
-      rev = "db0de94cc2c4fe1bf1a8fe5c78fcc774097d1e90";
-      sha256 = "1vcp2hzp5kg1rpdbl8sil16zqc1qawxfchwbq4c4kwyr2kxkavhh";
+      rev = "8dedf17ad815ce78122c22d25e93777e3f2d8cfe";
+      sha256 = "0061x13jznqqvpci1f6x9r0qrn2bakvvp2ai1nbrb1ynvbgkh3mf";
     };
     meta.homepage = "https://github.com/Olical/conjure/";
   };
 
   context_filetype-vim = buildVimPluginFrom2Nix {
     pname = "context_filetype-vim";
-    version = "2020-04-27";
+    version = "2021-06-05";
     src = fetchFromGitHub {
       owner = "Shougo";
       repo = "context_filetype.vim";
-      rev = "a96f74ac35b77ebe2c5788ca31e66d87ab239adb";
-      sha256 = "1pgb86cpv4649qnxfw4280sqghldm66s572pg610giqjxda4a52s";
+      rev = "eca5b28dca1bace3b5694eb20b3ab244f65180e0";
+      sha256 = "0n0av5x6js5ld4xnlq5nh18cdwhvrljdsx17gq2sf54q342hlwp0";
     };
     meta.homepage = "https://github.com/Shougo/context_filetype.vim/";
   };
 
+  coq-vim = buildVimPluginFrom2Nix {
+    pname = "coq-vim";
+    version = "2013-01-16";
+    src = fetchFromGitHub {
+      owner = "jvoorhis";
+      repo = "coq.vim";
+      rev = "9b229f5872854dadfb8ba4b67a6a273f37eca4b8";
+      sha256 = "0hpfwcm8lvv831b7i27lw72nqxfy7jymq6a6g3xmf0ycb0l3pnky";
+    };
+    meta.homepage = "https://github.com/jvoorhis/coq.vim/";
+  };
+
+  Coqtail = buildVimPluginFrom2Nix {
+    pname = "Coqtail";
+    version = "2021-07-21";
+    src = fetchFromGitHub {
+      owner = "whonore";
+      repo = "Coqtail";
+      rev = "2cad943df739c1fcf4d923854ae642fde38b477f";
+      sha256 = "1j761zpa41p9hmh4bxapaqjvxx9d3nhcf2bifsibcjghcxblj1xb";
+    };
+    meta.homepage = "https://github.com/whonore/Coqtail/";
+  };
+
   cosco-vim = buildVimPluginFrom2Nix {
     pname = "cosco-vim";
     version = "2018-08-07";
@@ -990,12 +870,12 @@ let
 
   csv-vim = buildVimPluginFrom2Nix {
     pname = "csv-vim";
-    version = "2020-07-11";
+    version = "2021-06-29";
     src = fetchFromGitHub {
       owner = "chrisbra";
       repo = "csv.vim";
-      rev = "528766a549dc5022f3d89e84cbb80c7b911994f1";
-      sha256 = "160h9b59znbb0i6c7lh132mn5bl4njazfqsadz3p995vb9yc0sa6";
+      rev = "7555c28930686b36071c96cca51477f332224231";
+      sha256 = "0dr4yvv319aydcfaww8xyrvrh1x7g99c3k7wvvayfa1qwsi2w0bl";
     };
     meta.homepage = "https://github.com/chrisbra/csv.vim/";
   };
@@ -1014,12 +894,12 @@ let
 
   ctrlp-py-matcher = buildVimPluginFrom2Nix {
     pname = "ctrlp-py-matcher";
-    version = "2017-11-01";
+    version = "2021-04-08";
     src = fetchFromGitHub {
       owner = "FelikZ";
       repo = "ctrlp-py-matcher";
-      rev = "cf63fd546f1e80dd4db3db96afbeaad301d21f13";
-      sha256 = "0hs829x3vxv12y78hz5g4a5qpw05xf42dk0hxxk3ind77mnl1ir1";
+      rev = "24969b88702bca79a6bfd85256450936968cf55d";
+      sha256 = "0fc2i14gsg6srjvmibz1d5dzzg9bry35pl5xs43l80xnhpkdndm8";
     };
     meta.homepage = "https://github.com/FelikZ/ctrlp-py-matcher/";
   };
@@ -1038,72 +918,84 @@ let
 
   ctrlp-vim = buildVimPluginFrom2Nix {
     pname = "ctrlp-vim";
-    version = "2020-05-26";
+    version = "2021-04-18";
     src = fetchFromGitHub {
       owner = "ctrlpvim";
       repo = "ctrlp.vim";
-      rev = "d93d97813dc839ef0782302a0debd7c4877f09f3";
-      sha256 = "0lgw839xnmdsbaiflqp3i2liqhg4lp01iaz0jv380kbw9g6k666k";
+      rev = "f68f4d00b9c99d0d711bfde3b071f0dafd249901";
+      sha256 = "0lj596jmisv42mpaxp0w1gm31lyiv28kxjyy7352d16dv5a5432g";
     };
     meta.homepage = "https://github.com/ctrlpvim/ctrlp.vim/";
   };
 
   dart-vim-plugin = buildVimPluginFrom2Nix {
     pname = "dart-vim-plugin";
-    version = "2020-08-14";
+    version = "2021-04-05";
     src = fetchFromGitHub {
       owner = "dart-lang";
       repo = "dart-vim-plugin";
-      rev = "378bddc9f0e109607935ab9a4ac717df008deac7";
-      sha256 = "0idaph0wdaf2rk9mh468zg8c4gf5hyvad5zqlpcd9q1f576ysswy";
+      rev = "d874c13dca7300178546de62e1aff7d4812640c7";
+      sha256 = "1i1w9mwmrl6cds83mai1xyqrqmzbgal2whw653g54sz1gvnhab7s";
     };
     meta.homepage = "https://github.com/dart-lang/dart-vim-plugin/";
   };
 
+  dashboard-nvim = buildVimPluginFrom2Nix {
+    pname = "dashboard-nvim";
+    version = "2021-04-17";
+    src = fetchFromGitHub {
+      owner = "glepnir";
+      repo = "dashboard-nvim";
+      rev = "ba98ab86487b8eda3b0934b5423759944b5f7ebd";
+      sha256 = "1gyk0n8ks7xyjqab0gb7yx4ypl9k7csfjgmha84hy7mz4h08fkxq";
+    };
+    meta.homepage = "https://github.com/glepnir/dashboard-nvim/";
+  };
+
   defx-git = buildVimPluginFrom2Nix {
     pname = "defx-git";
-    version = "2020-08-14";
+    version = "2021-01-01";
     src = fetchFromGitHub {
       owner = "kristijanhusak";
       repo = "defx-git";
-      rev = "717b30addcd5204cf11c0736792c4b7c45005b88";
-      sha256 = "1mx398lpzbzvrd1jawlxa4sd84ba60w3k9l46hg53hmbp1df4wff";
+      rev = "324552fc652ed09e14a45485945b2e52eb04cbdc";
+      sha256 = "1imgzbyrpivk601z35wdr6lk0r9vwriy37l4a0c3cmmb87pxkzcf";
     };
     meta.homepage = "https://github.com/kristijanhusak/defx-git/";
   };
 
   defx-icons = buildVimPluginFrom2Nix {
     pname = "defx-icons";
-    version = "2020-08-09";
+    version = "2021-03-07";
     src = fetchFromGitHub {
       owner = "kristijanhusak";
       repo = "defx-icons";
-      rev = "3259550f918b2cfb9794b62e7bb94b863f75f489";
-      sha256 = "1a65p99f9f1idzkxl4fd1klxidf40lvs79bym1fydv1zw34x8qzv";
+      rev = "563bc2d07d6c369a293ea8cb2fad8afd38bf4a02";
+      sha256 = "0gp65vf7lb00k4pk9iyr2zm6q3lfz16ad70hh3ldnj2azdfz539m";
     };
     meta.homepage = "https://github.com/kristijanhusak/defx-icons/";
   };
 
   defx-nvim = buildVimPluginFrom2Nix {
     pname = "defx-nvim";
-    version = "2020-08-19";
+    version = "2021-07-15";
     src = fetchFromGitHub {
       owner = "Shougo";
       repo = "defx.nvim";
-      rev = "1cfffcff2aba8a7b819f8b27414021d451abb4ce";
-      sha256 = "0ysnkwv9hk84i4rdglrmjms24nh9i5x5qvr8lyzrjzzp8zj7qs2l";
+      rev = "6ccd2d35581f5c497b2fe3e6a9ecbbb494210d6e";
+      sha256 = "0fg8gv38xvsv7y739m1wix5a384zjn0hqnmkqiz244jxii1l0p8y";
     };
     meta.homepage = "https://github.com/Shougo/defx.nvim/";
   };
 
   delimitMate = buildVimPluginFrom2Nix {
     pname = "delimitMate";
-    version = "2020-07-29";
+    version = "2020-12-14";
     src = fetchFromGitHub {
       owner = "Raimondi";
       repo = "delimitMate";
-      rev = "16687aec24d803bc76cae2d7bfe2b73b1cdda4ef";
-      sha256 = "067bj6if0jyqy1x3hqjdc2d4jrgldz1ffppb4l9ih06m03zdqkjd";
+      rev = "537a1da0fa5eeb88640425c37e545af933c56e1b";
+      sha256 = "0vjs11bx5zp6xqny5fd3lhqqvqaz6xjgncyga7hb0x5v6zng7gaj";
     };
     meta.homepage = "https://github.com/Raimondi/delimitMate/";
   };
@@ -1122,36 +1014,36 @@ let
 
   denite-git = buildVimPluginFrom2Nix {
     pname = "denite-git";
-    version = "2020-08-20";
+    version = "2021-01-25";
     src = fetchFromGitHub {
       owner = "neoclide";
       repo = "denite-git";
-      rev = "281f45114ba5673d671683ee19194a4958a2da57";
-      sha256 = "0j4vmljk6zvgvrj5s6ij5h5v4am7y9sd467f1fn3g6wqgm8432g6";
+      rev = "031c2db8fd7ff68078ba3e4f05d21a7950353433";
+      sha256 = "0h5a0cmrv1w7zvzxj8gdddhyiqi1qa91qsyl2axhcrdishpc0hnn";
     };
     meta.homepage = "https://github.com/neoclide/denite-git/";
   };
 
   denite-nvim = buildVimPluginFrom2Nix {
     pname = "denite-nvim";
-    version = "2020-08-03";
+    version = "2021-07-13";
     src = fetchFromGitHub {
       owner = "Shougo";
       repo = "denite.nvim";
-      rev = "7df7851826a1e8417a9b242d4ce3bd09ae1c6298";
-      sha256 = "1rf5qir9ybk1l7bb63xkprssa8jpsiap26yn6k3xy2drfvbrlika";
+      rev = "29ece0ca76408c191e3c5ed997b239efb4b38f58";
+      sha256 = "02s43lyqb17066wjjcl29vyky76svzaddclh1q6jh2awhixpsqx2";
     };
     meta.homepage = "https://github.com/Shougo/denite.nvim/";
   };
 
   deol-nvim = buildVimPluginFrom2Nix {
     pname = "deol-nvim";
-    version = "2020-07-11";
+    version = "2021-07-13";
     src = fetchFromGitHub {
       owner = "Shougo";
       repo = "deol.nvim";
-      rev = "d620b34fe5035807ad680004812080edc0f2a794";
-      sha256 = "09s86h14nrscpn16xppyz8nnjchyfv91z2cx4p0a2m46hqx962jj";
+      rev = "df506505ab2de577b35271a2b222042000a30381";
+      sha256 = "0hqfbbcq4bnc48bknd7lfm41djq6977s18j14kyanp9gm7851sis";
     };
     meta.homepage = "https://github.com/Shougo/deol.nvim/";
   };
@@ -1219,12 +1111,12 @@ let
 
   deoplete-go = buildVimPluginFrom2Nix {
     pname = "deoplete-go";
-    version = "2020-01-01";
+    version = "2021-03-30";
     src = fetchFromGitHub {
       owner = "deoplete-plugins";
       repo = "deoplete-go";
-      rev = "4f1ccd2ed70211fd025d052ec725c0b835bea487";
-      sha256 = "0zmx98kz6pxfpakizr8xm1nrv1rjr0frz19pkik29mk6aj2b2l08";
+      rev = "4eac2e6f127f2e2601dee415db2f826e2c9ef16c";
+      sha256 = "0vwp1vnjf63i7wm3crpwjj9myjdw75ghq20i6nfrfv1szhqnq28m";
       fetchSubmodules = true;
     };
     meta.homepage = "https://github.com/deoplete-plugins/deoplete-go/";
@@ -1244,12 +1136,12 @@ let
 
   deoplete-jedi = buildVimPluginFrom2Nix {
     pname = "deoplete-jedi";
-    version = "2020-08-06";
+    version = "2020-12-21";
     src = fetchFromGitHub {
       owner = "deoplete-plugins";
       repo = "deoplete-jedi";
-      rev = "2786058b9022ce6e50db7f75088e69e07185e52c";
-      sha256 = "0myn6rgwq7yd3hpxdxa7kj3dlk2x9ljqlznqg95qcm8i0w53z1wg";
+      rev = "43058915007d92dc167b84dd5b8ada2d2a057a82";
+      sha256 = "0qh43mwzjsn67id6qs96p9lw1fjsgdgqmks0161hfgvbyixx2b3y";
     };
     meta.homepage = "https://github.com/deoplete-plugins/deoplete-jedi/";
   };
@@ -1268,26 +1160,26 @@ let
 
   deoplete-khard = buildVimPluginFrom2Nix {
     pname = "deoplete-khard";
-    version = "2020-04-30";
+    version = "2020-09-18";
     src = fetchFromGitHub {
       owner = "nicoe";
       repo = "deoplete-khard";
-      rev = "7f81116b1c68d49f189a2aca62a31729fb7bb0e7";
-      sha256 = "0jnpv0lpli9qjqwkzfl66fyhywa6q586q44d26q3h7sllxpz0066";
+      rev = "dc2b519e8da0df10c3954946285caf484d376497";
+      sha256 = "126mhnn4dqwm3aw6v4c3s3fnz40lki4cbb8xfrmxfbnbnjw1yx4x";
     };
     meta.homepage = "https://github.com/nicoe/deoplete-khard/";
   };
 
   deoplete-lsp = buildVimPluginFrom2Nix {
     pname = "deoplete-lsp";
-    version = "2020-07-13";
+    version = "2021-06-16";
     src = fetchFromGitHub {
-      owner = "Shougo";
+      owner = "deoplete-plugins";
       repo = "deoplete-lsp";
-      rev = "ae0b7d023a33f0692652a21f532051e8718e1800";
-      sha256 = "00008andpp08l6fm8qadp8ycm59s8gx2m1vskmzg3lw905fk0gra";
+      rev = "1a9476dd83d986c861233c380ac07e1e2f2d10af";
+      sha256 = "0xv34cg0lkcjhylsc5qc2pkd4np5mmf5gbx55hvryjnipk1sa06y";
     };
-    meta.homepage = "https://github.com/Shougo/deoplete-lsp/";
+    meta.homepage = "https://github.com/deoplete-plugins/deoplete-lsp/";
   };
 
   deoplete-notmuch = buildVimPluginFrom2Nix {
@@ -1304,12 +1196,12 @@ let
 
   deoplete-phpactor = buildVimPluginFrom2Nix {
     pname = "deoplete-phpactor";
-    version = "2019-02-22";
+    version = "2020-09-12";
     src = fetchFromGitHub {
       owner = "kristijanhusak";
       repo = "deoplete-phpactor";
-      rev = "53e239effb8ff20fc0a192206e96d98d4f9001ad";
-      sha256 = "14097r9fmyp9zxfgv0fj2s52qd1v5cxdckfg4zph7lg3yri1hx9p";
+      rev = "3668d35d8ea8177bb70cfb239169d3c12bc54f6a";
+      sha256 = "1cjdr8py7brxz419vf125jkyfjrx3n5z65ranj23z20ifc945g6b";
     };
     meta.homepage = "https://github.com/kristijanhusak/deoplete-phpactor/";
   };
@@ -1328,12 +1220,12 @@ let
 
   deoplete-tabnine = buildVimPluginFrom2Nix {
     pname = "deoplete-tabnine";
-    version = "2020-03-29";
+    version = "2021-04-08";
     src = fetchFromGitHub {
       owner = "tbodt";
       repo = "deoplete-tabnine";
-      rev = "eef0e2340e19aea05fe5759b7da3b13cadd375c4";
-      sha256 = "0q10zcjhjgak3w365pagd4ym5mmj3yd1lfsxv0d4wr4lp9a51sd7";
+      rev = "181dc9e615e39fa95a722ec21b5604ef3b40c6f3";
+      sha256 = "0xc6kwgfvzfi1apgq6g0zl5wlvwxv51ipnpycrzq93sz618hg78j";
     };
     meta.homepage = "https://github.com/tbodt/deoplete-tabnine/";
   };
@@ -1350,6 +1242,18 @@ let
     meta.homepage = "https://github.com/carlitux/deoplete-ternjs/";
   };
 
+  deoplete-vim-lsp = buildVimPluginFrom2Nix {
+    pname = "deoplete-vim-lsp";
+    version = "2021-02-22";
+    src = fetchFromGitHub {
+      owner = "lighttiger2505";
+      repo = "deoplete-vim-lsp";
+      rev = "af5432f1e063fd4c3a5879aa8c2afe82c17dc1c9";
+      sha256 = "1s6fw6vkpl0yiya22g13v4i14w3n1ds2zr8zdlwpkk44bf0225px";
+    };
+    meta.homepage = "https://github.com/lighttiger2505/deoplete-vim-lsp/";
+  };
+
   deoplete-zsh = buildVimPluginFrom2Nix {
     pname = "deoplete-zsh";
     version = "2019-11-10";
@@ -1364,52 +1268,88 @@ let
 
   deoplete-nvim = buildVimPluginFrom2Nix {
     pname = "deoplete-nvim";
-    version = "2020-08-10";
+    version = "2021-07-14";
     src = fetchFromGitHub {
       owner = "Shougo";
       repo = "deoplete.nvim";
-      rev = "ba3913cc52b457877836f7423b0929b770dda42b";
-      sha256 = "16hn83ns278x9p280b0gpk4b4vhg50004bpnff7d3inf3x6pli4j";
+      rev = "49151bc9f7a52b02e5aac5eb76bbb80ba81e3726";
+      sha256 = "02csaq7x99l5h175kyy0bwdb8kdq3caldj6gkpc7lx7zdc987pwn";
     };
     meta.homepage = "https://github.com/Shougo/deoplete.nvim/";
   };
 
+  devdocs-vim = buildVimPluginFrom2Nix {
+    pname = "devdocs-vim";
+    version = "2018-08-27";
+    src = fetchFromGitHub {
+      owner = "rhysd";
+      repo = "devdocs.vim";
+      rev = "1c91c619874f11f2062f80e6ca4b49456f21ae91";
+      sha256 = "1nxww2mjabl2g2wchxc4h3a58j64acls24zb5jmfi71b8sai8a9b";
+    };
+    meta.homepage = "https://github.com/rhysd/devdocs.vim/";
+  };
+
   dhall-vim = buildVimPluginFrom2Nix {
     pname = "dhall-vim";
-    version = "2020-08-19";
+    version = "2021-06-05";
     src = fetchFromGitHub {
       owner = "vmchale";
       repo = "dhall-vim";
-      rev = "77d1c165bcbe6bb7f9eedbeafe390c2107d3c52e";
-      sha256 = "03x55x0gvf7n4i8hh6s5453mf5h43pf7kdy817q6w1149bd90vxy";
+      rev = "68500ef46ff3706f46c99db3be7a0c8abcf6a3ae";
+      sha256 = "0lwna4kcq7davfvh3535n8wl9jxkjm7cg6jgpisd17kvagihh8qw";
     };
     meta.homepage = "https://github.com/vmchale/dhall-vim/";
   };
 
   diagnostic-nvim = buildVimPluginFrom2Nix {
     pname = "diagnostic-nvim";
-    version = "2020-07-25";
+    version = "2020-11-13";
     src = fetchFromGitHub {
       owner = "nvim-lua";
       repo = "diagnostic-nvim";
-      rev = "03670688e70fc65eff70abb3cefe1a086ee95bf8";
-      sha256 = "02nci7n9lpz1axpwzpv34r6720iycfh43n1910ryhm4f7cxs2x61";
+      rev = "a8401479822e638fa70472009949e7be8b24e0fd";
+      sha256 = "1dl4b8xhvnb2x9fw220jis7hqmiwfz0969d44l96p41bj68qbbs9";
     };
     meta.homepage = "https://github.com/nvim-lua/diagnostic-nvim/";
   };
 
+  diffview-nvim = buildVimPluginFrom2Nix {
+    pname = "diffview-nvim";
+    version = "2021-07-22";
+    src = fetchFromGitHub {
+      owner = "sindrets";
+      repo = "diffview.nvim";
+      rev = "dea0e244bca3a89479e9225b531a319cd812cd52";
+      sha256 = "0gf1x10ix3p6ls1g1cbx57fxd5ln13p3abhv52wqy2gkdl3syvw4";
+    };
+    meta.homepage = "https://github.com/sindrets/diffview.nvim/";
+  };
+
   direnv-vim = buildVimPluginFrom2Nix {
     pname = "direnv-vim";
-    version = "2019-04-30";
+    version = "2020-11-20";
     src = fetchFromGitHub {
       owner = "direnv";
       repo = "direnv.vim";
-      rev = "5e75084465ad37dd0a4d4b1198b5ffa8978ae4e1";
-      sha256 = "0vabsv98vwdjns3dliplg7x8ssyrin44af9jl248kdzkqw5fx445";
+      rev = "ff37d76da391e1ef299d2f5eb84006cb27a67799";
+      sha256 = "136z8axjd66l4yy6rkjr6gqm86zxnqpbw9pzkvii0lsaz11w9wak";
     };
     meta.homepage = "https://github.com/direnv/direnv.vim/";
   };
 
+  doki-theme-vim = buildVimPluginFrom2Nix {
+    pname = "doki-theme-vim";
+    version = "2021-07-07";
+    src = fetchFromGitHub {
+      owner = "doki-theme";
+      repo = "doki-theme-vim";
+      rev = "570577ba3f47baebd9e9019916971bee60e2c2e4";
+      sha256 = "05y3dd2w518jcpgbmj83hv8knm92xnagzbv9hknhbs99bgghmp0h";
+    };
+    meta.homepage = "https://github.com/doki-theme/doki-theme-vim/";
+  };
+
   DoxygenToolkit-vim = buildVimPluginFrom2Nix {
     pname = "DoxygenToolkit-vim";
     version = "2010-11-06";
@@ -1424,36 +1364,48 @@ let
 
   dracula-vim = buildVimPluginFrom2Nix {
     pname = "dracula-vim";
-    version = "2020-07-19";
+    version = "2021-06-04";
     src = fetchFromGitHub {
       owner = "dracula";
       repo = "vim";
-      rev = "b64b22affafca7d3831a20949115b91031d596ec";
-      sha256 = "1f5hwfcrsfq3yk53kkn4syaxmri8wh8h6rpq867468b8rdcnhq01";
+      rev = "869f70a7603b77cdb2f63983dd286f3f61b7a966";
+      sha256 = "031c000nr2raw0v6bdnisczjz20y5iw0yapj8wih0nc703dirhih";
     };
     meta.homepage = "https://github.com/dracula/vim/";
   };
 
   echodoc-vim = buildVimPluginFrom2Nix {
     pname = "echodoc-vim";
-    version = "2020-06-08";
+    version = "2021-07-09";
     src = fetchFromGitHub {
       owner = "Shougo";
       repo = "echodoc.vim";
-      rev = "4719626bfd477f1189dd9992614ff452d3ea3caf";
-      sha256 = "0bpaav7yf06wlzfiyx6iylxan8a9hici041pnmlw7kgf176h6w7b";
+      rev = "9288bef70cda903edc2561c7612fe2d6a3c73aa5";
+      sha256 = "1s6glmc489dfz750d3xikwxm84qqa89qza1jp3vfj7jn47h1r826";
     };
     meta.homepage = "https://github.com/Shougo/echodoc.vim/";
   };
 
+  edge = buildVimPluginFrom2Nix {
+    pname = "edge";
+    version = "2021-07-19";
+    src = fetchFromGitHub {
+      owner = "sainnhe";
+      repo = "edge";
+      rev = "8785d0c2737b6354c847a2ac2cd327a16e2087f2";
+      sha256 = "0nhf9vnsba7gm1yxnbj8lqd9d1ihdgpqrlyihlc815ayqzzs3h9b";
+    };
+    meta.homepage = "https://github.com/sainnhe/edge/";
+  };
+
   editorconfig-vim = buildVimPluginFrom2Nix {
     pname = "editorconfig-vim";
-    version = "2020-06-02";
+    version = "2021-07-20";
     src = fetchFromGitHub {
       owner = "editorconfig";
       repo = "editorconfig-vim";
-      rev = "0a3c1d8082e38a5ebadcba7bb3a608d88a9ff044";
-      sha256 = "1w60rsij0ag74vjal2l75k4g4xv8438a0izvzpy5xir4bby2g7dz";
+      rev = "1c4f781f2439469e5342217131886260c9445fc6";
+      sha256 = "0m39if0n4kijqzxk91r1a1fnyhr2p4b9nx1yzvwzkj21snysi4w8";
       fetchSubmodules = true;
     };
     meta.homepage = "https://github.com/editorconfig/editorconfig-vim/";
@@ -1461,12 +1413,12 @@ let
 
   elm-vim = buildVimPluginFrom2Nix {
     pname = "elm-vim";
-    version = "2019-04-05";
+    version = "2020-09-23";
     src = fetchFromGitHub {
       owner = "elmcast";
       repo = "elm-vim";
-      rev = "165107a9fd2b20c8f050fc4f977b4e41c790b1e7";
-      sha256 = "0gf7b49by0ybx3ndz7sz5dwcfnps4sz6wsr02lyarj8f8116ysy5";
+      rev = "4b71facd77297cb33bbb3b14894676cff0a9bd1d";
+      sha256 = "1kxkjm6fzmircg5gh7w2bmvjgk8ly5vvq9l31m4p6ql48azg2ilc";
     };
     meta.homepage = "https://github.com/elmcast/elm-vim/";
   };
@@ -1483,14 +1435,26 @@ let
     meta.homepage = "https://github.com/dmix/elvish.vim/";
   };
 
+  embark-vim = buildVimPluginFrom2Nix {
+    pname = "embark-vim";
+    version = "2021-07-24";
+    src = fetchFromGitHub {
+      owner = "embark-theme";
+      repo = "vim";
+      rev = "03029f4ec49cd0dd1d16eb9561742f5c9f794e71";
+      sha256 = "14gnndh40h8qlymsb9lkycn4w7jv8f7kk0yjxi4wzjvycg7mrplx";
+    };
+    meta.homepage = "https://github.com/embark-theme/vim/";
+  };
+
   emmet-vim = buildVimPluginFrom2Nix {
     pname = "emmet-vim";
-    version = "2020-06-20";
+    version = "2021-04-17";
     src = fetchFromGitHub {
       owner = "mattn";
       repo = "emmet-vim";
-      rev = "dc6cb4fd074f4c371158eeab0c8e4ce4af33534b";
-      sha256 = "1cy201c5imbw2pw65f1s0nn8p6vwm00nqlvxwygh18dhy2qv4gfa";
+      rev = "46e60676f2d6b6f02478e444ae23ee804a3de45e";
+      sha256 = "0civ9sx6qbm2cd0a8m57fangvrb1yrbfldg850avi9ay3s4y2nq5";
       fetchSubmodules = true;
     };
     meta.homepage = "https://github.com/mattn/emmet-vim/";
@@ -1522,48 +1486,84 @@ let
 
   falcon = buildVimPluginFrom2Nix {
     pname = "falcon";
-    version = "2020-04-16";
+    version = "2021-07-23";
     src = fetchFromGitHub {
       owner = "fenetikm";
       repo = "falcon";
-      rev = "da3468536410eb1ea59a0dd3054edf28d4577d8c";
-      sha256 = "1cvw3n8ysxnm3w0rvk1rks815ha5grca1p3c7bkas6klrplfhlsc";
+      rev = "f734d08b7d8c59be372f0364cbdbb2e3b8884574";
+      sha256 = "1gfswql15fpndxmkqgw5l3c15kpv2892bhmcc8hg3wwi6d8c8g3i";
     };
     meta.homepage = "https://github.com/fenetikm/falcon/";
   };
 
   far-vim = buildVimPluginFrom2Nix {
     pname = "far-vim";
-    version = "2020-07-23";
+    version = "2021-02-19";
     src = fetchFromGitHub {
       owner = "brooth";
       repo = "far.vim";
-      rev = "aaf7b252301d03100ba3923c17d026562a0b17b8";
-      sha256 = "10ij80x2drmk3jr5c7pm9k3jrci9qb26gmqagpxpmiv1is9sdx0a";
+      rev = "e67b1dbe5842b709687c214fea38ca00f0ffe6c6";
+      sha256 = "1ljvl7p2k3bgl54srf6kvshqq16qwfa34ppj982fp2bzzal819l1";
     };
     meta.homepage = "https://github.com/brooth/far.vim/";
   };
 
   fastfold = buildVimPluginFrom2Nix {
     pname = "fastfold";
-    version = "2020-03-23";
+    version = "2021-07-22";
     src = fetchFromGitHub {
       owner = "konfekt";
       repo = "fastfold";
-      rev = "5872cbe9d921eb3ec79dce14a1f492f44c1cbaaf";
-      sha256 = "07mls0yczg2cmia2jn0s2rvgwl07yxlm4hyvjd941p1knvn88x8q";
+      rev = "b5977da87ab7725d5bd9f46fd691eca433503835";
+      sha256 = "1j5b2nhmc4kq23dzhwsspwqx9shxpqp57175j0zr53phx01q3qcr";
     };
     meta.homepage = "https://github.com/konfekt/fastfold/";
   };
 
+  feline-nvim = buildVimPluginFrom2Nix {
+    pname = "feline-nvim";
+    version = "2021-07-24";
+    src = fetchFromGitHub {
+      owner = "famiu";
+      repo = "feline.nvim";
+      rev = "fb51d6ba6363d10d6fc9e14d0fcef09fd402e431";
+      sha256 = "1cpk0jyhgx93bvjpc76gjp671k53av8mj6d19j4zwm3xm5v1by2p";
+    };
+    meta.homepage = "https://github.com/famiu/feline.nvim/";
+  };
+
+  fennel-vim = buildVimPluginFrom2Nix {
+    pname = "fennel-vim";
+    version = "2020-11-15";
+    src = fetchFromGitHub {
+      owner = "bakpakin";
+      repo = "fennel.vim";
+      rev = "30b9beabad2c4f09b9b284caf5cd5666b6b4dc89";
+      sha256 = "1fvcn4q87d594nzxlj1597bmrixzlfqnl7k8f547skvvywx09kii";
+    };
+    meta.homepage = "https://github.com/bakpakin/fennel.vim/";
+  };
+
+  fern-vim = buildVimPluginFrom2Nix {
+    pname = "fern-vim";
+    version = "2021-07-24";
+    src = fetchFromGitHub {
+      owner = "lambdalisue";
+      repo = "fern.vim";
+      rev = "a4d4288a11d0e50214c4f5745da5f8ce39cb2a6d";
+      sha256 = "1ldv2ar8dm2arawxkzi2r7r1c6wacl9g9dkmyib038bdmr4qfn1g";
+    };
+    meta.homepage = "https://github.com/lambdalisue/fern.vim/";
+  };
+
   ferret = buildVimPluginFrom2Nix {
     pname = "ferret";
-    version = "2020-05-15";
+    version = "2021-07-09";
     src = fetchFromGitHub {
       owner = "wincent";
       repo = "ferret";
-      rev = "6218891a01418377c67b12ad57046ec78958ced2";
-      sha256 = "1sjia8bk9gmwymhdrc3bksax4msincychd96ar5bdmifr6p1klg4";
+      rev = "14d883975b2f1d50bbf7a6f74a04f39e59c0b06c";
+      sha256 = "1hnn3x37iphbaam3h5kz0l6y09v2xr79p1nkhs10m939vxavg62k";
     };
     meta.homepage = "https://github.com/wincent/ferret/";
   };
@@ -1580,14 +1580,26 @@ let
     meta.homepage = "https://github.com/bogado/file-line/";
   };
 
+  FixCursorHold-nvim = buildVimPluginFrom2Nix {
+    pname = "FixCursorHold-nvim";
+    version = "2021-04-16";
+    src = fetchFromGitHub {
+      owner = "antoinemadec";
+      repo = "FixCursorHold.nvim";
+      rev = "b5158c93563ee6192ce8d903bfef839393bfeccd";
+      sha256 = "1y6hv7vl268zbf3bzd72l43jjgi0cq364p15z8ia9jlph1syk9zz";
+    };
+    meta.homepage = "https://github.com/antoinemadec/FixCursorHold.nvim/";
+  };
+
   flake8-vim = buildVimPluginFrom2Nix {
     pname = "flake8-vim";
-    version = "2017-02-17";
+    version = "2020-10-20";
     src = fetchFromGitHub {
       owner = "andviro";
       repo = "flake8-vim";
-      rev = "01c4af4c68f33b2b3785314bfbf5b3d8d1451795";
-      sha256 = "14rv0p1vx4njlplkc72gz7r8sy9vc6n8x9l00zc777x5zzrhgz3g";
+      rev = "5bc93f7f26ceb18ccbe116830eaf8ff2baa63994";
+      sha256 = "142pgasl0b64a0zxmspdsi636axrgvdx6rh3hwjrb1zlsck19y1a";
       fetchSubmodules = true;
     };
     meta.homepage = "https://github.com/andviro/flake8-vim/";
@@ -1595,16 +1607,28 @@ let
 
   float-preview-nvim = buildVimPluginFrom2Nix {
     pname = "float-preview-nvim";
-    version = "2020-04-19";
+    version = "2020-11-03";
     src = fetchFromGitHub {
       owner = "ncm2";
       repo = "float-preview.nvim";
-      rev = "3c2e230a3fe34b3a5fb74519797c29daa5a6a69a";
-      sha256 = "1i5wj1hqimzrw3bwsf76w8l8yp654pdn8f61kp0v98xdgkab007d";
+      rev = "f9ed1c701d5ea41222509fc822cbdc5613b14b2d";
+      sha256 = "0r1pj80mnsr269d7mnxfagdp988gn3gnf5fix55z4qwim9cakrl8";
     };
     meta.homepage = "https://github.com/ncm2/float-preview.nvim/";
   };
 
+  floating-nvim = buildVimPluginFrom2Nix {
+    pname = "floating-nvim";
+    version = "2021-07-19";
+    src = fetchFromGitHub {
+      owner = "fhill2";
+      repo = "floating.nvim";
+      rev = "11e75c2a201b9d73f03bd3c2db1fc94021c231eb";
+      sha256 = "172ak3macqmkz4jvic1xcnfpp6wafq33afyvcx4za170qh30sydj";
+    };
+    meta.homepage = "https://github.com/fhill2/floating.nvim/";
+  };
+
   floobits-neovim = buildVimPluginFrom2Nix {
     pname = "floobits-neovim";
     version = "2018-08-01";
@@ -1617,6 +1641,18 @@ let
     meta.homepage = "https://github.com/floobits/floobits-neovim/";
   };
 
+  formatter-nvim = buildVimPluginFrom2Nix {
+    pname = "formatter-nvim";
+    version = "2021-07-15";
+    src = fetchFromGitHub {
+      owner = "mhartington";
+      repo = "formatter.nvim";
+      rev = "9efa18bc9552a8b2a00644f79d41f279be322e45";
+      sha256 = "0hfq580ng3wlzkc9g44pz1ciwa9ax46ylka3s3y4v79szhviykby";
+    };
+    meta.homepage = "https://github.com/mhartington/formatter.nvim/";
+  };
+
   forms = buildVimPluginFrom2Nix {
     pname = "forms";
     version = "2012-11-28";
@@ -1629,14 +1665,26 @@ let
     meta.homepage = "https://github.com/megaannum/forms/";
   };
 
+  friendly-snippets = buildVimPluginFrom2Nix {
+    pname = "friendly-snippets";
+    version = "2021-07-08";
+    src = fetchFromGitHub {
+      owner = "rafamadriz";
+      repo = "friendly-snippets";
+      rev = "f3ca66b6a2a42eb01ffc255ac03039177b888951";
+      sha256 = "08wzq5i86wxdyhl2yrl9ggfhng92pfx5d7rhmxfcm4abnnl9sj07";
+    };
+    meta.homepage = "https://github.com/rafamadriz/friendly-snippets/";
+  };
+
   fruzzy = buildVimPluginFrom2Nix {
     pname = "fruzzy";
-    version = "2019-10-28";
+    version = "2020-08-31";
     src = fetchFromGitHub {
       owner = "raghur";
       repo = "fruzzy";
-      rev = "b312ae79db98cf6939c8319f2511efa06889e8e3";
-      sha256 = "01iisbawq2w7yw866qvv109amnvyaymzyz9nqal3cjrrcwk6mmdk";
+      rev = "4cdfee7b828a5cace22bfd93cf23fee0b2b233c4";
+      sha256 = "1dmxz283ypz1klcmdf4jk699aifr3dywkh9y8v8v8vyflampqwwp";
     };
     meta.homepage = "https://github.com/raghur/fruzzy/";
   };
@@ -1653,50 +1701,98 @@ let
     meta.homepage = "https://github.com/shumphrey/fugitive-gitlab.vim/";
   };
 
+  fwatch-nvim = buildVimPluginFrom2Nix {
+    pname = "fwatch-nvim";
+    version = "2021-04-26";
+    src = fetchFromGitHub {
+      owner = "rktjmp";
+      repo = "fwatch.nvim";
+      rev = "5fd6bff00d7fa432cdc847819563dad90bcf649d";
+      sha256 = "1jc3kv0w3767593p9capif3p0msf8ac5xal170757ghfiy2jhsp9";
+    };
+    meta.homepage = "https://github.com/rktjmp/fwatch.nvim/";
+  };
+
+  fzf-checkout-vim = buildVimPluginFrom2Nix {
+    pname = "fzf-checkout-vim";
+    version = "2021-06-25";
+    src = fetchFromGitHub {
+      owner = "stsewd";
+      repo = "fzf-checkout.vim";
+      rev = "4d5ecae74460de8fed4f743f6bd53c4c31d32797";
+      sha256 = "0mia7p2z8l3lrid0v8ml4i8y190gh4ll9898yyg4gcghhxp83zpm";
+    };
+    meta.homepage = "https://github.com/stsewd/fzf-checkout.vim/";
+  };
+
+  fzf-lsp-nvim = buildVimPluginFrom2Nix {
+    pname = "fzf-lsp-nvim";
+    version = "2021-06-20";
+    src = fetchFromGitHub {
+      owner = "gfanto";
+      repo = "fzf-lsp.nvim";
+      rev = "6683718524adec3ce58c848706bcc7f3aa6a09a1";
+      sha256 = "12ccd7yf726s1gfcxhv7fnwfgwlkgvkqnds442k4i2m9ahs0pyj7";
+    };
+    meta.homepage = "https://github.com/gfanto/fzf-lsp.nvim/";
+  };
+
   fzf-vim = buildVimPluginFrom2Nix {
     pname = "fzf-vim";
-    version = "2020-08-12";
+    version = "2021-05-25";
     src = fetchFromGitHub {
       owner = "junegunn";
       repo = "fzf.vim";
-      rev = "4145f53f3d343c389ff974b1f1a68eeb39fba18b";
-      sha256 = "07fb52c8bmmpfin24pqqh04q157qx52xjri2wjm004yq69b44hx7";
+      rev = "e34f6c129d39b90db44df1107c8b7dfacfd18946";
+      sha256 = "0rn0b48zxf46ak0a2dwbx4aas0fjiywhch0viffzhj5b61lvy218";
     };
     meta.homepage = "https://github.com/junegunn/fzf.vim/";
   };
 
+  galaxyline-nvim = buildVimPluginFrom2Nix {
+    pname = "galaxyline-nvim";
+    version = "2021-04-25";
+    src = fetchFromGitHub {
+      owner = "glepnir";
+      repo = "galaxyline.nvim";
+      rev = "d544cb9d0b56f6ef271db3b4c3cf19ef665940d5";
+      sha256 = "1390lqsqdcj1q89zn6y5qrm1id7p8fnpy07vlz6mm4cki47211mb";
+    };
+    meta.homepage = "https://github.com/glepnir/galaxyline.nvim/";
+  };
+
   gen_tags-vim = buildVimPluginFrom2Nix {
     pname = "gen_tags-vim";
-    version = "2019-06-28";
+    version = "2020-10-12";
     src = fetchFromGitHub {
       owner = "jsfaint";
       repo = "gen_tags.vim";
-      rev = "208cd0490547bc8f7615eea1b26e4635d2e60a96";
-      sha256 = "00s1kxi1bsvz06z7x78kls0k6ncnbqdyz14fvdxxq82f6s1kdvdw";
+      rev = "f888a2f8732e08d9f2b638b144c5c826a30953a3";
+      sha256 = "16gkczlaani0c0v3hkklriabhkgcs0mg9mrbn8jzfsap15cnkgk5";
     };
     meta.homepage = "https://github.com/jsfaint/gen_tags.vim/";
   };
 
   gentoo-syntax = buildVimPluginFrom2Nix {
     pname = "gentoo-syntax";
-    version = "2020-06-05";
+    version = "2021-07-16";
     src = fetchFromGitHub {
       owner = "gentoo";
       repo = "gentoo-syntax";
-      rev = "47b6900c425614d4ba22223c13a23920f0618d9f";
-      sha256 = "0agswv1r5nxbnw0nddhw9vqvrfsvsgh18nwrg83c01sj97075qmv";
+      rev = "14aec3bde121c797f9131da0d4b18a932598bb8f";
+      sha256 = "1mcn4dhwjay5c0y650y2rxz9acxwfsninwrvp20ssgi4gcw2vg76";
     };
     meta.homepage = "https://github.com/gentoo/gentoo-syntax/";
   };
 
   ghcid = buildVimPluginFrom2Nix {
     pname = "ghcid";
-    version = "2020-08-12";
+    version = "2021-07-03";
     src = fetchFromGitHub {
       owner = "ndmitchell";
       repo = "ghcid";
-      rev = "d6191a111a1160ddecb05292eefe28ae362ccbaa";
-      sha256 = "17dp28a3ipbx8fwsj0h9imkrgd0nfjzpcsn1zjdbih1kfh494smf";
+      rev = "a1a83a3385e0d67c9875492aaa9cbbab2322dbdc";
+      sha256 = "0agsajz53409zvzpwbw24cfny027ymlw32jrakqdizmgrl46zm45";
     };
     meta.homepage = "https://github.com/ndmitchell/ghcid/";
   };
@@ -1713,18 +1809,54 @@ let
     meta.homepage = "https://github.com/eagletmt/ghcmod-vim/";
   };
 
+  gina-vim = buildVimPluginFrom2Nix {
+    pname = "gina-vim";
+    version = "2021-06-12";
+    src = fetchFromGitHub {
+      owner = "lambdalisue";
+      repo = "gina.vim";
+      rev = "abdbe0fe33f3b6fc59e94f7cc3072768f8dfd8ac";
+      sha256 = "1f3shh6jxr5i1an2dbb1vmc0l2xg03fm6ava25ahxg4b5ka59bc5";
+    };
+    meta.homepage = "https://github.com/lambdalisue/gina.vim/";
+  };
+
+  git-blame-nvim = buildVimPluginFrom2Nix {
+    pname = "git-blame-nvim";
+    version = "2021-06-14";
+    src = fetchFromGitHub {
+      owner = "f-person";
+      repo = "git-blame.nvim";
+      rev = "125f09f3e09091fa9cc6585156e199d08989dc0e";
+      sha256 = "1d6al5yrwv0wfmy39k8ky5ha1x0a6mz6djscibwz13fvgqka2730";
+    };
+    meta.homepage = "https://github.com/f-person/git-blame.nvim/";
+  };
+
   git-messenger-vim = buildVimPluginFrom2Nix {
     pname = "git-messenger-vim";
-    version = "2020-08-20";
+    version = "2021-06-06";
     src = fetchFromGitHub {
       owner = "rhysd";
       repo = "git-messenger.vim";
-      rev = "c16b0d43ca57e77081f1f23f67552efe37110b39";
-      sha256 = "171w3dv3jl4mw1ikh5p688v0a8nf85h862d9zvsmdzs2v6ajigpw";
+      rev = "f17e40e9995bbb21e0e9b7fd29278637a69fcc02";
+      sha256 = "09izgdlba3413llb698r8iagpfnhvp57yaz7qlcypbyvqr9l41mm";
     };
     meta.homepage = "https://github.com/rhysd/git-messenger.vim/";
   };
 
+  git-worktree-nvim = buildVimPluginFrom2Nix {
+    pname = "git-worktree-nvim";
+    version = "2021-07-15";
+    src = fetchFromGitHub {
+      owner = "ThePrimeagen";
+      repo = "git-worktree.nvim";
+      rev = "97adf37032c213201c823e98b0555f7279525d62";
+      sha256 = "0vca7pyipch3y3g19sfwqx33l8jh3h7r9wv3hlfw960iyqc2xia7";
+    };
+    meta.homepage = "https://github.com/ThePrimeagen/git-worktree.nvim/";
+  };
+
   gitignore-vim = buildVimPluginFrom2Nix {
     pname = "gitignore-vim";
     version = "2014-03-16";
@@ -1737,6 +1869,18 @@ let
     meta.homepage = "https://github.com/vim-scripts/gitignore.vim/";
   };
 
+  gitsigns-nvim = buildVimPluginFrom2Nix {
+    pname = "gitsigns-nvim";
+    version = "2021-07-23";
+    src = fetchFromGitHub {
+      owner = "lewis6991";
+      repo = "gitsigns.nvim";
+      rev = "22a1d6db29a2c6b485a48512d2c38ac84d6a78bb";
+      sha256 = "1dxz6zjhf2z4n2pqdk95ifdj379fravfr55k401plgy223hmpkip";
+    };
+    meta.homepage = "https://github.com/lewis6991/gitsigns.nvim/";
+  };
+
   gitv = buildVimPluginFrom2Nix {
     pname = "gitv";
     version = "2019-08-22";
@@ -1749,6 +1893,30 @@ let
     meta.homepage = "https://github.com/gregsexton/gitv/";
   };
 
+  gleam-vim = buildVimPluginFrom2Nix {
+    pname = "gleam-vim";
+    version = "2020-06-24";
+    src = fetchFromGitHub {
+      owner = "gleam-lang";
+      repo = "gleam.vim";
+      rev = "847a5ef57c2faef2774242c87f711d1131b89fe6";
+      sha256 = "17kjby64zdnmhyia1cx9jnk4mss0gca1jz1m4hff9rl63i56bql1";
+    };
+    meta.homepage = "https://github.com/gleam-lang/gleam.vim/";
+  };
+
+  glow-nvim = buildVimPluginFrom2Nix {
+    pname = "glow-nvim";
+    version = "2021-07-14";
+    src = fetchFromGitHub {
+      owner = "npxbr";
+      repo = "glow.nvim";
+      rev = "3688c38b70eaa680a7100a53e2f12bcd367de225";
+      sha256 = "18xkgwy3gfaq45wzixpr3ngskqqg0c2nziykvy323fimjvbvqxan";
+    };
+    meta.homepage = "https://github.com/npxbr/glow.nvim/";
+  };
+
   golden-ratio = buildVimPluginFrom2Nix {
     pname = "golden-ratio";
     version = "2020-04-03";
@@ -1775,12 +1943,12 @@ let
 
   goyo-vim = buildVimPluginFrom2Nix {
     pname = "goyo-vim";
-    version = "2020-06-08";
+    version = "2020-08-29";
     src = fetchFromGitHub {
       owner = "junegunn";
       repo = "goyo.vim";
-      rev = "3e129198bba7d6b50406902002ad7d213a6cccaa";
-      sha256 = "1b2wsxbg27nmwxrncwddkl2ck8hbiqdqi821vl9d1fl5nx042y2b";
+      rev = "a865dec7ca7616dbbd69315ad1417b84d0c411f8";
+      sha256 = "09mqmcz79dwcc5mv0p2wc84jc20ipa0vv2yckp4la4xh909ph4hm";
     };
     meta.homepage = "https://github.com/junegunn/goyo.vim/";
   };
@@ -1799,48 +1967,72 @@ let
 
   gruvbox-community = buildVimPluginFrom2Nix {
     pname = "gruvbox-community";
-    version = "2020-05-23";
+    version = "2021-05-17";
     src = fetchFromGitHub {
       owner = "gruvbox-community";
       repo = "gruvbox";
-      rev = "933b6cc35a0f180ff488ef20c7b534c9c3b6701a";
-      sha256 = "0w10hcz66dgilx6fv07bb3zsf5c0x9gv4vhp15c5fp2rzwxi10bn";
+      rev = "51ae4557e8941943d70da36320cc80a521e2d99e";
+      sha256 = "0dgvd4qpzg7fn7rwvpknzi2bxzzb2g8jl9jh9byj07yll413gzqh";
     };
     meta.homepage = "https://github.com/gruvbox-community/gruvbox/";
   };
 
+  gruvbox-flat-nvim = buildVimPluginFrom2Nix {
+    pname = "gruvbox-flat-nvim";
+    version = "2021-06-25";
+    src = fetchFromGitHub {
+      owner = "eddyekofo94";
+      repo = "gruvbox-flat.nvim";
+      rev = "b98cd51a564881eac30794e64a8db63860d9bcf0";
+      sha256 = "03drq3sqak2lcb7vs7qw1lhgrbnri0m1qp50cgaq17v0dlk15n4k";
+    };
+    meta.homepage = "https://github.com/eddyekofo94/gruvbox-flat.nvim/";
+  };
+
+  gruvbox-nvim = buildVimPluginFrom2Nix {
+    pname = "gruvbox-nvim";
+    version = "2021-07-05";
+    src = fetchFromGitHub {
+      owner = "npxbr";
+      repo = "gruvbox.nvim";
+      rev = "ac0948e28203cba5d0510cf3443906228645e3eb";
+      sha256 = "0g9j2gqsgx7la96xhc72l7rb535phqjpb5mva191wjfn13j0hkda";
+    };
+    meta.homepage = "https://github.com/npxbr/gruvbox.nvim/";
+  };
+
   gundo-vim = buildVimPluginFrom2Nix {
     pname = "gundo-vim";
-    version = "2020-01-15";
+    version = "2021-02-21";
     src = fetchFromGitHub {
       owner = "sjl";
       repo = "gundo.vim";
-      rev = "99e6240340d9ba07b66c544daf44fa7caffbf7e7";
-      sha256 = "0py35mmwnfl581isnbh33j3bjgghq17jnamdi1bg3akwyn1jyhqb";
+      rev = "c5efef192b975b8e7d5fa3c6db932648d3b76323";
+      sha256 = "1smavxh0nmx4la75b1fjh8cs2x8p8ahxls034254vnm05wiwvghh";
     };
     meta.homepage = "https://github.com/sjl/gundo.vim/";
   };
 
   gv-vim = buildVimPluginFrom2Nix {
     pname = "gv-vim";
-    version = "2020-05-22";
+    version = "2021-05-27";
     src = fetchFromGitHub {
       owner = "junegunn";
       repo = "gv.vim";
-      rev = "61d877d23caaad9009d672f90fe2ab576ab93d2d";
-      sha256 = "00h4d6jah0fdr5m8x9c1gmmm9wskplixnvbbalfbbpc599xhgj83";
+      rev = "5f902f4f7d06ef084ffd6cddcd1ee7d3c9a793c6";
+      sha256 = "0am6sip4q14v2cvf9dmq6jkh37nhdhbvs466619qyd48qxcf9k9n";
     };
     meta.homepage = "https://github.com/junegunn/gv.vim/";
   };
 
   haskell-vim = buildVimPluginFrom2Nix {
     pname = "haskell-vim";
-    version = "2018-05-22";
+    version = "2021-01-19";
     src = fetchFromGitHub {
       owner = "neovimhaskell";
       repo = "haskell-vim";
-      rev = "b1ac46807835423c4a4dd063df6d5b613d89c731";
-      sha256 = "1vqj3r2v8skffywwgv4093ww7fm540437j5qz7n8q8787bs5w0br";
+      rev = "f35d02204b4813d1dbe8b0e98cc39701a4b8e15e";
+      sha256 = "1q3hf0vr5gpmymmvm208sl0r8nb69m7f3bdrkqrp7fwc2v1ylnz0";
     };
     meta.homepage = "https://github.com/neovimhaskell/haskell-vim/";
   };
@@ -1857,6 +2049,18 @@ let
     meta.homepage = "https://github.com/travitch/hasksyn/";
   };
 
+  hiPairs = buildVimPluginFrom2Nix {
+    pname = "hiPairs";
+    version = "2020-12-10";
+    src = fetchFromGitHub {
+      owner = "Yggdroot";
+      repo = "hiPairs";
+      rev = "8272bf6979d0ee65a3fdbbb97eff3dda79b661b2";
+      sha256 = "1hcskq9zdkf8vlxwd2n403m4rq7495v2fj35hjf6461hqx9v9dnw";
+    };
+    meta.homepage = "https://github.com/Yggdroot/hiPairs/";
+  };
+
   hlint-refactor-vim = buildVimPluginFrom2Nix {
     pname = "hlint-refactor-vim";
     version = "2015-12-05";
@@ -1869,26 +2073,62 @@ let
     meta.homepage = "https://github.com/mpickering/hlint-refactor-vim/";
   };
 
+  hologram-nvim = buildVimPluginFrom2Nix {
+    pname = "hologram-nvim";
+    version = "2021-06-14";
+    src = fetchFromGitHub {
+      owner = "edluffy";
+      repo = "hologram.nvim";
+      rev = "d8300f996fde96fc37c02b89f70642c1c44057a3";
+      sha256 = "0g9i5mgd69kgkl27my1xnyd3yf77c8313ikbhm7cn6i6iqml1blf";
+    };
+    meta.homepage = "https://github.com/edluffy/hologram.nvim/";
+  };
+
+  hoon-vim = buildVimPluginFrom2Nix {
+    pname = "hoon-vim";
+    version = "2020-11-09";
+    src = fetchFromGitHub {
+      owner = "urbit";
+      repo = "hoon.vim";
+      rev = "91b1922f8627bb0a55341bb088f2526d0f43a6ac";
+      sha256 = "0h87r7r74iljwvfc6mb1maa08cxwnk6k89gc6vnwqm1zx6qxw1js";
+    };
+    meta.homepage = "https://github.com/urbit/hoon.vim/";
+  };
+
+  hop-nvim = buildVimPluginFrom2Nix {
+    pname = "hop-nvim";
+    version = "2021-07-13";
+    src = fetchFromGitHub {
+      owner = "phaazon";
+      repo = "hop.nvim";
+      rev = "9c849dac4b8efe6ad30aabec995dabfb5b251046";
+      sha256 = "0z0ddrqhpirjdck9j0dmaxx0ra5hlcll0iawqb0078xg181bhnwh";
+    };
+    meta.homepage = "https://github.com/phaazon/hop.nvim/";
+  };
+
   i3config-vim = buildVimPluginFrom2Nix {
     pname = "i3config-vim";
-    version = "2020-03-28";
+    version = "2021-06-23";
     src = fetchFromGitHub {
       owner = "mboughaba";
       repo = "i3config.vim";
-      rev = "c3fe1a901392ee11721e08d2a0d2886a7f8b8e83";
-      sha256 = "1cygyn7p0x2smqsjxly5xbsdnrjnq5kj1a0a8qg356j0l112j7z2";
+      rev = "5c753c56c033d3b17e5005a67cdb9653bbb88ba7";
+      sha256 = "0i9w094sqlq85kfwajhaangfwdp81fbwk42n72wfxypjjhw8shv8";
     };
     meta.homepage = "https://github.com/mboughaba/i3config.vim/";
   };
 
   iceberg-vim = buildVimPluginFrom2Nix {
     pname = "iceberg-vim";
-    version = "2020-07-20";
+    version = "2020-12-25";
     src = fetchFromGitHub {
       owner = "cocopon";
       repo = "iceberg.vim";
-      rev = "203d56849325fb0420587c9951859a755798aea3";
-      sha256 = "16calikypw9gyb4vzybwqgl329v6wpqj05z6m2ajbr027fksxfjr";
+      rev = "866f9f4ac9ff9a0ae33de96253c359c68ab556b4";
+      sha256 = "1zlj85xg8r8qbnr7dpszkcjqw70xahay7ydwnik0zwhq96mic1pv";
     };
     meta.homepage = "https://github.com/cocopon/iceberg.vim/";
   };
@@ -1905,6 +2145,18 @@ let
     meta.homepage = "https://github.com/idris-hackers/idris-vim/";
   };
 
+  idris2-vim = buildVimPluginFrom2Nix {
+    pname = "idris2-vim";
+    version = "2020-11-26";
+    src = fetchFromGitHub {
+      owner = "edwinb";
+      repo = "idris2-vim";
+      rev = "964cebee493c85f75796e4f4e6bbb4ac54e2da9e";
+      sha256 = "1hgil24c7zv7m1glzzm3an60pimd3l9dbma26xdxly7bv210ssmz";
+    };
+    meta.homepage = "https://github.com/edwinb/idris2-vim/";
+  };
+
   Improved-AnsiEsc = buildVimPluginFrom2Nix {
     pname = "Improved-AnsiEsc";
     version = "2015-08-26";
@@ -1953,14 +2205,26 @@ let
     meta.homepage = "https://github.com/haya14busa/incsearch.vim/";
   };
 
+  indent-blankline-nvim = buildVimPluginFrom2Nix {
+    pname = "indent-blankline-nvim";
+    version = "2021-07-19";
+    src = fetchFromGitHub {
+      owner = "lukas-reineke";
+      repo = "indent-blankline.nvim";
+      rev = "0257caac96b28ec9efd80a00c13d31c469357f5b";
+      sha256 = "0r5c99xzsizqpk4h35lp3ip8lqang2vvg01vrv0bad3wqnjqq1d7";
+    };
+    meta.homepage = "https://github.com/lukas-reineke/indent-blankline.nvim/";
+  };
+
   indentLine = buildVimPluginFrom2Nix {
     pname = "indentLine";
-    version = "2020-05-29";
+    version = "2021-01-28";
     src = fetchFromGitHub {
       owner = "Yggdroot";
       repo = "indentLine";
-      rev = "43dbd7092801637972b1d9fcecaaeee11f8e00cf";
-      sha256 = "0qnzi19vb5qk773pc9v75wqm2ipdkcscljblla6gq05srm1h8x9d";
+      rev = "5617a1cf7d315e6e6f84d825c85e3b669d220bfa";
+      sha256 = "1ns3v4r5m6ckchmkaqkpk8dymh7hwj22d7x23hagmk4zv4hc2mhq";
     };
     meta.homepage = "https://github.com/Yggdroot/indentLine/";
   };
@@ -1977,14 +2241,26 @@ let
     meta.homepage = "https://github.com/parsonsmatt/intero-neovim/";
   };
 
+  investigate-vim = buildVimPluginFrom2Nix {
+    pname = "investigate-vim";
+    version = "2020-02-29";
+    src = fetchFromGitHub {
+      owner = "keith";
+      repo = "investigate.vim";
+      rev = "aef9332ba3cfc070fb59fd7a4ac82bae2b42cd7b";
+      sha256 = "1jiipch8jr66h1cywwj0zdlx45p70d359s8ljdwcndjwicrqslmk";
+    };
+    meta.homepage = "https://github.com/keith/investigate.vim/";
+  };
+
   iosvkem = buildVimPluginFrom2Nix {
     pname = "iosvkem";
-    version = "2020-06-18";
+    version = "2021-03-26";
     src = fetchFromGitHub {
       owner = "neutaaaaan";
       repo = "iosvkem";
-      rev = "df359d91510be0c078905568d9033c891a3a2f4b";
-      sha256 = "0xqh5hr4m6hm2vfms1iqarzhgkmrgx6f5ywyh6qhwkbrdj8q3lyq";
+      rev = "ba116cae99eaa116f781f4bfef0a20a80bc19e98";
+      sha256 = "1as5xfcc6bgm2sp23qzxjpasbnx9jsdgzc97hhmybhq4115kfmxv";
     };
     meta.homepage = "https://github.com/neutaaaaan/iosvkem/";
   };
@@ -2003,12 +2279,12 @@ let
 
   is-vim = buildVimPluginFrom2Nix {
     pname = "is-vim";
-    version = "2017-10-30";
+    version = "2020-10-27";
     src = fetchFromGitHub {
       owner = "haya14busa";
       repo = "is.vim";
-      rev = "61d5029310c69bde700b2d46a454f80859b5af17";
-      sha256 = "1nnf6y62mc0rj7hbrapfkmr91ypsqkzhwgpfx7pahz8m3a2324q6";
+      rev = "d393cb346dcdf733fecd7bbfc45b70b8c05e9eb4";
+      sha256 = "03rvhvqx59c6lp9xh6zry3ynppngqn53swl3v9gmc3ynh3l1jdzq";
     };
     meta.homepage = "https://github.com/haya14busa/is.vim/";
   };
@@ -2027,17 +2303,29 @@ let
 
   jedi-vim = buildVimPluginFrom2Nix {
     pname = "jedi-vim";
-    version = "2020-07-17";
+    version = "2021-06-22";
     src = fetchFromGitHub {
       owner = "davidhalter";
       repo = "jedi-vim";
-      rev = "a17b0333031bd3652ad4c6169caaed05ffb7c49d";
-      sha256 = "0xqsh0mw64s9ph4sd550fc129q567dld3vk7fciwd2905h9q0k8q";
+      rev = "7ac81cb88059d3daaf2d654cbb5cd03d23a60d33";
+      sha256 = "0ydgj222i0ilbb4nhv988r2yrfhq7m29c32nardb7mw79y9a08i7";
       fetchSubmodules = true;
     };
     meta.homepage = "https://github.com/davidhalter/jedi-vim/";
   };
 
+  jellybeans-nvim = buildVimPluginFrom2Nix {
+    pname = "jellybeans-nvim";
+    version = "2021-04-07";
+    src = fetchFromGitHub {
+      owner = "metalelf0";
+      repo = "jellybeans-nvim";
+      rev = "cef41133874073b35bf7e8061d97a5214623770d";
+      sha256 = "1hd21h48mwsixbx4iw8r86pmml2z79wpc0p0wb8d50jjxlyphgv4";
+    };
+    meta.homepage = "https://github.com/metalelf0/jellybeans-nvim/";
+  };
+
   jellybeans-vim = buildVimPluginFrom2Nix {
     pname = "jellybeans-vim";
     version = "2019-06-22";
@@ -2052,12 +2340,12 @@ let
 
   Jenkinsfile-vim-syntax = buildVimPluginFrom2Nix {
     pname = "Jenkinsfile-vim-syntax";
-    version = "2020-06-05";
+    version = "2021-01-26";
     src = fetchFromGitHub {
       owner = "martinda";
       repo = "Jenkinsfile-vim-syntax";
-      rev = "a701341879c6db93f5dffa37f4589eef3c4ded85";
-      sha256 = "0nm3lf37l1g8lpa4yz1va0s6vw0vw99zghy3dzq933j0kqmspgvp";
+      rev = "0d05729168ea44d60862f17cffa80024ab30bcc9";
+      sha256 = "05z30frs4f5z0l4qgxk08r7mb19bzhqs36hi213yin78cz62b9gy";
     };
     meta.homepage = "https://github.com/martinda/Jenkinsfile-vim-syntax/";
   };
@@ -2076,24 +2364,24 @@ let
 
   julia-vim = buildVimPluginFrom2Nix {
     pname = "julia-vim";
-    version = "2020-07-31";
+    version = "2021-07-01";
     src = fetchFromGitHub {
       owner = "JuliaEditorSupport";
       repo = "julia-vim";
-      rev = "ead61b0ff9e26365a977280298b22bad40c9fba5";
-      sha256 = "05p5kxkdh4y1s8532d1d8zilq9hy098bwx3lyrsqpxj0n2kr2q0d";
+      rev = "6ff9e9938badea96f64154f2991e165e8d340cf2";
+      sha256 = "11k1gjsh8fibdpg5lrcq3rz90gwjb7725krhimnvhrkwhcyl1bwb";
     };
     meta.homepage = "https://github.com/JuliaEditorSupport/julia-vim/";
   };
 
   kotlin-vim = buildVimPluginFrom2Nix {
     pname = "kotlin-vim";
-    version = "2020-08-11";
+    version = "2021-07-03";
     src = fetchFromGitHub {
       owner = "udalov";
       repo = "kotlin-vim";
-      rev = "26970168ca88c62b271fbc0a275dbe31cda94bd6";
-      sha256 = "0mvwz8gwv619b4l7g3mafvd6q4khl0xis0a8v300d8i3pjhx4i40";
+      rev = "9122b2805499fbde06f27116f4b7a2a30d6996f5";
+      sha256 = "0xq156vqzwix87ndq8nfwqmvwp251fnp553zxjlqhccbbyr70pky";
     };
     meta.homepage = "https://github.com/udalov/kotlin-vim/";
   };
@@ -2122,14 +2410,26 @@ let
     meta.homepage = "https://github.com/autozimu/LanguageClient-neovim/";
   };
 
+  LanguageTool-nvim = buildVimPluginFrom2Nix {
+    pname = "LanguageTool-nvim";
+    version = "2020-10-19";
+    src = fetchFromGitHub {
+      owner = "vigoux";
+      repo = "LanguageTool.nvim";
+      rev = "809e7d77fec834597f495fec737c59292a10025b";
+      sha256 = "1g12dz85xq8qd92dgna0a3w6zgxa74njlvmvly4k20610r63bzrn";
+    };
+    meta.homepage = "https://github.com/vigoux/LanguageTool.nvim/";
+  };
+
   last256 = buildVimPluginFrom2Nix {
     pname = "last256";
-    version = "2017-06-10";
+    version = "2020-12-09";
     src = fetchFromGitHub {
       owner = "sk1418";
       repo = "last256";
-      rev = "d29320c1fe715b47edaa1be068201ea5a54ab0c0";
-      sha256 = "16njh0p1j166dnf92110vlrj7gmrbsfkbkd8k6s9gfqjzbgd25jv";
+      rev = "2a00be266db371846e8d666c993d3076c8986438";
+      sha256 = "07z01jqzyfqalahdp0kswyvc3mb8dldc3qv5wpbdm79hh6zyd3f1";
     };
     meta.homepage = "https://github.com/sk1418/last256/";
   };
@@ -2146,18 +2446,54 @@ let
     meta.homepage = "https://github.com/latex-box-team/latex-box/";
   };
 
+  lazygit-nvim = buildVimPluginFrom2Nix {
+    pname = "lazygit-nvim";
+    version = "2021-07-21";
+    src = fetchFromGitHub {
+      owner = "kdheepak";
+      repo = "lazygit.nvim";
+      rev = "c1840692c17b6994bb3b96b33e48040d0cb2da99";
+      sha256 = "07mwa2bbny73s60as5s1schk4zhk6m6rv26ljbcl14mx45z9m8r8";
+    };
+    meta.homepage = "https://github.com/kdheepak/lazygit.nvim/";
+  };
+
+  LeaderF = buildVimPluginFrom2Nix {
+    pname = "LeaderF";
+    version = "2021-07-22";
+    src = fetchFromGitHub {
+      owner = "Yggdroot";
+      repo = "LeaderF";
+      rev = "321f1995211b05d5abd73732262432e70eba1218";
+      sha256 = "1bg0vjf6pnbjmj76mzcbcrm7gdhsxqi040xspyizfykj72qjqyd4";
+    };
+    meta.homepage = "https://github.com/Yggdroot/LeaderF/";
+  };
+
   lean-vim = buildVimPluginFrom2Nix {
     pname = "lean-vim";
-    version = "2019-10-04";
+    version = "2021-06-07";
     src = fetchFromGitHub {
       owner = "leanprover";
       repo = "lean.vim";
-      rev = "2ace010eb32603a65af7921954a0594a02523c6b";
-      sha256 = "0wq2lw4xx2qhz1xii9g7i6wz0y43b2icqrm6ypr9jmaac1rhiq7c";
+      rev = "48ac5798b74b8ef8212adc70048ff0ed6f4e1976";
+      sha256 = "08n8zfglml4v983nnm8gg25vggg5cfjsqrm96k8s3j5wmzi95mhx";
     };
     meta.homepage = "https://github.com/leanprover/lean.vim/";
   };
 
+  lens-vim = buildVimPluginFrom2Nix {
+    pname = "lens-vim";
+    version = "2021-05-30";
+    src = fetchFromGitHub {
+      owner = "camspiers";
+      repo = "lens.vim";
+      rev = "099c3502d001f7081edf113de57e8b1cfd121c55";
+      sha256 = "1h25isrw96qhfacf37h3anscnrisdxsz6vv7826hpb17r0ygb5ms";
+    };
+    meta.homepage = "https://github.com/camspiers/lens.vim/";
+  };
+
   lessspace-vim = buildVimPluginFrom2Nix {
     pname = "lessspace-vim";
     version = "2019-09-12";
@@ -2184,88 +2520,256 @@ let
 
   lf-vim = buildVimPluginFrom2Nix {
     pname = "lf-vim";
-    version = "2020-06-11";
+    version = "2021-02-18";
     src = fetchFromGitHub {
       owner = "ptzz";
       repo = "lf.vim";
-      rev = "8eef4095f0ca4ec37b6877b7b01047146e987c6b";
-      sha256 = "17clfc8shmv485r6anpkkcq88x6n2pm54ir1pjy852spzykycika";
+      rev = "73fb502c6d1470243b1f4d8afa81e289d9edd94b";
+      sha256 = "1whrzpavv46r64l3b7vax4sj23kjdfjiwmhfpssb6bprhc9c4j97";
     };
     meta.homepage = "https://github.com/ptzz/lf.vim/";
   };
 
   lh-brackets = buildVimPluginFrom2Nix {
     pname = "lh-brackets";
-    version = "2020-06-16";
+    version = "2021-03-09";
     src = fetchFromGitHub {
       owner = "LucHermitte";
       repo = "lh-brackets";
-      rev = "0553fecb3425dafe65a724ad01d85427285ac184";
-      sha256 = "0ih6ccsqhqc9cynkzqfb55x5mfz743hvdrxzlhm0axrkxxn3nczb";
+      rev = "73efae0e97b8c661bf36d3637c3ba1ee02b4fe07";
+      sha256 = "122jhh3vkapxz42sa6l9sdxcdl4fzq4xfrjmaak815nvf3bg249a";
     };
     meta.homepage = "https://github.com/LucHermitte/lh-brackets/";
   };
 
   lh-vim-lib = buildVimPluginFrom2Nix {
     pname = "lh-vim-lib";
-    version = "2020-08-20";
+    version = "2021-04-06";
     src = fetchFromGitHub {
       owner = "LucHermitte";
       repo = "lh-vim-lib";
-      rev = "15722c04a41d49027c7b499703fc1dac376653a8";
-      sha256 = "1h94zzanzlixlmlyy3r54hk2lw9hwd49v9ij9lq3ghyc79gvhvgi";
+      rev = "6cb8f4cbe54b735dfa6dbb708cc9eaddead251d2";
+      sha256 = "0qggqhj2ikq2ki9g93qgwpl2w5nhssafmwc8a2xkwi4qm4k2shqh";
     };
     meta.homepage = "https://github.com/LucHermitte/lh-vim-lib/";
   };
 
   lightline-ale = buildVimPluginFrom2Nix {
     pname = "lightline-ale";
-    version = "2020-04-30";
+    version = "2021-06-09";
     src = fetchFromGitHub {
       owner = "maximbaz";
       repo = "lightline-ale";
-      rev = "23352556fdaa067209fa22df424f1b88ab370f6a";
-      sha256 = "1cz1pcz6qxddpalymj2p19clnwsj568zlvbyg7mai0vxx6cv7a9w";
+      rev = "a861f691ac7e40b1b359bc7a147078fa1e0570ce";
+      sha256 = "0bi3pghcjdpbrp235bhkgqrsyfr1m6v40krxfb2qbc1yy9plbs9q";
     };
     meta.homepage = "https://github.com/maximbaz/lightline-ale/";
   };
 
   lightline-bufferline = buildVimPluginFrom2Nix {
     pname = "lightline-bufferline";
-    version = "2020-08-17";
+    version = "2021-06-09";
     src = fetchFromGitHub {
       owner = "mengelbrecht";
       repo = "lightline-bufferline";
-      rev = "4e0c69a53b64ac90ca5235f176a070e003108113";
-      sha256 = "1rhin9pcry3sgggvkzsmxd2s4x262m4x9xdvsrshkc2zj8wy8b0i";
+      rev = "ce6b2e1e09654af34a80af774879eac4708cc11e";
+      sha256 = "0cv5845d1gg9mv5pcp8c9afydvgihgfyk7ibjr3fgkqacwcfzjmy";
     };
     meta.homepage = "https://github.com/mengelbrecht/lightline-bufferline/";
   };
 
+  lightline-gruvbox-vim = buildVimPluginFrom2Nix {
+    pname = "lightline-gruvbox-vim";
+    version = "2018-03-23";
+    src = fetchFromGitHub {
+      owner = "shinchu";
+      repo = "lightline-gruvbox.vim";
+      rev = "21659af1fc980ebe7de0f475e57c3fda9a82c2d3";
+      sha256 = "0h9br1r5vbrx5cplnk34xlg1kagasj3zn18f8d4ifi0pibyq6pm1";
+    };
+    meta.homepage = "https://github.com/shinchu/lightline-gruvbox.vim/";
+  };
+
   lightline-vim = buildVimPluginFrom2Nix {
     pname = "lightline-vim";
-    version = "2020-08-16";
+    version = "2021-05-30";
     src = fetchFromGitHub {
       owner = "itchyny";
       repo = "lightline.vim";
-      rev = "1b412cf3af3dad79ee5807e6b151b8ac6aa4e2fc";
-      sha256 = "074jp56m55mbvyhl5sw4pmg8ivjxqmah1kl3nyxk61hnnv1ackb3";
+      rev = "b06d921023cf6536bcbee5754071d122296e8942";
+      sha256 = "1dsqssxgbglq6al6di9grxl24rgwidgd6jrc8d4gk6v6ymgzckl8";
     };
     meta.homepage = "https://github.com/itchyny/lightline.vim/";
   };
 
+  lightspeed-nvim = buildVimPluginFrom2Nix {
+    pname = "lightspeed-nvim";
+    version = "2021-07-16";
+    src = fetchFromGitHub {
+      owner = "ggandor";
+      repo = "lightspeed.nvim";
+      rev = "62f02aabce3b5af190cf113d5bdf4a8271a966c3";
+      sha256 = "1cckxvr035vsall3891j60yc1a12p8q63rjnm7ac1wzdhh7d8c38";
+    };
+    meta.homepage = "https://github.com/ggandor/lightspeed.nvim/";
+  };
+
   limelight-vim = buildVimPluginFrom2Nix {
     pname = "limelight-vim";
-    version = "2019-07-09";
+    version = "2020-10-13";
     src = fetchFromGitHub {
       owner = "junegunn";
       repo = "limelight.vim";
-      rev = "26e913a2e061195245bc62d24009ab67143a3c32";
-      sha256 = "0bxmihv9i96k6pl37pzgri03vbvjwlp34rl4gkj8w2ajhhi6nsnn";
+      rev = "4412a84d7fbfd01281bf23d801e95c45c1eacc09";
+      sha256 = "1qab2pd1pyfrw0llxd5j11imzqxa3lnnfhr1w2fjn3yanbsxvlvd";
     };
     meta.homepage = "https://github.com/junegunn/limelight.vim/";
   };
 
+  lispdocs-nvim = buildVimPluginFrom2Nix {
+    pname = "lispdocs-nvim";
+    version = "2021-05-16";
+    src = fetchFromGitHub {
+      owner = "tami5";
+      repo = "lispdocs.nvim";
+      rev = "69fbcd854e9600b0f2c6f1c9ec4cb8fde8f5e6da";
+      sha256 = "19n12m6rnv8blbavd2zkwwv6x7gjfziavc5i0zdh4h1l9x9hmwq3";
+    };
+    meta.homepage = "https://github.com/tami5/lispdocs.nvim/";
+  };
+
+  lsp-colors-nvim = buildVimPluginFrom2Nix {
+    pname = "lsp-colors-nvim";
+    version = "2021-04-30";
+    src = fetchFromGitHub {
+      owner = "folke";
+      repo = "lsp-colors.nvim";
+      rev = "00b40add53f2f6bd249932d0c0cd25a42ce7a2fc";
+      sha256 = "1qa1kb5abrka5iixmz81kz4v8xrs4jv620nd583rhwya2jmkbaji";
+    };
+    meta.homepage = "https://github.com/folke/lsp-colors.nvim/";
+  };
+
+  lsp-rooter-nvim = buildVimPluginFrom2Nix {
+    pname = "lsp-rooter-nvim";
+    version = "2021-05-25";
+    src = fetchFromGitHub {
+      owner = "ahmedkhalf";
+      repo = "lsp-rooter.nvim";
+      rev = "ca8670c8fc4efbd9a05f330f4037304962c9abbb";
+      sha256 = "1p24gk4yps21wm8gwrsp9a6c2ynwv6xlp7iny2448l2yvrjw494n";
+    };
+    meta.homepage = "https://github.com/ahmedkhalf/lsp-rooter.nvim/";
+  };
+
+  lsp-status-nvim = buildVimPluginFrom2Nix {
+    pname = "lsp-status-nvim";
+    version = "2021-05-20";
+    src = fetchFromGitHub {
+      owner = "nvim-lua";
+      repo = "lsp-status.nvim";
+      rev = "54c395248539d65fddda46f7d92e3421856874c1";
+      sha256 = "1qfrfckdbqyav8l1g7lwpjrrwh559nm71ki74qd1xd18y1h63ny2";
+    };
+    meta.homepage = "https://github.com/nvim-lua/lsp-status.nvim/";
+  };
+
+  lsp_extensions-nvim = buildVimPluginFrom2Nix {
+    pname = "lsp_extensions-nvim";
+    version = "2021-06-25";
+    src = fetchFromGitHub {
+      owner = "nvim-lua";
+      repo = "lsp_extensions.nvim";
+      rev = "a1f12b8df1d3d8e46a7010615d2a335cd06814f2";
+      sha256 = "11aynapcxxm4xjicixj0g93y7qqlhby8zvmc856gq0b14k5n291q";
+    };
+    meta.homepage = "https://github.com/nvim-lua/lsp_extensions.nvim/";
+  };
+
+  lsp_signature-nvim = buildVimPluginFrom2Nix {
+    pname = "lsp_signature-nvim";
+    version = "2021-07-19";
+    src = fetchFromGitHub {
+      owner = "ray-x";
+      repo = "lsp_signature.nvim";
+      rev = "78af1399d0e7a85152d4f75b9ce0c20286735d6e";
+      sha256 = "156wdb57vabz0syx84zlnn5v6wy7g02flq4r5caz9xwccdszwz33";
+    };
+    meta.homepage = "https://github.com/ray-x/lsp_signature.nvim/";
+  };
+
+  lspkind-nvim = buildVimPluginFrom2Nix {
+    pname = "lspkind-nvim";
+    version = "2021-05-22";
+    src = fetchFromGitHub {
+      owner = "onsails";
+      repo = "lspkind-nvim";
+      rev = "3469f0c9a6767625d532a74a167f5d6ba2b8c5bf";
+      sha256 = "1ff1i6m9kk3n36n24c109g6yddcbbzm10iigvi0pv1z2fdpsrl07";
+    };
+    meta.homepage = "https://github.com/onsails/lspkind-nvim/";
+  };
+
+  lspsaga-nvim = buildVimPluginFrom2Nix {
+    pname = "lspsaga-nvim";
+    version = "2021-04-25";
+    src = fetchFromGitHub {
+      owner = "glepnir";
+      repo = "lspsaga.nvim";
+      rev = "cb0e35d2e594ff7a9c408d2e382945d56336c040";
+      sha256 = "0ywhdgh6aqs0xlm8a4d9jhkik254ywagang12r5nyqxawjsmjnib";
+    };
+    meta.homepage = "https://github.com/glepnir/lspsaga.nvim/";
+  };
+
+  lualine-lsp-progress = buildVimPluginFrom2Nix {
+    pname = "lualine-lsp-progress";
+    version = "2021-07-10";
+    src = fetchFromGitHub {
+      owner = "arkav";
+      repo = "lualine-lsp-progress";
+      rev = "7c024f40a3b26c8f7925745cdd2fe7acc96939c4";
+      sha256 = "0flmd69d7kjzcnzclx6k2yxjfy9nmkwxjlrgl3sszw5qpffxjlk1";
+    };
+    meta.homepage = "https://github.com/arkav/lualine-lsp-progress/";
+  };
+
+  lualine-nvim = buildVimPluginFrom2Nix {
+    pname = "lualine-nvim";
+    version = "2021-05-27";
+    src = fetchFromGitHub {
+      owner = "hoob3rt";
+      repo = "lualine.nvim";
+      rev = "9726824f1dcc8907632bc7c32f9882f26340f815";
+      sha256 = "0gmbv0pbswkxjd4qw7dq66gp3fj594di0pgkb47yh3b46id8vkyj";
+    };
+    meta.homepage = "https://github.com/hoob3rt/lualine.nvim/";
+  };
+
+  luasnip = buildVimPluginFrom2Nix {
+    pname = "luasnip";
+    version = "2021-07-23";
+    src = fetchFromGitHub {
+      owner = "l3mon4d3";
+      repo = "luasnip";
+      rev = "726aac6f8f05c94418cd3e9d6c05705e8b1ae743";
+      sha256 = "0v5lpcbmlghyfifwys51acihbhawg87bmapjay52g591cjzcd9ak";
+    };
+    meta.homepage = "https://github.com/l3mon4d3/luasnip/";
+  };
+
+  lush-nvim = buildVimPluginFrom2Nix {
+    pname = "lush-nvim";
+    version = "2021-07-15";
+    src = fetchFromGitHub {
+      owner = "rktjmp";
+      repo = "lush.nvim";
+      rev = "a787bcd1d9afb2bd6bab13834c5b28e727f266c0";
+      sha256 = "12i4bvgm26sfvdanjjwz1572nfnyax1i2bwawfkz2ab34xlwcr0y";
+    };
+    meta.homepage = "https://github.com/rktjmp/lush.nvim/";
+  };
+
   lushtags = buildVimPluginFrom2Nix {
     pname = "lushtags";
     version = "2017-04-19";
@@ -2278,6 +2782,18 @@ let
     meta.homepage = "https://github.com/mkasa/lushtags/";
   };
 
+  markdown-preview-nvim = buildVimPluginFrom2Nix {
+    pname = "markdown-preview-nvim";
+    version = "2021-03-10";
+    src = fetchFromGitHub {
+      owner = "iamcco";
+      repo = "markdown-preview.nvim";
+      rev = "e5bfe9b89dc9c2fbd24ed0f0596c85fd0568b143";
+      sha256 = "0bfkcfjqg2jqm4ss16ks1mfnlnpyg1l4l18g7pagw1dfka14y8fg";
+    };
+    meta.homepage = "https://github.com/iamcco/markdown-preview.nvim/";
+  };
+
   matchit-zip = buildVimPluginFrom2Nix {
     pname = "matchit-zip";
     version = "2010-10-18";
@@ -2290,14 +2806,26 @@ let
     meta.homepage = "https://github.com/vim-scripts/matchit.zip/";
   };
 
+  MatchTagAlways = buildVimPluginFrom2Nix {
+    pname = "MatchTagAlways";
+    version = "2017-05-20";
+    src = fetchFromGitHub {
+      owner = "Valloric";
+      repo = "MatchTagAlways";
+      rev = "352eb479a4ad1608e0880b79ab2357aac2cf4bed";
+      sha256 = "0y8gq4cs0wm2ijagc2frpmm664z355iridxyl5893576v5aqp8z1";
+    };
+    meta.homepage = "https://github.com/Valloric/MatchTagAlways/";
+  };
+
   mattn-calendar-vim = buildVimPluginFrom2Nix {
     pname = "mattn-calendar-vim";
-    version = "2019-11-24";
+    version = "2020-12-29";
     src = fetchFromGitHub {
       owner = "mattn";
       repo = "calendar-vim";
-      rev = "de499b9525490b10edbd28fb8f0c4e81c6a6f20c";
-      sha256 = "0xvvkq9zckmv9pnzvxg71fblly8lksfi736brbcwcvnszqif4b69";
+      rev = "9a32891101990dd88b86befb50c46575ef8a364e";
+      sha256 = "0i6nxap9fx8z9dx6q33pc9hz8s8vc2ghz5zchyxxmdn2mb5fki53";
     };
     meta.homepage = "https://github.com/mattn/calendar-vim/";
   };
@@ -2314,6 +2842,30 @@ let
     meta.homepage = "https://github.com/vim-scripts/mayansmoke/";
   };
 
+  minimap-vim = buildVimPluginFrom2Nix {
+    pname = "minimap-vim";
+    version = "2021-07-21";
+    src = fetchFromGitHub {
+      owner = "wfxr";
+      repo = "minimap.vim";
+      rev = "d389e2b0c67f5cedd5ec5edfe53afc847f8daf61";
+      sha256 = "180grx6317ic6ip98awvqnfjc4zkzqh91rglls5pvwcq1w5m5vwb";
+    };
+    meta.homepage = "https://github.com/wfxr/minimap.vim/";
+  };
+
+  mkdx = buildVimPluginFrom2Nix {
+    pname = "mkdx";
+    version = "2021-07-05";
+    src = fetchFromGitHub {
+      owner = "SidOfc";
+      repo = "mkdx";
+      rev = "439c518cea989c875eea44ce54a36f7e7dc561d9";
+      sha256 = "19b155lfiynm450cr9acm7dk58hh2ynrs3zpvrcll7slz8fgrhql";
+    };
+    meta.homepage = "https://github.com/SidOfc/mkdx/";
+  };
+
   molokai = buildVimPluginFrom2Nix {
     pname = "molokai";
     version = "2015-11-11";
@@ -2326,14 +2878,26 @@ let
     meta.homepage = "https://github.com/tomasr/molokai/";
   };
 
+  moonlight-nvim = buildVimPluginFrom2Nix {
+    pname = "moonlight-nvim";
+    version = "2021-05-16";
+    src = fetchFromGitHub {
+      owner = "shaunsingh";
+      repo = "moonlight.nvim";
+      rev = "e24e4218ec680b6396532808abf57ca0ada82e66";
+      sha256 = "0m9w3fpypsqxydjd93arbjqb5576nl40iy27i4ijlrqhgdhl49y3";
+    };
+    meta.homepage = "https://github.com/shaunsingh/moonlight.nvim/";
+  };
+
   ncm2 = buildVimPluginFrom2Nix {
     pname = "ncm2";
-    version = "2020-07-26";
+    version = "2020-12-19";
     src = fetchFromGitHub {
       owner = "ncm2";
       repo = "ncm2";
-      rev = "7d49f7b473db732878091f2f8c68bc47b015559b";
-      sha256 = "112pspa730pvwiv0hbzn9z6i3zpn25p8g45wf67kj2084wiqkkx3";
+      rev = "3de17695c58f309642c5148b21d47fac61937a96";
+      sha256 = "1415yjxydyamsyx6fmb5wawgcgqqr96cv6vy60f5h5x4dsaqvs24";
     };
     meta.homepage = "https://github.com/ncm2/ncm2/";
   };
@@ -2366,12 +2930,12 @@ let
     pname = "ncm2-dictionary";
     version = "2018-11-15";
     src = fetchFromGitHub {
-      owner = "yuki-ycino";
+      owner = "yuki-yano";
       repo = "ncm2-dictionary";
       rev = "c93b52ab0cd1a9ebe5711414c3134f4bba9be6af";
       sha256 = "096l8prqm7zb2s27j2cpnydggszicaji7xjlmhrav7dzc51avafy";
     };
-    meta.homepage = "https://github.com/yuki-ycino/ncm2-dictionary/";
+    meta.homepage = "https://github.com/yuki-yano/ncm2-dictionary/";
   };
 
   ncm2-github = buildVimPluginFrom2Nix {
@@ -2400,12 +2964,12 @@ let
 
   ncm2-jedi = buildVimPluginFrom2Nix {
     pname = "ncm2-jedi";
-    version = "2020-08-06";
+    version = "2021-01-05";
     src = fetchFromGitHub {
       owner = "ncm2";
       repo = "ncm2-jedi";
-      rev = "d378d3e80e15368c1714fd6c20dd461dc7db9796";
-      sha256 = "0bphij55pjh87wcy0xk9yvgi0w3i0wvhbg71vddq0jn6m3r2gmlf";
+      rev = "f2e9007783b1f543b00d336a94210b4bc76b67e0";
+      sha256 = "1vrrz5zp39xk7c35dz737gfbr8j3yhqmmwmdwrxl5nibjwph4c30";
     };
     meta.homepage = "https://github.com/ncm2/ncm2-jedi/";
   };
@@ -2520,12 +3084,12 @@ let
 
   neco-ghc = buildVimPluginFrom2Nix {
     pname = "neco-ghc";
-    version = "2020-06-06";
+    version = "2021-02-22";
     src = fetchFromGitHub {
       owner = "eagletmt";
       repo = "neco-ghc";
-      rev = "b4ea02c537975a5a2bf00cb5f24cd784b2b6f5ad";
-      sha256 = "13la3slqkljn7y8y9p8ic3majnvjf7pnrwr16cdpacklmz733x1f";
+      rev = "699897c2f4ba82c4fd2be6b93c9a2e8e548efe4e";
+      sha256 = "03g2mky83a5zd54wzjhc1cv4pwkzcadskjm1c7b36k85yw35v88a";
     };
     meta.homepage = "https://github.com/eagletmt/neco-ghc/";
   };
@@ -2544,36 +3108,36 @@ let
 
   neco-syntax = buildVimPluginFrom2Nix {
     pname = "neco-syntax";
-    version = "2019-11-10";
+    version = "2020-09-13";
     src = fetchFromGitHub {
       owner = "Shougo";
       repo = "neco-syntax";
-      rev = "6c3862ac82d2c917fa8b4126832de7d3a909f1fe";
-      sha256 = "1kmzlz6c5bs7f4dxgrdn4azwh55k6ghhyzy8jjdgj0wsb309y92k";
+      rev = "f8d7b748b022aac8ce73458574da5616f1c5fb65";
+      sha256 = "12h8qm6l40a2dgbimn579bdyar0dq88hk7mdd0vhyj15c1305kda";
     };
     meta.homepage = "https://github.com/Shougo/neco-syntax/";
   };
 
   neco-vim = buildVimPluginFrom2Nix {
     pname = "neco-vim";
-    version = "2020-04-08";
+    version = "2020-11-10";
     src = fetchFromGitHub {
       owner = "Shougo";
       repo = "neco-vim";
-      rev = "4fbc3f5f3a2b2d5299c388e2f1ffef04fcaf87ba";
-      sha256 = "0lk5p2aihalcarsjnvn1yidgv0xqp1bk29wywsbp8ni964s0si39";
+      rev = "2b1dca6ca16d6f5655748fcd4d54d772fcfd0d81";
+      sha256 = "1prnclm9i7m09v1ip0sgkgddxwclas3x48zc8c800vxmmvjhzd7j";
     };
     meta.homepage = "https://github.com/Shougo/neco-vim/";
   };
 
   neocomplete-vim = buildVimPluginFrom2Nix {
     pname = "neocomplete-vim";
-    version = "2020-08-12";
+    version = "2021-02-18";
     src = fetchFromGitHub {
       owner = "Shougo";
       repo = "neocomplete.vim";
-      rev = "f80bbf8f2f1717a127e5fbe885729daa862def81";
-      sha256 = "0cks5fvr05k0lp2mwflqzx0mq6a3881c1304hdyci57j5bkkyvkj";
+      rev = "fc2d22c23962290cc0b32f50bf18add6a4573bdf";
+      sha256 = "04sxri3anr5d8zdqw11fn8nqf86wxin4lza78dp2x52kgrjawpla";
     };
     meta.homepage = "https://github.com/Shougo/neocomplete.vim/";
   };
@@ -2592,36 +3156,48 @@ let
 
   neoformat = buildVimPluginFrom2Nix {
     pname = "neoformat";
-    version = "2020-08-16";
+    version = "2021-07-23";
     src = fetchFromGitHub {
       owner = "sbdchd";
       repo = "neoformat";
-      rev = "56a9d6259981d0d9c2b33a4d65ccbb674af70baa";
-      sha256 = "0kn35l7kfqa0zvh1l8mdl3755hv1rx6xp5wjib9acsbk2czhg5nx";
+      rev = "b676afbf57bd3fb256a7a45605cac06407eff5a1";
+      sha256 = "1ln4sqj00xw2dnn3gwshxdzaq5gaknbs59cksrr7i7mj902lqr8v";
     };
     meta.homepage = "https://github.com/sbdchd/neoformat/";
   };
 
+  neogit = buildVimPluginFrom2Nix {
+    pname = "neogit";
+    version = "2021-07-18";
+    src = fetchFromGitHub {
+      owner = "TimUntersberger";
+      repo = "neogit";
+      rev = "ee83d4fa8ac946e5e0064e65a5276e1ea030ae28";
+      sha256 = "0mrydz0xl2yqgsp1nsz4p55mjhx7x7z7pahcq3y5mzzla687dnqg";
+    };
+    meta.homepage = "https://github.com/TimUntersberger/neogit/";
+  };
+
   neoinclude-vim = buildVimPluginFrom2Nix {
     pname = "neoinclude-vim";
-    version = "2019-05-11";
+    version = "2020-09-13";
     src = fetchFromGitHub {
       owner = "Shougo";
       repo = "neoinclude.vim";
-      rev = "5125e73de0a8b4f2c399e4896e21be1b8f7b3d39";
-      sha256 = "0qw63xyvrxvdzx01k5nnsv3p8zmnd77cwbkk24pikqrscxw3ypsz";
+      rev = "954cfc9dfdb303f2c2fa867b9cf949dd74512628";
+      sha256 = "0slp6mz8ds5raqhbi9gpr1ilgw745lfzjygyd58r6jcg2givsiik";
     };
     meta.homepage = "https://github.com/Shougo/neoinclude.vim/";
   };
 
   neomake = buildVimPluginFrom2Nix {
     pname = "neomake";
-    version = "2020-07-15";
+    version = "2021-06-02";
     src = fetchFromGitHub {
       owner = "neomake";
       repo = "neomake";
-      rev = "a3082cca83424e28730c738cf33157326b0be5ba";
-      sha256 = "0jxxy6ibj73xh77rvfkcqr98q1pr563zsmzq1qdm3s9lb6xvzka6";
+      rev = "3663e065b4f3d0c4a1144b668129ef43e0d8ff10";
+      sha256 = "0l87p48lyx78a9ayqygpba76z04ld64w747m0mrdlgci0x8jnqb7";
     };
     meta.homepage = "https://github.com/neomake/neomake/";
   };
@@ -2638,26 +3214,38 @@ let
     meta.homepage = "https://github.com/Shougo/neomru.vim/";
   };
 
+  neorg = buildVimPluginFrom2Nix {
+    pname = "neorg";
+    version = "2021-07-17";
+    src = fetchFromGitHub {
+      owner = "vhyrro";
+      repo = "neorg";
+      rev = "7f9f1d328c218b041ce899def4923334a5355c14";
+      sha256 = "1f7acjy3xhiz2yzkdp5x5f4p28zz583h7snyzrc2l8w7fwz600x9";
+    };
+    meta.homepage = "https://github.com/vhyrro/neorg/";
+  };
+
   neosnippet-snippets = buildVimPluginFrom2Nix {
     pname = "neosnippet-snippets";
-    version = "2020-08-16";
+    version = "2021-05-05";
     src = fetchFromGitHub {
       owner = "Shougo";
       repo = "neosnippet-snippets";
-      rev = "b7ba77a4eb39a95ffbb6b3ff0c3c43746441b2aa";
-      sha256 = "0yf55pi6d35brdva4n0x7yygjnymwbgwn1fx83nbzxhixmgbk45b";
+      rev = "1315d10e60bd93483aaac4cc5a1623d13aede504";
+      sha256 = "1w80id0123rbwmkicm8n053mp1wzqwh9lxxjmmp6bp6c2x97mgzk";
     };
     meta.homepage = "https://github.com/Shougo/neosnippet-snippets/";
   };
 
   neosnippet-vim = buildVimPluginFrom2Nix {
     pname = "neosnippet-vim";
-    version = "2020-08-03";
+    version = "2021-06-05";
     src = fetchFromGitHub {
       owner = "Shougo";
       repo = "neosnippet.vim";
-      rev = "b4c470b7e720fa061ac118a09420bc2da16610bd";
-      sha256 = "1d27rhyd5db0vd72gi6dl34g4axsz66d0l0fgw5g6grawlpf8w6l";
+      rev = "d2e1e6b4c4e17cab2debd0353fed77b417b53237";
+      sha256 = "0bwlcija1sbml5ni7mz4q97hhnl7hiqamzzvqw8qyp8aw2b0kj1q";
     };
     meta.homepage = "https://github.com/Shougo/neosnippet.vim/";
   };
@@ -2676,24 +3264,36 @@ let
 
   neoterm = buildVimPluginFrom2Nix {
     pname = "neoterm";
-    version = "2020-08-06";
+    version = "2021-07-23";
     src = fetchFromGitHub {
       owner = "kassio";
       repo = "neoterm";
-      rev = "48bc5d0bddd3debb9bdf73ee1d1153d7cafa693e";
-      sha256 = "0495n0l9isi7pgfgc2axkk0v4g7r4dpbzxg5dl4hg7qkw6la7l5k";
+      rev = "a626942b2a87a865c73e1d62391ef7e85ddf8bce";
+      sha256 = "0145gxpaq8zidrsksq1d40y5g3l2f1ac5z9n5p21b32x512d4diz";
     };
     meta.homepage = "https://github.com/kassio/neoterm/";
   };
 
+  neovim-ayu = buildVimPluginFrom2Nix {
+    pname = "neovim-ayu";
+    version = "2021-07-17";
+    src = fetchFromGitHub {
+      owner = "Shatur";
+      repo = "neovim-ayu";
+      rev = "755b4a379ef4812f9656fb3f59220cf3a45c2070";
+      sha256 = "0irjjpfrl6i7hfvay6b187i7dkkjq40fdcrx53xxfk9qq47l1z13";
+    };
+    meta.homepage = "https://github.com/Shatur/neovim-ayu/";
+  };
+
   neovim-fuzzy = buildVimPluginFrom2Nix {
     pname = "neovim-fuzzy";
-    version = "2020-07-21";
+    version = "2021-07-02";
     src = fetchFromGitHub {
       owner = "cloudhead";
       repo = "neovim-fuzzy";
-      rev = "a076c5828182afe03109ead9ca6863d3d0bd47f3";
-      sha256 = "0h3ak79kw26wpiw4q9vgjmdp5vdrnhqimlayfjixbqmq4p7nldcj";
+      rev = "0bef4e1a81c65fc05d31380dd74454bd67733837";
+      sha256 = "02a8ipk341bs6y8mk7nixdkbk1c4jdddsjp1qvqgyyca0shaqsz8";
     };
     meta.homepage = "https://github.com/cloudhead/neovim-fuzzy/";
   };
@@ -2712,88 +3312,136 @@ let
 
   neoyank-vim = buildVimPluginFrom2Nix {
     pname = "neoyank-vim";
-    version = "2020-07-27";
+    version = "2020-12-20";
     src = fetchFromGitHub {
       owner = "Shougo";
       repo = "neoyank.vim";
-      rev = "0d86f6565a6193cdf017ac4f79e52fed04d5c0fb";
-      sha256 = "02n1n3hb3bn5x9na05crhwmdmk66wyjx8i01fsyazlpv32v1wfsy";
+      rev = "8b3c9f7d8109744766d13eaf6c17eb195dd61d9d";
+      sha256 = "0fmn92kjgwkfpsh328bvd3nsw32q6wbjjp9vqmfnbs8rbkmpn0vh";
     };
     meta.homepage = "https://github.com/Shougo/neoyank.vim/";
   };
 
   nerdcommenter = buildVimPluginFrom2Nix {
     pname = "nerdcommenter";
-    version = "2020-06-08";
+    version = "2021-05-29";
     src = fetchFromGitHub {
       owner = "preservim";
       repo = "nerdcommenter";
-      rev = "fade3d4b26f5a0d58f256a06ba7b0a04d9fb4f3b";
-      sha256 = "1vb5n4g5x3hpnc013gjf8frxxdrcq1zdcm3mpx90b0cjxi252cn3";
+      rev = "a5d1663185bee20bfb120c9ab212144444514982";
+      sha256 = "03799774h9f7k52gwjnhjjm2w9s6ip5zdrpljinwp6lfavxd4w8a";
     };
     meta.homepage = "https://github.com/preservim/nerdcommenter/";
   };
 
   nerdtree = buildVimPluginFrom2Nix {
     pname = "nerdtree";
-    version = "2020-08-18";
+    version = "2021-07-15";
     src = fetchFromGitHub {
       owner = "preservim";
       repo = "nerdtree";
-      rev = "577ddc73f0a1d2fd6166ed3268ab8536111037e0";
-      sha256 = "0bccr18nr42vwbb4i765yxjw18piyiyd12sm4snbkkxahp9yswf7";
+      rev = "2c14ed0e153cdcd0a1c7d1eabec6820bb6b3f8a2";
+      sha256 = "0gny5xw4knvjlkgazygpkwy8fk2x8igh45f980ypjghfkiw8h5f8";
     };
     meta.homepage = "https://github.com/preservim/nerdtree/";
   };
 
   nerdtree-git-plugin = buildVimPluginFrom2Nix {
     pname = "nerdtree-git-plugin";
-    version = "2019-01-09";
+    version = "2021-06-04";
     src = fetchFromGitHub {
-      owner = "albfan";
+      owner = "Xuyuanp";
       repo = "nerdtree-git-plugin";
-      rev = "95e20577cd442ad6256aff9bb2e9c80db05c13f0";
-      sha256 = "15i66mxvygs6xa2jvk7bqdagxx1lcvynmyb9g75whgbv7is80qn7";
+      rev = "bca0ed63883d028e6afc7f11a78c56fcaf34d363";
+      sha256 = "1j5llx2l36hgr10mjjdrp8xdv9mhmc6panpjgdxzdg5ncwn4ndzm";
     };
-    meta.homepage = "https://github.com/albfan/nerdtree-git-plugin/";
+    meta.homepage = "https://github.com/Xuyuanp/nerdtree-git-plugin/";
   };
 
   neuron-vim = buildVimPluginFrom2Nix {
     pname = "neuron-vim";
-    version = "2020-08-07";
+    version = "2020-12-06";
     src = fetchFromGitHub {
-      owner = "ihsanturk";
+      owner = "fiatjaf";
       repo = "neuron.vim";
-      rev = "07521a3ef2940bd726e7b4d50b82e46898e686cc";
-      sha256 = "0myadiy6y2p73lhdzk2w55whg4i5rs004jaw1m21cz0dk8k8ibn2";
+      rev = "0b820b2191bf239c38e62ffa63501333590d6810";
+      sha256 = "0x00y0a46jwqq9gx741m3j7p78ps7nycp5hl3bjxqmwj289gc12y";
+    };
+    meta.homepage = "https://github.com/fiatjaf/neuron.vim/";
+  };
+
+  nginx-vim = buildVimPluginFrom2Nix {
+    pname = "nginx-vim";
+    version = "2021-02-25";
+    src = fetchFromGitHub {
+      owner = "chr4";
+      repo = "nginx.vim";
+      rev = "7b8e3ef48d8e60fe64bb1a85be52e66dd412c84d";
+      sha256 = "00n3kx4gczryx968n0l7hqdxg6i4vfi3n3m4bdl5d3rwpbwdy6zy";
     };
-    meta.homepage = "https://github.com/ihsanturk/neuron.vim/";
+    meta.homepage = "https://github.com/chr4/nginx.vim/";
   };
 
   nim-vim = buildVimPluginFrom2Nix {
     pname = "nim-vim";
-    version = "2019-04-26";
+    version = "2020-10-16";
     src = fetchFromGitHub {
       owner = "zah";
       repo = "nim.vim";
-      rev = "88f5e708a739fb26be6364ab2fabadf9fffb8d7b";
-      sha256 = "0ja8qx9c5g7k4phllvk3vz6s62iwpwsn40w6c32sybjs98jkrw7y";
+      rev = "7a8737a4532239c06116ebde0329d8156f3d3b55";
+      sha256 = "05xhac416c8zsgqlchc80f7gbjxbyngi6cxziqagdhr6kccc73gi";
     };
     meta.homepage = "https://github.com/zah/nim.vim/";
   };
 
+  nlua-nvim = buildVimPluginFrom2Nix {
+    pname = "nlua-nvim";
+    version = "2021-06-15";
+    src = fetchFromGitHub {
+      owner = "tjdevries";
+      repo = "nlua.nvim";
+      rev = "a0722bd2f6fdf54f85aaf8dcd6a1032f64c83905";
+      sha256 = "1j3350hs5dhbksi7wbzaq5p2268544virj0hj41bs5iv078pjj45";
+    };
+    meta.homepage = "https://github.com/tjdevries/nlua.nvim/";
+  };
+
+  nnn-vim = buildVimPluginFrom2Nix {
+    pname = "nnn-vim";
+    version = "2021-06-07";
+    src = fetchFromGitHub {
+      owner = "mcchrish";
+      repo = "nnn.vim";
+      rev = "abf700104c0450bac10be3ece613ff88997f47e4";
+      sha256 = "0s3z5kd2h8cx6lplvg3yqp2pacx8c7kcavpvwnl71vmi0s2ld85s";
+    };
+    meta.homepage = "https://github.com/mcchrish/nnn.vim/";
+  };
+
   nord-vim = buildVimPluginFrom2Nix {
     pname = "nord-vim";
-    version = "2020-07-06";
+    version = "2021-07-10";
     src = fetchFromGitHub {
       owner = "arcticicestudio";
       repo = "nord-vim";
-      rev = "57dffa746907e8ce5c4b520146ed0d89d3c29a51";
-      sha256 = "0xpz71rj74514789v6x9wrg95n8bsag8f5ygd7js40qrwpxq6b4j";
+      rev = "7e8d8abec9226d3697a9725b24a7d840623c6b66";
+      sha256 = "0zi86iqc6hznf6vnmhyk7rlqwmkl0gxvjsc55ygxkypa1075lqg3";
     };
     meta.homepage = "https://github.com/arcticicestudio/nord-vim/";
   };
 
+  nord-nvim = buildVimPluginFrom2Nix {
+    pname = "nord-nvim";
+    version = "2021-07-23";
+    src = fetchFromGitHub {
+      owner = "shaunsingh";
+      repo = "nord.nvim";
+      rev = "b7209e7657dcc786b844a920894a517571da1317";
+      sha256 = "1iaslrhq18myxwla41n3kllvwcn3hb5zcgfl3h6zw4ar8n9pvwdr";
+    };
+    meta.homepage = "https://github.com/shaunsingh/nord.nvim/";
+  };
+
   NrrwRgn = buildVimPluginFrom2Nix {
     pname = "NrrwRgn";
     version = "2020-05-29";
@@ -2806,6 +3454,126 @@ let
     meta.homepage = "https://github.com/chrisbra/NrrwRgn/";
   };
 
+  nterm-nvim = buildVimPluginFrom2Nix {
+    pname = "nterm-nvim";
+    version = "2021-07-15";
+    src = fetchFromGitHub {
+      owner = "jlesquembre";
+      repo = "nterm.nvim";
+      rev = "8076f2960512d50a93ffd3d9b04499f9d4fbe793";
+      sha256 = "0z2d9jvw7yf415mpvqlx5vc8k9n02vc28v4p1fimvz7axcv67361";
+    };
+    meta.homepage = "https://github.com/jlesquembre/nterm.nvim/";
+  };
+
+  null-ls-nvim = buildVimPluginFrom2Nix {
+    pname = "null-ls-nvim";
+    version = "2021-07-24";
+    src = fetchFromGitHub {
+      owner = "jose-elias-alvarez";
+      repo = "null-ls.nvim";
+      rev = "52286ee4d11016b3366481935c12211c44d43777";
+      sha256 = "0lf0d2b2yajjv39l9zy0h5cmrnah8ig7fk3ckmlpvcfhrlqry9j8";
+    };
+    meta.homepage = "https://github.com/jose-elias-alvarez/null-ls.nvim/";
+  };
+
+  numb-nvim = buildVimPluginFrom2Nix {
+    pname = "numb-nvim";
+    version = "2021-07-12";
+    src = fetchFromGitHub {
+      owner = "nacro90";
+      repo = "numb.nvim";
+      rev = "c8b128230adb22727256fd24a221f4c5a1b41e93";
+      sha256 = "0dg5cym0rcjy198rhkd61mhq1mg7lw5z4vprik8aimgnlqdzgqad";
+    };
+    meta.homepage = "https://github.com/nacro90/numb.nvim/";
+  };
+
+  nvcode-color-schemes-vim = buildVimPluginFrom2Nix {
+    pname = "nvcode-color-schemes-vim";
+    version = "2021-07-03";
+    src = fetchFromGitHub {
+      owner = "ChristianChiarulli";
+      repo = "nvcode-color-schemes.vim";
+      rev = "3a0e624a67ecd2c7f990bc3c25a1044e85782b10";
+      sha256 = "03ifj5a3f02k00jrcjsdiy7a8wzq5k2b28hmrc7nkzm8gd4fmczb";
+    };
+    meta.homepage = "https://github.com/ChristianChiarulli/nvcode-color-schemes.vim/";
+  };
+
+  nvim-ale-diagnostic = buildVimPluginFrom2Nix {
+    pname = "nvim-ale-diagnostic";
+    version = "2021-03-03";
+    src = fetchFromGitHub {
+      owner = "nathunsmitty";
+      repo = "nvim-ale-diagnostic";
+      rev = "894a6790637fdda0df1a2ee1de3f58cd8c276e10";
+      sha256 = "07jfmhac8s27awx9pknxlaqz9x3sbmjx7n90pr4np389b43zgrmp";
+    };
+    meta.homepage = "https://github.com/nathunsmitty/nvim-ale-diagnostic/";
+  };
+
+  nvim-autopairs = buildVimPluginFrom2Nix {
+    pname = "nvim-autopairs";
+    version = "2021-07-24";
+    src = fetchFromGitHub {
+      owner = "windwp";
+      repo = "nvim-autopairs";
+      rev = "e3e105b11a3b34e93bdcee0c895801cf3ed2a835";
+      sha256 = "0pgg4xvq0dxn4rzip7nzzy1sscm8v1fixkwlpr9jdbp86s9kkq87";
+    };
+    meta.homepage = "https://github.com/windwp/nvim-autopairs/";
+  };
+
+  nvim-base16 = buildVimPluginFrom2Nix {
+    pname = "nvim-base16";
+    version = "2021-06-26";
+    src = fetchFromGitHub {
+      owner = "RRethy";
+      repo = "nvim-base16";
+      rev = "3be30f3165278e31333b44a6dcc937653893f623";
+      sha256 = "1rzj8fqbbvbyjvcdkvy5p9q02f24m0fc0sbzh1wl2wk91yb42vqb";
+    };
+    meta.homepage = "https://github.com/RRethy/nvim-base16/";
+  };
+
+  nvim-bqf = buildVimPluginFrom2Nix {
+    pname = "nvim-bqf";
+    version = "2021-07-11";
+    src = fetchFromGitHub {
+      owner = "kevinhwang91";
+      repo = "nvim-bqf";
+      rev = "46e6469fb1ef90d475fb43c56e0eeb81eacf08dd";
+      sha256 = "1mj134zmrq9ldvl7w2m4769az9g2iyk4fvrpahaz93czdx9ac6gh";
+    };
+    meta.homepage = "https://github.com/kevinhwang91/nvim-bqf/";
+  };
+
+  nvim-bufdel = buildVimPluginFrom2Nix {
+    pname = "nvim-bufdel";
+    version = "2021-05-21";
+    src = fetchFromGitHub {
+      owner = "ojroques";
+      repo = "nvim-bufdel";
+      rev = "9a1f0f3ed55db86f66ad87f72639269ac1374169";
+      sha256 = "0f10pik2msm7rdi9lx9ll7jgh1gk9y3q8756ri6jdzk4bwd8j4is";
+    };
+    meta.homepage = "https://github.com/ojroques/nvim-bufdel/";
+  };
+
+  nvim-bufferline-lua = buildVimPluginFrom2Nix {
+    pname = "nvim-bufferline-lua";
+    version = "2021-07-22";
+    src = fetchFromGitHub {
+      owner = "akinsho";
+      repo = "nvim-bufferline.lua";
+      rev = "789c204cbec3ec060eb345a8820c3788c0ac4335";
+      sha256 = "14h1h47fijw4r76pdav6p3nrl4chhf6l4vmml89chill34lspdab";
+    };
+    meta.homepage = "https://github.com/akinsho/nvim-bufferline.lua/";
+  };
+
   nvim-cm-racer = buildVimPluginFrom2Nix {
     pname = "nvim-cm-racer";
     version = "2017-07-27";
@@ -2818,6 +3586,30 @@ let
     meta.homepage = "https://github.com/roxma/nvim-cm-racer/";
   };
 
+  nvim-colorizer-lua = buildVimPluginFrom2Nix {
+    pname = "nvim-colorizer-lua";
+    version = "2020-06-11";
+    src = fetchFromGitHub {
+      owner = "norcalli";
+      repo = "nvim-colorizer.lua";
+      rev = "36c610a9717cc9ec426a07c8e6bf3b3abcb139d6";
+      sha256 = "0gvqdfkqf6k9q46r0vcc3nqa6w45gsvp8j4kya1bvi24vhifg2p9";
+    };
+    meta.homepage = "https://github.com/norcalli/nvim-colorizer.lua/";
+  };
+
+  nvim-compe = buildVimPluginFrom2Nix {
+    pname = "nvim-compe";
+    version = "2021-07-23";
+    src = fetchFromGitHub {
+      owner = "hrsh7th";
+      repo = "nvim-compe";
+      rev = "73529ce61611c9ee3821e18ecc929c422416c462";
+      sha256 = "1r55z5abg7ha3xh84ypbbnc3fs7a1718zqmypc49f3wa6ln2rjxz";
+    };
+    meta.homepage = "https://github.com/hrsh7th/nvim-compe/";
+  };
+
   nvim-completion-manager = buildVimPluginFrom2Nix {
     pname = "nvim-completion-manager";
     version = "2018-07-27";
@@ -2830,40 +3622,172 @@ let
     meta.homepage = "https://github.com/roxma/nvim-completion-manager/";
   };
 
+  nvim-dap = buildVimPluginFrom2Nix {
+    pname = "nvim-dap";
+    version = "2021-07-24";
+    src = fetchFromGitHub {
+      owner = "mfussenegger";
+      repo = "nvim-dap";
+      rev = "b557bf8d503c966a4233a72449a80ebcaaed5415";
+      sha256 = "0p6jq9a6xgbxpjcffm6bk88aicqg05cnk0an5j0cy60s7hp5vvv7";
+    };
+    meta.homepage = "https://github.com/mfussenegger/nvim-dap/";
+  };
+
+  nvim-dap-ui = buildVimPluginFrom2Nix {
+    pname = "nvim-dap-ui";
+    version = "2021-07-24";
+    src = fetchFromGitHub {
+      owner = "rcarriga";
+      repo = "nvim-dap-ui";
+      rev = "10a57a6b6973661d7082589df3bafc949f004346";
+      sha256 = "10w6wxn3gf3pn6xw9ws05pxqp4a4ssg252bq7bsq8xys9saf12gy";
+    };
+    meta.homepage = "https://github.com/rcarriga/nvim-dap-ui/";
+  };
+
+  nvim-dap-virtual-text = buildVimPluginFrom2Nix {
+    pname = "nvim-dap-virtual-text";
+    version = "2021-06-12";
+    src = fetchFromGitHub {
+      owner = "theHamsta";
+      repo = "nvim-dap-virtual-text";
+      rev = "c07c23f52e1019b237927f9520c691e57adb9e6a";
+      sha256 = "0pa1xjp6h5ny7lnql8nsqszx0gpzc1fa9xiksq3k1k5yjjj4wm1z";
+    };
+    meta.homepage = "https://github.com/theHamsta/nvim-dap-virtual-text/";
+  };
+
   nvim-gdb = buildVimPluginFrom2Nix {
     pname = "nvim-gdb";
-    version = "2020-08-16";
+    version = "2021-06-07";
     src = fetchFromGitHub {
       owner = "sakhnik";
       repo = "nvim-gdb";
-      rev = "47b0828287b410b56ff1a31906c4d5709d143d4a";
-      sha256 = "0kl2d58plpnlz2w9haadmbpmkb04bjwgfrs1scwi04mcc8dfpbmn";
+      rev = "53bfce7a254651469ce9577349811bc76d9af46c";
+      sha256 = "1xcwrjfvikb1qqyaic2m0fi12l0hmxj0y5mwx1h95karpydbb0rz";
     };
     meta.homepage = "https://github.com/sakhnik/nvim-gdb/";
   };
 
+  nvim-highlite = buildVimPluginFrom2Nix {
+    pname = "nvim-highlite";
+    version = "2021-07-19";
+    src = fetchFromGitHub {
+      owner = "Iron-E";
+      repo = "nvim-highlite";
+      rev = "8e1d114f3d855653bc71fba9e5a22a05d3a1b1a2";
+      sha256 = "1dm6rwx3w8hbgg20ay4bcdd3c87bqpqvl64zfc673p81m76b3s86";
+    };
+    meta.homepage = "https://github.com/Iron-E/nvim-highlite/";
+  };
+
+  nvim-hlslens = buildVimPluginFrom2Nix {
+    pname = "nvim-hlslens";
+    version = "2021-07-17";
+    src = fetchFromGitHub {
+      owner = "kevinhwang91";
+      repo = "nvim-hlslens";
+      rev = "1df774df358e70cbc9f74f34d38a82e756ceb001";
+      sha256 = "1zf5i30g49f7ks6hhvr84ac3ka57lv96c124cpr1d4h9xld1n9q8";
+    };
+    meta.homepage = "https://github.com/kevinhwang91/nvim-hlslens/";
+  };
+
   nvim-hs-vim = buildVimPluginFrom2Nix {
     pname = "nvim-hs-vim";
-    version = "2019-04-14";
+    version = "2020-08-29";
     src = fetchFromGitHub {
       owner = "neovimhaskell";
       repo = "nvim-hs.vim";
-      rev = "5bc177a87c9575c4995df90a098d330fe6e02f75";
-      sha256 = "14jgvkvakpy36md5si2a3rf2w869snb65inriq68xbk32bg5pg8q";
+      rev = "30baacd3c7a10625cb2d4dd64ae3bbfc4fe3f8c6";
+      sha256 = "1w6cr6j77nwxszm1d0y4phvjsz9q4aw214xkscw6izakfmk06h1x";
     };
     meta.homepage = "https://github.com/neovimhaskell/nvim-hs.vim/";
   };
 
-  nvim-lsp = buildVimPluginFrom2Nix {
-    pname = "nvim-lsp";
-    version = "2020-08-10";
+  nvim-jdtls = buildVimPluginFrom2Nix {
+    pname = "nvim-jdtls";
+    version = "2021-07-12";
+    src = fetchFromGitHub {
+      owner = "mfussenegger";
+      repo = "nvim-jdtls";
+      rev = "391e55bb5f90bc23e47c3b57eed6c6fcc95b0e7f";
+      sha256 = "1djjdllr1klzy9yggkwmv7cv8gcpyb96mw1c9qfq9vdi5fmhcsyn";
+    };
+    meta.homepage = "https://github.com/mfussenegger/nvim-jdtls/";
+  };
+
+  nvim-lightbulb = buildVimPluginFrom2Nix {
+    pname = "nvim-lightbulb";
+    version = "2021-06-05";
+    src = fetchFromGitHub {
+      owner = "kosayoda";
+      repo = "nvim-lightbulb";
+      rev = "388cc8caaf3e10836810aabbb9283a27dd8584cd";
+      sha256 = "0a7izbvpwn0sx9gvpczvl57fy9rm7jaibc4m44asjz501m04lbra";
+    };
+    meta.homepage = "https://github.com/kosayoda/nvim-lightbulb/";
+  };
+
+  nvim-lspconfig = buildVimPluginFrom2Nix {
+    pname = "nvim-lspconfig";
+    version = "2021-07-24";
     src = fetchFromGitHub {
       owner = "neovim";
-      repo = "nvim-lsp";
-      rev = "fc9d94ef006e082596c2e8724eb3f1c92ff203c7";
-      sha256 = "1byji4p0xigyp8y71s00fs2vrhgz3xkf51mmyz489pp52c7nfx4v";
+      repo = "nvim-lspconfig";
+      rev = "00028be5527abbc829ae8263cb3319dcae08e8ec";
+      sha256 = "17vxq8b70v9kq7labi3di0r6rgdhf4vz4mkiw6ji26pa60bfxy8w";
+    };
+    meta.homepage = "https://github.com/neovim/nvim-lspconfig/";
+  };
+
+  nvim-lsputils = buildVimPluginFrom2Nix {
+    pname = "nvim-lsputils";
+    version = "2021-05-27";
+    src = fetchFromGitHub {
+      owner = "RishabhRD";
+      repo = "nvim-lsputils";
+      rev = "f34927f8ec777f4e91e14afc709de9da1cd70116";
+      sha256 = "1s1pvddgkdslh3r9p08r3xjdpi93d15i4k1jssh8apxzm37gw7lm";
+    };
+    meta.homepage = "https://github.com/RishabhRD/nvim-lsputils/";
+  };
+
+  nvim-nonicons = buildVimPluginFrom2Nix {
+    pname = "nvim-nonicons";
+    version = "2021-07-03";
+    src = fetchFromGitHub {
+      owner = "yamatsum";
+      repo = "nvim-nonicons";
+      rev = "93450b02533516231e16ddc71f8ab1caf5005eaa";
+      sha256 = "1mfvi3mzid0fwhgwrg8w4bjy0x6hz78jij60h0ivblvlfai6w0qr";
+    };
+    meta.homepage = "https://github.com/yamatsum/nvim-nonicons/";
+  };
+
+  nvim-peekup = buildVimPluginFrom2Nix {
+    pname = "nvim-peekup";
+    version = "2021-07-05";
+    src = fetchFromGitHub {
+      owner = "gennaro-tedesco";
+      repo = "nvim-peekup";
+      rev = "e8ad8c7160e1f8ed2a7e4e071110b8b18866b463";
+      sha256 = "1kjvz2hv05a2id72xi28n1iq7cclcvy3ql74h8f0vcpn10zqvfxx";
     };
-    meta.homepage = "https://github.com/neovim/nvim-lsp/";
+    meta.homepage = "https://github.com/gennaro-tedesco/nvim-peekup/";
+  };
+
+  nvim-scrollview = buildVimPluginFrom2Nix {
+    pname = "nvim-scrollview";
+    version = "2021-07-20";
+    src = fetchFromGitHub {
+      owner = "dstein64";
+      repo = "nvim-scrollview";
+      rev = "b7ca5298fd75700cc74b122654241f5ed24ecf96";
+      sha256 = "0pywghia4hv9pa8g1irmqc1qrbvbhhibazx8z6kcqrrmsb3026g5";
+    };
+    meta.homepage = "https://github.com/dstein64/nvim-scrollview/";
   };
 
   nvim-terminal-lua = buildVimPluginFrom2Nix {
@@ -2878,18 +3802,126 @@ let
     meta.homepage = "https://github.com/norcalli/nvim-terminal.lua/";
   };
 
+  nvim-toggleterm-lua = buildVimPluginFrom2Nix {
+    pname = "nvim-toggleterm-lua";
+    version = "2021-07-22";
+    src = fetchFromGitHub {
+      owner = "akinsho";
+      repo = "nvim-toggleterm.lua";
+      rev = "895f8e2485267640ccd11fe3fbf1ab5fe178bc4c";
+      sha256 = "1jmg13618r9yxidb2y6fs1y342qqnqa19m1srfkczsxgqr89wrsh";
+    };
+    meta.homepage = "https://github.com/akinsho/nvim-toggleterm.lua/";
+  };
+
+  nvim-tree-lua = buildVimPluginFrom2Nix {
+    pname = "nvim-tree-lua";
+    version = "2021-07-19";
+    src = fetchFromGitHub {
+      owner = "kyazdani42";
+      repo = "nvim-tree.lua";
+      rev = "d3e76b81e5b169af192dea4da0bd6f64faad2c36";
+      sha256 = "0hw50yyikndx1260a50j6izjsa4m709r7v3qzrpwz482d7fq700j";
+    };
+    meta.homepage = "https://github.com/kyazdani42/nvim-tree.lua/";
+  };
+
   nvim-treesitter = buildVimPluginFrom2Nix {
     pname = "nvim-treesitter";
-    version = "2020-08-20";
+    version = "2021-07-23";
     src = fetchFromGitHub {
       owner = "nvim-treesitter";
       repo = "nvim-treesitter";
-      rev = "5c0ca925af3332769f04c122ecb5bb9a5ca36dd0";
-      sha256 = "0fmciqdmg5fy1jx2wind0vyykfdvdbls0lyrn85xi4c7d8yg74h2";
+      rev = "65a059b34d5bc77db01372c589f582b17524a2f9";
+      sha256 = "1f0iig48frgd75ccan8yqlxh5j84ywb6im1qsmq17gyfjs4vbqbx";
     };
     meta.homepage = "https://github.com/nvim-treesitter/nvim-treesitter/";
   };
 
+  nvim-treesitter-context = buildVimPluginFrom2Nix {
+    pname = "nvim-treesitter-context";
+    version = "2021-06-05";
+    src = fetchFromGitHub {
+      owner = "romgrk";
+      repo = "nvim-treesitter-context";
+      rev = "bdc598b519cfbfdf61baf9a27953da2fc1642b23";
+      sha256 = "1slyjfjcrna06b23kbw4vf81qbncgimzhw1qsqwsqldnvdc35lcr";
+    };
+    meta.homepage = "https://github.com/romgrk/nvim-treesitter-context/";
+  };
+
+  nvim-treesitter-pyfold = buildVimPluginFrom2Nix {
+    pname = "nvim-treesitter-pyfold";
+    version = "2021-05-22";
+    src = fetchFromGitHub {
+      owner = "eddiebergman";
+      repo = "nvim-treesitter-pyfold";
+      rev = "01185457e9c0a118d5807998de624179bc605a2a";
+      sha256 = "13dhix449mvbfsmg8j1554nv6i7gdr8d6143gdy3ihp8sx66bg6k";
+    };
+    meta.homepage = "https://github.com/eddiebergman/nvim-treesitter-pyfold/";
+  };
+
+  nvim-treesitter-refactor = buildVimPluginFrom2Nix {
+    pname = "nvim-treesitter-refactor";
+    version = "2021-07-04";
+    src = fetchFromGitHub {
+      owner = "nvim-treesitter";
+      repo = "nvim-treesitter-refactor";
+      rev = "505e58a8b04596a073b326157490706ee63c3b81";
+      sha256 = "0z42rpnig6iq73d3mjfgadvqa03k02f4c89j5dp9dhpnrjja8nha";
+    };
+    meta.homepage = "https://github.com/nvim-treesitter/nvim-treesitter-refactor/";
+  };
+
+  nvim-treesitter-textobjects = buildVimPluginFrom2Nix {
+    pname = "nvim-treesitter-textobjects";
+    version = "2021-07-20";
+    src = fetchFromGitHub {
+      owner = "nvim-treesitter";
+      repo = "nvim-treesitter-textobjects";
+      rev = "7f36db566c66998e04ea569723174c42d8190903";
+      sha256 = "1j2vjlfrvvvxzqq2z6z9mdlanq8q8zhfhffbrygv1zgrp6izhhkx";
+    };
+    meta.homepage = "https://github.com/nvim-treesitter/nvim-treesitter-textobjects/";
+  };
+
+  nvim-ts-rainbow = buildVimPluginFrom2Nix {
+    pname = "nvim-ts-rainbow";
+    version = "2021-07-23";
+    src = fetchFromGitHub {
+      owner = "p00f";
+      repo = "nvim-ts-rainbow";
+      rev = "fabcc1ac8392cc9a5beae8020b6c80538a725077";
+      sha256 = "1a3871n3kwvwgz40a74c74lyy5p2l4rih75asb6rnjrrknkk47fb";
+    };
+    meta.homepage = "https://github.com/p00f/nvim-ts-rainbow/";
+  };
+
+  nvim-web-devicons = buildVimPluginFrom2Nix {
+    pname = "nvim-web-devicons";
+    version = "2021-05-19";
+    src = fetchFromGitHub {
+      owner = "kyazdani42";
+      repo = "nvim-web-devicons";
+      rev = "da717e19678bd6ec33008cf92da05da1b8ceb87d";
+      sha256 = "0jvvjpbxdgch0wvgdmihkqng84rwifq74q858cvfahrx3y5y1cnw";
+    };
+    meta.homepage = "https://github.com/kyazdani42/nvim-web-devicons/";
+  };
+
+  nvim-whichkey-setup-lua = buildVimPluginFrom2Nix {
+    pname = "nvim-whichkey-setup-lua";
+    version = "2021-04-16";
+    src = fetchFromGitHub {
+      owner = "AckslD";
+      repo = "nvim-whichkey-setup.lua";
+      rev = "b2df0761b8ba3fca31b7ae1b0afcad2f8a4e89f4";
+      sha256 = "02bidgicrrx6jwm6hpcq0waqdzif2rws2q1i47zvi5x9i3zyl5cx";
+    };
+    meta.homepage = "https://github.com/AckslD/nvim-whichkey-setup.lua/";
+  };
+
   nvim-yarp = buildVimPluginFrom2Nix {
     pname = "nvim-yarp";
     version = "2020-04-08";
@@ -2914,50 +3946,86 @@ let
     meta.homepage = "https://github.com/neovim/nvimdev.nvim/";
   };
 
+  oceanic-material = buildVimPluginFrom2Nix {
+    pname = "oceanic-material";
+    version = "2020-11-02";
+    src = fetchFromGitHub {
+      owner = "glepnir";
+      repo = "oceanic-material";
+      rev = "900f487a1e8229a12f247a0cb7a533fe258945ae";
+      sha256 = "1i6k2p11bsvjrkn9sdkql0im8ys8l9y0l6i850n9hdzvq919cfxv";
+    };
+    meta.homepage = "https://github.com/glepnir/oceanic-material/";
+  };
+
   oceanic-next = buildVimPluginFrom2Nix {
     pname = "oceanic-next";
-    version = "2019-04-10";
+    version = "2021-02-05";
     src = fetchFromGitHub {
       owner = "mhartington";
       repo = "oceanic-next";
-      rev = "08158eec24cd154afd1623686aeb336fad580be7";
-      sha256 = "1s2h9mnhl54ww7zpdllwlxz93d5i7l7rx3s9mr8w6sv8azcak3v8";
+      rev = "5ef31a34204f84714885ae9036f66a626036c3dc";
+      sha256 = "1wazbyxaq71mlpyvyxrbrpyb9vgkcsj2y2zf1sba9gfjjszph482";
     };
     meta.homepage = "https://github.com/mhartington/oceanic-next/";
   };
 
+  one-nvim = buildVimPluginFrom2Nix {
+    pname = "one-nvim";
+    version = "2021-06-10";
+    src = fetchFromGitHub {
+      owner = "Th3Whit3Wolf";
+      repo = "one-nvim";
+      rev = "faf6fb3f98fccbe009c3466f657a8fff84a5f956";
+      sha256 = "1ajg3vlrms2jy23sd2my0yrrng6wfjklq8fkpnkgxypd4gy6k9rv";
+    };
+    meta.homepage = "https://github.com/Th3Whit3Wolf/one-nvim/";
+  };
+
+  onedark-nvim = buildVimPluginFrom2Nix {
+    pname = "onedark-nvim";
+    version = "2021-07-16";
+    src = fetchFromGitHub {
+      owner = "olimorris";
+      repo = "onedark.nvim";
+      rev = "df80982b43ced71a286933e830b26faabb9a36e9";
+      sha256 = "1hddmi543js7z77383ppvdray2dri5jn8lcqivk9xm5l8maz52cz";
+    };
+    meta.homepage = "https://github.com/olimorris/onedark.nvim/";
+  };
+
   onedark-vim = buildVimPluginFrom2Nix {
     pname = "onedark-vim";
-    version = "2020-08-12";
+    version = "2021-07-12";
     src = fetchFromGitHub {
       owner = "joshdick";
       repo = "onedark.vim";
-      rev = "7f9b1802b0d76f4f8fe7ad5bbef472c96e1c104f";
-      sha256 = "11fk496xk0564fcfmc77b2m98l6dmvb4ph50vyq73a1mlcs1438c";
+      rev = "ee4b22cbae8a3a434fad832bd89a6981c7c061af";
+      sha256 = "1fz3ly97w0n8viarlqil2q38s6hwd0lzyyi2jvpqsg9bj07dg4k3";
     };
     meta.homepage = "https://github.com/joshdick/onedark.vim/";
   };
 
   onehalf = buildVimPluginFrom2Nix {
     pname = "onehalf";
-    version = "2020-06-11";
+    version = "2021-01-31";
     src = fetchFromGitHub {
       owner = "sonph";
       repo = "onehalf";
-      rev = "3aa42a39ed3cddde0c53976a700b81b8a7067890";
-      sha256 = "0x01c7930hlzvjac3r2wbkdha8j6mmhyk7nwgdazh1z4sxqjyj1l";
+      rev = "141c775ace6b71992305f144a8ab68e9a8ca4a25";
+      sha256 = "1p3kxf9abj0xpxwb8hrpy4h0457rvkfkv3zv7czh322vhma4hhd8";
     };
     meta.homepage = "https://github.com/sonph/onehalf/";
   };
 
   open-browser-github-vim = buildVimPluginFrom2Nix {
     pname = "open-browser-github-vim";
-    version = "2020-07-08";
+    version = "2021-03-21";
     src = fetchFromGitHub {
       owner = "tyru";
       repo = "open-browser-github.vim";
-      rev = "7c31cd0093fdf89d53fa02b210c82b1326b00a8c";
-      sha256 = "1r3b16b7siyxj3n44z899spma5vamc5g76p947h95m9d0rc6sfnk";
+      rev = "ac7c034e300f36d591ef234dcd5eb5cd5c07c74f";
+      sha256 = "0n62h0gjakdc3bnpysny0rndhqhq7g5c97pgr42wz599wnr1pily";
     };
     meta.homepage = "https://github.com/tyru/open-browser-github.vim/";
   };
@@ -2974,26 +4042,38 @@ let
     meta.homepage = "https://github.com/tyru/open-browser.vim/";
   };
 
+  packer-nvim = buildVimPluginFrom2Nix {
+    pname = "packer-nvim";
+    version = "2021-07-22";
+    src = fetchFromGitHub {
+      owner = "wbthomason";
+      repo = "packer.nvim";
+      rev = "fdf005f5697742da121391d31ad42a47842264f9";
+      sha256 = "15amdgzdiaf0srzzwy2pgk7d44bwls5pzj2088xf1206754znsas";
+    };
+    meta.homepage = "https://github.com/wbthomason/packer.nvim/";
+  };
+
   palenight-vim = buildVimPluginFrom2Nix {
     pname = "palenight-vim";
-    version = "2020-08-10";
+    version = "2020-10-20";
     src = fetchFromGitHub {
       owner = "drewtempelmeyer";
       repo = "palenight.vim";
-      rev = "9637fc4b6dc8ba852d5ec21c2c54851d81576490";
-      sha256 = "1im9iggwiz86h0rydaz73482q8ildhd81hscq8czwigb03pslyxg";
+      rev = "847fcf5b1de2a1f9c28fdcc369d009996c6bf633";
+      sha256 = "0v7jkg6rpwmyq0wl6lymm2j07r0mzab8lbsnxb0jw34hcpx0rfis";
     };
     meta.homepage = "https://github.com/drewtempelmeyer/palenight.vim/";
   };
 
   papercolor-theme = buildVimPluginFrom2Nix {
     pname = "papercolor-theme";
-    version = "2020-06-16";
+    version = "2020-12-04";
     src = fetchFromGitHub {
       owner = "NLKNguyen";
       repo = "papercolor-theme";
-      rev = "c657f5c2d5964bbae633f8a42c16f8316f6d6733";
-      sha256 = "1vv1gd64isrgyxc4fyp5mzlhffwkzdc8agnv0aka4v7qdaca45ni";
+      rev = "845cfa94d95d404ff59e0bdc578b299279e1dc07";
+      sha256 = "1r6p9ll3bfblz9sfzg0391zjswvmi8wwcc010w8mjsayjclmpwf8";
     };
     meta.homepage = "https://github.com/NLKNguyen/papercolor-theme/";
   };
@@ -3010,6 +4090,18 @@ let
     meta.homepage = "https://github.com/tmsvg/pear-tree/";
   };
 
+  pears-nvim = buildVimPluginFrom2Nix {
+    pname = "pears-nvim";
+    version = "2021-05-27";
+    src = fetchFromGitHub {
+      owner = "steelsojka";
+      repo = "pears.nvim";
+      rev = "14e6c47c74768b74190a529e41911ae838c45254";
+      sha256 = "04kg7g6v6k6jv2pmapaqvkvf6py1i211l822m3lsvf26jcyfs3ag";
+    };
+    meta.homepage = "https://github.com/steelsojka/pears.nvim/";
+  };
+
   peskcolor-vim = buildVimPluginFrom2Nix {
     pname = "peskcolor-vim";
     version = "2016-06-11";
@@ -3036,16 +4128,40 @@ let
 
   plantuml-syntax = buildVimPluginFrom2Nix {
     pname = "plantuml-syntax";
-    version = "2020-07-03";
+    version = "2021-04-08";
     src = fetchFromGitHub {
       owner = "aklt";
       repo = "plantuml-syntax";
-      rev = "eb3df3092a767c844db3f3ff355da840abd0aa97";
-      sha256 = "02psvyxli5gs2cx2sha33mk98ivllb8zr1jwgv4hgi5bh6qd7wg3";
+      rev = "a26961c0b729c6ec4d40a08d30e1c4256964744b";
+      sha256 = "1llrk17iihb80lnag136sy5vayqp2zd4imh3hp7msbns8dvp3hfy";
     };
     meta.homepage = "https://github.com/aklt/plantuml-syntax/";
   };
 
+  playground = buildVimPluginFrom2Nix {
+    pname = "playground";
+    version = "2021-07-13";
+    src = fetchFromGitHub {
+      owner = "nvim-treesitter";
+      repo = "playground";
+      rev = "2715d35f27cbdfe6231e48212d12be383013f442";
+      sha256 = "0z1vlsdmhlw6pbga9nypsihzjybglyr8is3maqbyqswrmz1yg87h";
+    };
+    meta.homepage = "https://github.com/nvim-treesitter/playground/";
+  };
+
+  plenary-nvim = buildVimPluginFrom2Nix {
+    pname = "plenary-nvim";
+    version = "2021-07-12";
+    src = fetchFromGitHub {
+      owner = "nvim-lua";
+      repo = "plenary.nvim";
+      rev = "8bae2c1fadc9ed5bfcfb5ecbd0c0c4d7d40cb974";
+      sha256 = "1axvjv6n77afkjqk914dpc020kxd7mig6m5sr916k1n1q35jc4ny";
+    };
+    meta.homepage = "https://github.com/nvim-lua/plenary.nvim/";
+  };
+
   pony-vim-syntax = buildVimPluginFrom2Nix {
     pname = "pony-vim-syntax";
     version = "2017-09-26";
@@ -3058,6 +4174,43 @@ let
     meta.homepage = "https://github.com/dleonard0/pony-vim-syntax/";
   };
 
+  popfix = buildVimPluginFrom2Nix {
+    pname = "popfix";
+    version = "2021-03-11";
+    src = fetchFromGitHub {
+      owner = "RishabhRD";
+      repo = "popfix";
+      rev = "f3571e676739208871bd38f9fa0fddf554b6a7a8";
+      sha256 = "19hvwxcqca8l6dvlaccfvqc8755bpr0z0hi7l9qiw6rm458bhchi";
+      fetchSubmodules = true;
+    };
+    meta.homepage = "https://github.com/RishabhRD/popfix/";
+  };
+
+  popup-nvim = buildVimPluginFrom2Nix {
+    pname = "popup-nvim";
+    version = "2021-05-08";
+    src = fetchFromGitHub {
+      owner = "nvim-lua";
+      repo = "popup.nvim";
+      rev = "5e3bece7b4b4905f4ec89bee74c09cfd8172a16a";
+      sha256 = "1k6rz652fjkzhjd8ljr0l6vfispanrlpq0r4aya4qswzxni4rxhg";
+    };
+    meta.homepage = "https://github.com/nvim-lua/popup.nvim/";
+  };
+
+  presence-nvim = buildVimPluginFrom2Nix {
+    pname = "presence-nvim";
+    version = "2021-07-23";
+    src = fetchFromGitHub {
+      owner = "andweeb";
+      repo = "presence.nvim";
+      rev = "a695e5d653e3a864e11a5ad777e1274eaae90494";
+      sha256 = "0ahvklrll8wswzzhqqc6qqp1f023njrkqbry439l8s21zsnq63dh";
+    };
+    meta.homepage = "https://github.com/andweeb/presence.nvim/";
+  };
+
   PreserveNoEOL = buildVimPluginFrom2Nix {
     pname = "PreserveNoEOL";
     version = "2013-06-14";
@@ -3084,24 +4237,24 @@ let
 
   psc-ide-vim = buildVimPluginFrom2Nix {
     pname = "psc-ide-vim";
-    version = "2019-09-17";
+    version = "2021-05-31";
     src = fetchFromGitHub {
       owner = "frigoeu";
       repo = "psc-ide-vim";
-      rev = "5fb4e329e5c0c7d80f0356ab4028eee9c8bd3465";
-      sha256 = "0gzbxsq6wh8d9z9vyrff4hdpc66yg9y8hnxq4kjrz9qrccc75c1f";
+      rev = "20ff325813ab114d70573a6768565a36aba796b9";
+      sha256 = "1s79rz8rjp9bqw4yn97wbmzkc6jav4nixvnky22vbma2d0ckkcm0";
     };
     meta.homepage = "https://github.com/frigoeu/psc-ide-vim/";
   };
 
   purescript-vim = buildVimPluginFrom2Nix {
     pname = "purescript-vim";
-    version = "2018-12-10";
+    version = "2020-10-08";
     src = fetchFromGitHub {
       owner = "purescript-contrib";
       repo = "purescript-vim";
-      rev = "67ca4dc4a0291e5d8c8da48bffc0f3d2c9739e7f";
-      sha256 = "1insh39hzbynr6qxb215qxhpifl5m8i5i0d09a3b6v679i7s11i8";
+      rev = "5b4fa3e2970be1353f7d77735c0c9b42dc9885f3";
+      sha256 = "11d2jfzimdi6idvs61gjhy7d1g8yk90dfvvw5m8rn9620xrypbgn";
     };
     meta.homepage = "https://github.com/purescript-contrib/purescript-vim/";
   };
@@ -3118,14 +4271,26 @@ let
     meta.homepage = "https://github.com/python-mode/python-mode/";
   };
 
+  QFEnter = buildVimPluginFrom2Nix {
+    pname = "QFEnter";
+    version = "2020-10-09";
+    src = fetchFromGitHub {
+      owner = "yssl";
+      repo = "QFEnter";
+      rev = "df0a75b287c210f98ae353a12bbfdaf73d858beb";
+      sha256 = "0gdp7nmjlp8ng2rp2v66d8bincnkwrqqpbggb079f0f9szrqlp54";
+    };
+    meta.homepage = "https://github.com/yssl/QFEnter/";
+  };
+
   quick-scope = buildVimPluginFrom2Nix {
     pname = "quick-scope";
-    version = "2020-07-31";
+    version = "2021-06-22";
     src = fetchFromGitHub {
       owner = "unblevable";
       repo = "quick-scope";
-      rev = "64a5e6f9791e75f4d87b176d5c11f31041aa4169";
-      sha256 = "1b1s8jmfip40s9m466c78jczp22dq2brbsnmdaz7gc1fgxyb5858";
+      rev = "51d02018e66f010d5c65fb0dc822fd42d9cb5a3a";
+      sha256 = "0nf29j3xy3wai76ivh3fld23gcvg6f1cw51lnimsac4j2nvc5x7y";
     };
     meta.homepage = "https://github.com/unblevable/quick-scope/";
   };
@@ -3192,12 +4357,12 @@ let
 
   ranger-vim = buildVimPluginFrom2Nix {
     pname = "ranger-vim";
-    version = "2019-02-08";
+    version = "2021-04-25";
     src = fetchFromGitHub {
       owner = "rafaqz";
       repo = "ranger.vim";
-      rev = "6def86f4293d170480ce62cc41f15448075d7835";
-      sha256 = "0890rbmdw3p25cww6vsji7xrndcxsisfyv5przahpclk9fc9sxs8";
+      rev = "aa2394bd429e98303f2273011f0429ce92105960";
+      sha256 = "0kfhzamryaxhzrwg2rqipcbrnfxnjrfk2bk4f0z27a2hk6c0r7b9";
     };
     meta.homepage = "https://github.com/rafaqz/ranger.vim/";
   };
@@ -3216,16 +4381,28 @@ let
 
   Recover-vim = buildVimPluginFrom2Nix {
     pname = "Recover-vim";
-    version = "2020-04-20";
+    version = "2021-07-22";
     src = fetchFromGitHub {
       owner = "chrisbra";
       repo = "Recover.vim";
-      rev = "c84f07260f1e839bc7bfc2ab69bf4f3f4aaa423d";
-      sha256 = "1q87n2xz6p879ihijvhxs1iv9iyrqcbx7z8dkql0ivbf572q9iwh";
+      rev = "48b6bc12b560d3013cd30c7959e235993374c24b";
+      sha256 = "1ia2bv7yigcv944rkqy7jlrzi71m3k9kzj1hjhyrk0c2rg738r94";
     };
     meta.homepage = "https://github.com/chrisbra/Recover.vim/";
   };
 
+  registers-nvim = buildVimPluginFrom2Nix {
+    pname = "registers-nvim";
+    version = "2021-07-11";
+    src = fetchFromGitHub {
+      owner = "tversteeg";
+      repo = "registers.nvim";
+      rev = "8b02ba8dc9a2946f90f51cc43ff1175b0f916616";
+      sha256 = "10xrwxm5qpb1d25d5kr485xik4wmgr0pz92jn9w5rbf6widsdi7a";
+    };
+    meta.homepage = "https://github.com/tversteeg/registers.nvim/";
+  };
+
   Rename = buildVimPluginFrom2Nix {
     pname = "Rename";
     version = "2011-08-31";
@@ -3262,6 +4439,18 @@ let
     meta.homepage = "https://github.com/gu-fan/riv.vim/";
   };
 
+  rnvimr = buildVimPluginFrom2Nix {
+    pname = "rnvimr";
+    version = "2021-07-22";
+    src = fetchFromGitHub {
+      owner = "kevinhwang91";
+      repo = "rnvimr";
+      rev = "6bd1b891ecf6c5c054442c6934965714d5ffe834";
+      sha256 = "1a5dw5y359jbvd3yr9sjxjbjwqrgvmwdv9y1jifqk7s5p0y0b4jg";
+    };
+    meta.homepage = "https://github.com/kevinhwang91/rnvimr/";
+  };
+
   robotframework-vim = buildVimPluginFrom2Nix {
     pname = "robotframework-vim";
     version = "2017-04-14";
@@ -3274,6 +4463,18 @@ let
     meta.homepage = "https://github.com/mfukar/robotframework-vim/";
   };
 
+  rspec-vim = buildVimPluginFrom2Nix {
+    pname = "rspec-vim";
+    version = "2020-08-20";
+    src = fetchFromGitHub {
+      owner = "keith";
+      repo = "rspec.vim";
+      rev = "e49d306de952c2195233b83f9ca9fa94e19affe4";
+      sha256 = "0445abk039qlhk5s9jm5hawfksds5dgshb1lspvfkz8slk6m076z";
+    };
+    meta.homepage = "https://github.com/keith/rspec.vim/";
+  };
+
   rtorrent-syntax-file = buildVimPluginFrom2Nix {
     pname = "rtorrent-syntax-file";
     version = "2016-03-19";
@@ -3286,18 +4487,42 @@ let
     meta.homepage = "https://github.com/ccarpita/rtorrent-syntax-file/";
   };
 
+  rust-tools-nvim = buildVimPluginFrom2Nix {
+    pname = "rust-tools-nvim";
+    version = "2021-07-23";
+    src = fetchFromGitHub {
+      owner = "simrat39";
+      repo = "rust-tools.nvim";
+      rev = "160aeb66e46e863802c2e4c5a772c3858bc02fd0";
+      sha256 = "108nxkbybl1fvyawgq0mzbi2c5fadycxj0pnnnsw8alycyjln13f";
+    };
+    meta.homepage = "https://github.com/simrat39/rust-tools.nvim/";
+  };
+
   rust-vim = buildVimPluginFrom2Nix {
     pname = "rust-vim";
-    version = "2020-08-15";
+    version = "2021-02-15";
     src = fetchFromGitHub {
       owner = "rust-lang";
       repo = "rust.vim";
-      rev = "f5eb7b04ee2746cbed4067e0cf9dd19185529a34";
-      sha256 = "0549r64350cr17gg1lm1fwz0wb1w9jsbs8qi8ddcsgrk1bc3gqf5";
+      rev = "87c745d8d506fc1eecc1d81df15d5bde1658a2fc";
+      sha256 = "0v0ip731lclh9aqrmlqwnnz4skgawaq3invghh1c7lh0zdq22lzb";
     };
     meta.homepage = "https://github.com/rust-lang/rust.vim/";
   };
 
+  sad-vim = buildVimPluginFrom2Nix {
+    pname = "sad-vim";
+    version = "2019-02-18";
+    src = fetchFromGitHub {
+      owner = "hauleth";
+      repo = "sad.vim";
+      rev = "2f5b33b239a566ffedaa81cee3051bb613482d1e";
+      sha256 = "11kxnrp3b6qc2rcp5jdqjb7cxh6lqy09v3yh7dk4kd51jkgxqbn4";
+    };
+    meta.homepage = "https://github.com/hauleth/sad.vim/";
+  };
+
   salt-vim = buildVimPluginFrom2Nix {
     pname = "salt-vim";
     version = "2017-07-01";
@@ -3310,6 +4535,18 @@ let
     meta.homepage = "https://github.com/saltstack/salt-vim/";
   };
 
+  scrollbar-nvim = buildVimPluginFrom2Nix {
+    pname = "scrollbar-nvim";
+    version = "2021-06-04";
+    src = fetchFromGitHub {
+      owner = "Xuyuanp";
+      repo = "scrollbar.nvim";
+      rev = "c338467dd6ef141fa8ce3172097a1f5be6c43779";
+      sha256 = "1wvzdrj8gckhh6x4szipjjb6mg0v3ix5cq5dy83lfb28psyznshw";
+    };
+    meta.homepage = "https://github.com/Xuyuanp/scrollbar.nvim/";
+  };
+
   self = buildVimPluginFrom2Nix {
     pname = "self";
     version = "2014-05-28";
@@ -3324,24 +4561,24 @@ let
 
   semantic-highlight-vim = buildVimPluginFrom2Nix {
     pname = "semantic-highlight-vim";
-    version = "2019-09-01";
+    version = "2020-09-11";
     src = fetchFromGitHub {
       owner = "jaxbot";
       repo = "semantic-highlight.vim";
-      rev = "7cf0aabbd0f9cb531b0045ac2148dff1131616de";
-      sha256 = "16dnqrdpxf6322az1rn67ay2a4clqz410xn6zqzr1w2y6x4yly1a";
+      rev = "7e141c2b7be0f2600276004fd2e7382a3fa0f690";
+      sha256 = "04975ly6zd58zhs2v07dw6m1dha0gkmfm0pvhlrgcrf2qp8n4m3v";
     };
     meta.homepage = "https://github.com/jaxbot/semantic-highlight.vim/";
   };
 
   semshi = buildVimPluginFrom2Nix {
     pname = "semshi";
-    version = "2019-12-01";
+    version = "2021-07-24";
     src = fetchFromGitHub {
       owner = "numirias";
       repo = "semshi";
-      rev = "801d0c971d3d7291cf2fc22d74ac69155a71a279";
-      sha256 = "0adq1qxlxd53ps5byjvqmzk266f3wbvqmw74dkx6vd41zqw38wfx";
+      rev = "252f07fd5f0ae9eb19d02bae979fd7c9152c1ccf";
+      sha256 = "0r1nrkhyhk08vfhf9hnbhjlnqy0imqhdqx31y301k2kb31hyiyq3";
     };
     meta.homepage = "https://github.com/numirias/semshi/";
   };
@@ -3370,6 +4607,18 @@ let
     meta.homepage = "https://github.com/osyo-manga/shabadou.vim/";
   };
 
+  Shade-nvim = buildVimPluginFrom2Nix {
+    pname = "Shade-nvim";
+    version = "2021-04-29";
+    src = fetchFromGitHub {
+      owner = "sunjon";
+      repo = "Shade.nvim";
+      rev = "0196387bba50b8d36cec99cd6483583ff2dedb42";
+      sha256 = "0831k71gm8rpl54x63v7mgp9i1fgxydp2wig3yyd98dc7z9d8f48";
+    };
+    meta.homepage = "https://github.com/sunjon/Shade.nvim/";
+  };
+
   ShowMultiBase = buildVimPluginFrom2Nix {
     pname = "ShowMultiBase";
     version = "2010-10-18";
@@ -3382,26 +4631,39 @@ let
     meta.homepage = "https://github.com/vim-scripts/ShowMultiBase/";
   };
 
+  sideways-vim = buildVimPluginFrom2Nix {
+    pname = "sideways-vim";
+    version = "2021-07-15";
+    src = fetchFromGitHub {
+      owner = "AndrewRadev";
+      repo = "sideways.vim";
+      rev = "960afef88aef374d3525e1536bdd505727b42d67";
+      sha256 = "08yj3p31d5gnd3qyv6dcpz87s3kwz1kgcb5h92w83wf64r6fzq61";
+      fetchSubmodules = true;
+    };
+    meta.homepage = "https://github.com/AndrewRadev/sideways.vim/";
+  };
+
   SimpylFold = buildVimPluginFrom2Nix {
     pname = "SimpylFold";
-    version = "2017-06-13";
+    version = "2020-09-09";
     src = fetchFromGitHub {
       owner = "tmhedberg";
       repo = "SimpylFold";
-      rev = "aa0371d9d708388f3ba385ccc67a7504586a20d9";
-      sha256 = "1gjv78x2cgh79a04l411kdhkm53f93czs54p07kadpa9659z93ss";
+      rev = "0459df8a0bbfc8ef1bfd88db889e881626f65914";
+      sha256 = "1lydkm86d84fsmbklwcgnlb95vczri9a8d898hrnfvskyx050y2w";
     };
     meta.homepage = "https://github.com/tmhedberg/SimpylFold/";
   };
 
   skim-vim = buildVimPluginFrom2Nix {
     pname = "skim-vim";
-    version = "2019-07-31";
+    version = "2020-11-11";
     src = fetchFromGitHub {
       owner = "lotabout";
       repo = "skim.vim";
-      rev = "4e9d9a3deb2060e2e79fede1c213f13ac7866eb5";
-      sha256 = "0vpfn2zivk8cf2l841jbd78zl1vzdw1wjf9p0dm6pgr84kj9pkx4";
+      rev = "83faea7f2581005d4adc9256ec76e0fe3f8a15e6";
+      sha256 = "0wppb2wgpk085cwh9kmqzv6f30j2hb3brqx2ik371gkrcfbpf4ly";
     };
     meta.homepage = "https://github.com/lotabout/skim.vim/";
   };
@@ -3430,6 +4692,42 @@ let
     meta.homepage = "https://github.com/gorkunov/smartpairs.vim/";
   };
 
+  snap = buildVimPluginFrom2Nix {
+    pname = "snap";
+    version = "2021-07-04";
+    src = fetchFromGitHub {
+      owner = "camspiers";
+      repo = "snap";
+      rev = "4ed8f920f437138b7da38d5ad9003a1e2ca2ddb3";
+      sha256 = "15cxx8yz522kb8wdgcs95irqy7hlfniipzyxyd16hg69wycl64gx";
+    };
+    meta.homepage = "https://github.com/camspiers/snap/";
+  };
+
+  snippets-nvim = buildVimPluginFrom2Nix {
+    pname = "snippets-nvim";
+    version = "2020-09-09";
+    src = fetchFromGitHub {
+      owner = "norcalli";
+      repo = "snippets.nvim";
+      rev = "7b5fd8071d4fb6fa981a899aae56b55897c079fd";
+      sha256 = "1fdsx7d5nyhhklwidgh387ijd485g2836rwd5i1r0di777mp7w80";
+    };
+    meta.homepage = "https://github.com/norcalli/snippets.nvim/";
+  };
+
+  sonokai = buildVimPluginFrom2Nix {
+    pname = "sonokai";
+    version = "2021-07-19";
+    src = fetchFromGitHub {
+      owner = "sainnhe";
+      repo = "sonokai";
+      rev = "9d8c57c2b0bf57082093bf1b162ac492206d35dd";
+      sha256 = "0ymgbcy8v7ang4ghlkr52wq86ydr4pma1vwvp78y5yhi4xmn82mn";
+    };
+    meta.homepage = "https://github.com/sainnhe/sonokai/";
+  };
+
   sourcemap-vim = buildVimPluginFrom2Nix {
     pname = "sourcemap-vim";
     version = "2012-09-19";
@@ -3444,26 +4742,26 @@ let
 
   SpaceCamp = buildVimPluginFrom2Nix {
     pname = "SpaceCamp";
-    version = "2020-05-14";
+    version = "2021-04-07";
     src = fetchFromGitHub {
       owner = "jaredgorski";
       repo = "SpaceCamp";
-      rev = "23c7a3948cd1861150346762a002dc7fa196c616";
-      sha256 = "1sbc9ivczkyfylhk1n4sm2sqzp8vddw03k0xb6z8k475n5vm8mvq";
+      rev = "376af5c2204de61726ea86b596acb2dab9795e1f";
+      sha256 = "0h3wxkswd5z9y46d6272sr210i73j5pwf5faw7qhr1plilfgx4gb";
     };
     meta.homepage = "https://github.com/jaredgorski/SpaceCamp/";
   };
 
   Spacegray-vim = buildVimPluginFrom2Nix {
     pname = "Spacegray-vim";
-    version = "2019-02-23";
+    version = "2021-07-06";
     src = fetchFromGitHub {
-      owner = "ajh17";
+      owner = "ackyshake";
       repo = "Spacegray.vim";
-      rev = "69e8fefce04e2aff6a01cc4c295493359b0e4fa1";
-      sha256 = "0ks5yd1vmpjw8ml7hqd2zz2d8mqkqhfw2ya73y1igf6as70za896";
+      rev = "c699ca10ed421c462bd1c87a158faaa570dc8e28";
+      sha256 = "0ma8w6p5jh6llka49x5j5ql8fmhv0bx5hhsn5b2phak79yqg1k61";
     };
-    meta.homepage = "https://github.com/ajh17/Spacegray.vim/";
+    meta.homepage = "https://github.com/ackyshake/Spacegray.vim/";
   };
 
   spacevim = buildVimPluginFrom2Nix {
@@ -3490,6 +4788,18 @@ let
     meta.homepage = "https://github.com/chrisgeo/sparkup/";
   };
 
+  specs-nvim = buildVimPluginFrom2Nix {
+    pname = "specs-nvim";
+    version = "2021-05-05";
+    src = fetchFromGitHub {
+      owner = "edluffy";
+      repo = "specs.nvim";
+      rev = "a62319a224b73b70af47a48ba076d7ec67b08526";
+      sha256 = "1hs7qp3fr451ziddv08nyygnxx1n6y32fr0y97s9zjc7j13d3nc3";
+    };
+    meta.homepage = "https://github.com/edluffy/specs.nvim/";
+  };
+
   splice-vim = buildVimPluginFrom2Nix {
     pname = "splice-vim";
     version = "2020-01-15";
@@ -3516,17 +4826,53 @@ let
 
   splitjoin-vim = buildVimPluginFrom2Nix {
     pname = "splitjoin-vim";
-    version = "2020-07-21";
+    version = "2021-07-17";
     src = fetchFromGitHub {
       owner = "AndrewRadev";
       repo = "splitjoin.vim";
-      rev = "46efa9796716fe645d43f6018de3e06296978c7b";
-      sha256 = "126a9v4j217g1kflfabqx0bz02k0xkwqfagzhk51n7drh2r2m7k6";
+      rev = "e5c60658d9aca5af479ef6371037cc6453a6b1eb";
+      sha256 = "07l7acnhp9nwwkmybjs2fdprql5nanyxxn9z3wl59y8jx2ca44p7";
       fetchSubmodules = true;
     };
     meta.homepage = "https://github.com/AndrewRadev/splitjoin.vim/";
   };
 
+  sql-nvim = buildVimPluginFrom2Nix {
+    pname = "sql-nvim";
+    version = "2021-07-19";
+    src = fetchFromGitHub {
+      owner = "tami5";
+      repo = "sql.nvim";
+      rev = "9983108bc9941af842d3b847b60564d180fc8e4b";
+      sha256 = "1f1f1v107w61b86pdrs9qvchyg286nif31c5cp3yx6rq22fynbgd";
+    };
+    meta.homepage = "https://github.com/tami5/sql.nvim/";
+  };
+
+  srcery-vim = buildVimPluginFrom2Nix {
+    pname = "srcery-vim";
+    version = "2021-07-22";
+    src = fetchFromGitHub {
+      owner = "srcery-colors";
+      repo = "srcery-vim";
+      rev = "e47e911d4fba1c584cfb31dd710c1f2a03961561";
+      sha256 = "0bb1bsswffp45g38fn41dcbr5dx2gfaz1xhr470h5ln7ywkwv2hi";
+    };
+    meta.homepage = "https://github.com/srcery-colors/srcery-vim/";
+  };
+
+  stan-vim = buildVimPluginFrom2Nix {
+    pname = "stan-vim";
+    version = "2021-05-28";
+    src = fetchFromGitHub {
+      owner = "eigenfoo";
+      repo = "stan-vim";
+      rev = "2adaa984e531e1876f053cacb07d8d181d70fbd1";
+      sha256 = "1a826cfmwyn4kfyrj6164425gf2wbjs85cdkhzkqsrj0i924hjqz";
+    };
+    meta.homepage = "https://github.com/eigenfoo/stan-vim/";
+  };
+
   starsearch-vim = buildVimPluginFrom2Nix {
     pname = "starsearch-vim";
     version = "2014-09-21";
@@ -3539,14 +4885,38 @@ let
     meta.homepage = "https://github.com/darfink/starsearch.vim/";
   };
 
+  suda-vim = buildVimPluginFrom2Nix {
+    pname = "suda-vim";
+    version = "2021-07-21";
+    src = fetchFromGitHub {
+      owner = "lambdalisue";
+      repo = "suda.vim";
+      rev = "bfafa2722178bdb8898e014a7e95b60d497960d9";
+      sha256 = "1cjj6d6zkd2b9hv77saz8p7xcw06rj0svdhycc4df8bcdrvvmi39";
+    };
+    meta.homepage = "https://github.com/lambdalisue/suda.vim/";
+  };
+
+  SudoEdit-vim = buildVimPluginFrom2Nix {
+    pname = "SudoEdit-vim";
+    version = "2020-02-27";
+    src = fetchFromGitHub {
+      owner = "chrisbra";
+      repo = "SudoEdit.vim";
+      rev = "e203eada5b563e9134ce2aae26b09edae0904fd7";
+      sha256 = "0pf9iix50pw3p430ky51rv11ra1hppdpwa5flzcd5kciybr76n0n";
+    };
+    meta.homepage = "https://github.com/chrisbra/SudoEdit.vim/";
+  };
+
   supertab = buildVimPluginFrom2Nix {
     pname = "supertab";
-    version = "2017-11-14";
+    version = "2021-04-30";
     src = fetchFromGitHub {
       owner = "ervandew";
       repo = "supertab";
-      rev = "40fe711e088e2ab346738233dd5adbb1be355172";
-      sha256 = "0l5labq68kyprv63k1q35hz5ly0dd06mf2z202mccnix4mlxf0db";
+      rev = "f0093ae12a9115498f887199809a6114659fc858";
+      sha256 = "1r1ck62raxhwcxjv7hic7jm9b5inm1vdqc51zn4nybclys7grnss";
     };
     meta.homepage = "https://github.com/ervandew/supertab/";
   };
@@ -3565,24 +4935,36 @@ let
 
   swift-vim = buildVimPluginFrom2Nix {
     pname = "swift-vim";
-    version = "2020-02-21";
+    version = "2021-05-30";
     src = fetchFromGitHub {
       owner = "keith";
       repo = "swift.vim";
-      rev = "c4053da88208cef5a32a5862694d36b73f6ce310";
-      sha256 = "0awz0pf3awrwhay40wngfllpmmh24zwm02ra530x4n1hk74iwf2v";
+      rev = "7ef452b47f14a2bfed26324793777cf12d2a8d78";
+      sha256 = "0s12iv8vmqp8yr8fg7a6yf73kgq84i9zy18fhgb0jcc6cwwwz3iq";
     };
     meta.homepage = "https://github.com/keith/swift.vim/";
   };
 
+  symbols-outline-nvim = buildVimPluginFrom2Nix {
+    pname = "symbols-outline-nvim";
+    version = "2021-07-21";
+    src = fetchFromGitHub {
+      owner = "simrat39";
+      repo = "symbols-outline.nvim";
+      rev = "6a51c637dd8deb4c1e398932651b3a635d1694e2";
+      sha256 = "1hxdklzbci1cxaq6mvy6f2zih8cxyp4s8y6yrnz9w2587pxh0c7j";
+    };
+    meta.homepage = "https://github.com/simrat39/symbols-outline.nvim/";
+  };
+
   syntastic = buildVimPluginFrom2Nix {
     pname = "syntastic";
-    version = "2020-08-14";
+    version = "2021-07-19";
     src = fetchFromGitHub {
       owner = "vim-syntastic";
       repo = "syntastic";
-      rev = "25b816d9b0016eff68e7025fe52fb67ef253920e";
-      sha256 = "1hb9f1p7sqpb7kc0rih9kaixwg4s9a6z86ycnc6kxp1iz97d6ai1";
+      rev = "7414f30365a342e1d89072d474a35913643b6eec";
+      sha256 = "19c9dv8dc72nnb1dx7wdraihpzf5b42wwq3c9vn0na8k1xy26h8y";
     };
     meta.homepage = "https://github.com/vim-syntastic/syntastic/";
   };
@@ -3599,6 +4981,31 @@ let
     meta.homepage = "https://github.com/vim-scripts/tabmerge/";
   };
 
+  tabnine-vim = buildVimPluginFrom2Nix {
+    pname = "tabnine-vim";
+    version = "2021-07-14";
+    src = fetchFromGitHub {
+      owner = "codota";
+      repo = "tabnine-vim";
+      rev = "e431d0425f4b132caef736ab682ba917edee30e9";
+      sha256 = "17d5qa5y809sss4rk5gl75fxbh04nychjgpag6xjd8fzwd51xmzr";
+      fetchSubmodules = true;
+    };
+    meta.homepage = "https://github.com/codota/tabnine-vim/";
+  };
+
+  taboo-vim = buildVimPluginFrom2Nix {
+    pname = "taboo-vim";
+    version = "2019-08-27";
+    src = fetchFromGitHub {
+      owner = "gcmt";
+      repo = "taboo.vim";
+      rev = "caf948187694d3f1374913d36f947b3f9fa1c22f";
+      sha256 = "06pizdnb3gr4pf5hrm3yfzkz99y9bi2vwqm85xknzgdvl1lisj99";
+    };
+    meta.homepage = "https://github.com/gcmt/taboo.vim/";
+  };
+
   tabpagebuffer-vim = buildVimPluginFrom2Nix {
     pname = "tabpagebuffer-vim";
     version = "2014-09-30";
@@ -3625,14 +5032,14 @@ let
 
   tagbar = buildVimPluginFrom2Nix {
     pname = "tagbar";
-    version = "2020-08-17";
+    version = "2021-06-24";
     src = fetchFromGitHub {
-      owner = "majutsushi";
+      owner = "preservim";
       repo = "tagbar";
-      rev = "a81c01c29406df6aa59be221a17953c18ed57ccc";
-      sha256 = "1amqxazfjnljylkj5jz3in927mkkhbvchs9pb5cnijfbvrf3dh5s";
+      rev = "2da3443f5fb78aa0b9a60bb5b2926d72df734e14";
+      sha256 = "0xihnfp1jv3ixhinqvnfig1v5k8swf3vcqjavspchd94lnb4b2h4";
     };
-    meta.homepage = "https://github.com/majutsushi/tagbar/";
+    meta.homepage = "https://github.com/preservim/tagbar/";
   };
 
   taglist-vim = buildVimPluginFrom2Nix {
@@ -3659,30 +5066,151 @@ let
     meta.homepage = "https://github.com/wellle/targets.vim/";
   };
 
+  taskwiki = buildVimPluginFrom2Nix {
+    pname = "taskwiki";
+    version = "2021-06-27";
+    src = fetchFromGitHub {
+      owner = "tools-life";
+      repo = "taskwiki";
+      rev = "f9a1e6ab9f10bd02fab05c225ccca6e253e690a0";
+      sha256 = "12f1i8dfmd4n3wc4cs45csl6j6aw4g7i6bbqnk017sylwxpiilsq";
+    };
+    meta.homepage = "https://github.com/tools-life/taskwiki/";
+  };
+
   tcomment_vim = buildVimPluginFrom2Nix {
     pname = "tcomment_vim";
-    version = "2020-06-18";
+    version = "2021-04-14";
     src = fetchFromGitHub {
       owner = "tomtom";
       repo = "tcomment_vim";
-      rev = "920d465b56bcf96c976fa22e9558d51aa55dcd9c";
-      sha256 = "0n7gwdyzim4f92mxnjz4zwfiyapyjhbf21b1l3dq9b07x9m40365";
+      rev = "a15822ec1b42b7d43f5c8affaa3ad2c553a2831f";
+      sha256 = "0bl4shhk5ldqamq2zk8sv2bdswd9a4762fh2smj0h1jgs2ff5pkm";
     };
     meta.homepage = "https://github.com/tomtom/tcomment_vim/";
   };
 
+  telescope-dap-nvim = buildVimPluginFrom2Nix {
+    pname = "telescope-dap-nvim";
+    version = "2021-03-26";
+    src = fetchFromGitHub {
+      owner = "nvim-telescope";
+      repo = "telescope-dap.nvim";
+      rev = "b4134fff5cbaf3b876e6011212ed60646e56f060";
+      sha256 = "1fcpw42bwl5iych3hxrrl08s5hm6r6k0qx2savw853f3ff982s38";
+    };
+    meta.homepage = "https://github.com/nvim-telescope/telescope-dap.nvim/";
+  };
+
+  telescope-frecency-nvim = buildVimPluginFrom2Nix {
+    pname = "telescope-frecency-nvim";
+    version = "2021-07-14";
+    src = fetchFromGitHub {
+      owner = "nvim-telescope";
+      repo = "telescope-frecency.nvim";
+      rev = "5173a42d4a306567a90c41fb90ee660a3274d34f";
+      sha256 = "0baphixbfwq3fd3wcxf1fjgb7qwr7l0p6c8rpqf80msb0d7ikv77";
+    };
+    meta.homepage = "https://github.com/nvim-telescope/telescope-frecency.nvim/";
+  };
+
+  telescope-fzf-native-nvim = buildVimPluginFrom2Nix {
+    pname = "telescope-fzf-native-nvim";
+    version = "2021-07-06";
+    src = fetchFromGitHub {
+      owner = "nvim-telescope";
+      repo = "telescope-fzf-native.nvim";
+      rev = "fe8c8d8cf7ff215ac83e1119cba87c016070b27e";
+      sha256 = "0kzxf3kzw45mlccp8z5zl3cfda4n5afymmdyir3kd248ll904jy1";
+    };
+    meta.homepage = "https://github.com/nvim-telescope/telescope-fzf-native.nvim/";
+  };
+
+  telescope-fzf-writer-nvim = buildVimPluginFrom2Nix {
+    pname = "telescope-fzf-writer-nvim";
+    version = "2021-04-16";
+    src = fetchFromGitHub {
+      owner = "nvim-telescope";
+      repo = "telescope-fzf-writer.nvim";
+      rev = "00a1ab1b0aeaa4ad9da238861325ea1ee6d90a44";
+      sha256 = "1c5kiqxg7i1cm69xzvlrrz8dsrpfz8c9sfrnhqc4p6c95kfsna57";
+    };
+    meta.homepage = "https://github.com/nvim-telescope/telescope-fzf-writer.nvim/";
+  };
+
+  telescope-fzy-native-nvim = buildVimPluginFrom2Nix {
+    pname = "telescope-fzy-native-nvim";
+    version = "2021-04-08";
+    src = fetchFromGitHub {
+      owner = "nvim-telescope";
+      repo = "telescope-fzy-native.nvim";
+      rev = "7b3d2528102f858036627a68821ccf5fc1d78ce4";
+      sha256 = "1mb47ixnpgd7ygrq1cldp9anc6gxqly4amj0l1pgh8cllj63393v";
+      fetchSubmodules = true;
+    };
+    meta.homepage = "https://github.com/nvim-telescope/telescope-fzy-native.nvim/";
+  };
+
+  telescope-symbols-nvim = buildVimPluginFrom2Nix {
+    pname = "telescope-symbols-nvim";
+    version = "2021-06-15";
+    src = fetchFromGitHub {
+      owner = "nvim-telescope";
+      repo = "telescope-symbols.nvim";
+      rev = "e211b6aeed1f94ca660c407f3052f83ab8f4b2a9";
+      sha256 = "0nd02akh5nmcnv8mqih6xpzc4pbhys6rva7v60p38kxx50ycfkvw";
+    };
+    meta.homepage = "https://github.com/nvim-telescope/telescope-symbols.nvim/";
+  };
+
+  telescope-z-nvim = buildVimPluginFrom2Nix {
+    pname = "telescope-z-nvim";
+    version = "2021-07-19";
+    src = fetchFromGitHub {
+      owner = "nvim-telescope";
+      repo = "telescope-z.nvim";
+      rev = "f5776dbd0c687af0862b2e4ee83c62c5f4a7271d";
+      sha256 = "08lcszv53d9mqhgdwkdygbnk5w0pyh0q6djxzqhnjb6qphibf3m6";
+    };
+    meta.homepage = "https://github.com/nvim-telescope/telescope-z.nvim/";
+  };
+
+  telescope-nvim = buildVimPluginFrom2Nix {
+    pname = "telescope-nvim";
+    version = "2021-07-23";
+    src = fetchFromGitHub {
+      owner = "nvim-telescope";
+      repo = "telescope.nvim";
+      rev = "c0f1999b0280bb042bba01c930dd94a4bfdee363";
+      sha256 = "13igy3nph7vg1pnq7hjvql71i0031xdxgkiyd1h38chcs7whvxzf";
+    };
+    meta.homepage = "https://github.com/nvim-telescope/telescope.nvim/";
+  };
+
   tender-vim = buildVimPluginFrom2Nix {
     pname = "tender-vim";
-    version = "2020-06-29";
+    version = "2021-05-24";
     src = fetchFromGitHub {
       owner = "jacoborus";
       repo = "tender.vim";
-      rev = "25924cb8b29a5158e56fb896a2540c70691c7a28";
-      sha256 = "0mm5h5jhb6y0f1zsfhq0frvdm6s93skshi66rfrpn82l93zigw4c";
+      rev = "7746453a045eaa97dc413a7209268345f33f3243";
+      sha256 = "0yxgcnx5x82ak74nz3pvkd1z8i3c7lcl068lh5izdpx65fk7m5yh";
     };
     meta.homepage = "https://github.com/jacoborus/tender.vim/";
   };
 
+  termwrapper-nvim = buildVimPluginFrom2Nix {
+    pname = "termwrapper-nvim";
+    version = "2021-03-28";
+    src = fetchFromGitHub {
+      owner = "oberblastmeister";
+      repo = "termwrapper.nvim";
+      rev = "e00da3cc137f795470818204fc2e712473481c78";
+      sha256 = "0a61n9dpf94rrkq79pjwn73axa1d2zfpsr2ci7wivg3inq7zsqyc";
+    };
+    meta.homepage = "https://github.com/oberblastmeister/termwrapper.nvim/";
+  };
+
   tern_for_vim = buildVimPluginFrom2Nix {
     pname = "tern_for_vim";
     version = "2019-01-23";
@@ -3697,157 +5225,229 @@ let
 
   thesaurus_query-vim = buildVimPluginFrom2Nix {
     pname = "thesaurus_query-vim";
-    version = "2019-11-09";
+    version = "2021-07-08";
     src = fetchFromGitHub {
       owner = "ron89";
       repo = "thesaurus_query.vim";
-      rev = "830a20ec77780ebfe8d2a7e8c740ca4abb079f89";
-      sha256 = "0kfqpjwashwf084cbz6dmhirk42a4n8d1zj17i086by17nx7qn1g";
+      rev = "65e67a2dc3290d1fbed59db2a3f58944a73e7251";
+      sha256 = "1hak0ncsq43j0vblcgy9y4ylx2lazhij71sm3471cgini42klmgp";
     };
     meta.homepage = "https://github.com/ron89/thesaurus_query.vim/";
   };
 
   thumbnail-vim = buildVimPluginFrom2Nix {
     pname = "thumbnail-vim";
-    version = "2020-08-15";
+    version = "2021-01-11";
     src = fetchFromGitHub {
       owner = "itchyny";
       repo = "thumbnail.vim";
-      rev = "161ff743cb031eff376780108b018735d92160b0";
-      sha256 = "105a1a9kahfdicw1gkdhc88w41pyhmhv6yw2kh1flkaikzqlxbc8";
+      rev = "bfd408a3210c305aaf51e6ce31ac99497e6ab1ec";
+      sha256 = "1kh12d0dg932j9drby27fhg8vbjm8rwih33rm4yjba0316i8wcyv";
     };
     meta.homepage = "https://github.com/itchyny/thumbnail.vim/";
   };
 
   tlib_vim = buildVimPluginFrom2Nix {
     pname = "tlib_vim";
-    version = "2019-09-28";
+    version = "2021-07-17";
     src = fetchFromGitHub {
       owner = "tomtom";
       repo = "tlib_vim";
-      rev = "a071b6d41b20069a3520e0d101194a752968973b";
-      sha256 = "05swfvjyai32cbdpg10m3k2frkv017i1avf0nzilqavskvg04vi3";
+      rev = "70c4e222464020edc2809c932b488daaf891eeef";
+      sha256 = "1amx220nbh1s51z35pkhvl3110pbha5qj2rdgxvg8dbqha7py9fx";
     };
     meta.homepage = "https://github.com/tomtom/tlib_vim/";
   };
 
   tmux-complete-vim = buildVimPluginFrom2Nix {
     pname = "tmux-complete-vim";
-    version = "2019-11-10";
+    version = "2021-03-26";
     src = fetchFromGitHub {
       owner = "wellle";
       repo = "tmux-complete.vim";
-      rev = "7237d8d8d60af7916e3b546a9f4f396df95a1b21";
-      sha256 = "05ypjahaf7gk4vjc8hhglmw7y8vyjxyhxq8sm0s3np05aw0gdbsc";
+      rev = "87f6f96c73b599554d1d7f313413d7f9d0336096";
+      sha256 = "0bqh08q1jv05srd15bp9zrlrdzavxy83v153balvhrrvg3z4lk4x";
     };
     meta.homepage = "https://github.com/wellle/tmux-complete.vim/";
   };
 
+  todo-comments-nvim = buildVimPluginFrom2Nix {
+    pname = "todo-comments-nvim";
+    version = "2021-07-11";
+    src = fetchFromGitHub {
+      owner = "folke";
+      repo = "todo-comments.nvim";
+      rev = "4a27e05519827ba1594d5ce3fde874040f005bfe";
+      sha256 = "0g6dxyd7vh89rg4xfdl20djfdcv1scq44mvxd3imzb7yhrhdpa95";
+    };
+    meta.homepage = "https://github.com/folke/todo-comments.nvim/";
+  };
+
   todo-txt-vim = buildVimPluginFrom2Nix {
     pname = "todo-txt-vim";
-    version = "2016-11-10";
+    version = "2021-03-20";
     src = fetchFromGitHub {
       owner = "freitass";
       repo = "todo.txt-vim";
-      rev = "6845221d45bd62e604c2024bc511a56e79d1118b";
-      sha256 = "08m9q5f2pz6gjp0vkmm7glfsrbnldxi1j59dm5d7any6y96xxd6v";
+      rev = "ed9d639de2e34eafb82f2682010ab361966ee40f";
+      sha256 = "1vw4vhbgxnlkl5m5y55xk81vrknw35s01dw21s815i8clp38zr7i";
       fetchSubmodules = true;
     };
     meta.homepage = "https://github.com/freitass/todo.txt-vim/";
   };
 
+  tokyonight-nvim = buildVimPluginFrom2Nix {
+    pname = "tokyonight-nvim";
+    version = "2021-07-21";
+    src = fetchFromGitHub {
+      owner = "folke";
+      repo = "tokyonight.nvim";
+      rev = "0ee0bcf14d8c7c70081a0e9967c211121c4300c7";
+      sha256 = "0rkw544dzgyp76ag3zrh8d3n0mri5c0cjpy8mvbfpgyj87w18m8d";
+    };
+    meta.homepage = "https://github.com/folke/tokyonight.nvim/";
+  };
+
   traces-vim = buildVimPluginFrom2Nix {
     pname = "traces-vim";
-    version = "2020-08-19";
+    version = "2021-07-22";
     src = fetchFromGitHub {
       owner = "markonm";
       repo = "traces.vim";
-      rev = "b38bdda4378b17888f5132787c49d79722c25752";
-      sha256 = "0q29h348pgqxqw1pqq1nsj0nxccnb2x6jd92bpsqnjf452wsh2f2";
+      rev = "4b06ca24de8aeb8b512727a27f2d1b3ba7b20ff6";
+      sha256 = "0lyqbwjyb0sczzqhfd7nmg3hzqn9pqxbrg14szg56a14mmm59mxf";
     };
     meta.homepage = "https://github.com/markonm/traces.vim/";
   };
 
+  train-nvim = buildVimPluginFrom2Nix {
+    pname = "train-nvim";
+    version = "2020-09-10";
+    src = fetchFromGitHub {
+      owner = "tjdevries";
+      repo = "train.nvim";
+      rev = "7b2e9a59af58385d88bf39c5311c08f839e2b1ce";
+      sha256 = "1pbv8c2wb6b2h9czx7c0c8v0q7v0wc4w9s6qgw7hcbqdl3jv1svh";
+    };
+    meta.homepage = "https://github.com/tjdevries/train.nvim/";
+  };
+
+  tremor-vim = buildVimPluginFrom2Nix {
+    pname = "tremor-vim";
+    version = "2020-11-19";
+    src = fetchFromGitHub {
+      owner = "tremor-rs";
+      repo = "tremor-vim";
+      rev = "17e53c33f3b0e825330580034ca60172b8ddaadc";
+      sha256 = "1gy67qjv0iwqza0yx9y8p5yzn5fszrp7szg1527h0ki3q69cfqki";
+    };
+    meta.homepage = "https://github.com/tremor-rs/tremor-vim/";
+  };
+
+  trouble-nvim = buildVimPluginFrom2Nix {
+    pname = "trouble-nvim";
+    version = "2021-07-22";
+    src = fetchFromGitHub {
+      owner = "folke";
+      repo = "trouble.nvim";
+      rev = "169b2ec3a4d0cac01f22cc8f7332f1d0a11f1fa4";
+      sha256 = "08r1ivzw6v5bfyhd7cy6kysryd123f68aa3kpamzy168ixvihbii";
+    };
+    meta.homepage = "https://github.com/folke/trouble.nvim/";
+  };
+
   tslime-vim = buildVimPluginFrom2Nix {
     pname = "tslime-vim";
-    version = "2018-07-23";
+    version = "2020-09-09";
     src = fetchFromGitHub {
       owner = "jgdavey";
       repo = "tslime.vim";
-      rev = "28e9eba642a791c6a6b044433dce8e5451b26fb0";
-      sha256 = "1y5xikryv6851d0rjk9c64agawshp5208mwym6ma9ngs7s3s1l4x";
+      rev = "9b2b99e409336584103b83c597fdb6234875ae25";
+      sha256 = "048ycam0awcf98zhha6c5n1fk366w559bmjcanik2sqlqw1f74as";
     };
     meta.homepage = "https://github.com/jgdavey/tslime.vim/";
   };
 
   tsuquyomi = buildVimPluginFrom2Nix {
     pname = "tsuquyomi";
-    version = "2020-03-10";
+    version = "2020-10-16";
     src = fetchFromGitHub {
       owner = "Quramy";
       repo = "tsuquyomi";
-      rev = "85fffd5939c8fc5750b35a937b965af2ad5b0b15";
-      sha256 = "1j5wdh0xa5yld4fy2msyjf1qvj8zx0iccc1bw63zzbrcl6rs30gx";
+      rev = "144526df5340d3bd0b413e6127c0393de171889a";
+      sha256 = "1amizvbpv4mwpi39x9xn5aj1kjkgl4sgh54irnhs4ga76zn0s09d";
     };
     meta.homepage = "https://github.com/Quramy/tsuquyomi/";
   };
 
+  twilight-nvim = buildVimPluginFrom2Nix {
+    pname = "twilight-nvim";
+    version = "2021-07-17";
+    src = fetchFromGitHub {
+      owner = "folke";
+      repo = "twilight.nvim";
+      rev = "f722fa24411d0423a3d2daf6f1b5f8b11df9db2b";
+      sha256 = "0k2vbhs960h346w37ky2mpv1syzjxi19zl9zmnvlsy6annqd892x";
+    };
+    meta.homepage = "https://github.com/folke/twilight.nvim/";
+  };
+
   typescript-vim = buildVimPluginFrom2Nix {
     pname = "typescript-vim";
-    version = "2020-02-13";
+    version = "2020-12-08";
     src = fetchFromGitHub {
       owner = "leafgarland";
       repo = "typescript-vim";
-      rev = "17d85d8051ba21283e62a9101734981e10b732fd";
-      sha256 = "17z8ygns97wlnm4vq7kgkx3ymnbb2f6imxn02fc0iywkrhdqv7mj";
+      rev = "67e81e4292186889a1a519e1bf3a600d671237eb";
+      sha256 = "1mpp4n7qgz3yq4vka8h5sbngc14w5bzd9s9c2csbv9ds8w0lpi0g";
     };
     meta.homepage = "https://github.com/leafgarland/typescript-vim/";
   };
 
   ultisnips = buildVimPluginFrom2Nix {
     pname = "ultisnips";
-    version = "2020-05-19";
+    version = "2021-06-15";
     src = fetchFromGitHub {
       owner = "SirVer";
       repo = "ultisnips";
-      rev = "e83c82099d9bd43dc7895e3cb5b114ee5a2a07c6";
-      sha256 = "0a9fqgg8sg8s19q9inxyzl6lqdsnxs22csqs2rss1qz9dsic4yrh";
+      rev = "aec91caefec10741722927cf073703a528fe7a8f";
+      sha256 = "1a5527adkaawgcj1pm5qp0qiq084x70ljj7a35abjil20f3s7y85";
     };
     meta.homepage = "https://github.com/SirVer/ultisnips/";
   };
 
   undotree = buildVimPluginFrom2Nix {
     pname = "undotree";
-    version = "2019-03-13";
+    version = "2021-05-28";
     src = fetchFromGitHub {
       owner = "mbbill";
       repo = "undotree";
-      rev = "be23eacb2a63380bd79e207a738c728214ecc9d3";
-      sha256 = "00zyvff32zp7pyjzkq8da9xhr378mlpi8gj717yfr9wbwwarwfd7";
+      rev = "1cc3b9069e4356efd4ce1c3c4bdbb227fb54e1e5";
+      sha256 = "0m8wc66ml2h6lsbwq452w8y9s95a4kwp4lfdw94pi4q3h5qhvkxj";
     };
     meta.homepage = "https://github.com/mbbill/undotree/";
   };
 
   unicode-vim = buildVimPluginFrom2Nix {
     pname = "unicode-vim";
-    version = "2020-08-10";
+    version = "2021-05-24";
     src = fetchFromGitHub {
       owner = "chrisbra";
       repo = "unicode.vim";
-      rev = "e9b21134f4e8bc8cd09fa6145749511ac8800f98";
-      sha256 = "0rfkd11arkmc2z2m9lz5hnqxfcp2b98hmzgf424s44xyhrn98y16";
+      rev = "62f7a3558ee4402bcaaae8638e768268f1137a0f";
+      sha256 = "1y5inpiaqvnq69n1dbpiwilqfq2hf56m7w5a6kj2fkav15pyczx7";
     };
     meta.homepage = "https://github.com/chrisbra/unicode.vim/";
   };
 
   unite-vim = buildVimPluginFrom2Nix {
     pname = "unite-vim";
-    version = "2020-06-28";
+    version = "2021-02-06";
     src = fetchFromGitHub {
       owner = "Shougo";
       repo = "unite.vim";
-      rev = "787c777ff2fedd46fc10e315bdfea339fe016d33";
-      sha256 = "1bm48d3n07i2hy7bqz6pzyl3zb5mikhplmk5fk5x09q2i47l6bqg";
+      rev = "b08814362624ded3b462addba4711647879ca308";
+      sha256 = "0hk5xhn9zfas074hgv0y6lbc1jyj5kqjg4zdix8am3s97aqr96ms";
     };
     meta.homepage = "https://github.com/Shougo/unite.vim/";
   };
@@ -3878,36 +5478,36 @@ let
 
   vCoolor-vim = buildVimPluginFrom2Nix {
     pname = "vCoolor-vim";
-    version = "2018-10-06";
+    version = "2020-10-14";
     src = fetchFromGitHub {
       owner = "KabbAmine";
       repo = "vCoolor.vim";
-      rev = "8fc037e453f4c2274f590bde4f9fb56167b14e57";
-      sha256 = "193cjxfha5xcpfjqqpyfa6xidys1zmmmwlcj7w2cxbr5j5bdnybm";
+      rev = "bc19d684af09b1e146cf72176eea1ecded84882c";
+      sha256 = "03vaghwqr3k0nls365wk4qwzmvdvdvq41q02c3l5qv2vsdikmz5i";
     };
     meta.homepage = "https://github.com/KabbAmine/vCoolor.vim/";
   };
 
   verilog_systemverilog-vim = buildVimPluginFrom2Nix {
     pname = "verilog_systemverilog-vim";
-    version = "2020-06-12";
+    version = "2021-01-16";
     src = fetchFromGitHub {
       owner = "vhda";
       repo = "verilog_systemverilog.vim";
-      rev = "c37bcf010fcb73599d690d8da6ac966dac02a07e";
-      sha256 = "1f4kicgr7wv0dprvr91wi4lmk0d9bb9f4wcng4rfkq1cdwfkqdw4";
+      rev = "0b88f2ccf81983944bf00d15ec810dd807053d19";
+      sha256 = "0zaxz1j2v8nvhd9x6bx3sj95i7h7c7029hmccls777ikyp6ynf0r";
     };
     meta.homepage = "https://github.com/vhda/verilog_systemverilog.vim/";
   };
 
   vim-abolish = buildVimPluginFrom2Nix {
     pname = "vim-abolish";
-    version = "2019-11-13";
+    version = "2021-03-20";
     src = fetchFromGitHub {
       owner = "tpope";
       repo = "vim-abolish";
-      rev = "7e4da6e78002344d499af9b6d8d5d6fcd7c92125";
-      sha256 = "1n35igng3a6d5y4nh5pyb09s6khgcwbr3v0lnh33qb51cv4cnjh4";
+      rev = "3f0c8faadf0c5b68bcf40785c1c42e3731bfa522";
+      sha256 = "1w9zim2v1av3f43z8q7zh0ia8dgjxjwnvmzd4j3y25vy25avn0lb";
     };
     meta.homepage = "https://github.com/tpope/vim-abolish/";
   };
@@ -4140,38 +5740,74 @@ let
     meta.homepage = "https://github.com/MarcWeber/vim-addon-xdebug/";
   };
 
+  vim-after-object = buildVimPluginFrom2Nix {
+    pname = "vim-after-object";
+    version = "2018-09-17";
+    src = fetchFromGitHub {
+      owner = "junegunn";
+      repo = "vim-after-object";
+      rev = "7f52106df8a05e9bc1c53960c31a55f77e303903";
+      sha256 = "13726m0c73n5pw9gil4ahbg71ibklrwkw9yvbr6qxxvn6qyijpdy";
+    };
+    meta.homepage = "https://github.com/junegunn/vim-after-object/";
+  };
+
   vim-airline = buildVimPluginFrom2Nix {
     pname = "vim-airline";
-    version = "2020-08-20";
+    version = "2021-07-18";
     src = fetchFromGitHub {
       owner = "vim-airline";
       repo = "vim-airline";
-      rev = "ef4666bd86ea1d6ac06a709cde0cde3df537c9e3";
-      sha256 = "0rql6vbfr78pnjpbavpkdh47bh4jlzcg5pjf7xcl0273v03b6rbf";
+      rev = "b861f9d2483a8b066f7b5b4dbae8990ff21455c5";
+      sha256 = "0rz7p95ks4ymdwz7aqahc782msdz70qx25807cwvqh1gc9x887vq";
     };
     meta.homepage = "https://github.com/vim-airline/vim-airline/";
   };
 
+  vim-airline-clock = buildVimPluginFrom2Nix {
+    pname = "vim-airline-clock";
+    version = "2021-04-14";
+    src = fetchFromGitHub {
+      owner = "enricobacis";
+      repo = "vim-airline-clock";
+      rev = "c37797d40aa882a71fc3fba0cc27abc637886623";
+      sha256 = "0rj53x4b0vjfrjvpr09vlz69r3y2rym4dab5lyx0sp3sgz9jqizm";
+    };
+    meta.homepage = "https://github.com/enricobacis/vim-airline-clock/";
+  };
+
   vim-airline-themes = buildVimPluginFrom2Nix {
     pname = "vim-airline-themes";
-    version = "2020-06-26";
+    version = "2021-07-13";
     src = fetchFromGitHub {
       owner = "vim-airline";
       repo = "vim-airline-themes";
-      rev = "04fa4fc40f21d9490954213c1ee06c7fdea66a6d";
-      sha256 = "0dzckj0449rw37v5kwmfm5wa9spfhsbfr56i30mb063zmv8wk551";
+      rev = "97cf3e6e638f936187d5f6e9b5eb1bdf0a4df256";
+      sha256 = "0cbxjb1q7xlxykzq4ab4n3ny768ysf97f7h7d9spfmw286j3c2wi";
     };
     meta.homepage = "https://github.com/vim-airline/vim-airline-themes/";
   };
 
+  vim-alias = buildVimPluginFrom2Nix {
+    pname = "vim-alias";
+    version = "2021-05-25";
+    src = fetchFromGitHub {
+      owner = "Konfekt";
+      repo = "vim-alias";
+      rev = "9d1a86284c223fad488137075867ba1c1bd20599";
+      sha256 = "1fqa39j3ax7cvj7bn33r545zwbplmf4b6n7z5jgqqn8h03hsq7x1";
+    };
+    meta.homepage = "https://github.com/Konfekt/vim-alias/";
+  };
+
   vim-android = buildVimPluginFrom2Nix {
     pname = "vim-android";
-    version = "2020-04-25";
+    version = "2021-07-10";
     src = fetchFromGitHub {
       owner = "hsanson";
       repo = "vim-android";
-      rev = "1e5ee4f2a3281201aeb71766d45800e192c103f2";
-      sha256 = "1d187w74y0viv502gqxfqi0kyak0lyi0dbpcfkjd9c0fjbqrydd6";
+      rev = "9be0a3c46a45c7a790022e5e3e293635469446fb";
+      sha256 = "16xgidkd2v2g5zljfpdx82nai7cxq4nzw1irdfsdllv4ns9q27si";
     };
     meta.homepage = "https://github.com/hsanson/vim-android/";
   };
@@ -4188,6 +5824,18 @@ let
     meta.homepage = "https://github.com/osyo-manga/vim-anzu/";
   };
 
+  vim-apm = buildVimPluginFrom2Nix {
+    pname = "vim-apm";
+    version = "2020-09-28";
+    src = fetchFromGitHub {
+      owner = "ThePrimeagen";
+      repo = "vim-apm";
+      rev = "2da35c35febbe98a6704495cd4e0b9526a0651e3";
+      sha256 = "09amrb7bzrnwga8cm21fm4ylp2l0jd7cyfsf43fcym3f1k0bycwb";
+    };
+    meta.homepage = "https://github.com/ThePrimeagen/vim-apm/";
+  };
+
   vim-asterisk = buildVimPluginFrom2Nix {
     pname = "vim-asterisk";
     version = "2020-02-03";
@@ -4214,14 +5862,14 @@ let
 
   vim-autoformat = buildVimPluginFrom2Nix {
     pname = "vim-autoformat";
-    version = "2020-07-29";
+    version = "2021-07-22";
     src = fetchFromGitHub {
-      owner = "Chiel92";
+      owner = "vim-autoformat";
       repo = "vim-autoformat";
-      rev = "273ccae26d6b5ab10bb48479c0ff5971018e3c5a";
-      sha256 = "07fldl6fsi3ns2zx4va69g01gb5mdsva8qpyjmryhn08l2qz0c40";
+      rev = "80ba8b13a9699db20754623a0933095be65fc203";
+      sha256 = "0crlkxc55lk37vy52yxwpp84bc3rd7a5am71xj9zl29a4xap5mdp";
     };
-    meta.homepage = "https://github.com/Chiel92/vim-autoformat/";
+    meta.homepage = "https://github.com/vim-autoformat/vim-autoformat/";
   };
 
   vim-automkdir = buildVimPluginFrom2Nix {
@@ -4236,26 +5884,50 @@ let
     meta.homepage = "https://github.com/benizi/vim-automkdir/";
   };
 
+  vim-autoswap = buildVimPluginFrom2Nix {
+    pname = "vim-autoswap";
+    version = "2019-01-09";
+    src = fetchFromGitHub {
+      owner = "gioele";
+      repo = "vim-autoswap";
+      rev = "e587e4b14a605d8921942ba65a37583813289272";
+      sha256 = "0l0ijbdl2s9p5i3cxfkq8jncncz38qprp51whbjcda485d1knk9n";
+    };
+    meta.homepage = "https://github.com/gioele/vim-autoswap/";
+  };
+
   vim-bazel = buildVimPluginFrom2Nix {
     pname = "vim-bazel";
-    version = "2019-08-14";
+    version = "2021-01-31";
     src = fetchFromGitHub {
       owner = "bazelbuild";
       repo = "vim-bazel";
-      rev = "7c4987b4266d117a9f1d4c7fe7f4dfba33dfc8c8";
-      sha256 = "182w8ibr34z86nmx6byabkah0q9fgrzml8m2ardaqzqjqr2ya5yg";
+      rev = "58c750d13ec2337ba3e5992f96891bbb843a9dbf";
+      sha256 = "0xsgj1j8xamkri75cjnih5xzwp8y7g1i7hgbbbmknz5d8jm3p204";
     };
     meta.homepage = "https://github.com/bazelbuild/vim-bazel/";
   };
 
+  vim-bbye = buildVimPluginFrom2Nix {
+    pname = "vim-bbye";
+    version = "2018-03-03";
+    src = fetchFromGitHub {
+      owner = "moll";
+      repo = "vim-bbye";
+      rev = "25ef93ac5a87526111f43e5110675032dbcacf56";
+      sha256 = "0dlifpbd05fcgndpkgb31ww8p90pwdbizmgkkq00qkmvzm1ik4y4";
+    };
+    meta.homepage = "https://github.com/moll/vim-bbye/";
+  };
+
   vim-beancount = buildVimPluginFrom2Nix {
     pname = "vim-beancount";
-    version = "2020-08-06";
+    version = "2021-04-29";
     src = fetchFromGitHub {
       owner = "nathangrigg";
       repo = "vim-beancount";
-      rev = "6d762beaa526d4e56280619aa62b1013b50457b7";
-      sha256 = "0r4ziynmil432k1xjglqjx0bh5069aav3k9r58ksqg716w4zvzys";
+      rev = "2f970a0c826275f7d07fa145ba9a35c15b15232d";
+      sha256 = "0fzacrlfr8fy5j1kps1mbkik0ln7lgd9c9jv74xd3mrz50hzqzby";
     };
     meta.homepage = "https://github.com/nathangrigg/vim-beancount/";
   };
@@ -4272,14 +5944,26 @@ let
     meta.homepage = "https://github.com/ntpeters/vim-better-whitespace/";
   };
 
+  vim-bracketed-paste = buildVimPluginFrom2Nix {
+    pname = "vim-bracketed-paste";
+    version = "2018-05-22";
+    src = fetchFromGitHub {
+      owner = "ConradIrwin";
+      repo = "vim-bracketed-paste";
+      rev = "c4c639f3cacd1b874ed6f5f196fac772e089c932";
+      sha256 = "1hhi7ab36iscv9l7i64qymckccnjs9pzv0ccnap9gj5xigwz6p9h";
+    };
+    meta.homepage = "https://github.com/ConradIrwin/vim-bracketed-paste/";
+  };
+
   vim-bsv = buildVimPluginFrom2Nix {
     pname = "vim-bsv";
-    version = "2019-07-11";
+    version = "2020-11-08";
     src = fetchFromGitHub {
       owner = "mtikekar";
       repo = "vim-bsv";
-      rev = "dc775cb06891dd0923b5e2a882f5dcee6451540a";
-      sha256 = "18wsbvypi62nwgcazw2m47d6k8ymlv1zwabs2gwl931n710ldkfc";
+      rev = "b03893b98f5b772297e48671a9c5f92f1c7d10eb";
+      sha256 = "1cd0jmxmb30c50a0ssa96a34qm2r3vasnn0x6ah9azx75k4anrcx";
     };
     meta.homepage = "https://github.com/mtikekar/vim-bsv/";
   };
@@ -4320,26 +6004,38 @@ let
     meta.homepage = "https://github.com/qpkorr/vim-bufkill/";
   };
 
+  vim-capslock = buildVimPluginFrom2Nix {
+    pname = "vim-capslock";
+    version = "2021-07-13";
+    src = fetchFromGitHub {
+      owner = "tpope";
+      repo = "vim-capslock";
+      rev = "a910e686986b239a7885e67ab6914638f88e914b";
+      sha256 = "0aiqs4m5vfc22lcjkb2iphpb2qi7bz994lbjr2frsb8g8h508h18";
+    };
+    meta.homepage = "https://github.com/tpope/vim-capslock/";
+  };
+
   vim-carbon-now-sh = buildVimPluginFrom2Nix {
     pname = "vim-carbon-now-sh";
-    version = "2019-02-14";
+    version = "2021-06-18";
     src = fetchFromGitHub {
       owner = "kristijanhusak";
       repo = "vim-carbon-now-sh";
-      rev = "789b15d17966a1100ed2889d670923dd6d9ff063";
-      sha256 = "1vfhdqv8mf8w0s4nv8k2rqzvahvh1lxm4zsd3ks1n334f580w8x4";
+      rev = "d63101f65513cffe8834627ee127c067a7be5ad1";
+      sha256 = "1dvhhybykq9lppncxr3klh0x5j7rdw0dh55xhn58d4k3jdfwvrh8";
     };
     meta.homepage = "https://github.com/kristijanhusak/vim-carbon-now-sh/";
   };
 
   vim-choosewin = buildVimPluginFrom2Nix {
     pname = "vim-choosewin";
-    version = "2019-09-17";
+    version = "2021-04-22";
     src = fetchFromGitHub {
       owner = "t9md";
       repo = "vim-choosewin";
-      rev = "f91cdb9be92ce3bb9bccba16e8c659d5e8d7454f";
-      sha256 = "1nq1vpwv6h5sc849y26nzkrmr9w3aj6w32apyih9kx0jh4ybv0xs";
+      rev = "839da609d9b811370216bdd9d4512ec2d0ac8644";
+      sha256 = "1451ji3a7waxz1kc8l2hw96fff54xwa7q8glrin8qxn48fc4605n";
     };
     meta.homepage = "https://github.com/t9md/vim-choosewin/";
   };
@@ -4358,12 +6054,12 @@ let
 
   vim-clap = buildVimPluginFrom2Nix {
     pname = "vim-clap";
-    version = "2020-08-20";
+    version = "2021-07-22";
     src = fetchFromGitHub {
       owner = "liuchengxu";
       repo = "vim-clap";
-      rev = "e690bde9e7838894b68f9d3d4d1a131e86c13ffb";
-      sha256 = "1pl32zgwn7ffyfn8xqqlck48sqv78jv8v4pfjay0rgr3jvaxis1v";
+      rev = "111ef624c0d39fe5fcf869fba01c16036e106fbd";
+      sha256 = "0xgdvk362fk6491pk5dv46a2cg77gk57gk6dvhzf3ldi5zshckfj";
     };
     meta.homepage = "https://github.com/liuchengxu/vim-clap/";
   };
@@ -4392,38 +6088,62 @@ let
     meta.homepage = "https://github.com/guns/vim-clojure-static/";
   };
 
+  vim-closer = buildVimPluginFrom2Nix {
+    pname = "vim-closer";
+    version = "2021-03-28";
+    src = fetchFromGitHub {
+      owner = "rstacruz";
+      repo = "vim-closer";
+      rev = "26bba80f4d987f12141da522d69aa1fa4aff4436";
+      sha256 = "1pyi5akzvvkdngm577m1c1210r0yypdwsvp1y7ag6gdfnls75xws";
+    };
+    meta.homepage = "https://github.com/rstacruz/vim-closer/";
+  };
+
   vim-closetag = buildVimPluginFrom2Nix {
     pname = "vim-closetag";
-    version = "2020-04-09";
+    version = "2021-03-24";
     src = fetchFromGitHub {
       owner = "alvan";
       repo = "vim-closetag";
-      rev = "90cf416c03ed841ad7f3d44f4d6f3192f216176a";
-      sha256 = "0kxba7s0s66m2k4j1v8iwq6m5j9843ha67br03dg7d9ya4qiyyw9";
+      rev = "c0779ef575d5c239162f4ca3506cfb4a95d45a58";
+      sha256 = "1mkn6d7m23ak06pl8i328hd9x6qx5fzrg8ijz32lgd4a56k98n6i";
     };
     meta.homepage = "https://github.com/alvan/vim-closetag/";
   };
 
+  vim-code-dark = buildVimPluginFrom2Nix {
+    pname = "vim-code-dark";
+    version = "2021-04-09";
+    src = fetchFromGitHub {
+      owner = "tomasiser";
+      repo = "vim-code-dark";
+      rev = "670fed53a2ae67542a78ef7b642f4aca6b6326dc";
+      sha256 = "0zdhhv3h8lzba8dpv0amc5abpkzayp6gbjw6qv712p638zyr99vw";
+    };
+    meta.homepage = "https://github.com/tomasiser/vim-code-dark/";
+  };
+
   vim-codefmt = buildVimPluginFrom2Nix {
     pname = "vim-codefmt";
-    version = "2020-07-29";
+    version = "2021-04-15";
     src = fetchFromGitHub {
       owner = "google";
       repo = "vim-codefmt";
-      rev = "a43392a7c4d73b91835e7bd993889646c8a907fd";
-      sha256 = "1b850c36xgydn2ibdxzqprzsi65hz9sfhvcj69zm3rqbh47hqi98";
+      rev = "793d816524934e6553c76437120eea5df8e85a1e";
+      sha256 = "174wq1sq862s474bhfq0w8lnmcilq75gf2sdp1hws7wj0fvn10h3";
     };
     meta.homepage = "https://github.com/google/vim-codefmt/";
   };
 
   vim-coffee-script = buildVimPluginFrom2Nix {
     pname = "vim-coffee-script";
-    version = "2018-02-27";
+    version = "2020-12-20";
     src = fetchFromGitHub {
       owner = "kchmck";
       repo = "vim-coffee-script";
-      rev = "9e3b4de2a476caeb6ff21b5da20966d7c67a98bb";
-      sha256 = "1yzhyi12r508r2yjkzbcnddv3q4whjf3kchp23xs0snhwd9b981x";
+      rev = "28421258a8dde5a50deafbfc19cd9873cacfaa79";
+      sha256 = "07k7whr32x782jyvzl2vg6c2pdrj5jynf4b4f2my7502rgv03w02";
     };
     meta.homepage = "https://github.com/kchmck/vim-coffee-script/";
   };
@@ -4478,16 +6198,28 @@ let
 
   vim-commentary = buildVimPluginFrom2Nix {
     pname = "vim-commentary";
-    version = "2019-11-18";
+    version = "2021-03-23";
     src = fetchFromGitHub {
       owner = "tpope";
       repo = "vim-commentary";
-      rev = "f8238d70f873969fb41bf6a6b07ca63a4c0b82b1";
-      sha256 = "09d81q9na7pvvrmxxqy09ffdzsx5v5dikinb704c9wm4ys2bidr9";
+      rev = "349340debb34f6302931f0eb7139b2c11dfdf427";
+      sha256 = "01lpfcn2hmvxddcf97f4qx5vksxj1hwrxb0c8ri59z9lb9z2hgjd";
     };
     meta.homepage = "https://github.com/tpope/vim-commentary/";
   };
 
+  vim-concourse = buildVimPluginFrom2Nix {
+    pname = "vim-concourse";
+    version = "2016-11-21";
+    src = fetchFromGitHub {
+      owner = "luan";
+      repo = "vim-concourse";
+      rev = "7f61ca5d291fddd6d7ff04b03bf347f04bfe4344";
+      sha256 = "0ilf7r0lwx8f7shqxbs9av3gsnary8nbh3xhrfzwsivh8psi7qf6";
+    };
+    meta.homepage = "https://github.com/luan/vim-concourse/";
+  };
+
   vim-cool = buildVimPluginFrom2Nix {
     pname = "vim-cool";
     version = "2020-04-18";
@@ -4502,24 +6234,24 @@ let
 
   vim-cpp-enhanced-highlight = buildVimPluginFrom2Nix {
     pname = "vim-cpp-enhanced-highlight";
-    version = "2019-11-14";
+    version = "2021-04-19";
     src = fetchFromGitHub {
       owner = "octol";
       repo = "vim-cpp-enhanced-highlight";
-      rev = "27e0ffc215b81fa5aa87eca396acd4421d36c060";
-      sha256 = "15nyd4yssswyi4brkch09rca0qh7p77li4xyrivmiapkr4a60vwb";
+      rev = "4b7314a497ea2dd0a6911ccb94ce83b2d8684617";
+      sha256 = "1fvy56r8p0fp8ipsfw6wiq6ppv541849cazzmp3da203ixs87wd1";
     };
     meta.homepage = "https://github.com/octol/vim-cpp-enhanced-highlight/";
   };
 
   vim-crates = buildVimPluginFrom2Nix {
     pname = "vim-crates";
-    version = "2019-11-11";
+    version = "2021-05-07";
     src = fetchFromGitHub {
       owner = "mhinz";
       repo = "vim-crates";
-      rev = "addbb157d0652ce5288c5b5b6f32f8716eb47898";
-      sha256 = "1pczfm9vjjna3xdqym9h69gi47kiwi97lzjf9jjlkmyg1s4pwlsp";
+      rev = "f6f13113997495654a58f27d7169532c0d125214";
+      sha256 = "1acm52hlv0qhisgcy8xwck6zv29b8x40bcngg7z3invv47b1gi7k";
     };
     meta.homepage = "https://github.com/mhinz/vim-crates/";
   };
@@ -4538,24 +6270,24 @@ let
 
   vim-css-color = buildVimPluginFrom2Nix {
     pname = "vim-css-color";
-    version = "2020-08-16";
+    version = "2021-05-30";
     src = fetchFromGitHub {
       owner = "ap";
       repo = "vim-css-color";
-      rev = "4694c6ea03a065a3f6ddbebce56797a21e8241ef";
-      sha256 = "12bzxrdvb9s0d8llkq6h63g86qxs0gv9x7401apl6qrs79prrb4a";
+      rev = "7337c35588e9027b516f80f03c3b9621a271e168";
+      sha256 = "05np2fr8q8r8n5mlspjywibl7hx54liy77wxvjya7n2p085n49ks";
     };
     meta.homepage = "https://github.com/ap/vim-css-color/";
   };
 
   vim-cue = buildVimPluginFrom2Nix {
     pname = "vim-cue";
-    version = "2020-07-20";
+    version = "2021-06-18";
     src = fetchFromGitHub {
       owner = "jjo";
       repo = "vim-cue";
-      rev = "339edaf79ff1287ce6a23baaa421e68463cf1a2e";
-      sha256 = "0jr30plym17fdg90smb7g35yi9iz9b7s4md6cxj83zg4vj2hyjh1";
+      rev = "bd1a62303d096aa24fe4160a475645087f8770b3";
+      sha256 = "01f89ki0w2j58pfdvb8w0sf1x5nqgqh3bldinifpd4pysnqhniai";
     };
     meta.homepage = "https://github.com/jjo/vim-cue/";
   };
@@ -4574,28 +6306,52 @@ let
 
   vim-cute-python = buildVimPluginFrom2Nix {
     pname = "vim-cute-python";
-    version = "2016-04-04";
+    version = "2020-11-17";
     src = fetchFromGitHub {
       owner = "ehamberg";
       repo = "vim-cute-python";
-      rev = "d7a6163f794500447242df2bedbe20bd751b92da";
-      sha256 = "1jrfd6z84cdzn3yxdfp0xfxygscq7s8kbzxk37hf9cf5pl9ln0qf";
+      rev = "18cd5e0f63ae5ae74398051c0de9a27d1746e5a5";
+      sha256 = "1svr8r1rva6lq9ypzazrlw5gabnipjyhd2bs43cpfcwx0ms04d2k";
     };
     meta.homepage = "https://github.com/ehamberg/vim-cute-python/";
   };
 
   vim-dadbod = buildVimPluginFrom2Nix {
     pname = "vim-dadbod";
-    version = "2020-04-30";
+    version = "2021-06-02";
     src = fetchFromGitHub {
       owner = "tpope";
       repo = "vim-dadbod";
-      rev = "779e8d6efc89b68be951ac1419baae75541cf51c";
-      sha256 = "019k26g88y713wy3q06sbab82dgcgsj7f08g9xr2z2xsjmijp8g4";
+      rev = "9e4fdb8ab029c0436728a96e1c92677737c2e784";
+      sha256 = "1rmiza1km214mvlrdaqycv5hk8ki35giab11b9ggwcigbh743h01";
     };
     meta.homepage = "https://github.com/tpope/vim-dadbod/";
   };
 
+  vim-dadbod-completion = buildVimPluginFrom2Nix {
+    pname = "vim-dadbod-completion";
+    version = "2021-05-12";
+    src = fetchFromGitHub {
+      owner = "kristijanhusak";
+      repo = "vim-dadbod-completion";
+      rev = "a3f8ea8e666f4bebe12739d8854a4bd31544dfbb";
+      sha256 = "04m7drx86r8zqq7rq29wa9zq5ckzf5bqxzyhdc5hqn82jxcvxmpz";
+    };
+    meta.homepage = "https://github.com/kristijanhusak/vim-dadbod-completion/";
+  };
+
+  vim-dadbod-ui = buildVimPluginFrom2Nix {
+    pname = "vim-dadbod-ui";
+    version = "2021-05-12";
+    src = fetchFromGitHub {
+      owner = "kristijanhusak";
+      repo = "vim-dadbod-ui";
+      rev = "09fb2f51dcd022a6be20b48a730df493f4b3ca2d";
+      sha256 = "1bsy8illa9xsawx6lfs67y2xri38fpxdb4xz25ajy43snls41say";
+    };
+    meta.homepage = "https://github.com/kristijanhusak/vim-dadbod-ui/";
+  };
+
   vim-dasht = buildVimPluginFrom2Nix {
     pname = "vim-dasht";
     version = "2020-07-11";
@@ -4608,14 +6364,38 @@ let
     meta.homepage = "https://github.com/sunaku/vim-dasht/";
   };
 
+  vim-DetectSpellLang = buildVimPluginFrom2Nix {
+    pname = "vim-DetectSpellLang";
+    version = "2020-01-13";
+    src = fetchFromGitHub {
+      owner = "konfekt";
+      repo = "vim-DetectSpellLang";
+      rev = "d8b545ef138a9ff013f8243f85c79b277b26f5e1";
+      sha256 = "0c1bxryw4rg4cyql7vfp2gwhkl2d0b8inc6shmgfy7jg4svhzs0w";
+    };
+    meta.homepage = "https://github.com/konfekt/vim-DetectSpellLang/";
+  };
+
+  vim-deus = buildVimPluginFrom2Nix {
+    pname = "vim-deus";
+    version = "2021-03-28";
+    src = fetchFromGitHub {
+      owner = "ajmwagar";
+      repo = "vim-deus";
+      rev = "1be965e7bc1c01e7db5e46dcd0e50d32d4eef434";
+      sha256 = "1h0imrxhxw81hkh9xl75rcnx7ll5fry6hcf7flx84n6nawvfzyvm";
+    };
+    meta.homepage = "https://github.com/ajmwagar/vim-deus/";
+  };
+
   vim-devicons = buildVimPluginFrom2Nix {
     pname = "vim-devicons";
-    version = "2020-08-14";
+    version = "2021-07-16";
     src = fetchFromGitHub {
       owner = "ryanoasis";
       repo = "vim-devicons";
-      rev = "308526367703698554d19f15f692ee3c45a598cb";
-      sha256 = "0b6ng6qgwx4fb9fs7b7m5k3dj7ycq0zw5y0jaqqqn6asp8wmf51b";
+      rev = "0a11dae811e6c8b939fe80aeb750469f8ca44d67";
+      sha256 = "07lgjzi10h1gfvr2ij1pc4qxj63n4bg3jvj01ilj6yas56a3hk09";
     };
     meta.homepage = "https://github.com/ryanoasis/vim-devicons/";
   };
@@ -4634,52 +6414,64 @@ let
 
   vim-dirdiff = buildVimPluginFrom2Nix {
     pname = "vim-dirdiff";
-    version = "2020-03-31";
+    version = "2021-06-03";
     src = fetchFromGitHub {
       owner = "will133";
       repo = "vim-dirdiff";
-      rev = "5bf29d8a41b4ec93e6c04b9d4a6c626b408c27c5";
-      sha256 = "0nvhsj12gsjgncpmvg8b1qz675ghfcsib5gj22p7j4l4brih563r";
+      rev = "84bc8999fde4b3c2d8b228b560278ab30c7ea4c9";
+      sha256 = "06qjfz94hqsmg43dpj347cvc72p16xp76zq216js35yphv6sgx65";
     };
     meta.homepage = "https://github.com/will133/vim-dirdiff/";
   };
 
   vim-dirvish = buildVimPluginFrom2Nix {
     pname = "vim-dirvish";
-    version = "2020-06-30";
+    version = "2021-07-03";
     src = fetchFromGitHub {
       owner = "justinmk";
       repo = "vim-dirvish";
-      rev = "7c4dc5945b15a6b97ebef860070d30e36da01788";
-      sha256 = "0mg8fdfsr59015m309kr9v5akwc3zfwfygn36x47c8q2bwjjr052";
+      rev = "ff3f5cdff71d7a9710a012f2ff11e1294f70c7a5";
+      sha256 = "0hxbwwml7qsjyjc88bmsl6ikc4bhpz17xh8qql9jsi3mkna66krh";
     };
     meta.homepage = "https://github.com/justinmk/vim-dirvish/";
   };
 
   vim-dirvish-git = buildVimPluginFrom2Nix {
     pname = "vim-dirvish-git";
-    version = "2020-06-04";
+    version = "2021-05-22";
     src = fetchFromGitHub {
       owner = "kristijanhusak";
       repo = "vim-dirvish-git";
-      rev = "8a3a8b88ed0815500c2912658fe0de7583ee1d45";
-      sha256 = "1z8a718kam2r87kimhayxndjbmpgk0mgwrc5v52bid584xml584k";
+      rev = "1d938c826503059660d89f186d2e8affc686a0e8";
+      sha256 = "11vd07cy8bylh75hznddpkpjyr4jg8sgcq12rv1pig4p6wh4lzm5";
     };
     meta.homepage = "https://github.com/kristijanhusak/vim-dirvish-git/";
   };
 
   vim-dispatch = buildVimPluginFrom2Nix {
     pname = "vim-dispatch";
-    version = "2020-04-19";
+    version = "2021-04-17";
     src = fetchFromGitHub {
       owner = "tpope";
       repo = "vim-dispatch";
-      rev = "fe6a34322829e466a7e8ce710a6ac5eabddff9fd";
-      sha256 = "1m0dfm8r3d8zph6i4ln3jqfzs8hxbkq9rvxpij1m2vvk2hgy2nf5";
+      rev = "250ea269e206445d10700b299afd3eb993e939ad";
+      sha256 = "1fcp2nsgamkxm7x0mn1n3xp02dc7x773cdp9p30ikqn44pzgyq10";
     };
     meta.homepage = "https://github.com/tpope/vim-dispatch/";
   };
 
+  vim-dispatch-neovim = buildVimPluginFrom2Nix {
+    pname = "vim-dispatch-neovim";
+    version = "2017-01-18";
+    src = fetchFromGitHub {
+      owner = "radenling";
+      repo = "vim-dispatch-neovim";
+      rev = "c8c4e21a95c25032a041002f9bf6e45a75a73021";
+      sha256 = "111n3f7lv9nkpj200xh0fwbi3scjqyivpw5fwdjdyiqzd6qabxml";
+    };
+    meta.homepage = "https://github.com/radenling/vim-dispatch-neovim/";
+  };
+
   vim-docbk = buildVimPluginFrom2Nix {
     pname = "vim-docbk";
     version = "2015-04-01";
@@ -4716,6 +6508,18 @@ let
     meta.homepage = "https://github.com/junegunn/vim-easy-align/";
   };
 
+  vim-easyescape = buildVimPluginFrom2Nix {
+    pname = "vim-easyescape";
+    version = "2020-11-22";
+    src = fetchFromGitHub {
+      owner = "zhou13";
+      repo = "vim-easyescape";
+      rev = "fd7875f1657fd54fae85088acf289b9723d8a790";
+      sha256 = "0h8kmhliicbdqhximp3d961crp6qkjjs4yciksl037ds47kzrkif";
+    };
+    meta.homepage = "https://github.com/zhou13/vim-easyescape/";
+  };
+
   vim-easygit = buildVimPluginFrom2Nix {
     pname = "vim-easygit";
     version = "2018-07-08";
@@ -4730,12 +6534,12 @@ let
 
   vim-easymotion = buildVimPluginFrom2Nix {
     pname = "vim-easymotion";
-    version = "2020-02-08";
+    version = "2020-12-17";
     src = fetchFromGitHub {
       owner = "easymotion";
       repo = "vim-easymotion";
-      rev = "dd7b4b526775bc8553e16bc402020573b04a948c";
-      sha256 = "1dhhq1y6xa3q26irclad6254q89xpnxglfd92v3bq01l4p41zcqf";
+      rev = "d75d9591e415652b25d9e0a3669355550325263d";
+      sha256 = "1j2kgh1iri0fqkbgbgvfjqgsksfipnmr1xbj554i602pnm0hbg19";
     };
     meta.homepage = "https://github.com/easymotion/vim-easymotion/";
   };
@@ -4766,60 +6570,108 @@ let
 
   vim-elixir = buildVimPluginFrom2Nix {
     pname = "vim-elixir";
-    version = "2020-04-25";
+    version = "2021-06-16";
     src = fetchFromGitHub {
       owner = "elixir-editors";
       repo = "vim-elixir";
-      rev = "53c530f79cfcd12498e31fcf8ecc466eba34c75c";
-      sha256 = "13yr7iwi4w0m4zgkq1ia74qcca9wh9k0bz2y1yvm81db0bllsf6s";
+      rev = "58084475c1e523caeac97ffff62c154f7f8fcc66";
+      sha256 = "09nv87iqjnwpfkvbspgwxibjlf1aj4syw0nv885fyw8fjpbhf06l";
     };
     meta.homepage = "https://github.com/elixir-editors/vim-elixir/";
   };
 
   vim-elm-syntax = buildVimPluginFrom2Nix {
     pname = "vim-elm-syntax";
-    version = "2020-06-10";
+    version = "2021-01-09";
     src = fetchFromGitHub {
       owner = "andys8";
       repo = "vim-elm-syntax";
-      rev = "68cd8988fe9eaa190052fadaee0fea2c21338d4c";
-      sha256 = "0yhvx8k83xfzmgy10r9mz0rjagbyzx5rrmn8123vw49ncksvw49q";
+      rev = "b65370b5292730ef35cbdb969da05b52d77d51dc";
+      sha256 = "0nd3ig7zpx49dmgwyqhs3545x64jxbrrgzd9fch4ihb6bhd4j3fr";
     };
     meta.homepage = "https://github.com/andys8/vim-elm-syntax/";
   };
 
   vim-endwise = buildVimPluginFrom2Nix {
     pname = "vim-endwise";
-    version = "2020-04-19";
+    version = "2021-03-06";
     src = fetchFromGitHub {
       owner = "tpope";
       repo = "vim-endwise";
-      rev = "97180a73ad26e1dcc1eebe8de201f7189eb08344";
-      sha256 = "1f9nwp9qiip4alkpacwaq2nzsrx80a4cdwyrvajs6lrk48dv4hbw";
+      rev = "4289889a2622f9bc7c594a6dd79763781f63dfb5";
+      sha256 = "0sixr3rpcgqbaiyk7w6ghcrvllh35cb3gq9isdlwkww3dz4jyyxc";
     };
     meta.homepage = "https://github.com/tpope/vim-endwise/";
   };
 
+  vim-erlang-compiler = buildVimPluginFrom2Nix {
+    pname = "vim-erlang-compiler";
+    version = "2021-06-20";
+    src = fetchFromGitHub {
+      owner = "vim-erlang";
+      repo = "vim-erlang-compiler";
+      rev = "b334e956026f61c0bf289ffdf37ce9b2aefe01e1";
+      sha256 = "1lhy5kdq3chr1zd0f67nfzmd81jiiw4hif11rx7pkwh019wyalxx";
+    };
+    meta.homepage = "https://github.com/vim-erlang/vim-erlang-compiler/";
+  };
+
+  vim-erlang-omnicomplete = buildVimPluginFrom2Nix {
+    pname = "vim-erlang-omnicomplete";
+    version = "2021-07-03";
+    src = fetchFromGitHub {
+      owner = "vim-erlang";
+      repo = "vim-erlang-omnicomplete";
+      rev = "7337df845b90b51f24087716564789c70ae03dc3";
+      sha256 = "00k7vr5x32qqhgp61fhbcbd2rfjs42lpig3k5jd6008hhpm2gw4j";
+    };
+    meta.homepage = "https://github.com/vim-erlang/vim-erlang-omnicomplete/";
+  };
+
+  vim-erlang-runtime = buildVimPluginFrom2Nix {
+    pname = "vim-erlang-runtime";
+    version = "2021-01-08";
+    src = fetchFromGitHub {
+      owner = "vim-erlang";
+      repo = "vim-erlang-runtime";
+      rev = "47c643f51e4480541fc81e352ec5b2a361544d0b";
+      sha256 = "0xlxkdqjq8fp9fpkhqv5nd2ipiq8nw1bdzd7hqibizwcdsisf91s";
+    };
+    meta.homepage = "https://github.com/vim-erlang/vim-erlang-runtime/";
+  };
+
+  vim-erlang-tags = buildVimPluginFrom2Nix {
+    pname = "vim-erlang-tags";
+    version = "2021-02-19";
+    src = fetchFromGitHub {
+      owner = "vim-erlang";
+      repo = "vim-erlang-tags";
+      rev = "d7eaa8f6986de0f266dac48b7dcfbf41d67ce611";
+      sha256 = "03wxy29z0rjnf3hilap7c86di7dkjwb8sdlfh74ch8vhan8h6rv0";
+    };
+    meta.homepage = "https://github.com/vim-erlang/vim-erlang-tags/";
+  };
+
   vim-eunuch = buildVimPluginFrom2Nix {
     pname = "vim-eunuch";
-    version = "2020-08-07";
+    version = "2021-04-05";
     src = fetchFromGitHub {
       owner = "tpope";
       repo = "vim-eunuch";
-      rev = "4a4bf16b499dcde371c05c77ed4083c4b5228278";
-      sha256 = "1wclxqw3b4jcj34jb830551c9bbrsm79mp7aahbqnjgq025j53x0";
+      rev = "dbbbf853fc523d312f61b4bbdf2e13297645dcde";
+      sha256 = "0lwkzxz76pcmash56p14pf54blz9v9kw17qj2i5wa8wdcymia98l";
     };
     meta.homepage = "https://github.com/tpope/vim-eunuch/";
   };
 
   vim-exchange = buildVimPluginFrom2Nix {
     pname = "vim-exchange";
-    version = "2020-06-24";
+    version = "2020-12-16";
     src = fetchFromGitHub {
       owner = "tommcdo";
       repo = "vim-exchange";
-      rev = "0e95600517aad244d947b955a2e34ec30bdd09ff";
-      sha256 = "1dh8xc5szm5rrv7xp299hcfhgp1155k5kfipzz6q2r69blhwyl1d";
+      rev = "17f1a2cc0d009cfd7f0dcda06dd0f017fcc1c70b";
+      sha256 = "0c4s9cmyx1myqz9k35waply2mv0yr3agpkv64ndhwgqbmlxyifnj";
     };
     meta.homepage = "https://github.com/tommcdo/vim-exchange/";
   };
@@ -4850,24 +6702,24 @@ let
 
   vim-fetch = buildVimPluginFrom2Nix {
     pname = "vim-fetch";
-    version = "2020-01-31";
+    version = "2021-02-12";
     src = fetchFromGitHub {
       owner = "wsdjeg";
       repo = "vim-fetch";
-      rev = "dd674b50b261275a6a75cab6929b7bb7c5c4acba";
-      sha256 = "1hadfzhzkq2n9k3yga55fsl6nm5mgl2vv975jnxsi4qgz9cwcsgr";
+      rev = "0a6ab17e84c7f4808bf05ec380121bce40b40d21";
+      sha256 = "04srlz3zaiqkv9hz6q3vdkfq02k1wj4p9mg4m8930das4nkl7a05";
     };
     meta.homepage = "https://github.com/wsdjeg/vim-fetch/";
   };
 
   vim-fireplace = buildVimPluginFrom2Nix {
     pname = "vim-fireplace";
-    version = "2020-08-04";
+    version = "2021-05-12";
     src = fetchFromGitHub {
       owner = "tpope";
       repo = "vim-fireplace";
-      rev = "8963dd3b385410e27752fb859bd5cecdd22b5f71";
-      sha256 = "0ax42ilx24cagy0m6ryda6h0fn7l8g1ckry24vfz2zp7d8y14hah";
+      rev = "07b0256b08e0da6d31200663cbe6d6f8c995a287";
+      sha256 = "0zp3ghiqyg1qf8rxx5a1hqxyz4sqqw1afbh9qzsjlw18g0va86kj";
     };
     meta.homepage = "https://github.com/tpope/vim-fireplace/";
   };
@@ -4898,12 +6750,12 @@ let
 
   vim-flake8 = buildVimPluginFrom2Nix {
     pname = "vim-flake8";
-    version = "2020-04-05";
+    version = "2021-07-06";
     src = fetchFromGitHub {
       owner = "nvie";
       repo = "vim-flake8";
-      rev = "0c7cf6dc038223b44e3c0a702fe2acf997768e8a";
-      sha256 = "14k1b7gjj1sh40qsf4wxbn0dymmc4jvsrd9pacsr6li273aiy6gq";
+      rev = "ddceec6c457fd59bc2a9321cbf817e42aa4bfd86";
+      sha256 = "0w0g0wjikvvah6fckay2slrcl7zh9f199safhfs875g6f8halj6g";
     };
     meta.homepage = "https://github.com/nvie/vim-flake8/";
   };
@@ -4922,24 +6774,36 @@ let
 
   vim-floaterm = buildVimPluginFrom2Nix {
     pname = "vim-floaterm";
-    version = "2020-08-21";
+    version = "2021-07-14";
     src = fetchFromGitHub {
       owner = "voldikss";
       repo = "vim-floaterm";
-      rev = "2de1b9bdea54baeb40bc6f3fe761309b4435d156";
-      sha256 = "09m31j8cgd8pnyd4p2rh7bj74gh27df98cjy13diljaa56jd6grr";
+      rev = "daf9389e827dd19d804ffaad19cc8b64e389da6c";
+      sha256 = "0kcjfi61md9n0fgnypamvqsc9k4mykr9wx978qna2xjb19vfkvad";
     };
     meta.homepage = "https://github.com/voldikss/vim-floaterm/";
   };
 
+  vim-flog = buildVimPluginFrom2Nix {
+    pname = "vim-flog";
+    version = "2021-05-02";
+    src = fetchFromGitHub {
+      owner = "rbong";
+      repo = "vim-flog";
+      rev = "cabecb166bde31d9fe86caac7e51284cff575da2";
+      sha256 = "13ybny4i20p6xi6rp6vzngbrjwjpikvcrhg8spj1g9n2z5wcc2xz";
+    };
+    meta.homepage = "https://github.com/rbong/vim-flog/";
+  };
+
   vim-flutter = buildVimPluginFrom2Nix {
     pname = "vim-flutter";
-    version = "2020-07-08";
+    version = "2020-09-14";
     src = fetchFromGitHub {
       owner = "thosakwe";
       repo = "vim-flutter";
-      rev = "359052369690541a9ede6e897fde4dca867a5109";
-      sha256 = "1303dskqbg1c5n3hczzw7x3gn5kl7hlfha824klwlkx91ga2jhck";
+      rev = "5a6de53adcc72742138b666b305869999fc8066e";
+      sha256 = "1zxa1gz47qpkcrzniax6q1bq9a953rypj1cfbcjb62h5ggx2rr5n";
     };
     meta.homepage = "https://github.com/thosakwe/vim-flutter/";
   };
@@ -4970,12 +6834,12 @@ let
 
   vim-fugitive = buildVimPluginFrom2Nix {
     pname = "vim-fugitive";
-    version = "2020-07-31";
+    version = "2021-07-24";
     src = fetchFromGitHub {
       owner = "tpope";
       repo = "vim-fugitive";
-      rev = "260182c65cae653ac20e6a69ba8cc6124e7ba6c2";
-      sha256 = "14dmar7d9qajjk2vy223mw7gwdcz548lcj5jg8pg7j4cyc6ffbyp";
+      rev = "75b2a9a8daf6589f9747ff4f2d068fdea54e92ea";
+      sha256 = "1c265bq5a60y7ndpvwdn54kdzb6spdfnkfdaffp47rgq0y1pfphj";
     };
     meta.homepage = "https://github.com/tpope/vim-fugitive/";
   };
@@ -4994,28 +6858,40 @@ let
 
   vim-gist = buildVimPluginFrom2Nix {
     pname = "vim-gist";
-    version = "2020-01-29";
+    version = "2020-10-04";
     src = fetchFromGitHub {
       owner = "mattn";
       repo = "vim-gist";
-      rev = "2158eceb210b0a354bc17aa4144554e5d8bb6c79";
-      sha256 = "1dz33c63q7gghz35hyrvbshqw20faccs7bvxlda5w70mkbz9h9c4";
+      rev = "4a210316550577c1b6a5cb13b09ce79fba602b9c";
+      sha256 = "1c3k2yfaxijg0c8fvh70jqmrc6zyhh57hid7rm77v2kymvimvazg";
     };
     meta.homepage = "https://github.com/mattn/vim-gist/";
   };
 
   vim-gista = buildVimPluginFrom2Nix {
     pname = "vim-gista";
-    version = "2020-01-04";
+    version = "2020-09-19";
     src = fetchFromGitHub {
       owner = "lambdalisue";
       repo = "vim-gista";
-      rev = "af13c0062a46d73384f15abee5a54e164fcaad8e";
-      sha256 = "0f3pxahsaj37iln1k3289h7pj7z4fm0z3vfd0szf1spv3hzcjapd";
+      rev = "c046de1b9d4cf97ff6f80cf3bdbb75b1094f2aaf";
+      sha256 = "0q08hs4y9d4c4zdd0lh4k054133y0455fkn47gi7h16m01g92imc";
     };
     meta.homepage = "https://github.com/lambdalisue/vim-gista/";
   };
 
+  vim-git = buildVimPluginFrom2Nix {
+    pname = "vim-git";
+    version = "2021-07-10";
+    src = fetchFromGitHub {
+      owner = "tpope";
+      repo = "vim-git";
+      rev = "75047b7d812cbe182ee04f0956bb31ba7efd46b0";
+      sha256 = "00hz040ar9ka3mcf2pgjc6iwznh7baqi6q09xkpr0pnjhm9k0bci";
+    };
+    meta.homepage = "https://github.com/tpope/vim-git/";
+  };
+
   vim-gitbranch = buildVimPluginFrom2Nix {
     pname = "vim-gitbranch";
     version = "2017-05-27";
@@ -5030,12 +6906,12 @@ let
 
   vim-gitgutter = buildVimPluginFrom2Nix {
     pname = "vim-gitgutter";
-    version = "2020-08-07";
+    version = "2021-07-12";
     src = fetchFromGitHub {
       owner = "airblade";
       repo = "vim-gitgutter";
-      rev = "8005f71aabef13f5872b3ef4802f36503a16c451";
-      sha256 = "0ns33dbkw8lc6rj6mvkgymdsl3i4g8slbh06g8h4rfn8qq5wjxbw";
+      rev = "7d9b7125ff2533f6c520573f54e91db2f13a44b0";
+      sha256 = "1ckz2b7y6y483d0ignkv8mm0xf9jbs8k3srp50m7sj24nsdadb1v";
     };
     meta.homepage = "https://github.com/airblade/vim-gitgutter/";
   };
@@ -5064,54 +6940,78 @@ let
     meta.homepage = "https://github.com/tikhomirov/vim-glsl/";
   };
 
+  vim-gnupg = buildVimPluginFrom2Nix {
+    pname = "vim-gnupg";
+    version = "2020-11-11";
+    src = fetchFromGitHub {
+      owner = "jamessan";
+      repo = "vim-gnupg";
+      rev = "96be0be1240a848da56d665b38e1b0fe7ee3f1af";
+      sha256 = "10syaaylyaqn60zhyx008863b5b1349pygg7lnaqchw6bard1135";
+    };
+    meta.homepage = "https://github.com/jamessan/vim-gnupg/";
+  };
+
   vim-go = buildVimPluginFrom2Nix {
     pname = "vim-go";
-    version = "2020-08-19";
+    version = "2021-06-28";
     src = fetchFromGitHub {
       owner = "fatih";
       repo = "vim-go";
-      rev = "7c14e8ae5de7f4562c365249c83abc4d0e0d906c";
-      sha256 = "1l96mlkfvpsa2bw9rc4m8s7abjvcfyy05gsm445rzbijqxigkknk";
+      rev = "32bcf757e455ab3b87c9201247b9a6b091d44ea0";
+      sha256 = "1ymd4dqd8725962iz12slrdgjp2sxqrrmznq18za4q14psy6dcin";
     };
     meta.homepage = "https://github.com/fatih/vim-go/";
   };
 
   vim-grammarous = buildVimPluginFrom2Nix {
     pname = "vim-grammarous";
-    version = "2019-03-30";
+    version = "2020-11-30";
     src = fetchFromGitHub {
       owner = "rhysd";
       repo = "vim-grammarous";
-      rev = "083cbee6094c9ec347d7c75af421be27d2ec7e70";
-      sha256 = "1cxycr2ijzxn9d5xgp9ri4f2i4d87a3100nsc11iwa2bzir4xsiz";
+      rev = "db46357465ce587d5325e816235b5e92415f8c05";
+      sha256 = "014g5q3kdqq4w5jvp61h26n0jfq05xz82rhwgcp3bgq0ffhrch7j";
     };
     meta.homepage = "https://github.com/rhysd/vim-grammarous/";
   };
 
   vim-graphql = buildVimPluginFrom2Nix {
     pname = "vim-graphql";
-    version = "2020-08-17";
+    version = "2021-03-19";
     src = fetchFromGitHub {
       owner = "jparise";
       repo = "vim-graphql";
-      rev = "1b9db5b2089751dc80a5dab9fa976a9750c3066c";
-      sha256 = "14bp6knckqa8rc9xwd5cnd6cnfhi0j6vgv0yl5nin47yzv0navha";
+      rev = "de5753e3fbd89f2939a43cfc2c6a2313ff129a21";
+      sha256 = "15qy6adhgfwjh6jrw9902hl67qzhdi72kqgzdk5shgfyndzar25g";
     };
     meta.homepage = "https://github.com/jparise/vim-graphql/";
   };
 
   vim-grepper = buildVimPluginFrom2Nix {
     pname = "vim-grepper";
-    version = "2020-07-12";
+    version = "2021-05-10";
     src = fetchFromGitHub {
       owner = "mhinz";
       repo = "vim-grepper";
-      rev = "e9004ce564891412cfe433cfbb97295cccd06b39";
-      sha256 = "1cs72x3wv4i11x7ch3gna1sxqn5zj3bd34smchfd00g4mf201lhs";
+      rev = "b80004c050501122d58f82712b21d0b7c8dfc019";
+      sha256 = "049552dvsk14hx4h9rp9g65xkf13n42z304lzxca69j5q6k1qrdl";
     };
     meta.homepage = "https://github.com/mhinz/vim-grepper/";
   };
 
+  vim-gruvbox8 = buildVimPluginFrom2Nix {
+    pname = "vim-gruvbox8";
+    version = "2021-06-13";
+    src = fetchFromGitHub {
+      owner = "lifepillar";
+      repo = "vim-gruvbox8";
+      rev = "73bd562267d3dea92b6e8dd1f0e3caca024927ad";
+      sha256 = "01x0y5ma7wz2yjcq12zzlmkn8x4yz4gcmxmkyrcy127pnhjn8a23";
+    };
+    meta.homepage = "https://github.com/lifepillar/vim-gruvbox8/";
+  };
+
   vim-gui-position = buildVimPluginFrom2Nix {
     pname = "vim-gui-position";
     version = "2019-06-06";
@@ -5126,28 +7026,40 @@ let
 
   vim-gutentags = buildVimPluginFrom2Nix {
     pname = "vim-gutentags";
-    version = "2020-04-15";
+    version = "2020-05-22";
     src = fetchFromGitHub {
       owner = "ludovicchabant";
       repo = "vim-gutentags";
-      rev = "8e69652c7a7e7aabd96cff21b6ee6b6a295c901c";
-      sha256 = "1j9548h2cqvnmqa89hha0s1wfvijdgk6ilakq60awlijdw427f04";
+      rev = "50705e8ebb7038b31314f416d1bddd9cb9154049";
+      sha256 = "0vm3bp94kbc28azsmm8505hyd9v1a9isrn5dp47njmj8w17l7725";
     };
     meta.homepage = "https://github.com/ludovicchabant/vim-gutentags/";
   };
 
   vim-hardtime = buildVimPluginFrom2Nix {
     pname = "vim-hardtime";
-    version = "2020-05-01";
+    version = "2021-06-11";
     src = fetchFromGitHub {
       owner = "takac";
       repo = "vim-hardtime";
-      rev = "ef06cf30fd3843e7857fdb79c6868660220b9391";
-      sha256 = "0yhai27zqkdmgck1iy64fw9yy2vghmqvj4g2lbh21h50df1sa8cf";
+      rev = "00fde0a5e3fe15e329bdeac5331e4b439b6972a8";
+      sha256 = "1c66q7bcg0m19zjd3yz5ywhm094cr48yr6rxp8zhlavaswwx8wz7";
     };
     meta.homepage = "https://github.com/takac/vim-hardtime/";
   };
 
+  vim-haskell-module-name = buildVimPluginFrom2Nix {
+    pname = "vim-haskell-module-name";
+    version = "2020-01-20";
+    src = fetchFromGitHub {
+      owner = "chkno";
+      repo = "vim-haskell-module-name";
+      rev = "f9f8e9f83a30b8f805b8fbc0079163e8193b289b";
+      sha256 = "0jawf23gyz9dy6qrh0xhla3z7hgjl1n4g7vmi027j4ipjnlijnji";
+    };
+    meta.homepage = "https://github.com/chkno/vim-haskell-module-name/";
+  };
+
   vim-haskellconceal = buildVimPluginFrom2Nix {
     pname = "vim-haskellconceal";
     version = "2017-06-15";
@@ -5172,6 +7084,18 @@ let
     meta.homepage = "https://github.com/enomsg/vim-haskellConcealPlus/";
   };
 
+  vim-hcl = buildVimPluginFrom2Nix {
+    pname = "vim-hcl";
+    version = "2021-06-03";
+    src = fetchFromGitHub {
+      owner = "jvirtanen";
+      repo = "vim-hcl";
+      rev = "6289d1a1424229a8f6523f4ef9441dbf2468250b";
+      sha256 = "0x33bdvacmj82m838frr40r16mc0cvb2p9alkr2gw30ls2ym3zdy";
+    };
+    meta.homepage = "https://github.com/jvirtanen/vim-hcl/";
+  };
+
   vim-hdevtools = buildVimPluginFrom2Nix {
     pname = "vim-hdevtools";
     version = "2018-11-19";
@@ -5184,6 +7108,31 @@ let
     meta.homepage = "https://github.com/bitc/vim-hdevtools/";
   };
 
+  vim-helm = buildVimPluginFrom2Nix {
+    pname = "vim-helm";
+    version = "2020-01-02";
+    src = fetchFromGitHub {
+      owner = "towolf";
+      repo = "vim-helm";
+      rev = "2c2e2e936607ed93f8f75de2066d04feff0e8e81";
+      sha256 = "1vlaqcxxsbys0ybk2x7ri1flyx412ak0dmanqg1cdig6xzhna2kc";
+    };
+    meta.homepage = "https://github.com/towolf/vim-helm/";
+  };
+
+  vim-hexokinase = buildVimPluginFrom2Nix {
+    pname = "vim-hexokinase";
+    version = "2021-04-25";
+    src = fetchFromGitHub {
+      owner = "RRethy";
+      repo = "vim-hexokinase";
+      rev = "62324b43ea858e268fb70665f7d012ae67690f43";
+      sha256 = "1qdy028i9zrldjx24blk5im35lcijvq4fwg63ks2vrrvn0dfsj01";
+      fetchSubmodules = true;
+    };
+    meta.homepage = "https://github.com/RRethy/vim-hexokinase/";
+  };
+
   vim-hier = buildVimPluginFrom2Nix {
     pname = "vim-hier";
     version = "2011-08-27";
@@ -5246,12 +7195,12 @@ let
 
   vim-html-template-literals = buildVimPluginFrom2Nix {
     pname = "vim-html-template-literals";
-    version = "2020-05-17";
+    version = "2021-06-03";
     src = fetchFromGitHub {
       owner = "jonsmithers";
       repo = "vim-html-template-literals";
-      rev = "0959db06cd74408935a589fb59ec63af91a1557b";
-      sha256 = "0vq0y9adx2023p0nqv020921r474216msrkm0lkb5v776xm4mks2";
+      rev = "e6f3f8ffaae9c2f9deea2bbb596b64468041616c";
+      sha256 = "1lrkby9m60ccgm35y1z82llgzjd5vmdwfscy7byjd5ycnkhyangi";
     };
     meta.homepage = "https://github.com/jonsmithers/vim-html-template-literals/";
   };
@@ -5306,12 +7255,12 @@ let
 
   vim-illuminate = buildVimPluginFrom2Nix {
     pname = "vim-illuminate";
-    version = "2020-06-09";
+    version = "2021-06-12";
     src = fetchFromGitHub {
       owner = "RRethy";
       repo = "vim-illuminate";
-      rev = "0778289e391c419f7a3af9de8229f798ee292013";
-      sha256 = "1l5s5f4fw96w437rdf85lym7g75hnz8sb2fdj9hygyg0sp42r0cf";
+      rev = "8fe150bd775f659da7e40ea2d3ad7473e6d29494";
+      sha256 = "1y8bhfcbk5062nrscihr24p8b955c09hnbii5grb4x16jir06cbg";
     };
     meta.homepage = "https://github.com/RRethy/vim-illuminate/";
   };
@@ -5388,6 +7337,18 @@ let
     meta.homepage = "https://github.com/fisadev/vim-isort/";
   };
 
+  vim-jack-in = buildVimPluginFrom2Nix {
+    pname = "vim-jack-in";
+    version = "2021-03-27";
+    src = fetchFromGitHub {
+      owner = "clojure-vim";
+      repo = "vim-jack-in";
+      rev = "80c69cc021486d1cfa5dac7d9d6ab6954ff20c27";
+      sha256 = "11dw8kngzznzf91n6iyvw7yi1l35vgpva32dck3n25vpxc24krpn";
+    };
+    meta.homepage = "https://github.com/clojure-vim/vim-jack-in/";
+  };
+
   vim-janah = buildVimPluginFrom2Nix {
     pname = "vim-janah";
     version = "2018-10-01";
@@ -5402,60 +7363,60 @@ let
 
   vim-javacomplete2 = buildVimPluginFrom2Nix {
     pname = "vim-javacomplete2";
-    version = "2020-07-29";
+    version = "2021-03-18";
     src = fetchFromGitHub {
       owner = "artur-shaik";
       repo = "vim-javacomplete2";
-      rev = "80cf31797a85012b7408701073d743a45a3fbf36";
-      sha256 = "19ci5n8rkf4wf4ivqj2mjig4m6phvy14k0zplkbafccaadnc0k21";
+      rev = "b01e32ec3d005423d5e6043b18b563086a623dc8";
+      sha256 = "0d9a6ynir9hgl9yp0mh0ng935llj4z9jkd9rvpddskcvq7h5590c";
     };
     meta.homepage = "https://github.com/artur-shaik/vim-javacomplete2/";
   };
 
   vim-javascript = buildVimPluginFrom2Nix {
     pname = "vim-javascript";
-    version = "2020-05-11";
+    version = "2021-05-23";
     src = fetchFromGitHub {
       owner = "pangloss";
       repo = "vim-javascript";
-      rev = "3c90d0cc37bb8b78422f647e62587f498a5dd7bd";
-      sha256 = "16s3s883azfmwkr6hhnh8m7ibk6jm3vnvpmsagangxn0mz6ky533";
+      rev = "f8345cdb6734aefa5c0f9cb128c9efd005410a43";
+      sha256 = "0s8bsfsjzc2djy2gvvf44g5ypsr7r3ax436xn0qpvhr58aa5m4dv";
     };
     meta.homepage = "https://github.com/pangloss/vim-javascript/";
   };
 
   vim-javascript-syntax = buildVimPluginFrom2Nix {
     pname = "vim-javascript-syntax";
-    version = "2019-08-21";
+    version = "2020-09-27";
     src = fetchFromGitHub {
       owner = "jelera";
       repo = "vim-javascript-syntax";
-      rev = "e65e4f01ba94761323450208c9bf7141428784db";
-      sha256 = "09561jf3cmzpm8jn8k34fd3av6i1mqi6n32bisri96jkabw8dpv7";
+      rev = "7b8e2ee761e5d81f2bff57a728909a7968df098b";
+      sha256 = "1il68nf8zsz1hn5vqmsyjckmh9s8sw4z6lqqqrxwfjqkqm1ji5xq";
     };
     meta.homepage = "https://github.com/jelera/vim-javascript-syntax/";
   };
 
   vim-jinja = buildVimPluginFrom2Nix {
     pname = "vim-jinja";
-    version = "2016-11-16";
+    version = "2021-07-19";
     src = fetchFromGitHub {
       owner = "lepture";
       repo = "vim-jinja";
-      rev = "8d330a7aaf0763d080dc82204b4aaba6ac0605c6";
-      sha256 = "1n62ga02rcj7jjgzvwr46pckj59dc1zqahjgampjcwdd8vf4mg3q";
+      rev = "2f0eeefe583ea477cb7605f972d57d7d5e55e13f";
+      sha256 = "0r8508h9s2bikmv3wvw4iaq3j8i5n564k7s06aqx9j79i16asn22";
     };
     meta.homepage = "https://github.com/lepture/vim-jinja/";
   };
 
   vim-jsbeautify = buildVimPluginFrom2Nix {
     pname = "vim-jsbeautify";
-    version = "2019-10-18";
+    version = "2020-12-11";
     src = fetchFromGitHub {
       owner = "maksimr";
       repo = "vim-jsbeautify";
-      rev = "6003f9d420d56b91f5664ec5ed5a9a3a6d8df22b";
-      sha256 = "06gxmqyxkw2mgdy6m7b248w0gzkwsjcpyihpnyf5cajb5aw4wk13";
+      rev = "e4586884c8e54218a92d66f2ebc3fefc46315057";
+      sha256 = "0l6z6063cddwlsmz8h2ayz3pblfbvn277javi80xfzxg84nfl6ip";
       fetchSubmodules = true;
     };
     meta.homepage = "https://github.com/maksimr/vim-jsbeautify/";
@@ -5463,12 +7424,12 @@ let
 
   vim-jsdoc = buildVimPluginFrom2Nix {
     pname = "vim-jsdoc";
-    version = "2020-07-23";
+    version = "2021-05-04";
     src = fetchFromGitHub {
       owner = "heavenshell";
       repo = "vim-jsdoc";
-      rev = "ed31c776d1da96ed8d950aef5ffba3f767f2acb4";
-      sha256 = "1qp5n04igirkqzqh7vfw0jnb31p36h356nc4n1kzna4zyqndzk9s";
+      rev = "e9e8547a57fa113945047c003d321fbbee770e03";
+      sha256 = "15j7fb20rz6gndm04ac9lfwrbq9ss5pk9ilxj90rd1dmppvkdkfr";
     };
     meta.homepage = "https://github.com/heavenshell/vim-jsdoc/";
   };
@@ -5499,72 +7460,84 @@ let
 
   vim-jsx-pretty = buildVimPluginFrom2Nix {
     pname = "vim-jsx-pretty";
-    version = "2020-06-22";
+    version = "2021-01-12";
     src = fetchFromGitHub {
       owner = "MaxMEllon";
       repo = "vim-jsx-pretty";
-      rev = "c665d5ca4247b696f478f91b7c97b9e44442e4b6";
-      sha256 = "1p1461rh3yp0ldg4x1cb2nj9xng6scdlrkzj1q8ykspi98qnz0mm";
+      rev = "6989f1663cc03d7da72b5ef1c03f87e6ddb70b41";
+      sha256 = "16d76jvfb1cq591i06fnmgzv0q16g89zz7cmvgvj24vap2wgkbp8";
     };
     meta.homepage = "https://github.com/MaxMEllon/vim-jsx-pretty/";
   };
 
   vim-jsx-typescript = buildVimPluginFrom2Nix {
     pname = "vim-jsx-typescript";
-    version = "2020-07-08";
+    version = "2020-12-03";
     src = fetchFromGitHub {
       owner = "peitalin";
       repo = "vim-jsx-typescript";
-      rev = "07370d48c605ec027543b52762930165b1b27779";
-      sha256 = "190nyy7kr6i3xr6nrjlfv643s1c48kxlbh8ynk8p53yf32gcxwz7";
+      rev = "22df470d92651426f2377e3166488672f7b4b4ef";
+      sha256 = "13w7n8km927v9yvm91c4z8g343bn2mp0k80nwv5y0sz279x4x9n7";
     };
     meta.homepage = "https://github.com/peitalin/vim-jsx-typescript/";
   };
 
   vim-kitty-navigator = buildVimPluginFrom2Nix {
     pname = "vim-kitty-navigator";
-    version = "2019-11-04";
+    version = "2021-07-02";
     src = fetchFromGitHub {
       owner = "knubie";
       repo = "vim-kitty-navigator";
-      rev = "c32357892f10117291461631d51a6bfd20e72b9a";
-      sha256 = "0zqvcnbns0vbxkqr0mpiapql8cvp54nn5a6mwc7l24jr6plhiwmn";
+      rev = "dedbd5358a5b3b519f1f2c9c032ea6e4ff41d6b4";
+      sha256 = "01jgblg1qfq9149fab5kcaa3q5fa7d8psxvgs8gkbs109nxkrjc4";
     };
     meta.homepage = "https://github.com/knubie/vim-kitty-navigator/";
   };
 
+  vim-LanguageTool = buildVimPluginFrom2Nix {
+    pname = "vim-LanguageTool";
+    version = "2021-02-08";
+    src = fetchFromGitHub {
+      owner = "dpelle";
+      repo = "vim-LanguageTool";
+      rev = "0372ffae78aa3eac3bfa48ba3bf2f4015a86385a";
+      sha256 = "00476l49lczj1rw5gb6vs7s9r0zi1khw0g1v6bsfwl5r32699l7r";
+    };
+    meta.homepage = "https://github.com/dpelle/vim-LanguageTool/";
+  };
+
   vim-lastplace = buildVimPluginFrom2Nix {
     pname = "vim-lastplace";
-    version = "2020-01-20";
+    version = "2021-03-29";
     src = fetchFromGitHub {
       owner = "farmergreg";
       repo = "vim-lastplace";
-      rev = "48ba343c8c1ca3039224727096aae214f51327d1";
-      sha256 = "0m8skd86p2cr0wz8rghj4is3fgnlh7vrw7can916li35i3hajid2";
+      rev = "8f6c4454eb462776b6ebdc48e3e29a68ddeb726d";
+      sha256 = "04x6y9yp5xlds37bswmrc3xlhhjfln9nzrkippvvhl48b0kfnpj8";
     };
     meta.homepage = "https://github.com/farmergreg/vim-lastplace/";
   };
 
   vim-latex-live-preview = buildVimPluginFrom2Nix {
     pname = "vim-latex-live-preview";
-    version = "2020-06-25";
+    version = "2020-09-11";
     src = fetchFromGitHub {
       owner = "xuhdev";
       repo = "vim-latex-live-preview";
-      rev = "32d1a911641e08c11b3f82ba886540cbae0b7513";
-      sha256 = "0hnjc1jpjr6fdy9b5j85didi97f6w8p8ad5cn6b0fnxxlkykymjg";
+      rev = "afdf3f4778119f0bfacb07629d0155d58eb5562a";
+      sha256 = "0zihnphc021alqbn1f84n233r6a31n499046yw1yspkcnpz7mcxm";
     };
     meta.homepage = "https://github.com/xuhdev/vim-latex-live-preview/";
   };
 
   vim-lawrencium = buildVimPluginFrom2Nix {
     pname = "vim-lawrencium";
-    version = "2019-04-10";
+    version = "2020-10-10";
     src = fetchFromGitHub {
       owner = "ludovicchabant";
       repo = "vim-lawrencium";
-      rev = "e0c127cb4e4224453cb88faffd4627b7da499bcb";
-      sha256 = "1gvvr04x17157iz83rv45nlbj1qaz90j0l96q3fki3h1b0fw0099";
+      rev = "4592f24a50386e02870fa8d508cc7ba8454dc102";
+      sha256 = "158hslq4chlqr9mhdpcrbxnygjk4j1pc2caqc3zrwqh9qdk8mvha";
     };
     meta.homepage = "https://github.com/ludovicchabant/vim-lawrencium/";
   };
@@ -5595,16 +7568,28 @@ let
 
   vim-ledger = buildVimPluginFrom2Nix {
     pname = "vim-ledger";
-    version = "2020-06-08";
+    version = "2021-03-06";
     src = fetchFromGitHub {
       owner = "ledger";
       repo = "vim-ledger";
-      rev = "d5f2af4883351aa437ca1c3157d21917dc2bb1b0";
-      sha256 = "0bdyhbablays384gssfdfavkxcrwcj89y8vn5kdk11xs0r78b5wr";
+      rev = "96ec5f9a14211c3b1b2e4632c07df3a5fb68ef3b";
+      sha256 = "0kawxaxahg7sdpkyp65k7gy6hqbfcs1hy8w8rzvi2h9kw4y8xkr7";
     };
     meta.homepage = "https://github.com/ledger/vim-ledger/";
   };
 
+  vim-lightline-coc = buildVimPluginFrom2Nix {
+    pname = "vim-lightline-coc";
+    version = "2021-03-03";
+    src = fetchFromGitHub {
+      owner = "josa42";
+      repo = "vim-lightline-coc";
+      rev = "53465b2c2ce7b6ae3497ad1cdb751dd3d8084d5c";
+      sha256 = "1r1w4j2ir6lzrlr2jhhy3ai4arswrbvjp46dxb6y9fyl516z5mza";
+    };
+    meta.homepage = "https://github.com/josa42/vim-lightline-coc/";
+  };
+
   vim-lion = buildVimPluginFrom2Nix {
     pname = "vim-lion";
     version = "2020-07-18";
@@ -5619,24 +7604,24 @@ let
 
   vim-liquid = buildVimPluginFrom2Nix {
     pname = "vim-liquid";
-    version = "2020-07-01";
+    version = "2021-07-22";
     src = fetchFromGitHub {
       owner = "tpope";
       repo = "vim-liquid";
-      rev = "94bd2ea1fd45cf0a21edc3433231e7fcb7791323";
-      sha256 = "0r8lisyhbzyw2w9xzbashlhnag98vws78xwmh03dpd8kbpcdiz0w";
+      rev = "447c69b59fadcf04f96d99873126953eae7aa235";
+      sha256 = "0cglf4kfb07jwz1v14gl83rnfjm4c1b69nih3g7yj001ddyj5amx";
     };
     meta.homepage = "https://github.com/tpope/vim-liquid/";
   };
 
   vim-localvimrc = buildVimPluginFrom2Nix {
     pname = "vim-localvimrc";
-    version = "2020-06-30";
+    version = "2021-02-18";
     src = fetchFromGitHub {
       owner = "embear";
       repo = "vim-localvimrc";
-      rev = "ac6444afb5fd11e3f7750f696a0c6b8b0b6ec116";
-      sha256 = "182fvmfnpcqda0cm878lk79iprxsd7nb9r97jmr7lx5agdcvzaqb";
+      rev = "0206f5f5a8721cc8c5c84ebb8ab2886e9afcd0ac";
+      sha256 = "1zin6pk581cnkivm2kgks0wrvpxjcl1y3x46wpkzdqg1hhif2129";
     };
     meta.homepage = "https://github.com/embear/vim-localvimrc/";
   };
@@ -5655,40 +7640,88 @@ let
 
   vim-lsc = buildVimPluginFrom2Nix {
     pname = "vim-lsc";
-    version = "2020-07-12";
+    version = "2021-04-28";
     src = fetchFromGitHub {
       owner = "natebosch";
       repo = "vim-lsc";
-      rev = "632d49bf7a227e13bea6ef341de35f89e45c55b0";
-      sha256 = "1an37vkr9di0abxfnidlbij37xxy5z1cwnvpcnink4gman1msyzy";
+      rev = "4b0fc48037c628f14209f30616a19287d9e54823";
+      sha256 = "1jwfc193wbh2rmyi6mdwgr3lcq82qhlclq4hjwg1hcw94442r5xv";
     };
     meta.homepage = "https://github.com/natebosch/vim-lsc/";
   };
 
+  vim-lsp = buildVimPluginFrom2Nix {
+    pname = "vim-lsp";
+    version = "2021-07-20";
+    src = fetchFromGitHub {
+      owner = "prabirshrestha";
+      repo = "vim-lsp";
+      rev = "7ba553effb021293c9ff5176b91e76da71797825";
+      sha256 = "1phfqzn94m2j7g10aifh12a4gyyrhqnj1vn2bpdp29lpm1n179yg";
+    };
+    meta.homepage = "https://github.com/prabirshrestha/vim-lsp/";
+  };
+
+  vim-lsp-cxx-highlight = buildVimPluginFrom2Nix {
+    pname = "vim-lsp-cxx-highlight";
+    version = "2021-04-29";
+    src = fetchFromGitHub {
+      owner = "jackguo380";
+      repo = "vim-lsp-cxx-highlight";
+      rev = "9e42350272a413a51ce9a93b00c98682815ff7c1";
+      sha256 = "1nsac8f2c0lj42a77wxcv3k6i8sbpm5ghip6nx7yz0dj7zd4xm10";
+    };
+    meta.homepage = "https://github.com/jackguo380/vim-lsp-cxx-highlight/";
+  };
+
+  vim-lua = buildVimPluginFrom2Nix {
+    pname = "vim-lua";
+    version = "2020-08-05";
+    src = fetchFromGitHub {
+      owner = "tbastos";
+      repo = "vim-lua";
+      rev = "fa810f85437525bcea0fc4ff22c634935721d86d";
+      sha256 = "1fkpfjpmv80lcd7jn95pzxrcbzn8avdywjknd5bn3212ahydg43m";
+    };
+    meta.homepage = "https://github.com/tbastos/vim-lua/";
+  };
+
   vim-maktaba = buildVimPluginFrom2Nix {
     pname = "vim-maktaba";
-    version = "2020-08-06";
+    version = "2021-07-17";
     src = fetchFromGitHub {
       owner = "google";
       repo = "vim-maktaba";
-      rev = "f60443777137a0f91e489b1757c6602c63fb3731";
-      sha256 = "1r6raxhwg78azcqv7brvas3w4xr7aja1gmcapm7j6mv69izf1fzw";
+      rev = "4e4404dffbd99159af9cfe816d13a6e69aadcee2";
+      sha256 = "1a1k27gvsd2ssnw3w8b29z3q8z2w2jxgcwpx5gd6djk1id26rhb6";
     };
     meta.homepage = "https://github.com/google/vim-maktaba/";
   };
 
   vim-manpager = buildVimPluginFrom2Nix {
     pname = "vim-manpager";
-    version = "2017-05-08";
+    version = "2020-10-28";
     src = fetchFromGitHub {
       owner = "lambdalisue";
       repo = "vim-manpager";
-      rev = "25bdd9448651a7669659b1b8d8d7a82acdfbf8af";
-      sha256 = "0d7rg4lvyxr4v34bimxpdkynmvs606fqvv0qpi7g139ng9hv6wqm";
+      rev = "c23c02dd79b0a5cabe140d1f10f9aa2591cf55ed";
+      sha256 = "0g61qbp4vl010isigp6j3jjb3vb2kxalcbb56xzfa6c9k5zap5j9";
     };
     meta.homepage = "https://github.com/lambdalisue/vim-manpager/";
   };
 
+  vim-markbar = buildVimPluginFrom2Nix {
+    pname = "vim-markbar";
+    version = "2020-08-31";
+    src = fetchFromGitHub {
+      owner = "Yilin-Yang";
+      repo = "vim-markbar";
+      rev = "df13c3abe88c01a716b1099de953dcfa1679e663";
+      sha256 = "1y5w182d57z1nl8c7ng25m88by88pnxqdsxmcnnygdfjmvbv8jl9";
+    };
+    meta.homepage = "https://github.com/Yilin-Yang/vim-markbar/";
+  };
+
   vim-markdown = buildVimPluginFrom2Nix {
     pname = "vim-markdown";
     version = "2020-07-14";
@@ -5701,14 +7734,39 @@ let
     meta.homepage = "https://github.com/plasticboy/vim-markdown/";
   };
 
+  vim-markdown-composer = buildVimPluginFrom2Nix {
+    pname = "vim-markdown-composer";
+    version = "2020-08-15";
+    src = fetchFromGitHub {
+      owner = "euclio";
+      repo = "vim-markdown-composer";
+      rev = "c0f98ec3d6c4cb49455c18f2aeb83c0dcbad1bc4";
+      sha256 = "10vb3p8gksjy8zfzlkhirdsjwgvh1yv19plxwr404x87j393rs7n";
+      fetchSubmodules = true;
+    };
+    meta.homepage = "https://github.com/euclio/vim-markdown-composer/";
+  };
+
+  vim-markdown-toc = buildVimPluginFrom2Nix {
+    pname = "vim-markdown-toc";
+    version = "2021-03-02";
+    src = fetchFromGitHub {
+      owner = "mzlogin";
+      repo = "vim-markdown-toc";
+      rev = "b7bb6c37033d3a6c93906af48dc0e689bd948638";
+      sha256 = "026xf2gid4qivwawh7if3nfk7zja9di0flhdzdx82lvil9x48lyz";
+    };
+    meta.homepage = "https://github.com/mzlogin/vim-markdown-toc/";
+  };
+
   vim-matchup = buildVimPluginFrom2Nix {
     pname = "vim-matchup";
-    version = "2020-08-16";
+    version = "2021-07-24";
     src = fetchFromGitHub {
       owner = "andymass";
       repo = "vim-matchup";
-      rev = "b1af5a28242ae58ece98d833a2bf28e030d57230";
-      sha256 = "1nnn0cxvpgmgi8xpqmhxr3vi42s3g1d0rn683hyizdn4i0l888k3";
+      rev = "8ae49bf65c960f6260f2d475b35b068bc6b822f2";
+      sha256 = "1r0car7vbz57b5fq7kjibsdi6knw50n8az145dbfq8svkf7s1fvy";
     };
     meta.homepage = "https://github.com/andymass/vim-matchup/";
   };
@@ -5725,6 +7783,18 @@ let
     meta.homepage = "https://github.com/samoshkin/vim-mergetool/";
   };
 
+  vim-merginal = buildVimPluginFrom2Nix {
+    pname = "vim-merginal";
+    version = "2020-12-06";
+    src = fetchFromGitHub {
+      owner = "idanarye";
+      repo = "vim-merginal";
+      rev = "7e1446614cdfb3a8eca621e5006631af72cda0f8";
+      sha256 = "133lddbwz63djr6pyg3dqy2pn795b48i3y4ps9ssyy6yjyi3pnrg";
+    };
+    meta.homepage = "https://github.com/idanarye/vim-merginal/";
+  };
+
   vim-metamath = buildVimPluginFrom2Nix {
     pname = "vim-metamath";
     version = "2017-02-10";
@@ -5751,48 +7821,48 @@ let
 
   vim-monokai = buildVimPluginFrom2Nix {
     pname = "vim-monokai";
-    version = "2020-08-08";
+    version = "2021-05-06";
     src = fetchFromGitHub {
       owner = "crusoexia";
       repo = "vim-monokai";
-      rev = "85b18e98a22b17f9e01867988c18cf396316c20f";
-      sha256 = "1vzllvq1ncq4qyqbkp8z26sr4n9kpqv35zkfjas3r2jqbn958a93";
+      rev = "66f7dc9c63296ea6ba408faa60bebe54a34c57f2";
+      sha256 = "10ip0y9p2qf869h2yhp2zs6qc048rw1x5i0spziajca96251gvig";
     };
     meta.homepage = "https://github.com/crusoexia/vim-monokai/";
   };
 
   vim-monokai-pro = buildVimPluginFrom2Nix {
     pname = "vim-monokai-pro";
-    version = "2020-05-07";
+    version = "2020-10-02";
     src = fetchFromGitHub {
       owner = "phanviet";
       repo = "vim-monokai-pro";
-      rev = "baf3046bb44cdffe3bf9a571b3ec24039e2c9f88";
-      sha256 = "0rszkf070d8w94dhgjpsl1kyn19j7bqyz434qshz4j88jk7hap6h";
+      rev = "05e534f9fea9a8e4cbf69a1523c785845deabe4e";
+      sha256 = "0hf3iy2ydr6jpraf5zyqg2hl7ma5hn301jyxf6m9ffdsz7722jwm";
     };
     meta.homepage = "https://github.com/phanviet/vim-monokai-pro/";
   };
 
   vim-move = buildVimPluginFrom2Nix {
     pname = "vim-move";
-    version = "2020-07-29";
+    version = "2021-07-09";
     src = fetchFromGitHub {
       owner = "matze";
       repo = "vim-move";
-      rev = "1460aa915c521864c926aa51fe20bf6bb8eaa065";
-      sha256 = "0sbdd1z8nlwpac1n4234pnczavxr1kazvj86xp4a8aa7vggdm9xa";
+      rev = "6442747a3d3084e3c1214388192b8308fcf391b8";
+      sha256 = "1acmaabzqc01gvnxs8jfpiwmgyrd4d20p3lm3g2xsg5zv1l67hbf";
     };
     meta.homepage = "https://github.com/matze/vim-move/";
   };
 
   vim-mucomplete = buildVimPluginFrom2Nix {
     pname = "vim-mucomplete";
-    version = "2020-05-21";
+    version = "2021-03-14";
     src = fetchFromGitHub {
       owner = "lifepillar";
       repo = "vim-mucomplete";
-      rev = "56ded939230b13ba5b93a38e79e2b61675a8f6ef";
-      sha256 = "1z6h8qwr12isr0xhpdqjf9imprz84gijaqgr761vgh7l2q1piqqv";
+      rev = "83cd9b3775438faafc3475f9f9d5fbb8da4dfa5b";
+      sha256 = "1l8rdmy9i81zq2ck0zvlsmqs7hfqpcxa0b8psf5nw72mwhbvv1np";
     };
     meta.homepage = "https://github.com/lifepillar/vim-mucomplete/";
   };
@@ -5811,16 +7881,28 @@ let
 
   vim-mundo = buildVimPluginFrom2Nix {
     pname = "vim-mundo";
-    version = "2020-07-20";
+    version = "2021-07-13";
     src = fetchFromGitHub {
       owner = "simnalamburt";
       repo = "vim-mundo";
-      rev = "f6b24082b1d22932cb834673c37aa936b6f4f6da";
-      sha256 = "1xr7g5wxfdd2rzdr94p2sasfm6zyha2rhjr3rx5mnpbcik7l3j61";
+      rev = "8b4bccebf7a16938c77073983d643ba22aa04079";
+      sha256 = "11livwi2pvnrxj7mildh46a6rli6hibpbffc9a5q6vxkvn9s6v29";
     };
     meta.homepage = "https://github.com/simnalamburt/vim-mundo/";
   };
 
+  vim-nerdtree-syntax-highlight = buildVimPluginFrom2Nix {
+    pname = "vim-nerdtree-syntax-highlight";
+    version = "2021-01-11";
+    src = fetchFromGitHub {
+      owner = "tiagofumo";
+      repo = "vim-nerdtree-syntax-highlight";
+      rev = "5178ee4d7f4e7761187df30bb709f703d91df18a";
+      sha256 = "0i690a9sd3a9193mdm150q5yx43mihpzkm0k5glllsmnwpngrq1a";
+    };
+    meta.homepage = "https://github.com/tiagofumo/vim-nerdtree-syntax-highlight/";
+  };
+
   vim-nerdtree-tabs = buildVimPluginFrom2Nix {
     pname = "vim-nerdtree-tabs";
     version = "2018-12-21";
@@ -5859,64 +7941,100 @@ let
 
   vim-ninja-feet = buildVimPluginFrom2Nix {
     pname = "vim-ninja-feet";
-    version = "2019-05-12";
+    version = "2021-05-27";
     src = fetchFromGitHub {
       owner = "tommcdo";
       repo = "vim-ninja-feet";
-      rev = "5b48f97bf4865a25f5f4568c45cdfd08f946ec4f";
-      sha256 = "1i3n5nlwyg65k0f0qrimbfs67l2xx39cqp4gyrycw4vzp6hs0lsc";
+      rev = "cb9b448dd468a338255aed474e6113ed115612c1";
+      sha256 = "1aqmhqaxb72ih56mh85kv4fkxyqw5hfispd208lfyp4w3zhvli30";
     };
     meta.homepage = "https://github.com/tommcdo/vim-ninja-feet/";
   };
 
   vim-nix = buildVimPluginFrom2Nix {
     pname = "vim-nix";
-    version = "2020-06-23";
+    version = "2021-05-28";
     src = fetchFromGitHub {
       owner = "LnL7";
       repo = "vim-nix";
-      rev = "d733cb96707a2a6bdc6102b6d89f947688e0e959";
-      sha256 = "12k2gwm8b1n02361gpjhsldql99yd7qsh80a3lbwc5c5gz5j8jsb";
+      rev = "63b47b39c8d481ebca3092822ca8972e08df769b";
+      sha256 = "08n9cgphv2m96kk5w996lwlqak011x5xm410hajmc91vy5fws361";
     };
     meta.homepage = "https://github.com/LnL7/vim-nix/";
   };
 
+  vim-nong-theme = buildVimPluginFrom2Nix {
+    pname = "vim-nong-theme";
+    version = "2020-12-16";
+    src = fetchFromGitHub {
+      owner = "fruit-in";
+      repo = "vim-nong-theme";
+      rev = "cf7eacc6140ef67f7fc6b3099a6ef82767af82e0";
+      sha256 = "17lvmszydpgn54n54z4mhcipzrwxggnq7lr69k8vwbwmrr8sk0qa";
+    };
+    meta.homepage = "https://github.com/fruit-in/vim-nong-theme/";
+  };
+
   vim-numbertoggle = buildVimPluginFrom2Nix {
     pname = "vim-numbertoggle";
-    version = "2017-10-26";
+    version = "2021-01-12";
     src = fetchFromGitHub {
       owner = "jeffkreeftmeijer";
       repo = "vim-numbertoggle";
-      rev = "cfaecb9e22b45373bb4940010ce63a89073f6d8b";
-      sha256 = "1rrmvv7ali50rpbih1s0fj00a3hjspwinx2y6nhwac7bjsnqqdwi";
+      rev = "df9b1fe616507340718716204ba7f434125bdf7a";
+      sha256 = "02zgzkwv2fk4zyg6agvski054nwkrm1m9dw0jpva57ksbf8rvqrg";
     };
     meta.homepage = "https://github.com/jeffkreeftmeijer/vim-numbertoggle/";
   };
 
   vim-obsession = buildVimPluginFrom2Nix {
     pname = "vim-obsession";
-    version = "2020-01-19";
+    version = "2021-03-22";
     src = fetchFromGitHub {
       owner = "tpope";
       repo = "vim-obsession";
-      rev = "96a3f837c112cb64e0a9857b69f6d6a71041155e";
-      sha256 = "11h7jyg7fhjmq3pmpc93nrsxm175ra14407rs3558h8p04snc159";
+      rev = "82c9ac5e130c92a46e043dd9cd9e5b48d15e286d";
+      sha256 = "0lfcba8sk25l5yp3agh6pwniddf8jx627ikpr8i2z9ary2fqsj98";
     };
     meta.homepage = "https://github.com/tpope/vim-obsession/";
   };
 
+  vim-ocaml = buildVimPluginFrom2Nix {
+    pname = "vim-ocaml";
+    version = "2021-03-03";
+    src = fetchFromGitHub {
+      owner = "ocaml";
+      repo = "vim-ocaml";
+      rev = "400bee047d116d1cbe72a479943ec69d5b5bba01";
+      sha256 = "0njprv1h38rsagpmp1z68vq90pf9fll3pa8767nhgv2kyadn29jx";
+    };
+    meta.homepage = "https://github.com/ocaml/vim-ocaml/";
+  };
+
   vim-one = buildVimPluginFrom2Nix {
     pname = "vim-one";
-    version = "2020-08-09";
+    version = "2020-12-14";
     src = fetchFromGitHub {
       owner = "rakr";
       repo = "vim-one";
-      rev = "f8bcef1968f01842d92abbcb098ec28ad3931ea5";
-      sha256 = "12czxjh68hdnca4wdk9ypd5c56v1njv6wc2bcxqaj1ff09pgllmy";
+      rev = "187f5c85b682c1933f8780d4d419c55d26a82e24";
+      sha256 = "0lnfw15p865hcnnjcaikf2xwfiqwidsqryq67j1bh74215ib8r10";
     };
     meta.homepage = "https://github.com/rakr/vim-one/";
   };
 
+  vim-opencl = buildVimPluginFrom2Nix {
+    pname = "vim-opencl";
+    version = "2018-06-13";
+    src = fetchFromGitHub {
+      owner = "petRUShka";
+      repo = "vim-opencl";
+      rev = "7668b018fe9461c6b51e0b736ed84aa84d6bafce";
+      sha256 = "0z8qasymkkaa272bjxmkp4sgd8qr4ypcqxlyzxgh5imp3gmrc6n1";
+    };
+    meta.homepage = "https://github.com/petRUShka/vim-opencl/";
+  };
+
   vim-operator-replace = buildVimPluginFrom2Nix {
     pname = "vim-operator-replace";
     version = "2015-02-24";
@@ -5955,28 +8073,52 @@ let
 
   vim-orgmode = buildVimPluginFrom2Nix {
     pname = "vim-orgmode";
-    version = "2020-07-14";
+    version = "2021-06-29";
     src = fetchFromGitHub {
       owner = "jceb";
       repo = "vim-orgmode";
-      rev = "ad5f154a5bd9daffb7cf50719f0cc945f445af85";
-      sha256 = "09x3x53vf2fir9jhi38v9sai7dx5i40ylx1yk42459bgig2vv1aa";
+      rev = "4ad432d7da4e01e7fce86d25528a6587efce6ca4";
+      sha256 = "0lhgph6hp130sbbc1frsmrjp9qrf6gqk12azjq63bb0rs5884q5h";
     };
     meta.homepage = "https://github.com/jceb/vim-orgmode/";
   };
 
+  vim-ormolu = buildVimPluginFrom2Nix {
+    pname = "vim-ormolu";
+    version = "2020-11-25";
+    src = fetchFromGitHub {
+      owner = "sdiehl";
+      repo = "vim-ormolu";
+      rev = "edbeb0135692345b088182963e9b229fe2235ac0";
+      sha256 = "03srdix06dhz4b8g9akx448dw2rjbwj840xg7p9c5bq8kbmsjy8x";
+    };
+    meta.homepage = "https://github.com/sdiehl/vim-ormolu/";
+  };
+
   vim-osc52 = buildVimPluginFrom2Nix {
     pname = "vim-osc52";
-    version = "2017-06-23";
+    version = "2020-09-19";
     src = fetchFromGitHub {
       owner = "fcpg";
       repo = "vim-osc52";
-      rev = "01a311169b2678d853c87b371201205daf8fdf1a";
-      sha256 = "1nxla8r4036shbmyx6wpxy9ncy1s2c5ghi5n5ip22b01lcv6lnv5";
+      rev = "551f20e62e68684a5b745ae08b0c4236d86e4c2b";
+      sha256 = "0yxjs32ab27l3kmh5lpinj15m11winqsnmykjq7lizs15v7gd2s9";
     };
     meta.homepage = "https://github.com/fcpg/vim-osc52/";
   };
 
+  vim-oscyank = buildVimPluginFrom2Nix {
+    pname = "vim-oscyank";
+    version = "2021-05-21";
+    src = fetchFromGitHub {
+      owner = "ojroques";
+      repo = "vim-oscyank";
+      rev = "20fade09069cd35602387c2e7d2a7cd0f6cff8b0";
+      sha256 = "1ym87hd85l67976dxk919mdwab8fi8iq8azqk4mpa75gzl2ia7wl";
+    };
+    meta.homepage = "https://github.com/ojroques/vim-oscyank/";
+  };
+
   vim-over = buildVimPluginFrom2Nix {
     pname = "vim-over";
     version = "2020-01-26";
@@ -6015,12 +8157,12 @@ let
 
   vim-pandoc = buildVimPluginFrom2Nix {
     pname = "vim-pandoc";
-    version = "2020-07-30";
+    version = "2021-06-09";
     src = fetchFromGitHub {
       owner = "vim-pandoc";
       repo = "vim-pandoc";
-      rev = "049ece9fa8f21afaa62215865afac22daa6fd30f";
-      sha256 = "0wjrbp06ffh9ficd22lcijrc99n72b7gbg5lqpms9r0442fb88kq";
+      rev = "1c56693951ce81f344cff0d7c8a6f7ea62a06981";
+      sha256 = "017g2cq05pfxjmcdm42qz6pv2cf2v18lnnrfnizm1cd388r9byll";
     };
     meta.homepage = "https://github.com/vim-pandoc/vim-pandoc/";
   };
@@ -6039,12 +8181,12 @@ let
 
   vim-pandoc-syntax = buildVimPluginFrom2Nix {
     pname = "vim-pandoc-syntax";
-    version = "2020-08-10";
+    version = "2021-07-06";
     src = fetchFromGitHub {
       owner = "vim-pandoc";
       repo = "vim-pandoc-syntax";
-      rev = "59680708cdc98c3fae9acb6c261374bfd808335a";
-      sha256 = "1yiczv4l2rg8wva2gbjvv7k9s6y9p0gwmlazdd9rnq28nhmxx3gv";
+      rev = "5056e635ecf406e65d7d28651bab55600dd18741";
+      sha256 = "0mzvknzk42x5h2p3l9gmmxhbardfkrirr8wzfx460cm5daps6j2q";
     };
     meta.homepage = "https://github.com/vim-pandoc/vim-pandoc-syntax/";
   };
@@ -6075,12 +8217,12 @@ let
 
   vim-pathogen = buildVimPluginFrom2Nix {
     pname = "vim-pathogen";
-    version = "2020-01-17";
+    version = "2021-01-04";
     src = fetchFromGitHub {
       owner = "tpope";
       repo = "vim-pathogen";
-      rev = "c6bc42404597c718e4a032a98e21e63321cbb05a";
-      sha256 = "1scj84vlrn2kavnq2wabhdzhnlkb3w046grv9j3976i5ykjmyiif";
+      rev = "e0a3efbda5ea8e5b181b2b232ef6453c05d07732";
+      sha256 = "1b9v6k0560b7yf2l9v8n23bm27k3akycrv19wfi50havxdjagw1f";
     };
     meta.homepage = "https://github.com/tpope/vim-pathogen/";
   };
@@ -6099,24 +8241,24 @@ let
 
   vim-pencil = buildVimPluginFrom2Nix {
     pname = "vim-pencil";
-    version = "2020-07-29";
+    version = "2021-06-19";
     src = fetchFromGitHub {
-      owner = "reedes";
+      owner = "preservim";
       repo = "vim-pencil";
-      rev = "dad5a3626ab68039f2676c46e7a1635e0669cc63";
-      sha256 = "1s1vxzqc5gvch2rfibn7ksmxj81gscfzg0bpvnq34jp430adzdc7";
+      rev = "942e02e53cc2d914f215a2c69707fbdbdd137f86";
+      sha256 = "098agz8kiycn6nhv42r43dmbc5hng3d7nwk0zgiws7cz8si4kf0s";
     };
-    meta.homepage = "https://github.com/reedes/vim-pencil/";
+    meta.homepage = "https://github.com/preservim/vim-pencil/";
   };
 
   vim-phabricator = buildVimPluginFrom2Nix {
     pname = "vim-phabricator";
-    version = "2020-01-23";
+    version = "2020-09-16";
     src = fetchFromGitHub {
       owner = "jparise";
       repo = "vim-phabricator";
-      rev = "065c7e3f2d92a6792b50f087393b2c9a10a1e825";
-      sha256 = "0yhf347fhrs0aqsq1swqihyav32442lv2chzjr3mzqcym8zbzsh6";
+      rev = "d5c0571f44f2c44ba32df2d12e52b4dfcd4921ed";
+      sha256 = "003zi8dvyyhvlb30zz8ah7iai8pmwmsk2jwa38386ff0jfm6dkpq";
     };
     meta.homepage = "https://github.com/jparise/vim-phabricator/";
   };
@@ -6135,12 +8277,12 @@ let
 
   vim-plug = buildVimPluginFrom2Nix {
     pname = "vim-plug";
-    version = "2020-08-08";
+    version = "2021-04-30";
     src = fetchFromGitHub {
       owner = "junegunn";
       repo = "vim-plug";
-      rev = "13ea184015c30be5160ae285aedc0eaec0c72e6c";
-      sha256 = "19vd5cmshlwrrf5ncgkny9p478d7bhjjwwjv71xb2adyfc9r1rv6";
+      rev = "fc2813ef4484c7a5c080021ceaa6d1f70390d920";
+      sha256 = "0fsl8w17z15sj21x5gd5ah5p5fjsnk0gzdx2n2p0jnkcb05bwzck";
     };
     meta.homepage = "https://github.com/junegunn/vim-plug/";
   };
@@ -6159,16 +8301,28 @@ let
 
   vim-polyglot = buildVimPluginFrom2Nix {
     pname = "vim-polyglot";
-    version = "2020-08-18";
+    version = "2021-07-08";
     src = fetchFromGitHub {
       owner = "sheerun";
       repo = "vim-polyglot";
-      rev = "0df1bfa0c5f3efb6688566d5656a330034772037";
-      sha256 = "1ba96gk3qs1d2zaxs24dk624z9b9ip7yx4vg0klasf4xq8s6kwjs";
+      rev = "554a6ac7575f87b5b85d1b2bf60e7071c4164cbc";
+      sha256 = "0qh3gzvv3y4fjjk9cqz8nqqh87181rq9pxp4j4ly52jpk7hca7qc";
     };
     meta.homepage = "https://github.com/sheerun/vim-polyglot/";
   };
 
+  vim-pony = buildVimPluginFrom2Nix {
+    pname = "vim-pony";
+    version = "2018-07-27";
+    src = fetchFromGitHub {
+      owner = "jakwings";
+      repo = "vim-pony";
+      rev = "b26f01a869000b73b80dceabd725d91bfe175b75";
+      sha256 = "0if8g94m3xmpda80byfxs649w2is9ah1k8v3028nblan73zlc8x8";
+    };
+    meta.homepage = "https://github.com/jakwings/vim-pony/";
+  };
+
   vim-poweryank = buildVimPluginFrom2Nix {
     pname = "vim-poweryank";
     version = "2017-08-13";
@@ -6181,6 +8335,18 @@ let
     meta.homepage = "https://github.com/haya14busa/vim-poweryank/";
   };
 
+  vim-prettier = buildVimPluginFrom2Nix {
+    pname = "vim-prettier";
+    version = "2021-06-29";
+    src = fetchFromGitHub {
+      owner = "prettier";
+      repo = "vim-prettier";
+      rev = "0e61e4a5b55d2740aa118db91a6671dcb11307e8";
+      sha256 = "0d83lx6kfpsi3d4q9wz8zwsgdn0vn16psqyngml6wspjyibh6pnf";
+    };
+    meta.homepage = "https://github.com/prettier/vim-prettier/";
+  };
+
   vim-prettyprint = buildVimPluginFrom2Nix {
     pname = "vim-prettyprint";
     version = "2016-07-16";
@@ -6195,24 +8361,24 @@ let
 
   vim-projectionist = buildVimPluginFrom2Nix {
     pname = "vim-projectionist";
-    version = "2020-05-05";
+    version = "2021-04-05";
     src = fetchFromGitHub {
       owner = "tpope";
       repo = "vim-projectionist";
-      rev = "1d95458273a8ecdb678e65db918c045f9bb7e220";
-      sha256 = "1h5gb29rs64cfr55g12s1f0w0cqzqs2nhfw8qfbfch5jbh21p10p";
+      rev = "8dda7acb7e24b44ef691ba19b35f585e97e91b30";
+      sha256 = "0laqkgwv6hq1ix3kahvx0sfb8c7ifx61z2n4npqswpn0ri4ckd2j";
     };
     meta.homepage = "https://github.com/tpope/vim-projectionist/";
   };
 
   vim-prosession = buildVimPluginFrom2Nix {
     pname = "vim-prosession";
-    version = "2020-04-20";
+    version = "2021-03-21";
     src = fetchFromGitHub {
       owner = "dhruvasagar";
       repo = "vim-prosession";
-      rev = "95f78bd0f719fee96569f30fd5f4199c4461efb7";
-      sha256 = "1ix04f3nxxmxd36kzalx0hrbks30v44ydz15apvl1h8l8663hda2";
+      rev = "976f3e61c2dd4ab709ea5eccbbab9e42d35d7e8c";
+      sha256 = "01dbiwj1x8rd5yy19cphxysga3fi5l3il2ph8hr1v4adzvw8269z";
     };
     meta.homepage = "https://github.com/dhruvasagar/vim-prosession/";
   };
@@ -6231,12 +8397,12 @@ let
 
   vim-ps1 = buildVimPluginFrom2Nix {
     pname = "vim-ps1";
-    version = "2020-07-31";
+    version = "2020-11-25";
     src = fetchFromGitHub {
       owner = "PProvost";
       repo = "vim-ps1";
-      rev = "21d8d9a9db864f230a2d12d5076351daf20d7a44";
-      sha256 = "0s6mi1mzlk40sfdqghdsv709fs89hf9d6iqaw3arzs9lmin2i4ka";
+      rev = "26a75886caef937bfad4201d5478571a992984c2";
+      sha256 = "1qgwn57hs82a6pjilnqafd4c2za4r3vkys9i9apbxqhcxypx05hl";
     };
     meta.homepage = "https://github.com/PProvost/vim-ps1/";
   };
@@ -6255,12 +8421,12 @@ let
 
   vim-puppet = buildVimPluginFrom2Nix {
     pname = "vim-puppet";
-    version = "2019-09-16";
+    version = "2021-07-18";
     src = fetchFromGitHub {
       owner = "rodjek";
       repo = "vim-puppet";
-      rev = "fc6e9efef797c505b2e67631ad2517d7d6e8f00d";
-      sha256 = "0a4qv8f74g6c2i9l6kv3zbcq9lskhdqg86w12f8hshw1vkfmfr4x";
+      rev = "7bb7586896b7afe6e6f26bcbaf70ad8517d98018";
+      sha256 = "1mqnawfpg23rwjp3zpz85s3dpspcl8zrh9dymv5p0pqbn27mlf5n";
     };
     meta.homepage = "https://github.com/rodjek/vim-puppet/";
   };
@@ -6277,146 +8443,170 @@ let
     meta.homepage = "https://github.com/Vimjas/vim-python-pep8-indent/";
   };
 
+  vim-qf = buildVimPluginFrom2Nix {
+    pname = "vim-qf";
+    version = "2021-07-20";
+    src = fetchFromGitHub {
+      owner = "romainl";
+      repo = "vim-qf";
+      rev = "65f115c350934517382ae45198a74232a9069c2a";
+      sha256 = "0pylxkmhcanks59imah3q2xyn8lp5735xm17p13yx9vx90779nwp";
+    };
+    meta.homepage = "https://github.com/romainl/vim-qf/";
+  };
+
   vim-qml = buildVimPluginFrom2Nix {
     pname = "vim-qml";
-    version = "2019-12-20";
+    version = "2020-11-03";
     src = fetchFromGitHub {
       owner = "peterhoeg";
       repo = "vim-qml";
-      rev = "b04de1dadb7dfe372d22f7529a001af1b5e19f4f";
-      sha256 = "1pxl70l0g4i8cbnpjhb9pyjhz982flkrng07y9xwzbdl2jx42i8s";
+      rev = "50d2e737094c146195171b7d52e522384f15afe8";
+      sha256 = "1iz2l51c15ijkpzyk5qwmd8y0yy2z8f1jwxcwk16h63g4nmfm1zr";
     };
     meta.homepage = "https://github.com/peterhoeg/vim-qml/";
   };
 
   vim-quickrun = buildVimPluginFrom2Nix {
     pname = "vim-quickrun";
-    version = "2020-07-25";
+    version = "2021-06-29";
     src = fetchFromGitHub {
       owner = "thinca";
       repo = "vim-quickrun";
-      rev = "3f49e05fb6072d6b7bc7fe20d0356cf15ef3b9de";
-      sha256 = "02kyp6l6m1nybfqx3d88yi34isrid355wiln6cskvxz2hpx532g8";
+      rev = "b39b1f6c69f7086e500ad7a6318c7bc97249b944";
+      sha256 = "1cwsbscbfmjjr9grxgdprfydlybmwdf7qxdmcwbfj18xqbjx6cjq";
     };
     meta.homepage = "https://github.com/thinca/vim-quickrun/";
   };
 
   vim-racer = buildVimPluginFrom2Nix {
     pname = "vim-racer";
-    version = "2020-06-18";
+    version = "2021-04-04";
     src = fetchFromGitHub {
       owner = "racer-rust";
       repo = "vim-racer";
-      rev = "250e9fd496edde1516a5e68e9837ccf5e46cc895";
-      sha256 = "1ar5wv776xslxrs2mmxr5kzz5pp4a4v8jydh9s6cqbfzglgr9kw5";
+      rev = "d1aead98a936cd8165b3329511d7c987226eb3a6";
+      sha256 = "11f6iw9c59kdjcdkzn27szpi0bxhpp42qmlannnqzm49ssl817vv";
     };
     meta.homepage = "https://github.com/racer-rust/vim-racer/";
   };
 
+  vim-racket = buildVimPluginFrom2Nix {
+    pname = "vim-racket";
+    version = "2021-04-11";
+    src = fetchFromGitHub {
+      owner = "wlangstroth";
+      repo = "vim-racket";
+      rev = "32ad23165c96d05da7f3b9931d2889b7e39dcb86";
+      sha256 = "1yyqx471p11vj6gya4yzkiy07vfwzpx10bf6s7dh2h7zp2nz10br";
+    };
+    meta.homepage = "https://github.com/wlangstroth/vim-racket/";
+  };
+
   vim-ragtag = buildVimPluginFrom2Nix {
     pname = "vim-ragtag";
-    version = "2020-01-26";
+    version = "2021-02-22";
     src = fetchFromGitHub {
       owner = "tpope";
       repo = "vim-ragtag";
-      rev = "6f1af76cd669c4fb07f0c4e20fdee3077620e3d8";
-      sha256 = "1q5klbnwsg26zxhs3knhamk3srg7dmq46n83sa5rw2kmikb2idg2";
+      rev = "b8966c4f6503a8baaec39e17bd0bf38b2aadc9b2";
+      sha256 = "0q4blsgnl4l2bkhgjry6xnszhsswdand52gc6gdjffwlzwa9jczy";
     };
     meta.homepage = "https://github.com/tpope/vim-ragtag/";
   };
 
   vim-rails = buildVimPluginFrom2Nix {
     pname = "vim-rails";
-    version = "2020-06-19";
+    version = "2021-06-01";
     src = fetchFromGitHub {
       owner = "tpope";
       repo = "vim-rails";
-      rev = "187742a3c18d93e6968f024d7db0f4fc5548408e";
-      sha256 = "132rvyn5pwg5xkm6q64k33vm6q9hfpng0wq25387l8l8a7hvj3az";
+      rev = "3b3796352a6f1a68e54e5f7ae5e0c1b9103fab0e";
+      sha256 = "1f0xns0h55szamms17wi06k1ninvygsc4yw82hr29kfq94hvn57l";
     };
     meta.homepage = "https://github.com/tpope/vim-rails/";
   };
 
   vim-repeat = buildVimPluginFrom2Nix {
     pname = "vim-repeat";
-    version = "2019-11-13";
+    version = "2021-01-25";
     src = fetchFromGitHub {
       owner = "tpope";
       repo = "vim-repeat";
-      rev = "c947ad2b6a16983724a0153bdf7f66d7a80a32ca";
-      sha256 = "00hhbqcx21j0738ad5xh92lsykpa0qxhdy1s7wnwc8d3jndmyjwb";
+      rev = "24afe922e6a05891756ecf331f39a1f6743d3d5a";
+      sha256 = "0y18cy5wvkb4pv5qjsfndrpcvz0dg9v0r6ia8k9isp4agdmxkdzj";
     };
     meta.homepage = "https://github.com/tpope/vim-repeat/";
   };
 
   vim-rhubarb = buildVimPluginFrom2Nix {
     pname = "vim-rhubarb";
-    version = "2019-11-12";
+    version = "2021-07-16";
     src = fetchFromGitHub {
       owner = "tpope";
       repo = "vim-rhubarb";
-      rev = "5130596a65330a4e8523d3ac1582f6c31ea6bc63";
-      sha256 = "1hpyxcmwrjxhkgkb0w2qpg8gh9bgiqwddyj4zx8hy2g8qnx7z5yj";
+      rev = "b4aad6dc43660db554bba2942026fb9965f1a45e";
+      sha256 = "04ckpl3q1k4l530fhf5srbklfqdz4rfrcapwsa92n4bwskfxbnsp";
     };
     meta.homepage = "https://github.com/tpope/vim-rhubarb/";
   };
 
   vim-rooter = buildVimPluginFrom2Nix {
     pname = "vim-rooter";
-    version = "2020-07-23";
+    version = "2021-06-08";
     src = fetchFromGitHub {
       owner = "airblade";
       repo = "vim-rooter";
-      rev = "be83e5bcbe30888b88359fc875ade9c54562411d";
-      sha256 = "1qz3fqixl25x8b70y6kw9lgjxciv9bbzqx9dimvypmhqwx09pnjb";
+      rev = "9a5ce8edc67cca36cc530ee27a805112ce7a7e9b";
+      sha256 = "0zx1mzaiqwqyg7imahwy0mzp52b2dzp4qdnrsgcnkvkxf8v67bak";
     };
     meta.homepage = "https://github.com/airblade/vim-rooter/";
   };
 
   vim-rsi = buildVimPluginFrom2Nix {
     pname = "vim-rsi";
-    version = "2019-11-15";
+    version = "2021-01-16";
     src = fetchFromGitHub {
       owner = "tpope";
       repo = "vim-rsi";
-      rev = "ad8ba6beae8e82339479104b914214a868c9f1fe";
-      sha256 = "1ycjwnbs6rks78yxh0k0ywpvic0663mv7kydy3kjpa4f5bnkgbvc";
+      rev = "e181883a0932d9315cceb96b5fffb5e2ec67068e";
+      sha256 = "1pfg3y1hf840pr7f6vcwldbraj2w4c2pnf7ampbgyric0q3f4708";
     };
     meta.homepage = "https://github.com/tpope/vim-rsi/";
   };
 
   vim-ruby = buildVimPluginFrom2Nix {
     pname = "vim-ruby";
-    version = "2020-08-03";
+    version = "2021-07-22";
     src = fetchFromGitHub {
       owner = "vim-ruby";
       repo = "vim-ruby";
-      rev = "fe2e520c62dfe10b9bc192b6c2651ef0519b1070";
-      sha256 = "1xh6h5wg242mzqshka5m3693r25www46p29cr92yi995a2izm2fw";
+      rev = "5516e301a5c3cacac008342006a712f5fa80f6a1";
+      sha256 = "0fwy02mj0gafgv01qpgfyi5n0i0lrfzy8nw93hrpqwc97pckh1pp";
     };
     meta.homepage = "https://github.com/vim-ruby/vim-ruby/";
   };
 
   vim-salve = buildVimPluginFrom2Nix {
     pname = "vim-salve";
-    version = "2019-11-13";
+    version = "2020-09-22";
     src = fetchFromGitHub {
       owner = "tpope";
       repo = "vim-salve";
-      rev = "876104d364420a7a11a2d97729dd4ab0a2f8a72e";
-      sha256 = "1hj0qg182jv3cwg85rg4z0f8f8hr409is71z7sxhnhjq9fn1h6xj";
+      rev = "5958a99c4ac783cec668380917ac1f62b27466fe";
+      sha256 = "1vs2rfhcxm9v4ndnsx85b1i29h67qv748k3nvdxc145v1hjcnapm";
     };
     meta.homepage = "https://github.com/tpope/vim-salve/";
   };
 
   vim-sandwich = buildVimPluginFrom2Nix {
     pname = "vim-sandwich";
-    version = "2020-07-27";
+    version = "2020-12-15";
     src = fetchFromGitHub {
       owner = "machakann";
       repo = "vim-sandwich";
-      rev = "f0bb324395bf6e00ec17fc7af60d2ccb8d494595";
-      sha256 = "19fqpccvawh2wjkzgp64jijq4nnhirmgvrrycxzcx7lj612mbpmc";
+      rev = "9e6340affe9f53c11a6975a5f50b9bf48adb692c";
+      sha256 = "0ghli93qzr3i8ai90waikylwas3xgy5bdgykng55b9mqgpmc3faf";
     };
     meta.homepage = "https://github.com/machakann/vim-sandwich/";
   };
@@ -6459,12 +8649,12 @@ let
 
   vim-scriptease = buildVimPluginFrom2Nix {
     pname = "vim-scriptease";
-    version = "2020-01-05";
+    version = "2021-03-25";
     src = fetchFromGitHub {
       owner = "tpope";
       repo = "vim-scriptease";
-      rev = "86f49aca266e4b17420bcadd29009997d15668d8";
-      sha256 = "0kcv5q4qahqd316h5k81xnf8skn71126x4lw2i6wa2m2653d0k5c";
+      rev = "dbdc88f2ca38613a089354823fb2cec4d87d104d";
+      sha256 = "0i89vrnfphr32qcix9ah9cf68xnw6n8jm03xmgys29gkfim4v7sq";
     };
     meta.homepage = "https://github.com/tpope/vim-scriptease/";
   };
@@ -6483,12 +8673,12 @@ let
 
   vim-sexp = buildVimPluginFrom2Nix {
     pname = "vim-sexp";
-    version = "2017-05-15";
+    version = "2021-03-08";
     src = fetchFromGitHub {
       owner = "guns";
       repo = "vim-sexp";
-      rev = "12292941903d9ac8151513189d2007e1ccfc95f0";
-      sha256 = "1mfqbmrbqgnsc34pmcsrc0c5zvgxhhnw4hx4g5wbssfk1ddyx6y0";
+      rev = "14464d4580af43424ed8f2614d94e62bfa40bb4d";
+      sha256 = "139krxpjhbyypbl6v2jik1rms2fxl3dkqrl4rb7sms6c3p5764qx";
     };
     meta.homepage = "https://github.com/guns/vim-sexp/";
   };
@@ -6505,6 +8695,18 @@ let
     meta.homepage = "https://github.com/tpope/vim-sexp-mappings-for-regular-people/";
   };
 
+  vim-shellcheck = buildVimPluginFrom2Nix {
+    pname = "vim-shellcheck";
+    version = "2019-07-25";
+    src = fetchFromGitHub {
+      owner = "itspriddle";
+      repo = "vim-shellcheck";
+      rev = "4346419ac57ef341a15aa39c827c0848f17c6faf";
+      sha256 = "0j28nqmfjxzhwylp2r1mp5v39fws5jvn7k9maam97mi3j66a9jz5";
+    };
+    meta.homepage = "https://github.com/itspriddle/vim-shellcheck/";
+  };
+
   vim-signature = buildVimPluginFrom2Nix {
     pname = "vim-signature";
     version = "2018-07-06";
@@ -6519,16 +8721,28 @@ let
 
   vim-signify = buildVimPluginFrom2Nix {
     pname = "vim-signify";
-    version = "2020-08-13";
+    version = "2021-05-19";
     src = fetchFromGitHub {
       owner = "mhinz";
       repo = "vim-signify";
-      rev = "98c693f7a1a91b73d9232d868765b4d20af892fe";
-      sha256 = "05ppj7sqp8i7qhaf6vz427nnwsnkgf9nlq3lhyhbl14cjkrhqny9";
+      rev = "22f05607d4d7406781af56cafc1121152988c6d2";
+      sha256 = "1rq5d3v5qvv0hnvk18q66zd8963flnjvxb4b65vh88md15qc3p3j";
     };
     meta.homepage = "https://github.com/mhinz/vim-signify/";
   };
 
+  vim-simpledb = buildVimPluginFrom2Nix {
+    pname = "vim-simpledb";
+    version = "2020-10-02";
+    src = fetchFromGitHub {
+      owner = "ivalkeen";
+      repo = "vim-simpledb";
+      rev = "1e9e72160dd01c837b5afb4f75cbb587a15b31b5";
+      sha256 = "1y0i876p2pxx7gbr04acnv94cjrincsbg03bqxr89xbqlbggxf0w";
+    };
+    meta.homepage = "https://github.com/ivalkeen/vim-simpledb/";
+  };
+
   vim-slash = buildVimPluginFrom2Nix {
     pname = "vim-slash";
     version = "2019-08-28";
@@ -6543,28 +8757,40 @@ let
 
   vim-sleuth = buildVimPluginFrom2Nix {
     pname = "vim-sleuth";
-    version = "2019-11-16";
+    version = "2021-04-01";
     src = fetchFromGitHub {
       owner = "tpope";
       repo = "vim-sleuth";
-      rev = "ea3f065f23cd0592062b8226c8fef08b6af3b459";
-      sha256 = "17w4m6zg1izcs75isy1jdzycgdr1ml1f5wqf1bjq80qgy3f28znp";
+      rev = "38bd4010110614822cde523ebc5724963312ab63";
+      sha256 = "1qng5ndxsmkjgrdhlbdysr97b6pyz6faiqaayjkwpc69hnv2y79v";
     };
     meta.homepage = "https://github.com/tpope/vim-sleuth/";
   };
 
   vim-slime = buildVimPluginFrom2Nix {
     pname = "vim-slime";
-    version = "2020-08-06";
+    version = "2021-03-04";
     src = fetchFromGitHub {
       owner = "jpalardy";
       repo = "vim-slime";
-      rev = "db486eaa39f14d130ddf6338aaa02127aa04b272";
-      sha256 = "1x9vflsbdl1b03irkvfpapb0c4mw9lymfghcjy1wxjl2vpq630ia";
+      rev = "a522fed677e50175f52efc5848cc35209af33216";
+      sha256 = "0k4b629jn6xlxyjxdl3cgm06v9dmx967rqnslv5m82c9kscwpyh4";
     };
     meta.homepage = "https://github.com/jpalardy/vim-slime/";
   };
 
+  vim-smali = buildVimPluginFrom2Nix {
+    pname = "vim-smali";
+    version = "2015-11-05";
+    src = fetchFromGitHub {
+      owner = "mzlogin";
+      repo = "vim-smali";
+      rev = "012c21565e6be8f1718ad634aa84730a0a84b42c";
+      sha256 = "1mcdbcfiq5r21q297fxi18c3ah4193j1fnjnbjnrjh20r50wggx8";
+    };
+    meta.homepage = "https://github.com/mzlogin/vim-smali/";
+  };
+
   vim-smalls = buildVimPluginFrom2Nix {
     pname = "vim-smalls";
     version = "2015-05-02";
@@ -6579,60 +8805,60 @@ let
 
   vim-smoothie = buildVimPluginFrom2Nix {
     pname = "vim-smoothie";
-    version = "2019-12-02";
+    version = "2021-02-07";
     src = fetchFromGitHub {
       owner = "psliwka";
       repo = "vim-smoothie";
-      rev = "d3de4fbd7a9331b3eb05fa632611ebd34882cc83";
-      sha256 = "1bsqnz02jaydr92mmcrdlva4zxs28zgxwgznr2bwk4wnn26i54p6";
+      rev = "10fd0aa57d176718bc2c570f121ab523c4429a25";
+      sha256 = "18zn29mkgdiddn3il393xzg7hpa0x25yvais1l29jq2711sg4rdc";
     };
     meta.homepage = "https://github.com/psliwka/vim-smoothie/";
   };
 
   vim-smt2 = buildVimPluginFrom2Nix {
     pname = "vim-smt2";
-    version = "2018-05-20";
+    version = "2021-06-07";
     src = fetchFromGitHub {
       owner = "bohlender";
       repo = "vim-smt2";
-      rev = "9582e37b1dfd75621e51a3ac2275b6c6c895317f";
-      sha256 = "0cas6c3pj55qhbcy2vaygg8l9gncjshi1g0a54l78x73d3y3wm03";
+      rev = "2cc8c80c0a88e0d47de85bef1d50df86e197c302";
+      sha256 = "0djk8s8q4b72blw73r4m7z9gc15gys167xgnvd1avmfyfw8fb22a";
     };
     meta.homepage = "https://github.com/bohlender/vim-smt2/";
   };
 
   vim-sneak = buildVimPluginFrom2Nix {
     pname = "vim-sneak";
-    version = "2020-06-29";
+    version = "2021-07-11";
     src = fetchFromGitHub {
       owner = "justinmk";
       repo = "vim-sneak";
-      rev = "afe94543bb3bb95ef9ae2a58eebcbc17d69eb304";
-      sha256 = "0iaksyh77xahg5cp0q9x5c14jdklsrgy9400jp4xjb83qgg6d7qq";
+      rev = "95374ad3e4b5ef902854e8f4bcfa9a7a31a91d71";
+      sha256 = "0ns80kjirk72l5lapl7m32ybyr5q71p2mr8a45ihh1k2dlc2wv06";
     };
     meta.homepage = "https://github.com/justinmk/vim-sneak/";
   };
 
   vim-snipmate = buildVimPluginFrom2Nix {
     pname = "vim-snipmate";
-    version = "2020-03-27";
+    version = "2021-06-04";
     src = fetchFromGitHub {
       owner = "garbas";
       repo = "vim-snipmate";
-      rev = "b80367fefc2188c9d6c4a9eb1830360b09e13476";
-      sha256 = "0qq81hcavmaq76r38qfy1cxlmhj0aswbd41k2k9fyzilzq4r0bg8";
+      rev = "ed3c5426a20bf1c06d7980946ada34fd9f93320e";
+      sha256 = "0bxaalza02sgm045cj4vciy3qhmj7pj1rp9bdwm5837ldq8paj1h";
     };
     meta.homepage = "https://github.com/garbas/vim-snipmate/";
   };
 
   vim-snippets = buildVimPluginFrom2Nix {
     pname = "vim-snippets";
-    version = "2020-08-19";
+    version = "2021-07-16";
     src = fetchFromGitHub {
       owner = "honza";
       repo = "vim-snippets";
-      rev = "c093074fec6ba83aced4958ea44af11c5e5dff30";
-      sha256 = "0919fhzpg7scm7idq4vh7kqjvlmc4037cn5d24ggsvziybi07k9p";
+      rev = "f1b72d866d6564075a8b0da1f179c0b7de723131";
+      sha256 = "1vfpf0mjwk519gdly44f0ixc5y4609j33fsjsfzwgcmp3xgmf081";
     };
     meta.homepage = "https://github.com/honza/vim-snippets/";
   };
@@ -6651,64 +8877,88 @@ let
 
   vim-sort-motion = buildVimPluginFrom2Nix {
     pname = "vim-sort-motion";
-    version = "2018-07-15";
+    version = "2021-03-07";
     src = fetchFromGitHub {
       owner = "christoomey";
       repo = "vim-sort-motion";
-      rev = "49dfcabeee2bf3a85a6cc0774b35f687b6c9d0e5";
-      sha256 = "02v12iqy3gjhvh5aza6b6b3pfv2qkyyw83bxqjgbjj002f71ydkb";
+      rev = "c8782be8f7da414c6442b3ba4b6abb0345d392d9";
+      sha256 = "1vq2jrn75g3gd8vfgbnkn0w2qc4gbnrn2lg0wmzsvvxdvj8m9lii";
     };
     meta.homepage = "https://github.com/christoomey/vim-sort-motion/";
   };
 
   vim-sourcetrail = buildVimPluginFrom2Nix {
     pname = "vim-sourcetrail";
-    version = "2018-06-26";
+    version = "2021-02-16";
     src = fetchFromGitHub {
       owner = "CoatiSoftware";
       repo = "vim-sourcetrail";
-      rev = "0fd679321ce51f65a37d04e4ea9031be6eaed85d";
-      sha256 = "1xgvvmah3zn22rjaa093vghwrchmpm5wj30lwwl6h398dyywz8bg";
+      rev = "c9c621a7ab81c52a661457ccf33a64fd7c56fd9d";
+      sha256 = "192f69yz1hh2k0b2kcvfvv1jirjcvnbxvjkagmlkkqcg8w32nmlg";
     };
     meta.homepage = "https://github.com/CoatiSoftware/vim-sourcetrail/";
   };
 
   vim-speeddating = buildVimPluginFrom2Nix {
     pname = "vim-speeddating";
-    version = "2019-11-12";
+    version = "2021-04-29";
     src = fetchFromGitHub {
       owner = "tpope";
       repo = "vim-speeddating";
-      rev = "fe98cfaa7ea9c4b838d42a6830437c919eb55b4e";
-      sha256 = "02875qswrmanr7b798ymlc7w60055q0av0qj3fh7fvpqhsqpg52k";
+      rev = "95da3d72efc91a5131acf388eafa4b1ad6512a9b";
+      sha256 = "1al53c1x2bnnf0nnn7319jxq7bphaxdcnb5i7qa86m337jb2wqrp";
     };
     meta.homepage = "https://github.com/tpope/vim-speeddating/";
   };
 
   vim-spirv = buildVimPluginFrom2Nix {
     pname = "vim-spirv";
-    version = "2020-06-12";
+    version = "2020-11-24";
     src = fetchFromGitHub {
       owner = "kbenzie";
       repo = "vim-spirv";
-      rev = "9b005a0569fa5e18f71fcccbacda227c1cef7eaa";
-      sha256 = "0qby4bfjav2xijh732l7d2jli0adnv6cc8kcalbh5315vi4mpnfk";
+      rev = "50669efc68a0a8b455f12727753b2413dab96f07";
+      sha256 = "19h3pavy65irchpy9xn3kkf3lb531479v6apfa5lg02c18gmxq1f";
     };
     meta.homepage = "https://github.com/kbenzie/vim-spirv/";
   };
 
   vim-startify = buildVimPluginFrom2Nix {
     pname = "vim-startify";
-    version = "2020-04-18";
+    version = "2021-05-08";
     src = fetchFromGitHub {
       owner = "mhinz";
       repo = "vim-startify";
-      rev = "593388d3dbe7bfdcc06a714550d3253442b2fc65";
-      sha256 = "1k0sgx8r3gi3k4ira1ilvc1jmj0k5apiv7x71dqnh41gfrz1i12h";
+      rev = "81e36c352a8deea54df5ec1e2f4348685569bed2";
+      sha256 = "1y8yi099lqg03781bnma2bj6x5lkvfq65vhdpnm65mfyak6dpzgz";
     };
     meta.homepage = "https://github.com/mhinz/vim-startify/";
   };
 
+  vim-startuptime = buildVimPluginFrom2Nix {
+    pname = "vim-startuptime";
+    version = "2021-07-11";
+    src = fetchFromGitHub {
+      owner = "dstein64";
+      repo = "vim-startuptime";
+      rev = "e82e635e1e188b1d00fa9ed3de21794c07ea1445";
+      sha256 = "1623rkqni2xbz6jl8cs848db0gydnpsp0nxss6rg2cp9l813k68f";
+    };
+    meta.homepage = "https://github.com/dstein64/vim-startuptime/";
+  };
+
+  vim-strip-trailing-whitespace = buildVimPluginFrom2Nix {
+    pname = "vim-strip-trailing-whitespace";
+    version = "2021-01-03";
+    src = fetchFromGitHub {
+      owner = "axelf4";
+      repo = "vim-strip-trailing-whitespace";
+      rev = "9a93dd653806ba3f886b2cf92111b663ce8d44bd";
+      sha256 = "1pvirqj21xl2qbs9ycdp7n3lnf4n8b2bz1y90nphnvda4dfaac8l";
+    };
+    meta.homepage = "https://github.com/axelf4/vim-strip-trailing-whitespace/";
+  };
+
   vim-stylish-haskell = buildVimPluginFrom2Nix {
     pname = "vim-stylish-haskell";
     version = "2019-11-28";
@@ -6759,36 +9009,36 @@ let
 
   vim-swap = buildVimPluginFrom2Nix {
     pname = "vim-swap";
-    version = "2019-06-07";
+    version = "2021-04-07";
     src = fetchFromGitHub {
       owner = "machakann";
       repo = "vim-swap";
-      rev = "e52ff679c88f4aa7a7afe77fb42af78c93ed33c8";
-      sha256 = "0rqvxqqk961syawmyc2qdfb4w9ilb1r3mxxij2ja1jbhl1f3w4vq";
+      rev = "e75fb91c4940447758902f8cab95d13f8be84d0e";
+      sha256 = "0z8mlcjhp1r2v9hs69h6kpk7yfyi7c2y7ck096y5y0hbcwrarn6n";
     };
     meta.homepage = "https://github.com/machakann/vim-swap/";
   };
 
   vim-SyntaxRange = buildVimPluginFrom2Nix {
     pname = "vim-SyntaxRange";
-    version = "2020-08-18";
+    version = "2021-01-16";
     src = fetchFromGitHub {
       owner = "inkarkat";
       repo = "vim-SyntaxRange";
-      rev = "602316468bc044e047db88f50157b61fa00b65cb";
-      sha256 = "0zrrvd9xrivx61fiz799mdbwdzl7damdgm6i9h0sl1v95hclhi3i";
+      rev = "3a7fd9ff50fabafe61df12522ed2f275c8e2f45e";
+      sha256 = "1b5xyacbn87z8wkacjpnjk82xmxzivlb111427kwb5kxxdh4w7gq";
     };
     meta.homepage = "https://github.com/inkarkat/vim-SyntaxRange/";
   };
 
   vim-table-mode = buildVimPluginFrom2Nix {
     pname = "vim-table-mode";
-    version = "2020-08-19";
+    version = "2021-05-29";
     src = fetchFromGitHub {
       owner = "dhruvasagar";
       repo = "vim-table-mode";
-      rev = "3476c4e517aa86bc131c707d32f2e508bd5be468";
-      sha256 = "0vglazxlsg7ai4c5znxaddpjnfhz6a9slzs0kzzqvmhd3xr7vfg1";
+      rev = "35e9fbf64c06fddc41651e65b92200f902d8ae0b";
+      sha256 = "16p68x4669y4qpg91hmi4gc3f8qc8bzbr8v6w3nc75vm48s64z6k";
     };
     meta.homepage = "https://github.com/dhruvasagar/vim-table-mode/";
   };
@@ -6819,24 +9069,24 @@ let
 
   vim-terraform = buildVimPluginFrom2Nix {
     pname = "vim-terraform";
-    version = "2020-08-07";
+    version = "2021-07-10";
     src = fetchFromGitHub {
       owner = "hashivim";
       repo = "vim-terraform";
-      rev = "85402fc0f05c103da9d3416e34fb88237ca1de3c";
-      sha256 = "1g8802wmhg5zjk51qfiqcvdclqwg8rfizfpz5jlskcayh82gxvg0";
+      rev = "f0b17ac9f1bbdf3a29dba8b17ab429b1eed5d443";
+      sha256 = "0j87i6kxafwl8a8szy2gzv7d0qhzwynd93iw8k0i42jnpqm8rp3a";
     };
     meta.homepage = "https://github.com/hashivim/vim-terraform/";
   };
 
   vim-terraform-completion = buildVimPluginFrom2Nix {
     pname = "vim-terraform-completion";
-    version = "2019-07-28";
+    version = "2021-04-11";
     src = fetchFromGitHub {
       owner = "juliosueiras";
       repo = "vim-terraform-completion";
-      rev = "1c8792d1e85154aa6fc05eb746711bf2df2274d9";
-      sha256 = "0j87vhxkrv8sdrlv9w5p2zkiv9ssb3rckbffjcfhn9365d41bhgr";
+      rev = "125d0e892f5fd8f32b57a5a5983d03f1aa611949";
+      sha256 = "1ifw9s68g4ng5vzlavnvjd39c67m87ws6iafmsbnpdywywiq5q09";
       fetchSubmodules = true;
     };
     meta.homepage = "https://github.com/juliosueiras/vim-terraform-completion/";
@@ -6844,12 +9094,12 @@ let
 
   vim-test = buildVimPluginFrom2Nix {
     pname = "vim-test";
-    version = "2020-08-12";
+    version = "2021-07-08";
     src = fetchFromGitHub {
       owner = "vim-test";
       repo = "vim-test";
-      rev = "edacfbe57fdbba4788e8c280d37606470b9b70ca";
-      sha256 = "1bi2rsszdpv7vj1xk536lzm54dzk1z41hfp0qr1pzz9lv8fa4sgv";
+      rev = "849d378a499ada59d3326c166d44f0a118e4bdbf";
+      sha256 = "161a3nh1ggd2ff2d6bllssfds6kcab3z7sckr2q2bbipggl33lkd";
     };
     meta.homepage = "https://github.com/vim-test/vim-test/";
   };
@@ -6928,12 +9178,12 @@ let
 
   vim-themis = buildVimPluginFrom2Nix {
     pname = "vim-themis";
-    version = "2020-07-29";
+    version = "2020-11-19";
     src = fetchFromGitHub {
       owner = "thinca";
       repo = "vim-themis";
-      rev = "47bc9855d7c2b1452d8a0abda91bda35837f8552";
-      sha256 = "083k1v9gmmmhmll61kywgd1cn1l2qkfk6sqjjkcv6az01rkrm521";
+      rev = "01960ebe01e3999d2c5fc614cf85c1ec99d1cab1";
+      sha256 = "0z1ypl4ks2wg3mh4fjvhz8984z7js2k9k2bgszd2n6jdma8xp4cw";
     };
     meta.homepage = "https://github.com/thinca/vim-themis/";
   };
@@ -6964,24 +9214,24 @@ let
 
   vim-tmux-focus-events = buildVimPluginFrom2Nix {
     pname = "vim-tmux-focus-events";
-    version = "2019-12-09";
+    version = "2021-04-27";
     src = fetchFromGitHub {
       owner = "tmux-plugins";
       repo = "vim-tmux-focus-events";
-      rev = "e80960715c09aef8ab9204848ed1683805a93a33";
-      sha256 = "0ds6qw2i1r67jhxh9ff36al45bafsmbxxdc127l6iy2vl5wj0d3d";
+      rev = "b1330e04ffb95ede8e02b2f7df1f238190c67056";
+      sha256 = "19r8gslq4m70rgi51bnlazhppggiy3crnmaqyvjc25f59f1213a7";
     };
     meta.homepage = "https://github.com/tmux-plugins/vim-tmux-focus-events/";
   };
 
   vim-tmux-navigator = buildVimPluginFrom2Nix {
     pname = "vim-tmux-navigator";
-    version = "2020-04-23";
+    version = "2021-05-29";
     src = fetchFromGitHub {
       owner = "christoomey";
       repo = "vim-tmux-navigator";
-      rev = "44ba6fbe45895cd541ebfc87606add5c76e3829b";
-      sha256 = "075cncr53w9xc1kqm50zl8yl18aspn3zdr6qjqyslf7gkw8yk38d";
+      rev = "0cabb1ef01af0986b7bf6fb7acf631debdbbb470";
+      sha256 = "0xxc5wpyfqv7f7sfy6xncy7ipj0cvshw28s12ld3jfgyimjllr62";
     };
     meta.homepage = "https://github.com/christoomey/vim-tmux-navigator/";
   };
@@ -7000,23 +9250,35 @@ let
 
   vim-toml = buildVimPluginFrom2Nix {
     pname = "vim-toml";
-    version = "2020-07-06";
+    version = "2020-12-08";
     src = fetchFromGitHub {
       owner = "cespare";
       repo = "vim-toml";
-      rev = "897cb4eaa81a0366bc859effe14116660d4015cd";
-      sha256 = "0ps9kwclqfdydk4132255i9rzcic0sp6d217arjsk1w6gm7m9lm6";
+      rev = "3c5face8e8944a217af45bc5bb708ff7dfcf1a54";
+      sha256 = "0g3hj9lcwd2vzcfkdrydhga2n82144llkvrxcjdn6zl84pjcvgd2";
     };
     meta.homepage = "https://github.com/cespare/vim-toml/";
   };
 
+  vim-tpipeline = buildVimPluginFrom2Nix {
+    pname = "vim-tpipeline";
+    version = "2021-06-19";
+    src = fetchFromGitHub {
+      owner = "vimpostor";
+      repo = "vim-tpipeline";
+      rev = "a40b618746bb60ddf3a664e65f82ffa4750d450a";
+      sha256 = "1pxnsxixdjpmndqi1cl0lp54mh4zidx40lshpdvmk3fjpjdjd130";
+    };
+    meta.homepage = "https://github.com/vimpostor/vim-tpipeline/";
+  };
+
   vim-trailing-whitespace = buildVimPluginFrom2Nix {
     pname = "vim-trailing-whitespace";
-    version = "2020-06-29";
+    version = "2020-11-18";
     src = fetchFromGitHub {
       owner = "bronson";
       repo = "vim-trailing-whitespace";
-      rev = "610ca1a97c8dc85cdeb38635e5a4703317c4b94d";
+      rev = "05f068ebd9dbdf71d2d334d02abd99deb0311c40";
       sha256 = "1bh15yw2aysvpn2ndnc0s6jzc0y93x6q1blc5pph67rdix5bm7gy";
     };
     meta.homepage = "https://github.com/bronson/vim-trailing-whitespace/";
@@ -7046,6 +9308,42 @@ let
     meta.homepage = "https://github.com/lumiliet/vim-twig/";
   };
 
+  vim-twiggy = buildVimPluginFrom2Nix {
+    pname = "vim-twiggy";
+    version = "2021-07-16";
+    src = fetchFromGitHub {
+      owner = "sodapopcan";
+      repo = "vim-twiggy";
+      rev = "cd7286702319d676c622a5f5891dc68563bf6ad5";
+      sha256 = "1xmcnhbny74hr0zciy55gq8c8agds2x1xvdsr1wrghkcr2k15w46";
+    };
+    meta.homepage = "https://github.com/sodapopcan/vim-twiggy/";
+  };
+
+  vim-ultest = buildVimPluginFrom2Nix {
+    pname = "vim-ultest";
+    version = "2021-07-23";
+    src = fetchFromGitHub {
+      owner = "rcarriga";
+      repo = "vim-ultest";
+      rev = "54eaa1b19c924551e9988063926533583e41b24c";
+      sha256 = "16d38yc4v0fy7w8qdrbx134f99xny4kfgwgazqa47cgj8nrb0n4g";
+    };
+    meta.homepage = "https://github.com/rcarriga/vim-ultest/";
+  };
+
+  vim-unicoder = buildVimPluginFrom2Nix {
+    pname = "vim-unicoder";
+    version = "2019-04-16";
+    src = fetchFromGitHub {
+      owner = "arthurxavierx";
+      repo = "vim-unicoder";
+      rev = "a71fc3670f9337c56806fa9e8e97b7ea09fd5e39";
+      sha256 = "1kcnxx909pdvrvk0kyz3h8f9szn6hmalm8qyakq3pv6dknlkwb0b";
+    };
+    meta.homepage = "https://github.com/arthurxavierx/vim-unicoder/";
+  };
+
   vim-unimpaired = buildVimPluginFrom2Nix {
     pname = "vim-unimpaired";
     version = "2020-04-26";
@@ -7072,12 +9370,12 @@ let
 
   vim-vinegar = buildVimPluginFrom2Nix {
     pname = "vim-vinegar";
-    version = "2020-06-27";
+    version = "2021-03-16";
     src = fetchFromGitHub {
       owner = "tpope";
       repo = "vim-vinegar";
-      rev = "5fee9d230ec4a6a16c45f2c71482595e4d9a67bd";
-      sha256 = "14n0mnj1lmk3bmhm0knipsw120dlxpsd98fimmchw0kd80vpph41";
+      rev = "b245f3ab4580eba27616a5ce06a56d5f791e67bd";
+      sha256 = "0lvqfa5drjzk3b877aldnjc9m4jnwlpxlvfvy8s81az92r69f13m";
     };
     meta.homepage = "https://github.com/tpope/vim-vinegar/";
   };
@@ -7096,12 +9394,12 @@ let
 
   vim-visual-multi = buildVimPluginFrom2Nix {
     pname = "vim-visual-multi";
-    version = "2020-08-15";
+    version = "2021-07-11";
     src = fetchFromGitHub {
       owner = "mg979";
       repo = "vim-visual-multi";
-      rev = "038065ed8d1b43972f8993df41f07aa00848a47f";
-      sha256 = "137pcqp96xgak9ghr5829dq39525n0x2p56lcbh2njf3crgvmnl0";
+      rev = "46c082aad84fd83c3c3d962c65afa800c2c33d85";
+      sha256 = "1i3vz8c2v0ygk2m512phkpb8hcz1jj60k583yjkra9l78y7dj7y5";
     };
     meta.homepage = "https://github.com/mg979/vim-visual-multi/";
   };
@@ -7120,24 +9418,24 @@ let
 
   vim-vsnip = buildVimPluginFrom2Nix {
     pname = "vim-vsnip";
-    version = "2020-08-21";
+    version = "2021-07-05";
     src = fetchFromGitHub {
       owner = "hrsh7th";
       repo = "vim-vsnip";
-      rev = "bf0d6c142721d3c1e3ce1f35b205655657db13c9";
-      sha256 = "1z90g90h0yc9xiwl4bwbq3nawks0rzsbxr1ryy07w3qjcg7kwrdp";
+      rev = "d9d3c2d2942b8e35aedc5c82552913b19958de77";
+      sha256 = "06hv1rf3br32n6ks5fic8x9c1m32n3wx4pj4xgmy9q58gf95sn2w";
     };
     meta.homepage = "https://github.com/hrsh7th/vim-vsnip/";
   };
 
   vim-vsnip-integ = buildVimPluginFrom2Nix {
     pname = "vim-vsnip-integ";
-    version = "2020-08-19";
+    version = "2020-12-31";
     src = fetchFromGitHub {
       owner = "hrsh7th";
       repo = "vim-vsnip-integ";
-      rev = "4a076bea73e307738ac5d08f60a0936cab391efd";
-      sha256 = "1jx6ijmj48ffymfn20d0syp1ywv19gmjvf3hb6rdwsk421y58chv";
+      rev = "60dfbb0dc73cfc4828e9328251a46ccbd7e9b5fe";
+      sha256 = "0nv8imllzpm5zvg2n3c5mb7lc1v1fn6jmqy8vgmv2fp1050p3dy3";
     };
     meta.homepage = "https://github.com/hrsh7th/vim-vsnip-integ/";
   };
@@ -7156,12 +9454,12 @@ let
 
   vim-wakatime = buildVimPluginFrom2Nix {
     pname = "vim-wakatime";
-    version = "2020-02-12";
+    version = "2020-12-29";
     src = fetchFromGitHub {
       owner = "wakatime";
       repo = "vim-wakatime";
-      rev = "dd74c71cd2ea23b4a6cba4b05c873983c16e297c";
-      sha256 = "1dc04vmpv62x2rfnfad2y60l5xzpw0167pbii9kss6n6ra81gayr";
+      rev = "45dfc28c30b44041183d749cf724e3dba9ac65ef";
+      sha256 = "1ipdynpg9v5mll1zimyiaxw4zzj004myh5xjky32z783lgi0qlxl";
     };
     meta.homepage = "https://github.com/wakatime/vim-wakatime/";
   };
@@ -7178,28 +9476,52 @@ let
     meta.homepage = "https://github.com/osyo-manga/vim-watchdogs/";
   };
 
+  vim-wayland-clipboard = buildVimPluginFrom2Nix {
+    pname = "vim-wayland-clipboard";
+    version = "2021-05-01";
+    src = fetchFromGitHub {
+      owner = "jasonccox";
+      repo = "vim-wayland-clipboard";
+      rev = "722aaf34486ffee924ccbc34eb22553642c1c153";
+      sha256 = "1vg242139r1arz4kia4bbpmvzr4v5rp7gzy063f61xbvkdjwjx4q";
+    };
+    meta.homepage = "https://github.com/jasonccox/vim-wayland-clipboard/";
+  };
+
   vim-which-key = buildVimPluginFrom2Nix {
     pname = "vim-which-key";
-    version = "2020-08-10";
+    version = "2021-05-04";
     src = fetchFromGitHub {
       owner = "liuchengxu";
       repo = "vim-which-key";
-      rev = "c940b147c3098278f9c14b85eef9cfdbf82a7f09";
-      sha256 = "19qh7lmpb093hnxga2jk6s47bjsdjqj4zrb3lrkrjn2qyyasi194";
+      rev = "da2934fcd36350b871ed8ccd54c8eae3a0dfc8ae";
+      sha256 = "18n5mqwgkjsf67jg2r24d4w93hadg7fnqyvmqq6dd5bsmqwp9v14";
     };
     meta.homepage = "https://github.com/liuchengxu/vim-which-key/";
   };
 
+  vim-wordmotion = buildVimPluginFrom2Nix {
+    pname = "vim-wordmotion";
+    version = "2021-06-04";
+    src = fetchFromGitHub {
+      owner = "chaoren";
+      repo = "vim-wordmotion";
+      rev = "dca1a1827513497def6362411d093ae6b3cff7f8";
+      sha256 = "1ij2j35bskk20wyiwjg1krqr9fi5fk043gfpxihhlbxd7yxlbpq1";
+    };
+    meta.homepage = "https://github.com/chaoren/vim-wordmotion/";
+  };
+
   vim-wordy = buildVimPluginFrom2Nix {
     pname = "vim-wordy";
-    version = "2019-11-22";
+    version = "2020-10-24";
     src = fetchFromGitHub {
-      owner = "reedes";
+      owner = "preservim";
       repo = "vim-wordy";
-      rev = "f0391713fa83771d64b065868331ef4754d861ed";
-      sha256 = "0v5cl3rrg2vrdb2al67hbh730rw8m2zvhb1vippv64k65mknkgp5";
+      rev = "667426a0171787b2620dffa5b2d7c01c9040237f";
+      sha256 = "1lcrisv2wcd8iw76prql03wd11jgmknm3rvbcw7vv4v5r2s9rv5z";
     };
-    meta.homepage = "https://github.com/reedes/vim-wordy/";
+    meta.homepage = "https://github.com/preservim/vim-wordy/";
   };
 
   vim-xdebug = buildVimPluginFrom2Nix {
@@ -7216,24 +9538,36 @@ let
 
   vim-xkbswitch = buildVimPluginFrom2Nix {
     pname = "vim-xkbswitch";
-    version = "2020-05-22";
+    version = "2021-07-12";
     src = fetchFromGitHub {
       owner = "lyokha";
       repo = "vim-xkbswitch";
-      rev = "f54fd6a7357d43a8773313504da72d1bd96d6f1a";
-      sha256 = "0542prcclaw6s4f6dlp0ywz5zp10brb7br7hx4lhhizslcakg09v";
+      rev = "df53e9c5fce91a84e1d6e8722956a01595d16c40";
+      sha256 = "0zndnmdmxlr6114d29sc1q8fc0s2zlsrj1v28gp0sgnim1rmavfp";
     };
     meta.homepage = "https://github.com/lyokha/vim-xkbswitch/";
   };
 
+  vim-xtabline = buildVimPluginFrom2Nix {
+    pname = "vim-xtabline";
+    version = "2021-07-19";
+    src = fetchFromGitHub {
+      owner = "mg979";
+      repo = "vim-xtabline";
+      rev = "e1be98dc050b8c5196e324cb4236e8c4b44483e6";
+      sha256 = "12gr0v2r91q75v1wfrskp330zlyibshngs11if9nlxpnhgz8f6dn";
+    };
+    meta.homepage = "https://github.com/mg979/vim-xtabline/";
+  };
+
   vim-yaml = buildVimPluginFrom2Nix {
     pname = "vim-yaml";
-    version = "2020-01-30";
+    version = "2021-01-14";
     src = fetchFromGitHub {
       owner = "stephpy";
       repo = "vim-yaml";
-      rev = "8fc9136a9c3f64b3e65bb6170391f9daf2c23056";
-      sha256 = "08bg7mxvgrl070m0kk4rmain7h3rv712jj6lk9l808cfjzaw9343";
+      rev = "dce19542d5ec1663183b0f6844ec663b5d1f3d24";
+      sha256 = "18xpdl86zsnmrc1w8wccx9acwjvgij2wpsg7f6dpnxx70c07g3ig";
     };
     meta.homepage = "https://github.com/stephpy/vim-yaml/";
   };
@@ -7262,6 +9596,18 @@ let
     meta.homepage = "https://github.com/dag/vim2hs/";
   };
 
+  vim_current_word = buildVimPluginFrom2Nix {
+    pname = "vim_current_word";
+    version = "2021-01-27";
+    src = fetchFromGitHub {
+      owner = "dominikduda";
+      repo = "vim_current_word";
+      rev = "84ae9300de73cf878c805a6228a58d408b6b829d";
+      sha256 = "0k0wq3aqrbwrqyfz36qdqzyq7cw16d34yvw0gvzyg7iany0z0r6r";
+    };
+    meta.homepage = "https://github.com/dominikduda/vim_current_word/";
+  };
+
   vimacs = buildVimPluginFrom2Nix {
     pname = "vimacs";
     version = "2016-03-24";
@@ -7274,14 +9620,26 @@ let
     meta.homepage = "https://github.com/andrep/vimacs/";
   };
 
+  vimade = buildVimPluginFrom2Nix {
+    pname = "vimade";
+    version = "2021-04-07";
+    src = fetchFromGitHub {
+      owner = "TaDaa";
+      repo = "vimade";
+      rev = "9b9254340e39dab3dad64c05b10af0fd85490b71";
+      sha256 = "0sbk9lf5w136lwl3ca866m594993s23zad5ss4whzm9j0qknihl3";
+    };
+    meta.homepage = "https://github.com/TaDaa/vimade/";
+  };
+
   vimagit = buildVimPluginFrom2Nix {
     pname = "vimagit";
-    version = "2020-01-12";
+    version = "2020-11-18";
     src = fetchFromGitHub {
       owner = "jreybert";
       repo = "vimagit";
-      rev = "bf7b16e99e075b019e56f2fbfb96c493ca3635e2";
-      sha256 = "1f7gvlhrvvkf69y5vfrkvidhx8aa03n1aqmdhk9qjd6sglfg5w0i";
+      rev = "aaf1278f03e866f0b978d4b0f0cc7084db251129";
+      sha256 = "1k23q1p6wgjlk1cpmv1ijjggjklz8hgg6s7bx6mrk0aw5j2s1pdh";
     };
     meta.homepage = "https://github.com/jreybert/vimagit/";
   };
@@ -7312,24 +9670,24 @@ let
 
   VimOrganizer = buildVimPluginFrom2Nix {
     pname = "VimOrganizer";
-    version = "2014-04-10";
+    version = "2020-12-15";
     src = fetchFromGitHub {
       owner = "hsitz";
       repo = "VimOrganizer";
-      rev = "cab0baf635eb9470e62d57d42f2d470180b06c8d";
-      sha256 = "0qncr00xn7lj1i469fzjaaghhqrlyg5s2wj4v6625dhg98y0irix";
+      rev = "09636aed78441a9de2767fcef6d7c567f322cc40";
+      sha256 = "0phpcxmyz562yyp88rbx9pqg46w8r1lyapb700nvxwvqkcd82pfw";
     };
     meta.homepage = "https://github.com/hsitz/VimOrganizer/";
   };
 
   vimoutliner = buildVimPluginFrom2Nix {
     pname = "vimoutliner";
-    version = "2020-02-09";
+    version = "2021-04-24";
     src = fetchFromGitHub {
       owner = "vimoutliner";
       repo = "vimoutliner";
-      rev = "1031b16e6b0069229fe0f33a66489f81174fa4d9";
-      sha256 = "1gn21b8yr0bjg0y1nidk13zcl4f6z8wkrxncgkd1hlc14d99jkg0";
+      rev = "6d849acb977fc2d008f9cd2edf4f1356537794fe";
+      sha256 = "1hy4zgxrc0zn6dnbdv7zy2cn4ny99srsvrgkyvwhg4pzd9rwcqpp";
     };
     meta.homepage = "https://github.com/vimoutliner/vimoutliner/";
   };
@@ -7358,6 +9716,18 @@ let
     meta.homepage = "https://github.com/Shougo/vimproc.vim/";
   };
 
+  vimsence = buildVimPluginFrom2Nix {
+    pname = "vimsence";
+    version = "2021-05-01";
+    src = fetchFromGitHub {
+      owner = "vimsence";
+      repo = "vimsence";
+      rev = "79f43e9da378f66e7c7eb1c6193de8a805d8afe3";
+      sha256 = "0ymdrv74q513ghz7cfsbs9y4qgimk5wbwizwf20dbqy2pcsq6i46";
+    };
+    meta.homepage = "https://github.com/vimsence/vimsence/";
+  };
+
   vimshell-vim = buildVimPluginFrom2Nix {
     pname = "vimshell-vim";
     version = "2019-07-16";
@@ -7370,28 +9740,53 @@ let
     meta.homepage = "https://github.com/Shougo/vimshell.vim/";
   };
 
+  vimspector = buildVimPluginFrom2Nix {
+    pname = "vimspector";
+    version = "2021-07-13";
+    src = fetchFromGitHub {
+      owner = "puremourning";
+      repo = "vimspector";
+      rev = "9c806d2a014a21ef4bce49a18791d04e1a66bdf7";
+      sha256 = "0imqzcdw28d5nmv2837x1m07pmir1yh9zbf52nsnvibw09z26kg8";
+      fetchSubmodules = true;
+    };
+    meta.homepage = "https://github.com/puremourning/vimspector/";
+  };
+
   vimtex = buildVimPluginFrom2Nix {
     pname = "vimtex";
-    version = "2020-08-21";
+    version = "2021-07-18";
     src = fetchFromGitHub {
       owner = "lervag";
       repo = "vimtex";
-      rev = "e14617591fcf59b638d25320215a80f437009119";
-      sha256 = "10nlqbqfna5lvlk6rd4zsr5056vx2d22n6hm8sdpxp094nrqbdic";
+      rev = "830659752b8914f6b4567a00448901246e4d1841";
+      sha256 = "1zdi1kblk03gwifpg1nanq4ppn9xw6af92l3li86ziw89bv3bad9";
     };
     meta.homepage = "https://github.com/lervag/vimtex/";
   };
 
   vimux = buildVimPluginFrom2Nix {
     pname = "vimux";
-    version = "2017-10-24";
+    version = "2021-05-25";
     src = fetchFromGitHub {
-      owner = "benmills";
+      owner = "preservim";
       repo = "vimux";
-      rev = "37f41195e6369ac602a08ec61364906600b771f1";
-      sha256 = "0k7ymak2ag67lb4sf80y4k35zj38rj0jf61bf50i6h1bgw987pra";
+      rev = "a1650d5f9bc2d617bb546bb8014a206e41089dc8";
+      sha256 = "0gdhhkpcq654c7jv5ycnss3fra2mysz3zl64n46cq17vmwczbcrh";
+    };
+    meta.homepage = "https://github.com/preservim/vimux/";
+  };
+
+  vimway-lsp-diag-nvim = buildVimPluginFrom2Nix {
+    pname = "vimway-lsp-diag-nvim";
+    version = "2021-07-23";
+    src = fetchFromGitHub {
+      owner = "onsails";
+      repo = "vimway-lsp-diag.nvim";
+      rev = "28c23ed9dc499410b4bd0ac040e48c76560b18b7";
+      sha256 = "1fdmg6xhhqdhk4hykhhxw55d11gcb932b2iz2sk7f4bps8c2lgg9";
     };
-    meta.homepage = "https://github.com/benmills/vimux/";
+    meta.homepage = "https://github.com/onsails/vimway-lsp-diag.nvim/";
   };
 
   vimwiki = buildVimPluginFrom2Nix {
@@ -7420,12 +9815,12 @@ let
 
   vista-vim = buildVimPluginFrom2Nix {
     pname = "vista-vim";
-    version = "2020-08-14";
+    version = "2021-06-16";
     src = fetchFromGitHub {
       owner = "liuchengxu";
       repo = "vista.vim";
-      rev = "7f97d30914daea5b542a90eed747d5bd00afbb19";
-      sha256 = "1ghpkyh9ga759v065yvn4xr8ccwamyr87jkq3av9fslxzfzhwdpm";
+      rev = "d709462958f2167008c9653a9cbc9de1067bfa2d";
+      sha256 = "1fq4ah4jzfddg2w7n1sy9fjfy6z9ab3jslfx48n991i0kwbw4vp0";
     };
     meta.homepage = "https://github.com/liuchengxu/vista.vim/";
   };
@@ -7444,28 +9839,52 @@ let
 
   wal-vim = buildVimPluginFrom2Nix {
     pname = "wal-vim";
-    version = "2020-03-06";
+    version = "2020-11-08";
     src = fetchFromGitHub {
       owner = "dylanaraps";
       repo = "wal.vim";
-      rev = "10f228ce1e7947f62be412f916229131b7710239";
-      sha256 = "0aiwsrcqnazam56cvwmck4bf7w543cr219bkmq0ngqzna72h9735";
+      rev = "c72ba0d18946f29aab9c95eb6975d321c68b3681";
+      sha256 = "03hrn0d6mqjlrixwx5l270jfgwgkzr6xg00h39i49j7k3f1ql078";
     };
     meta.homepage = "https://github.com/dylanaraps/wal.vim/";
   };
 
   webapi-vim = buildVimPluginFrom2Nix {
     pname = "webapi-vim";
-    version = "2019-11-18";
+    version = "2021-06-04";
     src = fetchFromGitHub {
       owner = "mattn";
       repo = "webapi-vim";
-      rev = "10b8e926d85a3ab689c2966a3df1139bcb4e197f";
-      sha256 = "1hbm2mgsncqdjjfgabgncr4ji90mjsa3z0cx7813vdf113v41x26";
+      rev = "b09cbd3a27157a5baf0468403b392f577adefe45";
+      sha256 = "17vlzg5dm5phirwyk8xkqnrkplybd8d5rj9kdx7rgla3h7rqn4wg";
     };
     meta.homepage = "https://github.com/mattn/webapi-vim/";
   };
 
+  which-key-nvim = buildVimPluginFrom2Nix {
+    pname = "which-key-nvim";
+    version = "2021-07-06";
+    src = fetchFromGitHub {
+      owner = "folke";
+      repo = "which-key.nvim";
+      rev = "dc9c3be7acae2a486c117f5a9f6ada62b2243336";
+      sha256 = "105fnr3qa64izllb9s4r6lsg5mfddiap784j7zz7gh3znpy43n3m";
+    };
+    meta.homepage = "https://github.com/folke/which-key.nvim/";
+  };
+
+  wildfire-vim = buildVimPluginFrom2Nix {
+    pname = "wildfire-vim";
+    version = "2021-05-10";
+    src = fetchFromGitHub {
+      owner = "gcmt";
+      repo = "wildfire.vim";
+      rev = "fa91b732fd1c5acd23b7b32d5fbbc884eedafc8d";
+      sha256 = "15gikqmpaf5c6687kgc5ib57pw7gyvxaihdv5549s7p2xkkbcl24";
+    };
+    meta.homepage = "https://github.com/gcmt/wildfire.vim/";
+  };
+
   wmgraphviz-vim = buildVimPluginFrom2Nix {
     pname = "wmgraphviz-vim";
     version = "2018-04-26";
@@ -7502,6 +9921,18 @@ let
     meta.homepage = "https://github.com/lukaszkorecki/workflowish/";
   };
 
+  wstrip-vim = buildVimPluginFrom2Nix {
+    pname = "wstrip-vim";
+    version = "2021-03-14";
+    src = fetchFromGitHub {
+      owner = "tweekmonster";
+      repo = "wstrip.vim";
+      rev = "3d4c35c8ca462fbece58886e52679a5355f461d6";
+      sha256 = "020bikc5482gzshjh2vgvknqxpzzzaff14z1rj6b2yvmbr2a837f";
+    };
+    meta.homepage = "https://github.com/tweekmonster/wstrip.vim/";
+  };
+
   xptemplate = buildVimPluginFrom2Nix {
     pname = "xptemplate";
     version = "2020-06-29";
@@ -7540,12 +9971,12 @@ let
 
   yats-vim = buildVimPluginFrom2Nix {
     pname = "yats-vim";
-    version = "2020-07-30";
+    version = "2021-07-10";
     src = fetchFromGitHub {
       owner = "HerringtonDarkholme";
       repo = "yats.vim";
-      rev = "4d76c5391b7975bd6dd09c0562c0fd4d78e14fa0";
-      sha256 = "1ql5gwdnsf9y56ijphspfi3sbjgfj1594728xyw6l432mddgqx99";
+      rev = "dfa61676a32d096aa05003ace3ba8b977c136e1f";
+      sha256 = "1mj35p5ym92qi4gjfnvfxqv328cgwp8sp2sldw54g6f6yxfzi37a";
       fetchSubmodules = true;
     };
     meta.homepage = "https://github.com/HerringtonDarkholme/yats.vim/";
@@ -7553,12 +9984,12 @@ let
 
   YouCompleteMe = buildVimPluginFrom2Nix {
     pname = "YouCompleteMe";
-    version = "2020-08-05";
+    version = "2021-07-23";
     src = fetchFromGitHub {
       owner = "ycm-core";
       repo = "YouCompleteMe";
-      rev = "bcfd153813ac1f99947b706991eba2861f54a8a2";
-      sha256 = "1mqgqzfx6v7ps8gk7qgs8mihb35i3q100m39sd8wl1ihgcsq3w1r";
+      rev = "8411859f48c8066a3b6f29c1a8e3bfa2d0653551";
+      sha256 = "0yx2aig7pk8f99d539p85q3csb3l7bf2575r24w3fvchwj8w2pqy";
       fetchSubmodules = true;
     };
     meta.homepage = "https://github.com/ycm-core/YouCompleteMe/";
@@ -7590,39 +10021,50 @@ let
 
   zenburn = buildVimPluginFrom2Nix {
     pname = "zenburn";
-    version = "2020-01-23";
+    version = "2020-09-08";
     src = fetchFromGitHub {
       owner = "jnurmine";
       repo = "zenburn";
-      rev = "ec6f369a000602e37e7c066b725f9d6bd12538f4";
-      sha256 = "1ff5ac8lp7fq854kgf03c5h695lm60giw0qda5z428mmzwq0xask";
+      rev = "4ec3795d81fc83b6f43389a6291bfa99394473a8";
+      sha256 = "148s2szjx61rp93nxa95552m87mn4n4ga00dlbvvv7sm607mvxd8";
     };
     meta.homepage = "https://github.com/jnurmine/zenburn/";
   };
 
+  zephyr-nvim = buildVimPluginFrom2Nix {
+    pname = "zephyr-nvim";
+    version = "2021-04-18";
+    src = fetchFromGitHub {
+      owner = "glepnir";
+      repo = "zephyr-nvim";
+      rev = "32c4ea97cc1cd3db1abebd46aff2ee18d66d8d59";
+      sha256 = "1ab5ivfddifapc31qbipvajjgx1mclyqqf29cpz7avsc4h6fp3w0";
+    };
+    meta.homepage = "https://github.com/glepnir/zephyr-nvim/";
+  };
+
   zig-vim = buildVimPluginFrom2Nix {
     pname = "zig-vim";
-    version = "2020-07-20";
+    version = "2021-06-24";
     src = fetchFromGitHub {
       owner = "ziglang";
       repo = "zig.vim";
-      rev = "079985534a5f2795bfaf549f276d4a1c213bfcb1";
-      sha256 = "173yx5nv9pnjm1qxcfkgbf4yfbjyifqjn5qvk8ibdvdxrhyvbrdn";
+      rev = "fb534e7d12be7e529f79ad5ab99c08dc99f53294";
+      sha256 = "17dpkkgazrzym2yqhb6r07y3hxl3hq9yzwkrb1zii94ss4d8lhw9";
     };
     meta.homepage = "https://github.com/ziglang/zig.vim/";
   };
 
   zoomwintab-vim = buildVimPluginFrom2Nix {
     pname = "zoomwintab-vim";
-    version = "2020-04-10";
+    version = "2020-10-13";
     src = fetchFromGitHub {
       owner = "troydm";
       repo = "zoomwintab.vim";
-      rev = "63a70b9e12617d6565a0489c68efe44708d19cf8";
-      sha256 = "1dsi2d6wrv5x6w2hrrjzqivsspxxav0hdj0pymml6gry2jcbj4s9";
+      rev = "3b33368ed2ff6138d07f7ee148306cce7d7f6b7c";
+      sha256 = "0jx6860ajw50fn0l5p3dm3fcfwklqs1lf22yyrb09iljavixj777";
     };
     meta.homepage = "https://github.com/troydm/zoomwintab.vim/";
   };
 
-});
-in lib.fix' (lib.extends overrides packages)
+}
diff --git a/pkgs/misc/vim-plugins/overrides.nix b/pkgs/misc/vim-plugins/overrides.nix
index db1fd71d2f4..60bd11803ca 100644
--- a/pkgs/misc/vim-plugins/overrides.nix
+++ b/pkgs/misc/vim-plugins/overrides.nix
@@ -1,101 +1,96 @@
-{ lib, stdenv
-, python, cmake, meson, vim, ruby
-, which, fetchFromGitHub, fetchgit, fetchurl, fetchzip, fetchpatch
-, llvmPackages, rustPlatform
-, pkgconfig, curl, openssl, libgit2, libiconv
-, xkb-switch, fzf, skim, stylish-haskell
-, python3, boost, icu, ncurses
-, ycmd, rake
-, gobject-introspection, glib, wrapGAppsHook
-, substituteAll
-, languagetool
-, Cocoa, CoreFoundation, CoreServices
+{ lib
+, stdenv
+
+  # nixpkgs functions
+, buildGoModule
 , buildVimPluginFrom2Nix
-, nodePackages
-, dasht
+, fetchFromGitHub
+, fetchpatch
+, fetchurl
+, substituteAll
 
-# coc-go dependency
-, go
+  # Language dependencies
+, python
+, python3
+, rustPlatform
 
-# deoplete-khard dependency
+  # Misc dependencies
+, Cocoa
+, code-minimap
+, dasht
+, direnv
+, fzf
+, gnome
+, himalaya
 , khard
+, languagetool
+, llvmPackages
+, meson
+, nim
+, nodePackages
+, skim
+, sqlite
+, stylish-haskell
+, tabnine
+, vim
+, which
+, xkb-switch
+, ycmd
+
+  # command-t dependencies
+, rake
+, ruby
+
+  # cpsm dependencies
+, boost
+, cmake
+, icu
+, ncurses
+
+  # LanguageClient-neovim dependencies
+, CoreFoundation
+, CoreServices
+
+# nvim-treesitter dependencies
+, tree-sitter
+
+  # sved dependencies
+, glib
+, gobject-introspection
+, wrapGAppsHook
+
+  # vim-clap dependencies
+, curl
+, libgit2
+, libiconv
+, openssl
+, pkg-config
 
 # vim-go dependencies
-, asmfmt, delve, errcheck, godef, golint
-, gomodifytags, gotags, gotools, go-motion
-, gnused, reftools, gogetdoc, golangci-lint
-, impl, iferr, gocode, gocode-gomod, go-tools
+, asmfmt
+, delve
+, errcheck
+, gnused
+, go-motion
+, go-tools
+, gocode
+, gocode-gomod
+, godef
+, gogetdoc
+, golangci-lint
+, golint
+, gomodifytags
 , gopls
-
-# direnv-vim dependencies
-, direnv
-
-# vCoolor dependency
-, gnome3
-
-# fruzzy dependency
-, nim
+, gotags
+, gotools
+, iferr
+, impl
+, reftools
 }:
 
 self: super: {
 
-  vim2nix = buildVimPluginFrom2Nix {
-    pname = "vim2nix";
-    version = "1.0";
-    src = ./vim2nix;
-    dependencies = with super; [ vim-addon-manager ];
-  };
-
-  # Mainly used as a dependency for fzf-vim. Wraps the fzf program as a vim
-  # plugin, since part of the fzf vim plugin is included in the main fzf
-  # program.
-  fzfWrapper = buildVimPluginFrom2Nix {
-    pname = "fzf";
-    version = fzf.version;
-    src = fzf.src;
-  };
-
-  skim = buildVimPluginFrom2Nix {
-    pname = "skim";
-    version = skim.version;
-    src = skim.vim;
-  };
-
-  LanguageClient-neovim = let
-    version = "0.1.158";
-    LanguageClient-neovim-src = fetchFromGitHub {
-      owner = "autozimu";
-      repo = "LanguageClient-neovim";
-      rev = version;
-      sha256 = "14xggdgp5qw4yj4gdsgr8s2nxm098m88q8rx6fzd2j20njv308ki";
-    };
-    LanguageClient-neovim-bin = rustPlatform.buildRustPackage {
-      name = "LanguageClient-neovim-bin";
-      src = LanguageClient-neovim-src;
-
-      cargoSha256 = "0nin1gydf6q4mmxljm2xbd1jfl3wpzx3pvlqwspahblv9j2bf5ck";
-      buildInputs = stdenv.lib.optionals stdenv.isDarwin [ CoreServices ];
-
-      # FIXME: Use impure version of CoreFoundation because of missing symbols.
-      #   Undefined symbols for architecture x86_64: "_CFURLResourceIsReachable"
-      preConfigure = stdenv.lib.optionalString stdenv.isDarwin ''
-        export NIX_LDFLAGS="-F${CoreFoundation}/Library/Frameworks -framework CoreFoundation $NIX_LDFLAGS"
-      '';
-    };
-  in buildVimPluginFrom2Nix {
-    pname = "LanguageClient-neovim";
-    inherit version;
-    src = LanguageClient-neovim-src;
-
-    propagatedBuildInputs = [ LanguageClient-neovim-bin ];
-
-    preFixup = ''
-      substituteInPlace "$out"/share/vim-plugins/LanguageClient-neovim/autoload/LanguageClient.vim \
-        --replace "let l:path = s:root . '/bin/'" "let l:path = '${LanguageClient-neovim-bin}' . '/bin/'"
-    '';
-  };
-
-  clang_complete = super.clang_complete.overrideAttrs(old: {
+  clang_complete = super.clang_complete.overrideAttrs (old: {
     # In addition to the arguments you pass to your compiler, you also need to
     # specify the path of the C++ std header (if you are using C++).
     # These usually implicitly set by cc-wrapper around clang (pkgs/build-support/cc-wrapper).
@@ -103,230 +98,55 @@ self: super: {
     # https://gist.github.com/Mic92/135e83803ed29162817fce4098dec144
     preFixup = ''
       substituteInPlace "$out"/share/vim-plugins/clang_complete/plugin/clang_complete.vim \
-        --replace "let g:clang_library_path = '' + "''" + ''" "let g:clang_library_path='${llvmPackages.clang.cc.lib}/lib/libclang.so'"
+        --replace "let g:clang_library_path = '' + "''" + ''" "let g:clang_library_path='${llvmPackages.libclang.lib}/lib/libclang.so'"
 
       substituteInPlace "$out"/share/vim-plugins/clang_complete/plugin/libclang.py \
         --replace "/usr/lib/clang" "${llvmPackages.clang.cc}/lib/clang"
     '';
   });
 
-  direnv-vim = super.direnv-vim.overrideAttrs(oa: {
-    preFixup = oa.preFixup or "" + ''
-      substituteInPlace $out/share/vim-plugins/direnv-vim/autoload/direnv.vim \
-        --replace "let s:direnv_cmd = get(g:, 'direnv_cmd', 'direnv')" \
-          "let s:direnv_cmd = get(g:, 'direnv_cmd', '${lib.getBin direnv}/bin/direnv')"
-    '';
-  });
-
-  clighter8 = super.clighter8.overrideAttrs(old: {
+  clighter8 = super.clighter8.overrideAttrs (old: {
     preFixup = ''
       sed "/^let g:clighter8_libclang_path/s|')$|${llvmPackages.clang.cc.lib}/lib/libclang.so')|" \
         -i "$out"/share/vim-plugins/clighter8/plugin/clighter8.vim
     '';
   });
 
-  coc-go = super.coc-go.overrideAttrs(old: {
-    preFixup = ''
-      substituteInPlace "$out"/share/vim-plugins/coc-go/src/utils/tools.ts \
-        --replace 'const cmd = `GOPATH=''${gopath}; go ''${args}`' 'const cmd = `GOPATH=''${gopath}; ${go}/bin/go ''${args}`'
+  command-t = super.command-t.overrideAttrs (old: {
+    buildInputs = [ ruby rake ];
+    buildPhase = ''
+      rake make
+      rm ruby/command-t/ext/command-t/*.o
     '';
   });
 
-  coc-css = buildVimPluginFrom2Nix {
-    pname = "coc-css";
-    version = nodePackages.coc-css.version;
-    src = "${nodePackages.coc-css}/lib/node_modules/coc-css";
-  };
-
-  coc-emmet = buildVimPluginFrom2Nix {
-    pname = "coc-emmet";
-    version = nodePackages.coc-emmet.version;
-    src = "${nodePackages.coc-emmet}/lib/node_modules/coc-emmet";
-  };
-
-  coc-eslint = buildVimPluginFrom2Nix {
-    pname = "coc-eslint";
-    version = nodePackages.coc-eslint.version;
-    src = "${nodePackages.coc-eslint}/lib/node_modules/coc-eslint";
-  };
-
-  coc-git = buildVimPluginFrom2Nix {
-    pname = "coc-git";
-    version = nodePackages.coc-git.version;
-    src = "${nodePackages.coc-git}/lib/node_modules/coc-git";
-  };
-
-  coc-highlight = buildVimPluginFrom2Nix {
-    pname = "coc-highlight";
-    version = nodePackages.coc-highlight.version;
-    src = "${nodePackages.coc-highlight}/lib/node_modules/coc-highlight";
-  };
-
-  coc-html = buildVimPluginFrom2Nix {
-    pname = "coc-html";
-    version = nodePackages.coc-html.version;
-    src = "${nodePackages.coc-html}/lib/node_modules/coc-html";
-  };
-
-  coc-imselect = buildVimPluginFrom2Nix {
-    pname = "coc-imselect";
-    version = nodePackages.coc-imselect.version;
-    src = "${nodePackages.coc-imselect}/lib/node_modules/coc-imselect";
-  };
-
-  coc-java = buildVimPluginFrom2Nix {
-    pname = "coc-java";
-    version = nodePackages.coc-java.version;
-    src = "${nodePackages.coc-java}/lib/node_modules/coc-java";
-  };
-
-  coc-jest = buildVimPluginFrom2Nix {
-    pname = "coc-jest";
-    version = nodePackages.coc-jest.version;
-    src = "${nodePackages.coc-jest}/lib/node_modules/coc-jest";
-  };
-
-  coc-json = buildVimPluginFrom2Nix {
-    pname = "coc-json";
-    version = nodePackages.coc-json.version;
-    src = "${nodePackages.coc-json}/lib/node_modules/coc-json";
-  };
-
-  coc-lists = buildVimPluginFrom2Nix {
-    pname = "coc-lists";
-    version = nodePackages.coc-lists.version;
-    src = "${nodePackages.coc-lists}/lib/node_modules/coc-lists";
-  };
-
-  coc-metals = buildVimPluginFrom2Nix {
-    pname = "coc-metals";
-    version = nodePackages.coc-metals.version;
-    src = "${nodePackages.coc-metals}/lib/node_modules/coc-metals";
-  };
-
-  coc-pairs = buildVimPluginFrom2Nix {
-    pname = "coc-pairs";
-    version = nodePackages.coc-pairs.version;
-    src = "${nodePackages.coc-pairs}/lib/node_modules/coc-pairs";
-  };
-
-  coc-prettier = buildVimPluginFrom2Nix {
-    pname = "coc-prettier";
-    version = nodePackages.coc-prettier.version;
-    src = "${nodePackages.coc-prettier}/lib/node_modules/coc-prettier";
-  };
-
-  coc-python = buildVimPluginFrom2Nix {
-    pname = "coc-python";
-    version = nodePackages.coc-python.version;
-    src = "${nodePackages.coc-python}/lib/node_modules/coc-python";
-  };
+  compe-tabnine = super.compe-tabnine.overrideAttrs (old: {
+    buildInputs = [ tabnine ];
 
-  coc-r-lsp = buildVimPluginFrom2Nix {
-    pname = "coc-r-lsp";
-    version = nodePackages.coc-r-lsp.version;
-    src = "${nodePackages.coc-r-lsp}/lib/node_modules/coc-r-lsp";
-  };
-
-  coc-rls = buildVimPluginFrom2Nix {
-    pname = "coc-rls";
-    version = nodePackages.coc-rls.version;
-    src = "${nodePackages.coc-rls}/lib/node_modules/coc-rls";
-  };
-
-  coc-rust-analyzer = buildVimPluginFrom2Nix {
-    pname = "coc-rust-analyzer";
-    version = nodePackages.coc-rust-analyzer.version;
-    src = "${nodePackages.coc-rust-analyzer}/lib/node_modules/coc-rust-analyzer";
-  };
-
-  coc-smartf = buildVimPluginFrom2Nix {
-    pname = "coc-smartf";
-    version = nodePackages.coc-smartf.version;
-    src = "${nodePackages.coc-smartf}/lib/node_modules/coc-smartf";
-  };
-
-  coc-snippets = buildVimPluginFrom2Nix {
-    pname = "coc-snippets";
-    version = nodePackages.coc-snippets.version;
-    src = "${nodePackages.coc-snippets}/lib/node_modules/coc-snippets";
-  };
-
-  coc-solargraph = buildVimPluginFrom2Nix {
-    pname = "coc-solargraph";
-    version = nodePackages.coc-solargraph.version;
-    src = "${nodePackages.coc-solargraph}/lib/node_modules/coc-solargraph";
-  };
-
-  coc-stylelint = buildVimPluginFrom2Nix {
-    pname = "coc-stylelint";
-    version = nodePackages.coc-stylelint.version;
-    src = "${nodePackages.coc-stylelint}/lib/node_modules/coc-stylelint";
-  };
-
-  coc-tabnine = buildVimPluginFrom2Nix {
-    pname = "coc-tabnine";
-    version = nodePackages.coc-tabnine.version;
-    src = "${nodePackages.coc-tabnine}/lib/node_modules/coc-tabnine";
-  };
-
-  coc-tslint = buildVimPluginFrom2Nix {
-    pname = "coc-tslint";
-    version = nodePackages.coc-tslint.version;
-    src = "${nodePackages.coc-tslint}/lib/node_modules/coc-tslint";
-  };
-
-  coc-tslint-plugin = buildVimPluginFrom2Nix {
-    pname = "coc-tslint-plugin";
-    version = nodePackages.coc-tslint-plugin.version;
-    src = "${nodePackages.coc-tslint-plugin}/lib/node_modules/coc-tslint-plugin";
-  };
-
-  coc-tsserver = buildVimPluginFrom2Nix {
-    pname = "coc-tsserver";
-    version = nodePackages.coc-tsserver.version;
-    src = "${nodePackages.coc-tsserver}/lib/node_modules/coc-tsserver";
-  };
-
-  coc-vetur = buildVimPluginFrom2Nix {
-    pname = "coc-vetur";
-    version = nodePackages.coc-vetur.version;
-    src = "${nodePackages.coc-vetur}/lib/node_modules/coc-vetur";
-  };
-
-  coc-vimtex = buildVimPluginFrom2Nix {
-    pname = "coc-vimtex";
-    version = nodePackages.coc-vimtex.version;
-    src = "${nodePackages.coc-vimtex}/lib/node_modules/coc-vimtex";
-  };
-
-  coc-wxml = buildVimPluginFrom2Nix {
-    pname = "coc-wxml";
-    version = nodePackages.coc-wxml.version;
-    src = "${nodePackages.coc-wxml}/lib/node_modules/coc-wxml";
-  };
-
-  coc-yaml = buildVimPluginFrom2Nix {
-    pname = "coc-yaml";
-    version = nodePackages.coc-yaml.version;
-    src = "${nodePackages.coc-yaml}/lib/node_modules/coc-yaml";
-  };
+    postFixup = ''
+      mkdir $target/binaries
+      ln -s ${tabnine}/bin/TabNine $target/binaries/TabNine_$(uname -s)
+    '';
+  });
 
-  coc-yank = buildVimPluginFrom2Nix {
-    pname = "coc-yank";
-    version = nodePackages.coc-yank.version;
-    src = "${nodePackages.coc-yank}/lib/node_modules/coc-yank";
-  };
+  completion-buffers = super.completion-buffers.overrideAttrs (old: {
+    dependencies = with self; [ completion-nvim ];
+  });
 
-  command-t = super.command-t.overrideAttrs(old: {
-    buildInputs = [ ruby rake ];
-    buildPhase = ''
-      rake make
-      rm ruby/command-t/ext/command-t/*.o
+  completion-tabnine = super.completion-tabnine.overrideAttrs (old: {
+    dependencies = with self; [ completion-nvim ];
+    buildInputs = [ tabnine ];
+    postFixup = ''
+      mkdir $target/binaries
+      ln -s ${tabnine}/bin/TabNine $target/binaries/TabNine_$(uname -s)
     '';
   });
 
-  cpsm = super.cpsm.overrideAttrs(old: {
+  completion-treesitter = super.completion-treesitter.overrideAttrs (old: {
+    dependencies = with self; [ completion-nvim nvim-treesitter ];
+  });
+
+  cpsm = super.cpsm.overrideAttrs (old: {
     buildInputs = [
       python3
       stdenv
@@ -342,7 +162,7 @@ self: super: {
     '';
   });
 
-  ctrlp-cmatcher = super.ctrlp-cmatcher.overrideAttrs(old: {
+  ctrlp-cmatcher = super.ctrlp-cmatcher.overrideAttrs (old: {
     buildInputs = [ python ];
     buildPhase = ''
       patchShebangs .
@@ -350,141 +170,309 @@ self: super: {
     '';
   });
 
-  defx-nvim = super.defx-nvim.overrideAttrs(old: {
-    dependencies = with super; [ nvim-yarp ];
+  defx-nvim = super.defx-nvim.overrideAttrs (old: {
+    dependencies = with self; [ nvim-yarp ];
   });
 
-  deoplete-fish = super.deoplete-fish.overrideAttrs(old: {
-    dependencies = with super; [ deoplete-nvim vim-fish ];
+  deoplete-fish = super.deoplete-fish.overrideAttrs (old: {
+    dependencies = with self; [ deoplete-nvim vim-fish ];
   });
 
-  deoplete-go = super.deoplete-go.overrideAttrs(old: {
+  deoplete-go = super.deoplete-go.overrideAttrs (old: {
     buildInputs = [ python3 ];
     buildPhase = ''
       pushd ./rplugin/python3/deoplete/ujson
       python3 setup.py build --build-base=$PWD/build --build-lib=$PWD/build
       popd
       find ./rplugin/ -name "ujson*.so" -exec mv -v {} ./rplugin/python3/ \;
-   '';
+    '';
   });
 
-  deoplete-khard = super.deoplete-khard.overrideAttrs(old: {
-    dependencies = [ self.deoplete-nvim ];
+  deoplete-khard = super.deoplete-khard.overrideAttrs (old: {
+    dependencies = with self; [ deoplete-nvim ];
     passthru.python3Dependencies = ps: [ (ps.toPythonModule khard) ];
     meta = {
       description = "Address-completion for khard via deoplete";
       homepage = "https://github.com/nicoe/deoplete-khard";
-      license = stdenv.lib.licenses.mit;
-      maintainers = with stdenv.lib.maintainers; [ jorsn ];
+      license = lib.licenses.mit;
+      maintainers = with lib.maintainers; [ jorsn ];
     };
   });
 
-  ensime-vim = super.ensime-vim.overrideAttrs(old: {
-    passthru.python3Dependencies = ps: with ps; [ sexpdata websocket_client ];
-    dependencies = with super; [ vimproc-vim vimshell-vim super.self forms ];
+  direnv-vim = super.direnv-vim.overrideAttrs (oa: {
+    preFixup = oa.preFixup or "" + ''
+      substituteInPlace $out/share/vim-plugins/direnv-vim/autoload/direnv.vim \
+        --replace "let s:direnv_cmd = get(g:, 'direnv_cmd', 'direnv')" \
+          "let s:direnv_cmd = get(g:, 'direnv_cmd', '${lib.getBin direnv}/bin/direnv')"
+    '';
+  });
+
+  ensime-vim = super.ensime-vim.overrideAttrs (old: {
+    passthru.python3Dependencies = ps: with ps; [ sexpdata websocket-client ];
+    dependencies = with self; [ vimproc-vim vimshell-vim self.self forms ];
+  });
+
+  forms = super.forms.overrideAttrs (old: {
+    dependencies = with self; [ self.self ];
+  });
+
+  fruzzy =
+    let
+      # until https://github.com/NixOS/nixpkgs/pull/67878 is merged, there's no better way to install nim libraries with nix
+      nimpy = fetchFromGitHub {
+        owner = "yglukhov";
+        repo = "nimpy";
+        rev = "4840d1e438985af759ddf0923e7a9250fd8ea0da";
+        sha256 = "0qqklvaajjqnlqm3rkk36pwwnn7x942mbca7nf2cvryh36yg4q5k";
+      };
+      binaryheap = fetchFromGitHub {
+        owner = "bluenote10";
+        repo = "nim-heap";
+        rev = "c38039309cb11391112571aa332df9c55f625b54";
+        sha256 = "05xdy13vm5n8dw2i366ppbznc4cfhq23rdcklisbaklz2jhdx352";
+      };
+    in
+    super.fruzzy.overrideAttrs (old: {
+      buildInputs = [ nim ];
+      patches = [
+        (substituteAll {
+          src = ./patches/fruzzy/get_version.patch;
+          version = old.version;
+        })
+      ];
+      configurePhase = ''
+        substituteInPlace Makefile \
+          --replace \
+            "nim c" \
+            "nim c --nimcache:$TMP --path:${nimpy} --path:${binaryheap}"
+      '';
+      buildPhase = ''
+        make build
+      '';
+    });
+
+  fzf-checkout-vim = super.fzf-checkout-vim.overrideAttrs (old: {
+    # The plugin has a makefile which tries to run tests in a docker container.
+    # This prevents it.
+    prePatch = ''
+      rm Makefile
+    '';
   });
 
-  forms = super.forms.overrideAttrs(old: {
-    dependencies = with super; [ super.self ];
+  fzf-vim = super.fzf-vim.overrideAttrs (old: {
+    dependencies = with self; [ fzfWrapper ];
   });
 
-  fruzzy = let # until https://github.com/NixOS/nixpkgs/pull/67878 is merged, there's no better way to install nim libraries with nix
-    nimpy = fetchFromGitHub {
-      owner = "yglukhov";
-      repo = "nimpy";
-      rev = "4840d1e438985af759ddf0923e7a9250fd8ea0da";
-      sha256 = "0qqklvaajjqnlqm3rkk36pwwnn7x942mbca7nf2cvryh36yg4q5k";
+  # Mainly used as a dependency for fzf-vim. Wraps the fzf program as a vim
+  # plugin, since part of the fzf vim plugin is included in the main fzf
+  # program.
+  fzfWrapper = buildVimPluginFrom2Nix {
+    inherit (fzf) src version;
+    pname = "fzf";
+    postInstall = ''
+      ln -s ${fzf}/bin/fzf $target/bin/fzf
+    '';
+  };
+
+  ghcid = super.ghcid.overrideAttrs (old: {
+    configurePhase = "cd plugins/nvim";
+  });
+
+  gitsigns-nvim = super.gitsigns-nvim.overrideAttrs (old: {
+    dependencies = with self; [ plenary-nvim ];
+  });
+
+  gruvbox-nvim = super.gruvbox-nvim.overrideAttrs (old: {
+    dependencies = with self; [ lush-nvim ];
+  });
+
+  jedi-vim = super.jedi-vim.overrideAttrs (old: {
+    # checking for python3 support in vim would be neat, too, but nobody else seems to care
+    buildInputs = [ python3.pkgs.jedi ];
+    meta = {
+      description = "code-completion for python using python-jedi";
+      license = lib.licenses.mit;
     };
-    binaryheap = fetchFromGitHub {
-      owner = "bluenote10";
-      repo = "nim-heap";
-      rev = "c38039309cb11391112571aa332df9c55f625b54";
-      sha256 = "05xdy13vm5n8dw2i366ppbznc4cfhq23rdcklisbaklz2jhdx352";
+  });
+
+  himalaya-vim = buildVimPluginFrom2Nix {
+    pname = "himalaya-vim";
+    inherit (himalaya) src version;
+    configurePhase = "cd vim/";
+    dependencies = with self; [ himalaya ];
+    preFixup = ''
+      substituteInPlace $out/share/vim-plugins/himalaya-vim/plugin/himalaya.vim \
+        --replace 'if !executable("himalaya")' 'if v:false'
+    '';
+    postFixup = ''
+      mkdir -p $out/bin
+      ln -s ${himalaya}/bin/himalaya $out/bin/himalaya
+    '';
+  };
+
+  LanguageClient-neovim =
+    let
+      version = "0.1.161";
+      LanguageClient-neovim-src = fetchFromGitHub {
+        owner = "autozimu";
+        repo = "LanguageClient-neovim";
+        rev = version;
+        sha256 = "Z9S2ie9RxJCIbmjSV/Tto4lK04cZfWmK3IAy8YaySVI=";
+      };
+      LanguageClient-neovim-bin = rustPlatform.buildRustPackage {
+        pname = "LanguageClient-neovim-bin";
+        inherit version;
+        src = LanguageClient-neovim-src;
+
+        cargoSha256 = "H34UqJ6JOwuSABdOup5yKeIwFrGc83TUnw1ggJEx9o4=";
+        buildInputs = lib.optionals stdenv.isDarwin [ CoreServices ];
+
+        # FIXME: Use impure version of CoreFoundation because of missing symbols.
+        #   Undefined symbols for architecture x86_64: "_CFURLResourceIsReachable"
+        preConfigure = lib.optionalString stdenv.isDarwin ''
+          export NIX_LDFLAGS="-F${CoreFoundation}/Library/Frameworks -framework CoreFoundation $NIX_LDFLAGS"
+        '';
+      };
+    in
+    buildVimPluginFrom2Nix {
+      pname = "LanguageClient-neovim";
+      inherit version;
+      src = LanguageClient-neovim-src;
+
+      propagatedBuildInputs = [ LanguageClient-neovim-bin ];
+
+      preFixup = ''
+        substituteInPlace "$out"/share/vim-plugins/LanguageClient-neovim/autoload/LanguageClient.vim \
+          --replace "let l:path = s:root . '/bin/'" "let l:path = '${LanguageClient-neovim-bin}' . '/bin/'"
+      '';
     };
-  in super.fruzzy.overrideAttrs(old: {
-    buildInputs = [ nim ];
+
+  lens-vim = super.lens-vim.overrideAttrs (old: {
+    # remove duplicate g:lens#animate in doc/lens.txt
+    # https://github.com/NixOS/nixpkgs/pull/105810#issuecomment-740007985
+    # https://github.com/camspiers/lens.vim/pull/40/files
     patches = [
       (substituteAll {
-        src = ./patches/fruzzy/get_version.patch;
-        version = old.version;
+        src = ./patches/lens-vim/remove_duplicate_g_lens_animate.patch;
+        inherit languagetool;
       })
     ];
-    configurePhase = ''
-      substituteInPlace Makefile \
-        --replace \
-          "nim c" \
-          "nim c --nimcache:$TMP --path:${nimpy} --path:${binaryheap}"
-    '';
-    buildPhase = ''
-      make build
-    '';
-  });
-
-  ghcid = super.ghcid.overrideAttrs(old: {
-    configurePhase = "cd plugins/nvim";
   });
 
-  vim-gist = super.vim-gist.overrideAttrs(old: {
-    dependencies = with super; [ webapi-vim ];
+  lf-vim = super.lf-vim.overrideAttrs (old: {
+    dependencies = with self; [ vim-floaterm ];
   });
 
   meson = buildVimPluginFrom2Nix {
     inherit (meson) pname version src;
     preInstall = "cd data/syntax-highlighting/vim";
-    meta.maintainers = with stdenv.lib.maintainers; [ vcunat ];
+    meta.maintainers = with lib.maintainers; [ vcunat ];
   };
 
-  ncm2 = super.ncm2.overrideAttrs(old: {
-    dependencies = with super; [ nvim-yarp ];
+  minimap-vim = super.minimap-vim.overrideAttrs (old: {
+    preFixup = ''
+      substituteInPlace $out/share/vim-plugins/minimap-vim/plugin/minimap.vim \
+        --replace "code-minimap" "${code-minimap}/bin/code-minimap"
+      substituteInPlace $out/share/vim-plugins/minimap-vim/bin/minimap_generator.sh \
+        --replace "code-minimap" "${code-minimap}/bin/code-minimap"
+    '';
+  });
+
+  ncm2 = super.ncm2.overrideAttrs (old: {
+    dependencies = with self; [ nvim-yarp ];
   });
 
-  ncm2-jedi = super.ncm2-jedi.overrideAttrs(old: {
-    dependencies = with super; [ nvim-yarp ncm2 ];
+  ncm2-jedi = super.ncm2-jedi.overrideAttrs (old: {
+    dependencies = with self; [ nvim-yarp ncm2 ];
     passthru.python3Dependencies = ps: with ps; [ jedi ];
   });
 
-  ncm2-neoinclude = super.ncm2-neoinclude.overrideAttrs(old: {
-    dependencies = with super; [ neoinclude-vim ];
+  ncm2-neoinclude = super.ncm2-neoinclude.overrideAttrs (old: {
+    dependencies = with self; [ neoinclude-vim ];
   });
 
-  ncm2-neosnippet = super.ncm2-neosnippet.overrideAttrs(old: {
-    dependencies = with super; [ neosnippet-vim ];
+  ncm2-neosnippet = super.ncm2-neosnippet.overrideAttrs (old: {
+    dependencies = with self; [ neosnippet-vim ];
   });
 
-  ncm2-syntax = super.ncm2-syntax.overrideAttrs(old: {
-    dependencies = with super; [ neco-syntax ];
+  ncm2-syntax = super.ncm2-syntax.overrideAttrs (old: {
+    dependencies = with self; [ neco-syntax ];
   });
 
-  ncm2-ultisnips = super.ncm2-ultisnips.overrideAttrs(old: {
-    dependencies = with super; [ ultisnips ];
+  ncm2-ultisnips = super.ncm2-ultisnips.overrideAttrs (old: {
+    dependencies = with self; [ ultisnips ];
   });
 
-  fzf-vim = super.fzf-vim.overrideAttrs(old: {
-    dependencies = [ self.fzfWrapper ];
+  neogit = super.neogit.overrideAttrs (old: {
+    dependencies = with self; [ plenary-nvim ];
   });
 
-  skim-vim = super.skim-vim.overrideAttrs(old: {
-    dependencies = [ self.skim ];
+  null-ls-nvim = super.null-ls-nvim.overrideAttrs (old: {
+    path = "null-ls.nvim";
   });
 
-  sved = let
-    # we put the script in its own derivation to benefit the magic of wrapGAppsHook
-    svedbackend = stdenv.mkDerivation {
-      name = "svedbackend-${super.sved.name}";
-      inherit (super.sved) src;
-      nativeBuildInputs = [ wrapGAppsHook ];
-      buildInputs = [
-        gobject-introspection
-        glib
-        (python3.withPackages(ps: with ps; [ pygobject3 pynvim dbus-python ]))
-      ];
-      preferLocalBuild = true;
-      installPhase = ''
-        install -Dt $out/bin ftplugin/evinceSync.py
-      '';
-    };
-  in
-    super.sved.overrideAttrs(old: {
+  nvim-lsputils = super.nvim-lsputils.overrideAttrs (old: {
+    dependencies = with self; [ popfix ];
+  });
+
+  # Usage:
+  # pkgs.vimPlugins.nvim-treesitter.withPlugins (p: [ p.tree-sitter-c p.tree-sitter-java ... ])
+  # or for all grammars:
+  # pkgs.vimPlugins.nvim-treesitter.withPlugins (_: tree-sitter.allGrammars)
+  nvim-treesitter = super.nvim-treesitter.overrideAttrs (old: {
+    passthru.withPlugins =
+      grammarFn: self.nvim-treesitter.overrideAttrs (_: {
+        postPatch =
+          let
+            grammars = tree-sitter.withPlugins grammarFn;
+          in
+          ''
+            rm -r parser
+            ln -s ${grammars} parser
+          '';
+      });
+  });
+
+  onehalf = super.onehalf.overrideAttrs (old: {
+    configurePhase = "cd vim";
+  });
+
+  skim = buildVimPluginFrom2Nix {
+    pname = "skim";
+    version = skim.version;
+    src = skim.vim;
+  };
+
+  skim-vim = super.skim-vim.overrideAttrs (old: {
+    dependencies = with self; [ skim ];
+  });
+
+  sql-nvim = super.sql-nvim.overrideAttrs (old: {
+    postPatch = ''
+      substituteInPlace lua/sql/defs.lua \
+        --replace "vim.g.sql_clib_path or" "vim.g.sql_clib_path or '${sqlite.out}/lib/libsqlite3.so' or"
+    '';
+  });
+
+  sved =
+    let
+      # we put the script in its own derivation to benefit the magic of wrapGAppsHook
+      svedbackend = stdenv.mkDerivation {
+        name = "svedbackend-${super.sved.name}";
+        inherit (super.sved) src;
+        nativeBuildInputs = [ wrapGAppsHook ];
+        buildInputs = [
+          gobject-introspection
+          glib
+          (python3.withPackages (ps: with ps; [ pygobject3 pynvim dbus-python ]))
+        ];
+        preferLocalBuild = true;
+        installPhase = ''
+          install -Dt $out/bin ftplugin/evinceSync.py
+        '';
+      };
+    in
+    super.sved.overrideAttrs (old: {
       preferLocalBuild = true;
       postPatch = ''
         rm ftplugin/evinceSync.py
@@ -495,103 +483,192 @@ self: super: {
       };
     });
 
-  vimacs = super.vimacs.overrideAttrs(old: {
-    buildPhase = ''
-      substituteInPlace bin/vim \
-        --replace '/usr/bin/vim' 'vim' \
-        --replace '/usr/bin/gvim' 'gvim'
-      # remove unnecessary duplicated bin wrapper script
-      rm -r plugin/vimacs
-    '';
-    meta = with stdenv.lib; {
-      description = "Vim-Improved eMACS: Emacs emulation plugin for Vim";
-      homepage = "http://algorithm.com.au/code/vimacs";
-      license = licenses.gpl2Plus;
-      maintainers = with stdenv.lib.maintainers; [ millerjason ];
-    };
+  telescope-frecency-nvim = super.telescope-frecency-nvim.overrideAttrs (old: {
+    dependencies = with self; [ sql-nvim telescope-nvim ];
+  });
+
+  telescope-fzf-writer-nvim = super.telescope-fzf-writer-nvim.overrideAttrs (old: {
+    dependencies = with self; [ telescope-nvim ];
+  });
+
+  telescope-fzf-native-nvim = super.telescope-fzf-native-nvim.overrideAttrs (old: {
+    dependencies = with self; [ telescope-nvim ];
+    buildPhase = "make";
+    meta.platforms = lib.platforms.all;
+  });
+
+  telescope-fzy-native-nvim = super.telescope-fzy-native-nvim.overrideAttrs (old: {
+    dependencies = with self; [ telescope-nvim ];
+    preFixup =
+      let
+        fzy-lua-native-path = "deps/fzy-lua-native";
+        fzy-lua-native =
+          stdenv.mkDerivation {
+            name = "fzy-lua-native";
+            src = "${old.src}/${fzy-lua-native-path}";
+            # remove pre-compiled binaries
+            preBuild = "rm -rf static/*";
+            installPhase = ''
+              install -Dm 444 -t $out/static static/*
+              install -Dm 444 -t $out/lua lua/*
+            '';
+          };
+      in
+      ''
+        rm -rf $target/${fzy-lua-native-path}/*
+        ln -s ${fzy-lua-native}/static $target/${fzy-lua-native-path}/static
+        ln -s ${fzy-lua-native}/lua $target/${fzy-lua-native-path}/lua
+      '';
+    meta.platforms = lib.platforms.all;
   });
 
-  vimshell-vim = super.vimshell-vim.overrideAttrs(old: {
-    dependencies = with super; [ vimproc-vim ];
+  telescope-nvim = super.telescope-nvim.overrideAttrs (old: {
+    dependencies = with self; [ plenary-nvim popup-nvim ];
+  });
+
+  telescope-symbols-nvim = super.telescope-symbols-nvim.overrideAttrs (old: {
+    dependencies = with self; [ telescope-nvim ];
+  });
+
+  telescope-z-nvim = super.telescope-z-nvim.overrideAttrs (old: {
+    dependencies = with self; [ telescope-nvim ];
+  });
+
+  unicode-vim =
+    let
+      unicode-data = fetchurl {
+        url = "http://www.unicode.org/Public/UNIDATA/UnicodeData.txt";
+        sha256 = "16b0jzvvzarnlxdvs2izd5ia0ipbd87md143dc6lv6xpdqcs75s9";
+      };
+    in
+    super.unicode-vim.overrideAttrs (old: {
+
+      # redirect to /dev/null else changes terminal color
+      buildPhase = ''
+        cp "${unicode-data}" autoload/unicode/UnicodeData.txt
+        echo "Building unicode cache"
+        ${vim}/bin/vim --cmd ":set rtp^=$PWD" -c 'ru plugin/unicode.vim' -c 'UnicodeCache' -c ':echohl Normal' -c ':q' > /dev/null
+      '';
+    });
+
+  vCoolor-vim = super.vCoolor-vim.overrideAttrs (old: {
+    # on linux can use either Zenity or Yad.
+    propagatedBuildInputs = [ gnome.zenity ];
+    meta = {
+      description = "Simple color selector/picker plugin";
+      license = lib.licenses.publicDomain;
+    };
   });
 
-  vim-addon-manager = super.vim-addon-manager.overrideAttrs(old: {
-    buildInputs = stdenv.lib.optional stdenv.isDarwin Cocoa;
+  vim-addon-actions = super.vim-addon-actions.overrideAttrs (old: {
+    dependencies = with self; [ vim-addon-mw-utils tlib_vim ];
   });
 
-  vim-addon-actions = super.vim-addon-actions.overrideAttrs(old: {
-    dependencies = with super; [ vim-addon-mw-utils tlib_vim ];
+  vim-addon-async = super.vim-addon-async.overrideAttrs (old: {
+    dependencies = with self; [ vim-addon-signs ];
   });
 
-  vim-addon-async = super.vim-addon-async.overrideAttrs(old: {
-    dependencies = with super; [ vim-addon-signs ];
+  vim-addon-background-cmd = super.vim-addon-background-cmd.overrideAttrs (old: {
+    dependencies = with self; [ vim-addon-mw-utils ];
   });
 
-  vim-addon-background-cmd = super.vim-addon-background-cmd.overrideAttrs(old: {
-    dependencies = with super; [ vim-addon-mw-utils ];
+  vim-addon-completion = super.vim-addon-completion.overrideAttrs (old: {
+    dependencies = with self; [ tlib_vim ];
   });
 
-  vim-addon-completion = super.vim-addon-completion.overrideAttrs(old: {
-    dependencies = with super; [ tlib_vim ];
+  vim-addon-goto-thing-at-cursor = super.vim-addon-goto-thing-at-cursor.overrideAttrs (old: {
+    dependencies = with self; [ tlib_vim ];
   });
 
-  vim-addon-goto-thing-at-cursor = super.vim-addon-goto-thing-at-cursor.overrideAttrs(old: {
-    dependencies = with super; [ tlib_vim ];
+  vim-addon-manager = super.vim-addon-manager.overrideAttrs (old: {
+    buildInputs = lib.optional stdenv.isDarwin Cocoa;
   });
 
-  vim-addon-mru = super.vim-addon-mru.overrideAttrs(old: {
-    dependencies = with super; [ vim-addon-other vim-addon-mw-utils ];
+  vim-addon-mru = super.vim-addon-mru.overrideAttrs (old: {
+    dependencies = with self; [ vim-addon-other vim-addon-mw-utils ];
   });
 
-  vim-addon-nix = super.vim-addon-nix.overrideAttrs(old: {
-    dependencies = with super; [
+  vim-addon-nix = super.vim-addon-nix.overrideAttrs (old: {
+    dependencies = with self; [
       vim-addon-completion
       vim-addon-goto-thing-at-cursor
       vim-addon-errorformats
       vim-addon-actions
-      vim-addon-mw-utils tlib_vim
+      vim-addon-mw-utils
+      tlib_vim
     ];
   });
 
-  vim-addon-sql = super.vim-addon-sql.overrideAttrs(old: {
-    dependencies = with super; [ vim-addon-completion vim-addon-background-cmd tlib_vim ];
+  vim-addon-sql = super.vim-addon-sql.overrideAttrs (old: {
+    dependencies = with self; [ vim-addon-completion vim-addon-background-cmd tlib_vim ];
   });
 
-  vim-addon-syntax-checker = super.vim-addon-syntax-checker.overrideAttrs(old: {
-    dependencies = with super; [ vim-addon-mw-utils tlib_vim ];
+  vim-addon-syntax-checker = super.vim-addon-syntax-checker.overrideAttrs (old: {
+    dependencies = with self; [ vim-addon-mw-utils tlib_vim ];
   });
 
-  vim-addon-toggle-buffer = super.vim-addon-toggle-buffer.overrideAttrs(old: {
-    dependencies = with super; [ vim-addon-mw-utils tlib_vim ];
+  vim-addon-toggle-buffer = super.vim-addon-toggle-buffer.overrideAttrs (old: {
+    dependencies = with self; [ vim-addon-mw-utils tlib_vim ];
   });
 
-  vim-addon-xdebug = super.vim-addon-xdebug.overrideAttrs(old: {
-    dependencies = with super; [ webapi-vim vim-addon-mw-utils vim-addon-signs vim-addon-async ];
+  vim-addon-xdebug = super.vim-addon-xdebug.overrideAttrs (old: {
+    dependencies = with self; [ webapi-vim vim-addon-mw-utils vim-addon-signs vim-addon-async ];
   });
 
-  vim-bazel = super.vim-bazel.overrideAttrs(old: {
-    dependencies = with super; [ vim-maktaba ];
+  vim-bazel = super.vim-bazel.overrideAttrs (old: {
+    dependencies = with self; [ vim-maktaba ];
   });
 
-  vim-beancount = super.vim-beancount.overrideAttrs(old: {
+  vim-beancount = super.vim-beancount.overrideAttrs (old: {
     passthru.python3Dependencies = ps: with ps; [ beancount ];
   });
 
-  vim-codefmt = super.vim-codefmt.overrideAttrs(old: {
-    dependencies = with super; [ vim-maktaba ];
+  vim-clap = super.vim-clap.overrideAttrs (old: {
+    preFixup =
+      let
+        maple-bin = rustPlatform.buildRustPackage {
+          name = "maple";
+          src = old.src;
+
+          nativeBuildInputs = [
+            pkg-config
+          ];
+
+          buildInputs = [
+            openssl
+          ] ++ lib.optionals stdenv.isDarwin [
+            CoreServices
+            curl
+            libgit2
+            libiconv
+          ];
+
+          cargoSha256 = "sha256-J5BCLcwOPB+EfOmdITCHgec9XDkm2oCGfRo/sKjEOIg=";
+        };
+      in
+      ''
+        ln -s ${maple-bin}/bin/maple $target/bin/maple
+      '';
+
+    meta.platforms = lib.platforms.all;
+  });
+
+  vim-codefmt = super.vim-codefmt.overrideAttrs (old: {
+    dependencies = with self; [ vim-maktaba ];
   });
 
-  vim-dasht = super.vim-dasht.overrideAttrs(old: {
+  vim-dasht = super.vim-dasht.overrideAttrs (old: {
     preFixup = ''
       substituteInPlace $out/share/vim-plugins/vim-dasht/autoload/dasht.vim \
         --replace "['dasht']" "['${dasht}/bin/dasht']"
     '';
   });
 
-  vim-easytags = super.vim-easytags.overrideAttrs(old: {
-    dependencies = with super; [ vim-misc ];
+  vim-easytags = super.vim-easytags.overrideAttrs (old: {
+    dependencies = with self; [ vim-misc ];
     patches = [
-      (fetchpatch { # https://github.com/xolox/vim-easytags/pull/170 fix version detection for universal-ctags
+      (fetchpatch {
+        # https://github.com/xolox/vim-easytags/pull/170 fix version detection for universal-ctags
         url = "https://github.com/xolox/vim-easytags/commit/46e4709500ba3b8e6cf3e90aeb95736b19e49be9.patch";
         sha256 = "0x0xabb56xkgdqrg1mpvhbi3yw4d829n73lsnnyj5yrxjffy4ax4";
       })
@@ -601,36 +678,42 @@ self: super: {
   # change the go_bin_path to point to a path in the nix store. See the code in
   # fatih/vim-go here
   # https://github.com/fatih/vim-go/blob/155836d47052ea9c9bac81ba3e937f6f22c8e384/autoload/go/path.vim#L154-L159
-  vim-go = super.vim-go.overrideAttrs(old: let
-    binPath = lib.makeBinPath [
-      asmfmt
-      delve
-      errcheck
-      go-motion
-      go-tools
-      gocode
-      gocode-gomod
-      godef
-      gogetdoc
-      golint
-      golangci-lint
-      gomodifytags
-      gopls
-      gotags
-      gotools
-      iferr
-      impl
-      reftools
-    ];
-    in {
-    postPatch = ''
-      ${gnused}/bin/sed \
-        -Ee 's@"go_bin_path", ""@"go_bin_path", "${binPath}"@g' \
-        -i autoload/go/config.vim
-    '';
+  vim-go = super.vim-go.overrideAttrs (old:
+    let
+      binPath = lib.makeBinPath [
+        asmfmt
+        delve
+        errcheck
+        go-motion
+        go-tools
+        gocode
+        gocode-gomod
+        godef
+        gogetdoc
+        golint
+        golangci-lint
+        gomodifytags
+        gopls
+        gotags
+        gotools
+        iferr
+        impl
+        reftools
+      ];
+    in
+    {
+      postPatch = ''
+        ${gnused}/bin/sed \
+          -Ee 's@"go_bin_path", ""@"go_bin_path", "${binPath}"@g' \
+          -i autoload/go/config.vim
+      '';
+    });
+
+  vim-gist = super.vim-gist.overrideAttrs (old: {
+    dependencies = with self; [ webapi-vim ];
   });
 
-  vim-grammarous = super.vim-grammarous.overrideAttrs(old: {
+  vim-grammarous = super.vim-grammarous.overrideAttrs (old: {
     # use `:GrammarousCheck` to initialize checking
     # In neovim, you also want to use set
     #   let g:grammarous#show_first_error = 1
@@ -643,35 +726,86 @@ self: super: {
     ];
   });
 
-  vim-hier = super.vim-hier.overrideAttrs(old: {
+  vim-hexokinase = super.vim-hexokinase.overrideAttrs (old: {
+    preFixup =
+      let
+        hexokinase = buildGoModule {
+          name = "hexokinase";
+          src = old.src + "/hexokinase";
+          vendorSha256 = "pQpattmS9VmO3ZIQUFn66az8GSmB4IvYhTTCFn6SUmo=";
+        };
+      in
+      ''
+        ln -s ${hexokinase}/bin/hexokinase $target/hexokinase/hexokinase
+      '';
+
+    meta.platforms = lib.platforms.all;
+  });
+
+  vim-hier = super.vim-hier.overrideAttrs (old: {
     buildInputs = [ vim ];
   });
 
-  vim-isort = super.vim-isort.overrideAttrs(old: {
+  vim-isort = super.vim-isort.overrideAttrs (old: {
     postPatch = ''
       substituteInPlace ftplugin/python_vimisort.vim \
         --replace 'import vim' 'import vim; import sys; sys.path.append("${python.pkgs.isort}/${python.sitePackages}")'
     '';
   });
 
-  vim-metamath = super.vim-metamath.overrideAttrs(old: {
+  vim-markdown-composer =
+    let
+      vim-markdown-composer-bin = rustPlatform.buildRustPackage rec {
+        pname = "vim-markdown-composer-bin";
+        inherit (super.vim-markdown-composer) src version;
+        cargoSha256 = "1cvnjsw5dd02wrm1q5xi8b033rsn44f7fkmw5j7lhskv5j286zrh";
+      };
+    in
+    super.vim-markdown-composer.overrideAttrs (oldAttrs: rec {
+      preFixup = ''
+        substituteInPlace "$out"/share/vim-plugins/vim-markdown-composer/after/ftplugin/markdown/composer.vim \
+          --replace "let l:args = [s:plugin_root . '/target/release/markdown-composer']" \
+          "let l:args = ['${vim-markdown-composer-bin}/bin/markdown-composer']"
+      '';
+    });
+
+  vim-metamath = super.vim-metamath.overrideAttrs (old: {
     preInstall = "cd vim";
   });
 
-  vim-snipmate = super.vim-snipmate.overrideAttrs(old: {
-    dependencies = with super; [ vim-addon-mw-utils tlib_vim ];
+  vim-snipmate = super.vim-snipmate.overrideAttrs (old: {
+    dependencies = with self; [ vim-addon-mw-utils tlib_vim ];
+  });
+
+  vim-speeddating = super.vim-speeddating.overrideAttrs (old: {
+    dependencies = with self; [ vim-repeat ];
+  });
+
+  vim-stylish-haskell = super.vim-stylish-haskell.overrideAttrs (old: {
+    postPatch = old.postPatch or "" + ''
+      substituteInPlace ftplugin/haskell/stylish-haskell.vim --replace \
+        'g:stylish_haskell_command = "stylish-haskell"' \
+        'g:stylish_haskell_command = "${stylish-haskell}/bin/stylish-haskell"'
+    '';
   });
 
+  vim-surround = super.vim-surround.overrideAttrs (old: {
+    dependencies = with self; [ vim-repeat ];
+  });
+
+  vim-unimpaired = super.vim-unimpaired.overrideAttrs (old: {
+    dependencies = with self; [ vim-repeat ];
+  });
 
-  vim-wakatime = super.vim-wakatime.overrideAttrs(old: {
+  vim-wakatime = super.vim-wakatime.overrideAttrs (old: {
     buildInputs = [ python ];
   });
 
-  vim-xdebug = super.vim-xdebug.overrideAttrs(old: {
+  vim-xdebug = super.vim-xdebug.overrideAttrs (old: {
     postInstall = false;
   });
 
-  vim-xkbswitch = super.vim-xkbswitch.overrideAttrs(old: {
+  vim-xkbswitch = super.vim-xkbswitch.overrideAttrs (old: {
     patchPhase = ''
       substituteInPlace plugin/xkbswitch.vim \
         --replace /usr/local/lib/libxkbswitch.so ${xkb-switch}/lib/libxkbswitch.so
@@ -679,14 +813,45 @@ self: super: {
     buildInputs = [ xkb-switch ];
   });
 
-  vim-yapf = super.vim-yapf.overrideAttrs(old: {
+  vim-yapf = super.vim-yapf.overrideAttrs (old: {
     buildPhase = ''
       substituteInPlace ftplugin/python_yapf.vim \
         --replace '"yapf"' '"${python3.pkgs.yapf}/bin/yapf"'
     '';
   });
 
-  vimproc-vim = super.vimproc-vim.overrideAttrs(old: {
+  vim2nix = buildVimPluginFrom2Nix {
+    pname = "vim2nix";
+    version = "1.0";
+    src = ./vim2nix;
+    dependencies = with self; [ vim-addon-manager ];
+  };
+
+  vimacs = super.vimacs.overrideAttrs (old: {
+    buildPhase = ''
+      substituteInPlace bin/vim \
+        --replace '/usr/bin/vim' 'vim' \
+        --replace '/usr/bin/gvim' 'gvim'
+      # remove unnecessary duplicated bin wrapper script
+      rm -r plugin/vimacs
+    '';
+    meta = with lib; {
+      description = "Vim-Improved eMACS: Emacs emulation plugin for Vim";
+      homepage = "http://algorithm.com.au/code/vimacs";
+      license = licenses.gpl2Plus;
+      maintainers = with lib.maintainers; [ millerjason ];
+    };
+  });
+
+  vimsence = super.vimsence.overrideAttrs (old: {
+    meta = with lib; {
+      description = "Discord rich presence for Vim";
+      homepage = "https://github.com/hugolgst/vimsence";
+      maintainers = with lib.maintainers; [ hugolgst ];
+    };
+  });
+
+  vimproc-vim = super.vimproc-vim.overrideAttrs (old: {
     buildInputs = [ which ];
 
     buildPhase = ''
@@ -698,11 +863,15 @@ self: super: {
     '';
   });
 
-  YankRing-vim = super.YankRing-vim.overrideAttrs(old: {
+  vimshell-vim = super.vimshell-vim.overrideAttrs (old: {
+    dependencies = with self; [ vimproc-vim ];
+  });
+
+  YankRing-vim = super.YankRing-vim.overrideAttrs (old: {
     sourceRoot = ".";
   });
 
-  YouCompleteMe = super.YouCompleteMe.overrideAttrs(old: {
+  YouCompleteMe = super.YouCompleteMe.overrideAttrs (old: {
     buildPhase = ''
       substituteInPlace plugin/youcompleteme.vim \
         --replace "'ycm_path_to_python_interpreter', '''" \
@@ -712,7 +881,7 @@ self: super: {
       ln -s ${ycmd}/lib/ycmd third_party
     '';
 
-    meta = with stdenv.lib; {
+    meta = with lib; {
       description = "A code-completion engine for Vim";
       homepage = "https://github.com/Valloric/YouCompleteMe";
       license = licenses.gpl3;
@@ -721,74 +890,55 @@ self: super: {
     };
   });
 
-  jedi-vim = super.jedi-vim.overrideAttrs(old: {
-    # checking for python3 support in vim would be neat, too, but nobody else seems to care
-    buildInputs = [ python3.pkgs.jedi ];
-    meta = {
-      description = "code-completion for python using python-jedi";
-      license = stdenv.lib.licenses.mit;
-    };
-  });
-
-  lf-vim = super.lf-vim.overrideAttrs(old: {
-    dependencies = with super; [ bclose-vim ];
-  });
-
-  vim-stylish-haskell = super.vim-stylish-haskell.overrideAttrs (old: {
-    postPatch = old.postPatch or "" + ''
-      substituteInPlace ftplugin/haskell/stylish-haskell.vim --replace \
-        'g:stylish_haskell_command = "stylish-haskell"' \
-        'g:stylish_haskell_command = "${stylish-haskell}/bin/stylish-haskell"'
-    '';
-  });
-
-  vCoolor-vim = super.vCoolor-vim.overrideAttrs(old: {
-    # on linux can use either Zenity or Yad.
-    propagatedBuildInputs = [ gnome3.zenity ];
-    meta = {
-      description = "Simple color selector/picker plugin";
-      license = stdenv.lib.licenses.publicDomain;
-    };
-  });
-
-  unicode-vim = let
-    unicode-data = fetchurl {
-      url = "http://www.unicode.org/Public/UNIDATA/UnicodeData.txt";
-      sha256 = "16b0jzvvzarnlxdvs2izd5ia0ipbd87md143dc6lv6xpdqcs75s9";
+} // (
+  let
+    nodePackageNames = [
+      "coc-clangd"
+      "coc-cmake"
+      "coc-css"
+      "coc-diagnostic"
+      "coc-emmet"
+      "coc-eslint"
+      "coc-explorer"
+      "coc-git"
+      "coc-go"
+      "coc-highlight"
+      "coc-html"
+      "coc-imselect"
+      "coc-java"
+      "coc-jest"
+      "coc-json"
+      "coc-lists"
+      "coc-markdownlint"
+      "coc-metals"
+      "coc-pairs"
+      "coc-prettier"
+      "coc-pyright"
+      "coc-python"
+      "coc-r-lsp"
+      "coc-rls"
+      "coc-rust-analyzer"
+      "coc-smartf"
+      "coc-snippets"
+      "coc-solargraph"
+      "coc-stylelint"
+      "coc-tabnine"
+      "coc-texlab"
+      "coc-tslint"
+      "coc-tslint-plugin"
+      "coc-tsserver"
+      "coc-vetur"
+      "coc-vimlsp"
+      "coc-vimtex"
+      "coc-wxml"
+      "coc-yaml"
+      "coc-yank"
+    ];
+    nodePackage2VimPackage = name: buildVimPluginFrom2Nix {
+      pname = name;
+      inherit (nodePackages.${name}) version meta;
+      src = "${nodePackages.${name}}/lib/node_modules/${name}";
     };
-  in super.unicode-vim.overrideAttrs(old: {
-
-      # redirect to /dev/null else changes terminal color
-      buildPhase = ''
-        cp "${unicode-data}" autoload/unicode/UnicodeData.txt
-        echo "Building unicode cache"
-        ${vim}/bin/vim --cmd ":set rtp^=$PWD" -c 'ru plugin/unicode.vim' -c 'UnicodeCache' -c ':echohl Normal' -c ':q' > /dev/null
-      '';
-  });
-
-  vim-clap = super.vim-clap.overrideAttrs(old: {
-    preFixup = let
-      maple-bin = rustPlatform.buildRustPackage {
-        name = "maple";
-        src = old.src;
-
-        nativeBuildInputs = [
-          pkgconfig
-        ];
-
-        buildInputs = [
-          openssl
-        ] ++ stdenv.lib.optionals stdenv.isDarwin [
-          CoreServices
-          curl
-          libgit2
-          libiconv
-        ];
-
-        cargoSha256 = "0qqys51slz85rnx6knjyivnmyq4rj6rrnz7w72kqcl8da8zjbx7b";
-      };
-    in ''
-      ln -s ${maple-bin}/bin/maple $target/bin/maple
-    '';
-  });
-}
+  in
+  lib.genAttrs nodePackageNames nodePackage2VimPackage
+)
diff --git a/pkgs/misc/vim-plugins/patches/lens-vim/remove_duplicate_g_lens_animate.patch b/pkgs/misc/vim-plugins/patches/lens-vim/remove_duplicate_g_lens_animate.patch
new file mode 100644
index 00000000000..1cd232654c8
--- /dev/null
+++ b/pkgs/misc/vim-plugins/patches/lens-vim/remove_duplicate_g_lens_animate.patch
@@ -0,0 +1,12 @@
+diff --git a/doc/lens.txt b/doc/lens.txt
+index 60943ce..2fe43dc 100644
+--- a/doc/lens.txt
++++ b/doc/lens.txt
+@@ -76,7 +76,6 @@ g:lens#disabled_filenames
+ 
+              Default value is [].
+                                                               *g:lens#animate*
+-                                                              *g:lens#animate*
+ g:lens#animate
+              If value is 1 and animate.vim is installed, the window resize
+              will be animated.
diff --git a/pkgs/misc/vim-plugins/update.py b/pkgs/misc/vim-plugins/update.py
index b9bab293a79..df948cc0e55 100755
--- a/pkgs/misc/vim-plugins/update.py
+++ b/pkgs/misc/vim-plugins/update.py
@@ -6,180 +6,18 @@
 # type-check:
 # $ nix run nixpkgs.python3Packages.mypy -c mypy update.py
 # linted:
-# $ nix run nixpkgs.python3Packages.flake8 -c flake8 --ignore E501,E265 update.py
+# $ nix run nixpkgs.python3Packages.flake8 -c flake8 --ignore E501,E265,E402 update.py
 
-import argparse
-import functools
-import http
-import json
+import inspect
 import os
-import subprocess
 import sys
-import time
-import traceback
-import urllib.error
-import urllib.parse
-import urllib.request
-import xml.etree.ElementTree as ET
-from datetime import datetime
-from functools import wraps
-from multiprocessing.dummy import Pool
+from typing import List, Tuple
 from pathlib import Path
-from typing import Dict, List, Optional, Tuple, Union, Any, Callable
-from urllib.parse import urljoin, urlparse
-from tempfile import NamedTemporaryFile
-
-import git
-
-ATOM_ENTRY = "{http://www.w3.org/2005/Atom}entry"  # " vim gets confused here
-ATOM_LINK = "{http://www.w3.org/2005/Atom}link"  # "
-ATOM_UPDATED = "{http://www.w3.org/2005/Atom}updated"  # "
-
-ROOT = Path(__file__).parent
-DEFAULT_IN = ROOT.joinpath("vim-plugin-names")
-DEFAULT_OUT = ROOT.joinpath("generated.nix")
-DEPRECATED = ROOT.joinpath("deprecated.json")
-
-def retry(ExceptionToCheck: Any, tries: int = 4, delay: float = 3, backoff: float = 2):
-    """Retry calling the decorated function using an exponential backoff.
-    http://www.saltycrane.com/blog/2009/11/trying-out-retry-decorator-python/
-    original from: http://wiki.python.org/moin/PythonDecoratorLibrary#Retry
-    (BSD licensed)
-    :param ExceptionToCheck: the exception on which to retry
-    :param tries: number of times to try (not retry) before giving up
-    :param delay: initial delay between retries in seconds
-    :param backoff: backoff multiplier e.g. value of 2 will double the delay
-        each retry
-    """
-
-    def deco_retry(f: Callable) -> Callable:
-        @wraps(f)
-        def f_retry(*args: Any, **kwargs: Any) -> Any:
-            mtries, mdelay = tries, delay
-            while mtries > 1:
-                try:
-                    return f(*args, **kwargs)
-                except ExceptionToCheck as e:
-                    print(f"{str(e)}, Retrying in {mdelay} seconds...")
-                    time.sleep(mdelay)
-                    mtries -= 1
-                    mdelay *= backoff
-            return f(*args, **kwargs)
-
-        return f_retry  # true decorator
-
-    return deco_retry
-
-def make_request(url: str) -> urllib.request.Request:
-    token = os.getenv("GITHUB_API_TOKEN")
-    headers = {}
-    if token is not None:
-       headers["Authorization"] = f"token {token}"
-    return urllib.request.Request(url, headers=headers)
-
-class Repo:
-    def __init__(
-        self, owner: str, name: str, branch: str, alias: Optional[str]
-    ) -> None:
-        self.owner = owner
-        self.name = name
-        self.branch = branch
-        self.alias = alias
-        self.redirect: Dict[str, str] = {}
-
-    def url(self, path: str) -> str:
-        return urljoin(f"https://github.com/{self.owner}/{self.name}/", path)
-
-    def __repr__(self) -> str:
-        return f"Repo({self.owner}, {self.name})"
-
-    @retry(urllib.error.URLError, tries=4, delay=3, backoff=2)
-    def has_submodules(self) -> bool:
-        try:
-            req = make_request(self.url(f"blob/{self.branch}/.gitmodules"))
-            urllib.request.urlopen(req, timeout=10).close()
-        except urllib.error.HTTPError as e:
-            if e.code == 404:
-                return False
-            else:
-                raise
-        return True
-
-    @retry(urllib.error.URLError, tries=4, delay=3, backoff=2)
-    def latest_commit(self) -> Tuple[str, datetime]:
-        commit_url = self.url(f"commits/{self.branch}.atom")
-        commit_req = make_request(commit_url)
-        with urllib.request.urlopen(commit_req, timeout=10) as req:
-            self.check_for_redirect(commit_url, req)
-            xml = req.read()
-            root = ET.fromstring(xml)
-            latest_entry = root.find(ATOM_ENTRY)
-            assert latest_entry is not None, f"No commits found in repository {self}"
-            commit_link = latest_entry.find(ATOM_LINK)
-            assert commit_link is not None, f"No link tag found feed entry {xml}"
-            url = urlparse(commit_link.get("href"))
-            updated_tag = latest_entry.find(ATOM_UPDATED)
-            assert (
-                updated_tag is not None and updated_tag.text is not None
-            ), f"No updated tag found feed entry {xml}"
-            updated = datetime.strptime(updated_tag.text, "%Y-%m-%dT%H:%M:%SZ")
-            return Path(str(url.path)).name, updated
-
-    def check_for_redirect(self, url: str, req: http.client.HTTPResponse):
-        response_url = req.geturl()
-        if url != response_url:
-            new_owner, new_name = (
-                urllib.parse.urlsplit(response_url).path.strip("/").split("/")[:2]
-            )
-            end_line = "\n" if self.alias is None else f" as {self.alias}\n"
-            plugin_line = "{owner}/{name}" + end_line
-
-            old_plugin = plugin_line.format(owner=self.owner, name=self.name)
-            new_plugin = plugin_line.format(owner=new_owner, name=new_name)
-            self.redirect[old_plugin] = new_plugin
-
-    def prefetch_git(self, ref: str) -> str:
-        data = subprocess.check_output(
-            ["nix-prefetch-git", "--fetch-submodules", self.url(""), ref]
-        )
-        return json.loads(data)["sha256"]
-
-    def prefetch_github(self, ref: str) -> str:
-        data = subprocess.check_output(
-            ["nix-prefetch-url", "--unpack", self.url(f"archive/{ref}.tar.gz")]
-        )
-        return data.strip().decode("utf-8")
-
-
-class Plugin:
-    def __init__(
-        self,
-        name: str,
-        commit: str,
-        has_submodules: bool,
-        sha256: str,
-        date: Optional[datetime] = None,
-    ) -> None:
-        self.name = name
-        self.commit = commit
-        self.has_submodules = has_submodules
-        self.sha256 = sha256
-        self.date = date
-
-    @property
-    def normalized_name(self) -> str:
-        return self.name.replace(".", "-")
-
-    @property
-    def version(self) -> str:
-        assert self.date is not None
-        return self.date.strftime("%Y-%m-%d")
-
-    def as_json(self) -> Dict[str, str]:
-        copy = self.__dict__.copy()
-        del copy["date"]
-        return copy
 
+# Import plugin update library from maintainers/scripts/pluginupdate.py
+ROOT = Path(os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))))
+sys.path.insert(0, os.path.join(ROOT.parent.parent.parent, "maintainers", "scripts"))
+import pluginupdate
 
 GET_PLUGINS = f"""(with import <localpkgs> {{}};
 let
@@ -197,209 +35,21 @@ let
   checksums = lib.mapAttrs getChecksum generated;
 in lib.filterAttrs (n: v: v != null) checksums)"""
 
-
-class CleanEnvironment(object):
-    def __enter__(self) -> None:
-        self.old_environ = os.environ.copy()
-        local_pkgs = str(ROOT.joinpath("../../.."))
-        os.environ["NIX_PATH"] = f"localpkgs={local_pkgs}"
-        self.empty_config = NamedTemporaryFile()
-        self.empty_config.write(b"{}")
-        self.empty_config.flush()
-        os.environ["NIXPKGS_CONFIG"] = self.empty_config.name
-
-    def __exit__(self, exc_type: Any, exc_value: Any, traceback: Any) -> None:
-        os.environ.update(self.old_environ)
-        self.empty_config.close()
-
-
-def get_current_plugins() -> List[Plugin]:
-    with CleanEnvironment():
-        out = subprocess.check_output(["nix", "eval", "--json", GET_PLUGINS])
-    data = json.loads(out)
-    plugins = []
-    for name, attr in data.items():
-        p = Plugin(name, attr["rev"], attr["submodules"], attr["sha256"])
-        plugins.append(p)
-    return plugins
-
-
-def prefetch_plugin(
-    user: str,
-    repo_name: str,
-    branch: str,
-    alias: Optional[str],
-    cache: "Optional[Cache]" = None,
-) -> Tuple[Plugin, Dict[str, str]]:
-    repo = Repo(user, repo_name, branch, alias)
-    commit, date = repo.latest_commit()
-    has_submodules = repo.has_submodules()
-    cached_plugin = cache[commit] if cache else None
-    if cached_plugin is not None:
-        cached_plugin.name = alias or repo_name
-        cached_plugin.date = date
-        return cached_plugin, repo.redirect
-
-    print(f"prefetch {user}/{repo_name}")
-    if has_submodules:
-        sha256 = repo.prefetch_git(commit)
-    else:
-        sha256 = repo.prefetch_github(commit)
-
-    return (
-        Plugin(alias or repo_name, commit, has_submodules, sha256, date=date),
-        repo.redirect,
-    )
-
-
-def fetch_plugin_from_pluginline(plugin_line: str) -> Plugin:
-    plugin, _ = prefetch_plugin(*parse_plugin_line(plugin_line))
-    return plugin
-
-
-def print_download_error(plugin: str, ex: Exception):
-    print(f"{plugin}: {ex}", file=sys.stderr)
-    ex_traceback = ex.__traceback__
-    tb_lines = [
-        line.rstrip("\n")
-        for line in traceback.format_exception(ex.__class__, ex, ex_traceback)
-    ]
-    print("\n".join(tb_lines))
-
-
-def check_results(
-    results: List[Tuple[str, str, Union[Exception, Plugin], Dict[str, str]]]
-) -> Tuple[List[Tuple[str, str, Plugin]], Dict[str, str]]:
-    failures: List[Tuple[str, Exception]] = []
-    plugins = []
-    redirects: Dict[str, str] = {}
-    for (owner, name, result, redirect) in results:
-        if isinstance(result, Exception):
-            failures.append((name, result))
-        else:
-            plugins.append((owner, name, result))
-            redirects.update(redirect)
-
-    print(f"{len(results) - len(failures)} plugins were checked", end="")
-    if len(failures) == 0:
-        print()
-        return plugins, redirects
-    else:
-        print(f", {len(failures)} plugin(s) could not be downloaded:\n")
-
-        for (plugin, exception) in failures:
-            print_download_error(plugin, exception)
-
-        sys.exit(1)
-
-
-def parse_plugin_line(line: str) -> Tuple[str, str, str, Optional[str]]:
-    branch = "master"
-    alias = None
-    name, repo = line.split("/")
-    if " as " in repo:
-        repo, alias = repo.split(" as ")
-        alias = alias.strip()
-    if "@" in repo:
-        repo, branch = repo.split("@")
-
-    return (name.strip(), repo.strip(), branch.strip(), alias)
-
-
-def load_plugin_spec(plugin_file: str) -> List[Tuple[str, str, str, Optional[str]]]:
-    plugins = []
-    with open(plugin_file) as f:
-        for line in f:
-            plugin = parse_plugin_line(line)
-            if not plugin[0]:
-                msg = f"Invalid repository {line}, must be in the format owner/repo[ as alias]"
-                print(msg, file=sys.stderr)
-                sys.exit(1)
-            plugins.append(plugin)
-    return plugins
-
-
-def get_cache_path() -> Optional[Path]:
-    xdg_cache = os.environ.get("XDG_CACHE_HOME", None)
-    if xdg_cache is None:
-        home = os.environ.get("HOME", None)
-        if home is None:
-            return None
-        xdg_cache = str(Path(home, ".cache"))
-
-    return Path(xdg_cache, "vim-plugin-cache.json")
-
-
-class Cache:
-    def __init__(self, initial_plugins: List[Plugin]) -> None:
-        self.cache_file = get_cache_path()
-
-        downloads = {}
-        for plugin in initial_plugins:
-            downloads[plugin.commit] = plugin
-        downloads.update(self.load())
-        self.downloads = downloads
-
-    def load(self) -> Dict[str, Plugin]:
-        if self.cache_file is None or not self.cache_file.exists():
-            return {}
-
-        downloads: Dict[str, Plugin] = {}
-        with open(self.cache_file) as f:
-            data = json.load(f)
-            for attr in data.values():
-                p = Plugin(
-                    attr["name"], attr["commit"], attr["has_submodules"], attr["sha256"]
-                )
-                downloads[attr["commit"]] = p
-        return downloads
-
-    def store(self) -> None:
-        if self.cache_file is None:
-            return
-
-        os.makedirs(self.cache_file.parent, exist_ok=True)
-        with open(self.cache_file, "w+") as f:
-            data = {}
-            for name, attr in self.downloads.items():
-                data[name] = attr.as_json()
-            json.dump(data, f, indent=4, sort_keys=True)
-
-    def __getitem__(self, key: str) -> Optional[Plugin]:
-        return self.downloads.get(key, None)
-
-    def __setitem__(self, key: str, value: Plugin) -> None:
-        self.downloads[key] = value
-
-
-def prefetch(
-    args: Tuple[str, str, str, Optional[str]], cache: Cache
-) -> Tuple[str, str, Union[Exception, Plugin], dict]:
-    assert len(args) == 4
-    owner, repo, branch, alias = args
-    try:
-        plugin, redirect = prefetch_plugin(owner, repo, branch, alias, cache)
-        cache[plugin.commit] = plugin
-        return (owner, repo, plugin, redirect)
-    except Exception as e:
-        return (owner, repo, e, {})
-
-
-header = (
+HEADER = (
     "# This file has been generated by ./pkgs/misc/vim-plugins/update.py. Do not edit!"
 )
 
 
-def generate_nix(plugins: List[Tuple[str, str, Plugin]], outfile: str):
+def generate_nix(plugins: List[Tuple[str, str, pluginupdate.Plugin]], outfile: str):
     sorted_plugins = sorted(plugins, key=lambda v: v[2].name.lower())
 
     with open(outfile, "w+") as f:
-        f.write(header)
+        f.write(HEADER)
         f.write(
             """
-{ lib, buildVimPluginFrom2Nix, fetchFromGitHub, overrides ? (self: super: {}) }:
-let
-  packages = ( self:
+{ lib, buildVimPluginFrom2Nix, fetchFromGitHub }:
+
+final: prev:
 {"""
         )
         for owner, repo, plugin in sorted_plugins:
@@ -425,143 +75,15 @@ let
             )
         f.write(
             """
-});
-in lib.fix' (lib.extends overrides packages)
+}
 """
         )
     print(f"updated {outfile}")
 
 
-def rewrite_input(
-    input_file: Path, redirects: Dict[str, str] = None, append: Tuple = ()
-):
-    with open(input_file, "r") as f:
-        lines = f.readlines()
-
-    lines.extend(append)
-
-    if redirects:
-        lines = [redirects.get(line, line) for line in lines]
-
-        cur_date_iso = datetime.now().strftime("%Y-%m-%d")
-        with open(DEPRECATED, "r") as f:
-            deprecations = json.load(f)
-        for old, new in redirects.items():
-            old_plugin = fetch_plugin_from_pluginline(old)
-            new_plugin = fetch_plugin_from_pluginline(new)
-            if old_plugin.normalized_name != new_plugin.normalized_name:
-                deprecations[old_plugin.normalized_name] = {
-                    "new": new_plugin.normalized_name,
-                    "date": cur_date_iso,
-                }
-        with open(DEPRECATED, "w") as f:
-            json.dump(deprecations, f, indent=4, sort_keys=True)
-
-    lines = sorted(lines, key=str.casefold)
-
-    with open(input_file, "w") as f:
-        f.writelines(lines)
-
-
-def parse_args():
-    parser = argparse.ArgumentParser(
-        description=(
-            "Updates nix derivations for vim plugins"
-            f"By default from {DEFAULT_IN} to {DEFAULT_OUT}"
-        )
-    )
-    parser.add_argument(
-        "--add",
-        dest="add_plugins",
-        default=[],
-        action="append",
-        help="Plugin to add to vimPlugins from Github in the form owner/repo",
-    )
-    parser.add_argument(
-        "--input-names",
-        "-i",
-        dest="input_file",
-        default=DEFAULT_IN,
-        help="A list of plugins in the form owner/repo",
-    )
-    parser.add_argument(
-        "--out",
-        "-o",
-        dest="outfile",
-        default=DEFAULT_OUT,
-        help="Filename to save generated nix code",
-    )
-    parser.add_argument(
-        "--proc",
-        "-p",
-        dest="proc",
-        type=int,
-        default=30,
-        help="Number of concurrent processes to spawn.",
-    )
-    return parser.parse_args()
-
-
-def commit(repo: git.Repo, message: str, files: List[Path]) -> None:
-    files_staged = repo.index.add([str(f.resolve()) for f in files])
-
-    if files_staged:
-        print(f'committing to nixpkgs "{message}"')
-        repo.index.commit(message)
-    else:
-        print("no changes in working tree to commit")
-
-
-def get_update(input_file: str, outfile: str, proc: int):
-    cache: Cache = Cache(get_current_plugins())
-    _prefetch = functools.partial(prefetch, cache=cache)
-
-    def update() -> dict:
-        plugin_names = load_plugin_spec(input_file)
-
-        try:
-            pool = Pool(processes=proc)
-            results = pool.map(_prefetch, plugin_names)
-        finally:
-            cache.store()
-
-        plugins, redirects = check_results(results)
-
-        generate_nix(plugins, outfile)
-
-        return redirects
-
-    return update
-
-
 def main():
-    args = parse_args()
-    nixpkgs_repo = git.Repo(ROOT, search_parent_directories=True)
-    update = get_update(args.input_file, args.outfile, args.proc)
-
-    redirects = update()
-    rewrite_input(args.input_file, redirects)
-    commit(nixpkgs_repo, "vimPlugins: update", [args.outfile])
-
-    if redirects:
-        update()
-        commit(
-            nixpkgs_repo,
-            "vimPlugins: resolve github repository redirects",
-            [args.outfile, args.input_file, DEPRECATED],
-        )
-
-    for plugin_line in args.add_plugins:
-        rewrite_input(args.input_file, append=(plugin_line + "\n",))
-        update()
-        plugin = fetch_plugin_from_pluginline(plugin_line)
-        commit(
-            nixpkgs_repo,
-            "vimPlugins.{name}: init at {version}".format(
-                name=plugin.normalized_name, version=plugin.version
-            ),
-            [args.outfile, args.input_file],
-        )
+    editor = pluginupdate.Editor("vim", ROOT, GET_PLUGINS, generate_nix)
+    pluginupdate.update_plugins(editor)
 
 
 if __name__ == "__main__":
diff --git a/pkgs/misc/vim-plugins/vim-plugin-names b/pkgs/misc/vim-plugins/vim-plugin-names
index 6b521cadfc3..e134963d453 100644
--- a/pkgs/misc/vim-plugins/vim-plugin-names
+++ b/pkgs/misc/vim-plugins/vim-plugin-names
@@ -1,31 +1,43 @@
 907th/vim-auto-save
+aca/completion-tabnine
+AckslD/nvim-whichkey-setup.lua@main
+ackyshake/Spacegray.vim@main
+ahmedkhalf/lsp-rooter.nvim@main
 airblade/vim-gitgutter
 airblade/vim-rooter
-ajh17/Spacegray.vim
+ajmwagar/vim-deus
+akinsho/nvim-bufferline.lua
+akinsho/nvim-toggleterm.lua
 aklt/plantuml-syntax
-albfan/nerdtree-git-plugin
 altercation/vim-colors-solarized
 alvan/vim-closetag
 alx741/vim-hindent
 alx741/vim-stylishask
 amiorin/ctrlp-z
+andersevenrud/compe-tmux@main
 andrep/vimacs
 andreshazard/vim-logreview
-AndrewRadev/splitjoin.vim
+AndrewRadev/sideways.vim@main
+AndrewRadev/splitjoin.vim@main
 andsild/peskcolor.vim
 andviro/flake8-vim
+andweeb/presence.nvim@main
 andymass/vim-matchup
 andys8/vim-elm-syntax
 antoinemadec/coc-fzf
+antoinemadec/FixCursorHold.nvim
 ap/vim-css-color
 arcticicestudio/nord-vim
+arkav/lualine-lsp-progress
+arthurxavierx/vim-unicoder
 artur-shaik/vim-javacomplete2
 autozimu/LanguageClient-neovim
+axelf4/vim-strip-trailing-whitespace
 ayu-theme/ayu-vim
+bakpakin/fennel.vim
 bazelbuild/vim-bazel
 bbchung/clighter8
 benizi/vim-automkdir
-benmills/vimux
 bhurlow/vim-parinfer
 bitc/vim-hdevtools
 bkad/camelcasemotion
@@ -33,31 +45,39 @@ bling/vim-bufferline
 blueyed/vim-diminactive
 bogado/file-line
 bohlender/vim-smt2
-brennanfee/vim-gui-position
+brennanfee/vim-gui-position@main
 bronson/vim-trailing-whitespace
 brooth/far.vim
 buoto/gotests-vim
+camspiers/lens.vim
+camspiers/snap@main
 carlitux/deoplete-ternjs
 ccarpita/rtorrent-syntax-file
 cespare/vim-toml
-Chiel92/vim-autoformat
+chaoren/vim-wordmotion
 chikatoike/concealedyank.vim
 chikatoike/sourcemap.vim
+chkno/vim-haskell-module-name
+chr4/nginx.vim
 chrisbra/CheckAttach
 chrisbra/csv.vim
 chrisbra/NrrwRgn
 chrisbra/Recover.vim
+chrisbra/SudoEdit.vim
 chrisbra/unicode.vim
 chrisgeo/sparkup
 chriskempson/base16-vim
+ChristianChiarulli/nvcode-color-schemes.vim
 christoomey/vim-sort-motion
 christoomey/vim-tmux-navigator
 ckarnell/antonys-macro-repeater
-ckipp01/coc-metals
+clojure-vim/vim-jack-in
 cloudhead/neovim-fuzzy
 CoatiSoftware/vim-sourcetrail
 cocopon/iceberg.vim
+codota/tabnine-vim
 cohama/lexima.vim
+ConradIrwin/vim-bracketed-paste
 crusoexia/vim-monokai
 ctjhoa/spacevim
 ctrlpvim/ctrlp.vim
@@ -74,6 +94,7 @@ deoplete-plugins/deoplete-clang
 deoplete-plugins/deoplete-dictionary
 deoplete-plugins/deoplete-go
 deoplete-plugins/deoplete-jedi
+deoplete-plugins/deoplete-lsp
 deoplete-plugins/deoplete-zsh
 derekelkins/agda-vim
 derekwyatt/vim-scala
@@ -83,45 +104,83 @@ digitaltoad/vim-pug
 direnv/direnv.vim
 dleonard0/pony-vim-syntax
 dmix/elvish.vim
+doki-theme/doki-theme-vim
+dominikduda/vim_current_word
+dpelle/vim-LanguageTool
 dracula/vim as dracula-vim
 drewtempelmeyer/palenight.vim
 drmingdrmer/xptemplate
+dstein64/nvim-scrollview@main
+dstein64/vim-startuptime
 dylanaraps/wal.vim
 eagletmt/ghcmod-vim
 eagletmt/neco-ghc
 easymotion/vim-easymotion
+eddiebergman/nvim-treesitter-pyfold
+eddyekofo94/gruvbox-flat.nvim
 editorconfig/editorconfig-vim
+edluffy/hologram.nvim@main
+edluffy/specs.nvim@main
+edwinb/idris2-vim
 ehamberg/vim-cute-python
+eigenfoo/stan-vim
 eikenb/acp
 elixir-editors/vim-elixir
 elmcast/elm-vim
 elzr/vim-json
+embark-theme/vim@main as embark-vim
 embear/vim-localvimrc
 enomsg/vim-haskellConcealPlus
+enricobacis/vim-airline-clock
 ensime/ensime-vim
 ervandew/supertab
 esneider/YUNOcommit.vim
-fannheyward/coc-markdownlint
-fannheyward/coc-rust-analyzer
+euclidianAce/BetterLua.vim
+euclio/vim-markdown-composer
+f-person/git-blame.nvim
+famiu/feline.nvim
 farmergreg/vim-lastplace
 fatih/vim-go
 fcpg/vim-osc52
 FelikZ/ctrlp-py-matcher
 fenetikm/falcon
+fhill2/floating.nvim
+fiatjaf/neuron.vim
 fisadev/vim-isort
 flazz/vim-colorschemes
 floobits/floobits-neovim
+folke/lsp-colors.nvim@main
+folke/todo-comments.nvim@main
+folke/tokyonight.nvim@main
+folke/trouble.nvim@main
+folke/twilight.nvim@main
+folke/which-key.nvim@main
 freitass/todo.txt-vim
 frigoeu/psc-ide-vim
+fruit-in/brainfuck-vim
+fruit-in/vim-nong-theme
 fsharp/vim-fsharp
 fszymanski/deoplete-emoji
 garbas/vim-snipmate
+gcmt/taboo.vim
+gcmt/wildfire.vim
+gennaro-tedesco/nvim-peekup
 gentoo/gentoo-syntax
 GEverding/vim-hocon
+gfanto/fzf-lsp.nvim@main
+ggandor/lightspeed.nvim@main
 gibiansky/vim-textobj-haskell
+gioele/vim-autoswap
+gleam-lang/gleam.vim
+glepnir/dashboard-nvim
+glepnir/galaxyline.nvim@main
+glepnir/lspsaga.nvim@main
+glepnir/oceanic-material
+glepnir/zephyr-nvim@main
 glts/vim-textobj-comment
 godlygeek/csapprox
 godlygeek/tabular
+GoldsteinE/compe-latex-symbols
 google/vim-codefmt
 google/vim-jsonnet
 google/vim-maktaba
@@ -137,6 +196,7 @@ guns/xterm-color-table.vim
 hashivim/vim-packer
 hashivim/vim-terraform
 hashivim/vim-vagrant
+hauleth/sad.vim
 haya14busa/incsearch-easymotion.vim
 haya14busa/incsearch.vim
 haya14busa/is.vim
@@ -147,27 +207,36 @@ hecal3/vim-leader-guide
 henrik/vim-indexed-search
 HerringtonDarkholme/yats.vim
 honza/vim-snippets
+hoob3rt/lualine.nvim
 hotwatermorning/auto-git-diff
+hrsh7th/nvim-compe
 hrsh7th/vim-vsnip
 hrsh7th/vim-vsnip-integ
 hsanson/vim-android
 hsitz/VimOrganizer
 iamcco/coc-spell-checker
-iamcco/coc-vimlsp
+iamcco/markdown-preview.nvim
 ianks/vim-tsx
+idanarye/vim-merginal
 idris-hackers/idris-vim
-ihsanturk/neuron.vim
 Inazuma110/deoplete-greek
 inkarkat/vim-SyntaxRange
 int3/vim-extradite
+Iron-E/nvim-highlite
 itchyny/calendar.vim
 itchyny/lightline.vim
 itchyny/thumbnail.vim
 itchyny/vim-cursorword
 itchyny/vim-gitbranch
+itspriddle/vim-shellcheck
+ivalkeen/vim-simpledb
 ivanov/vim-ipython
+jackguo380/vim-lsp-cxx-highlight
 jacoborus/tender.vim
+jakwings/vim-pony
+jamessan/vim-gnupg@main
 jaredgorski/SpaceCamp
+jasonccox/vim-wayland-clipboard
 jaxbot/semantic-highlight.vim
 JazzCore/ctrlp-cmatcher
 jceb/vim-hier
@@ -184,13 +253,16 @@ jiangmiao/auto-pairs
 jistr/vim-nerdtree-tabs
 jjo/vim-cue
 jlanzarotta/bufexplorer
+jlesquembre/nterm.nvim
 jnurmine/zenburn
 jonbri/vim-colorstepper
 jonsmithers/vim-html-template-literals
 joonty/vim-xdebug
-josa42/coc-go
-joshdick/onedark.vim
-jpalardy/vim-slime
+josa42/coc-lua
+josa42/vim-lightline-coc
+jose-elias-alvarez/null-ls.nvim@main
+joshdick/onedark.vim@main
+jpalardy/vim-slime@main
 jparise/vim-graphql
 jparise/vim-phabricator
 jreybert/vimagit
@@ -205,6 +277,7 @@ junegunn/gv.vim
 junegunn/limelight.vim
 junegunn/seoul256.vim
 junegunn/vader.vim
+junegunn/vim-after-object
 junegunn/vim-easy-align
 junegunn/vim-github-dashboard
 junegunn/vim-peekaboo
@@ -214,6 +287,8 @@ justincampbell/vim-eighties
 justinj/vim-pico8-syntax
 justinmk/vim-dirvish
 justinmk/vim-sneak
+jvirtanen/vim-hcl
+jvoorhis/coq.vim
 KabbAmine/vCoolor.vim
 KabbAmine/zeavim.vim
 kalbasit/vim-colemak
@@ -226,18 +301,35 @@ kana/vim-textobj-user
 kassio/neoterm
 kbenzie/vim-spirv
 kchmck/vim-coffee-script
+kdheepak/lazygit.nvim
 KeitaNakamura/neodark.vim
+keith/investigate.vim
+keith/rspec.vim
 keith/swift.vim
+kevinhwang91/nvim-bqf@main
+kevinhwang91/nvim-hlslens@main
+kevinhwang91/rnvimr@main
 kien/rainbow_parentheses.vim
 knubie/vim-kitty-navigator
 konfekt/fastfold
+Konfekt/vim-alias
+konfekt/vim-DetectSpellLang
+kosayoda/nvim-lightbulb
 kristijanhusak/defx-git
 kristijanhusak/defx-icons
 kristijanhusak/deoplete-phpactor
 kristijanhusak/vim-carbon-now-sh
+kristijanhusak/vim-dadbod-completion
+kristijanhusak/vim-dadbod-ui
 kristijanhusak/vim-dirvish-git
 kristijanhusak/vim-hybrid-material
 kshenoy/vim-signature
+kyazdani42/nvim-tree.lua
+kyazdani42/nvim-web-devicons
+l3mon4d3/luasnip
+lambdalisue/fern.vim
+lambdalisue/gina.vim
+lambdalisue/suda.vim
 lambdalisue/vim-gista
 lambdalisue/vim-manpager
 lambdalisue/vim-pager
@@ -247,18 +339,23 @@ leanprover/lean.vim
 ledger/vim-ledger
 lepture/vim-jinja
 lervag/vimtex
+lewis6991/gitsigns.nvim@main
 lfilho/cosco.vim
+lifepillar/vim-gruvbox8
 lifepillar/vim-mucomplete
+lighttiger2505/deoplete-vim-lsp
 lilydjwg/colorizer
 liuchengxu/vim-clap
 liuchengxu/vim-which-key
 liuchengxu/vista.vim
 LnL7/vim-nix
 lotabout/skim.vim
+luan/vim-concourse
 LucHermitte/lh-brackets
 LucHermitte/lh-vim-lib
 ludovicchabant/vim-gutentags
 ludovicchabant/vim-lawrencium
+lukas-reineke/indent-blankline.nvim
 lukaszkorecki/workflowish
 lumiliet/vim-twig
 luochen1990/rainbow
@@ -266,7 +363,6 @@ lyokha/vim-xkbswitch
 machakann/vim-highlightedyank
 machakann/vim-sandwich
 machakann/vim-swap
-majutsushi/tagbar
 maksimr/vim-jsbeautify
 MarcWeber/vim-addon-actions
 MarcWeber/vim-addon-async
@@ -298,11 +394,18 @@ maximbaz/lightline-ale
 MaxMEllon/vim-jsx-pretty
 mbbill/undotree
 mboughaba/i3config.vim
+mcchrish/nnn.vim
 megaannum/forms
 megaannum/self
 mengelbrecht/lightline-bufferline
+metakirby5/codi.vim
+metalelf0/jellybeans-nvim@main
 mfukar/robotframework-vim
+mfussenegger/nvim-dap
+mfussenegger/nvim-jdtls
 mg979/vim-visual-multi
+mg979/vim-xtabline
+mhartington/formatter.nvim
 mhartington/oceanic-next
 mhinz/vim-crates
 mhinz/vim-grepper
@@ -316,15 +419,21 @@ milkypostman/vim-togglelist
 mindriot101/vim-yapf
 mk12/vim-lean
 mkasa/lushtags
+moll/vim-bbye
 mopp/sky-color-clock.vim
 morhetz/gruvbox
 motus/pig.vim
 mpickering/hlint-refactor-vim
+ms-jpq/chadtree@chad
 mtikekar/vim-bsv
+mzlogin/vim-markdown-toc
+mzlogin/vim-smali
+nacro90/numb.nvim
 nanotech/jellybeans.vim
 natebosch/vim-lsc
 nathanaelkane/vim-indent-guides
 nathangrigg/vim-beancount
+nathunsmitty/nvim-ale-diagnostic@main
 navicore/vissort.vim
 nbouscal/vim-stylish-haskell
 ncm2/float-preview.nvim
@@ -344,43 +453,14 @@ ncm2/ncm2-tmux
 ncm2/ncm2-ultisnips
 ncm2/ncm2-vim
 ndmitchell/ghcid
-neoclide/coc-css
 neoclide/coc-denite
-neoclide/coc-emmet
-neoclide/coc-eslint
-neoclide/coc-git
-neoclide/coc-highlight
-neoclide/coc-html
-neoclide/coc-imselect
-neoclide/coc-java
-neoclide/coc-jest
-neoclide/coc-json
-neoclide/coc-lists
 neoclide/coc-neco
-neoclide/coc-pairs
-neoclide/coc-prettier
-neoclide/coc-python
-neoclide/coc-r-lsp
-neoclide/coc-rls
-neoclide/coc-smartf
-neoclide/coc-snippets
-neoclide/coc-solargraph
-neoclide/coc-stylelint
-neoclide/coc-tabnine
-neoclide/coc-tslint
-neoclide/coc-tslint-plugin
-neoclide/coc-tsserver
-neoclide/coc-vetur
-neoclide/coc-vimtex
-neoclide/coc-wxml
-neoclide/coc-yaml
-neoclide/coc-yank
 neoclide/coc.nvim@release
 neoclide/denite-extra
 neoclide/denite-git
 neoclide/vim-easygit
 neomake/neomake
-neovim/nvim-lsp
+neovim/nvim-lspconfig
 neovim/nvimdev.nvim
 neovimhaskell/haskell-vim
 neovimhaskell/nvim-hs.vim
@@ -391,16 +471,43 @@ nishigori/increment-activator
 nixprime/cpsm
 NLKNguyen/papercolor-theme
 noc7c9/vim-iced-coffee-script
+norcalli/nvim-colorizer.lua
 norcalli/nvim-terminal.lua
+norcalli/snippets.nvim
+npxbr/glow.nvim@main
+npxbr/gruvbox.nvim@main
 ntpeters/vim-better-whitespace
 numirias/semshi
 nvie/vim-flake8
 nvim-lua/completion-nvim
 nvim-lua/diagnostic-nvim
+nvim-lua/lsp-status.nvim
+nvim-lua/lsp_extensions.nvim
+nvim-lua/plenary.nvim
+nvim-lua/popup.nvim
+nvim-telescope/telescope-dap.nvim
+nvim-telescope/telescope-frecency.nvim
+nvim-telescope/telescope-fzf-native.nvim@main
+nvim-telescope/telescope-fzf-writer.nvim
+nvim-telescope/telescope-fzy-native.nvim
+nvim-telescope/telescope-symbols.nvim
+nvim-telescope/telescope-z.nvim@main
+nvim-telescope/telescope.nvim
 nvim-treesitter/completion-treesitter
 nvim-treesitter/nvim-treesitter
+nvim-treesitter/nvim-treesitter-refactor
+nvim-treesitter/nvim-treesitter-textobjects
+nvim-treesitter/playground
+oberblastmeister/termwrapper.nvim
+ocaml/vim-ocaml
 octol/vim-cpp-enhanced-highlight
+ojroques/nvim-bufdel@main
+ojroques/vim-oscyank@main
+Olical/aniseed
 Olical/conjure
+olimorris/onedark.nvim
+onsails/lspkind-nvim
+onsails/vimway-lsp-diag.nvim
 OrangeT/vim-csharp
 osyo-manga/shabadou.vim
 osyo-manga/vim-anzu
@@ -408,66 +515,102 @@ osyo-manga/vim-over
 osyo-manga/vim-textobj-multiblock
 osyo-manga/vim-watchdogs
 overcache/NeoSolarized
+p00f/nvim-ts-rainbow
 pangloss/vim-javascript
 parsonsmatt/intero-neovim
 pearofducks/ansible-vim
 peitalin/vim-jsx-typescript
 peterbjorgensen/sved
 peterhoeg/vim-qml
+petRUShka/vim-opencl
+phaazon/hop.nvim
 phanviet/vim-monokai-pro
 plasticboy/vim-markdown
 ponko2/deoplete-fish
 posva/vim-vue
 powerman/vim-plugin-AnsiEsc
 PProvost/vim-ps1
+prabirshrestha/async.vim
+prabirshrestha/asyncomplete.vim
+prabirshrestha/vim-lsp
 preservim/nerdcommenter
 preservim/nerdtree
+preservim/tagbar
+preservim/vim-pencil
+preservim/vim-wordy
+preservim/vimux
+prettier/vim-prettier
 psliwka/vim-smoothie
 ptzz/lf.vim
+puremourning/vimspector
 purescript-contrib/purescript-vim
 python-mode/python-mode
 qnighy/lalrpop.vim
 qpkorr/vim-bufkill
 Quramy/tsuquyomi
 racer-rust/vim-racer
+radenling/vim-dispatch-neovim
+rafamadriz/friendly-snippets@main
 rafaqz/ranger.vim
 rafi/awesome-vim-colorschemes
 raghur/fruzzy
 raghur/vim-ghost
 Raimondi/delimitMate
 rakr/vim-one
+ray-x/aurora
+ray-x/lsp_signature.nvim
 rbgrouleff/bclose.vim
-reedes/vim-pencil
-reedes/vim-wordy
+rbong/vim-flog
+rcarriga/nvim-dap-ui
+rcarriga/vim-ultest
 rhysd/committia.vim
+rhysd/conflict-marker.vim
+rhysd/devdocs.vim
 rhysd/git-messenger.vim
 rhysd/vim-clang-format
 rhysd/vim-grammarous
 rhysd/vim-operator-surround
+RishabhRD/nvim-lsputils
+RishabhRD/popfix
+rktjmp/fwatch.nvim@main
+rktjmp/lush.nvim@main
+rmagatti/auto-session@main
 rodjek/vim-puppet
 romainl/vim-cool
+romainl/vim-qf
 roman/golden-ratio
+romgrk/barbar.nvim
+romgrk/nvim-treesitter-context
 ron89/thesaurus_query.vim
 roxma/nvim-cm-racer
 roxma/nvim-completion-manager
 roxma/nvim-yarp
 roxma/vim-tmux-clipboard
+RRethy/nvim-base16
+RRethy/vim-hexokinase
 RRethy/vim-illuminate
+rstacruz/vim-closer
 rust-lang/rust.vim
 ryanoasis/vim-devicons
 ryvnf/readline.vim
+sainnhe/edge
+sainnhe/sonokai
 sakhnik/nvim-gdb
 saltstack/salt-vim
 samoshkin/vim-mergetool
 sbdchd/neoformat
+sdiehl/vim-ormolu
 sebastianmarkow/deoplete-rust
 SevereOverfl0w/deoplete-github
+Shatur/neovim-ayu
+shaunsingh/moonlight.nvim@pure-lua
+shaunsingh/nord.nvim
 sheerun/vim-polyglot
+shinchu/lightline-gruvbox.vim
 Shougo/context_filetype.vim
 Shougo/defx.nvim
 Shougo/denite.nvim
 Shougo/deol.nvim
-Shougo/deoplete-lsp
 Shougo/deoplete.nvim
 Shougo/echodoc.vim
 Shougo/neco-syntax
@@ -485,26 +628,47 @@ Shougo/vimproc.vim
 Shougo/vimshell.vim
 shumphrey/fugitive-gitlab.vim
 sickill/vim-pasta
+SidOfc/mkdx
 simnalamburt/vim-mundo
+simrat39/rust-tools.nvim
+simrat39/symbols-outline.nvim
+sindrets/diffview.nvim@main
 SirVer/ultisnips
 sjl/gundo.vim
 sjl/splice.vim
 sk1418/last256
 slashmili/alchemist.vim
+sodapopcan/vim-twiggy
 solarnz/arcanist.vim
 sonph/onehalf
+srcery-colors/srcery-vim
+steelsojka/completion-buffers
+steelsojka/pears.nvim
 stefandtw/quickfix-reflector.vim
 stephpy/vim-yaml
+stevearc/aerial.nvim
+stsewd/fzf-checkout.vim
 sunaku/vim-dasht
+sunjon/Shade.nvim
 svermeulen/vim-subversive
 t9md/vim-choosewin
 t9md/vim-smalls
+TaDaa/vimade
 takac/vim-hardtime
+tamago324/compe-zsh
+tami5/compe-conjure
+tami5/lispdocs.nvim
+tami5/sql.nvim
+tbastos/vim-lua
 tbodt/deoplete-tabnine
 ternjs/tern_for_vim
 terryma/vim-expand-region
 terryma/vim-multiple-cursors
 tex/vimpreviewpandoc
+Th3Whit3Wolf/one-nvim@main
+theHamsta/nvim-dap-virtual-text
+ThePrimeagen/git-worktree.nvim
+ThePrimeagen/vim-apm
 thinca/vim-ft-diff_fold
 thinca/vim-prettyprint
 thinca/vim-quickrun
@@ -513,11 +677,17 @@ thinca/vim-themis
 thinca/vim-visualstar
 thirtythreeforty/lessspace.vim
 thosakwe/vim-flutter
+tiagofumo/vim-nerdtree-syntax-highlight
 tikhomirov/vim-glsl
+TimUntersberger/neogit
+tjdevries/colorbuddy.nvim
+tjdevries/nlua.nvim
+tjdevries/train.nvim
 tmhedberg/SimpylFold
 tmsvg/pear-tree
 tmux-plugins/vim-tmux
 tmux-plugins/vim-tmux-focus-events
+tomasiser/vim-code-dark
 tomasr/molokai
 tomlion/vim-solidity
 tommcdo/vim-exchange
@@ -525,7 +695,10 @@ tommcdo/vim-lion
 tommcdo/vim-ninja-feet
 tomtom/tcomment_vim
 tomtom/tlib_vim
+tools-life/taskwiki
+towolf/vim-helm
 tpope/vim-abolish
+tpope/vim-capslock
 tpope/vim-commentary
 tpope/vim-dadbod
 tpope/vim-dispatch
@@ -534,6 +707,7 @@ tpope/vim-eunuch
 tpope/vim-fireplace
 tpope/vim-flagship
 tpope/vim-fugitive
+tpope/vim-git
 tpope/vim-liquid
 tpope/vim-obsession
 tpope/vim-pathogen
@@ -554,22 +728,36 @@ tpope/vim-tbone
 tpope/vim-unimpaired
 tpope/vim-vinegar
 travitch/hasksyn
+tremor-rs/tremor-vim@main
 triglav/vim-visual-increment
 troydm/zoomwintab.vim
+turbio/bracey.vim
+tversteeg/registers.nvim@main
+tweekmonster/wstrip.vim
 twerth/ir_black
 twinside/vim-haskellconceal
 Twinside/vim-hoogle
 tyru/caw.vim
 tyru/open-browser-github.vim
 tyru/open-browser.vim
+tzachar/compe-tabnine@main
 uarun/vim-protobuf
 udalov/kotlin-vim
 ujihisa/neco-look
 unblevable/quick-scope
+urbit/hoon.vim
+Valloric/MatchTagAlways
 Valodim/deoplete-notmuch
 vhda/verilog_systemverilog.vim
+vhyrro/neorg@main
+vigoux/LanguageTool.nvim
 vim-airline/vim-airline
 vim-airline/vim-airline-themes
+vim-autoformat/vim-autoformat
+vim-erlang/vim-erlang-compiler
+vim-erlang/vim-erlang-omnicomplete
+vim-erlang/vim-erlang-runtime
+vim-erlang/vim-erlang-tags
 vim-pandoc/vim-pandoc
 vim-pandoc/vim-pandoc-after
 vim-pandoc/vim-pandoc-syntax
@@ -606,6 +794,8 @@ vim-utils/vim-husk
 Vimjas/vim-python-pep8-indent
 vimlab/split-term.vim
 vimoutliner/vimoutliner
+vimpostor/vim-tpipeline
+vimsence/vimsence
 vimwiki/vimwiki
 vito-c/jq.vim
 vmchale/ats-vim
@@ -616,19 +806,32 @@ VundleVim/Vundle.vim
 w0ng/vim-hybrid
 wakatime/vim-wakatime
 wannesm/wmgraphviz.vim
-weirongxu/coc-explorer
+wbthomason/packer.nvim
 wellle/targets.vim
 wellle/tmux-complete.vim
+wfxr/minimap.vim
+whonore/Coqtail
 will133/vim-dirdiff
 wincent/command-t
 wincent/ferret
+windwp/nvim-autopairs
+wlangstroth/vim-racket
 wsdjeg/vim-fetch
 xavierd/clang_complete
 xolox/vim-easytags
 xolox/vim-misc
 xuhdev/vim-latex-live-preview
+Xuyuanp/nerdtree-git-plugin
+Xuyuanp/scrollbar.nvim
+yamatsum/nvim-nonicons@main
 ycm-core/YouCompleteMe
+Yggdroot/hiPairs
 Yggdroot/indentLine
-yuki-ycino/ncm2-dictionary
+Yggdroot/LeaderF
+Yilin-Yang/vim-markbar
+yssl/QFEnter
+yuki-yano/ncm2-dictionary
+yunlingz/ci_dark
 zah/nim.vim
+zhou13/vim-easyescape
 ziglang/zig.vim
diff --git a/pkgs/misc/vim-plugins/vim-utils.nix b/pkgs/misc/vim-plugins/vim-utils.nix
index 5e1703c8cc3..5ca3aef2358 100644
--- a/pkgs/misc/vim-plugins/vim-utils.nix
+++ b/pkgs/misc/vim-plugins/vim-utils.nix
@@ -1,4 +1,5 @@
-{ stdenv, vim, vimPlugins, vim_configurable, neovim, buildEnv, writeText, writeScriptBin
+# tests available at pkgs/test/vim
+{ lib, stdenv, vim, vimPlugins, vim_configurable, buildEnv, writeText, writeScriptBin
 , nix-prefetch-hg, nix-prefetch-git
 , fetchFromGitHub, runtimeShell
 }:
@@ -150,7 +151,7 @@ vim_with_plugins can be installed like any other application within Nix.
 
 
 let
-  inherit (stdenv) lib;
+  inherit lib;
 
   # make sure a plugin is a derivation and its dependencies are derivations. If
   # plugin already is a derivation, this is a no-op. If it is a string, it is
@@ -183,20 +184,55 @@ let
 
   rtpPath = "share/vim-plugins";
 
-  vimrcFile = {
+  nativeImpl = packages:
+  (let
+    link = (packageName: dir: pluginPath: "ln -sf ${pluginPath}/share/vim-plugins/* $out/pack/${packageName}/${dir}");
+    packageLinks = (packageName: {start ? [], opt ? []}:
+    let
+      # `nativeImpl` expects packages to be derivations, not strings (as
+      # opposed to older implementations that have to maintain backwards
+      # compatibility). Therefore we don't need to deal with "knownPlugins"
+      # and can simply pass `null`.
+      depsOfOptionalPlugins = lib.subtractLists opt (findDependenciesRecursively opt);
+      startWithDeps = findDependenciesRecursively start;
+    in
+      [ "mkdir -p $out/pack/${packageName}/start" ]
+      # To avoid confusion, even dependencies of optional plugins are added
+      # to `start` (except if they are explicitly listed as optional plugins).
+      ++ (builtins.map (link packageName "start") (lib.unique (startWithDeps ++ depsOfOptionalPlugins)))
+      ++ ["mkdir -p $out/pack/${packageName}/opt"]
+      ++ (builtins.map (link packageName "opt") opt)
+    );
+    packDir = (packages:
+      stdenv.mkDerivation {
+        name = "vim-pack-dir";
+        src = ./.;
+        installPhase = lib.concatStringsSep "\n" (lib.flatten (lib.mapAttrsToList packageLinks packages));
+        preferLocalBuild = true;
+      }
+    );
+  in
+  ''
+    set packpath^=${packDir packages}
+    set runtimepath^=${packDir packages}
+  '');
+
+  vimrcContent = {
     packages ? null,
     vam ? null,
     pathogen ? null,
     plug ? null,
-    beforePlugins ? "",
-    customRC ? ""
+    beforePlugins ? ''
+      " configuration generated by NIX
+      set nocompatible
+    '',
+    customRC ? null
   }:
 
     let
       /* pathogen mostly can set &rtp at startup time. Its used very commonly.
       */
-      pathogenImpl = lib.optionalString (pathogen != null)
-      (let
+      pathogenImpl = let
         knownPlugins = pathogen.knownPlugins or vimPlugins;
 
         plugins = findDependenciesRecursively (map (pluginToDrv knownPlugins) pathogen.pluginNames);
@@ -207,15 +243,15 @@ let
         };
       in
       ''
-        let &rtp.=(empty(&rtp)?"":',')."${vimPlugins.pathogen.rtp}"
+        let &rtp.=(empty(&rtp)?"":',')."${vimPlugins.vim-pathogen.rtp}"
         execute pathogen#infect('${pluginsEnv}/{}')
 
         filetype indent plugin on | syn on
-      '');
+      '';
 
       /* vim-plug is an extremely popular vim plugin manager.
       */
-      plugImpl = lib.optionalString (plug != null)
+      plugImpl =
       (''
         source ${vimPlugins.vim-plug.rtp}/plug.vim
         call plug#begin('/dev/null')
@@ -301,61 +337,25 @@ let
         call vam#Scripts(l, {})
       '');
 
-      nativeImpl = lib.optionalString (packages != null)
-      (let
-        link = (packageName: dir: pluginPath: "ln -sf ${pluginPath}/share/vim-plugins/* $out/pack/${packageName}/${dir}");
-        packageLinks = (packageName: {start ? [], opt ? []}:
-        let
-          # `nativeImpl` expects packages to be derivations, not strings (as
-          # opposed to older implementations that have to maintain backwards
-          # compatibility). Therefore we don't need to deal with "knownPlugins"
-          # and can simply pass `null`.
-          depsOfOptionalPlugins = lib.subtractLists opt (findDependenciesRecursively opt);
-          startWithDeps = findDependenciesRecursively start;
-        in
-          ["mkdir -p $out/pack/${packageName}/start"]
-          # To avoid confusion, even dependencies of optional plugins are added
-          # to `start` (except if they are explicitly listed as optional plugins).
-          ++ (builtins.map (link packageName "start") (lib.unique (startWithDeps ++ depsOfOptionalPlugins)))
-          ++ ["mkdir -p $out/pack/${packageName}/opt"]
-          ++ (builtins.map (link packageName "opt") opt)
-        );
-        packDir = (packages:
-          stdenv.mkDerivation {
-            name = "vim-pack-dir";
-            src = ./.;
-            installPhase = lib.concatStringsSep
-                             "\n"
-                             (lib.flatten (lib.mapAttrsToList packageLinks packages));
-            preferLocalBuild = true;
-          }
-        );
-      in
-      ''
-        set packpath^=${packDir packages}
-        set runtimepath^=${packDir packages}
+      entries = [
+        beforePlugins
+        vamImpl
+      ]
+      ++ lib.optional (packages != null && packages != []) (nativeImpl packages)
+      ++ lib.optional (pathogen != null) pathogenImpl
+      ++ lib.optional (plug != null) plugImpl
+      ++ [ customRC ];
 
-        filetype indent plugin on | syn on
-      '');
-
-  in writeText "vimrc" ''
-  " configuration generated by NIX
-  set nocompatible
-
-  ${beforePlugins}
-
-  ${vamImpl}
-  ${pathogenImpl}
-  ${plugImpl}
-  ${nativeImpl}
+    in
+      lib.concatStringsSep "\n" (lib.filter (x: x != null && x != "") entries);
 
-  ${customRC}
-  '';
+  vimrcFile = settings: writeText "vimrc" (vimrcContent settings);
 
 in
 
 rec {
   inherit vimrcFile;
+  inherit vimrcContent;
 
   # shell script with custom name passing [-u vimrc] [-U gvimrc] to vim
   vimWithRC = {
@@ -371,7 +371,7 @@ rec {
     gvimExecutableName,
   }:
     let
-      rcOption = o: file: stdenv.lib.optionalString (file != null) "-${o} ${file}";
+      rcOption = o: file: lib.optionalString (file != null) "-${o} ${file}";
       vimWrapperScript = writeScriptBin vimExecutableName ''
         #!${runtimeShell}
         exec ${vimExecutable} ${rcOption "u" vimrcFile} ${rcOption "U" gvimrcFile} "$@"
@@ -446,9 +446,7 @@ rec {
     '';
   };
 
-  vim_with_vim2nix = vim_configurable.customize { name = "vim"; vimrcConfig.vam.pluginDictionaries = [ "vim-addon-vim2nix" ]; };
-
-  inherit (import ./build-vim-plugin.nix { inherit stdenv rtpPath vim; }) buildVimPlugin buildVimPluginFrom2Nix;
+  inherit (import ./build-vim-plugin.nix { inherit lib stdenv rtpPath vim; }) buildVimPlugin buildVimPluginFrom2Nix;
 
   # used to figure out which python dependencies etc. neovim needs
   requiredPlugins = {
@@ -473,62 +471,4 @@ rec {
       nativePlugins = lib.concatMap ({start?[], opt?[], knownPlugins?vimPlugins}: start++opt) nativePluginsConfigs;
     in
       nativePlugins ++ nonNativePlugins;
-
-
-  # test cases:
-  test_vim_with_vim_nix_using_vam = vim_configurable.customize {
-   name = "vim-with-vim-addon-nix-using-vam";
-    vimrcConfig.vam.pluginDictionaries = [{name = "vim-nix"; }];
-  };
-
-  test_vim_with_vim_nix_using_pathogen = vim_configurable.customize {
-    name = "vim-with-vim-addon-nix-using-pathogen";
-    vimrcConfig.pathogen.pluginNames = [ "vim-nix" ];
-  };
-
-  test_vim_with_vim_nix_using_plug = vim_configurable.customize {
-    name = "vim-with-vim-addon-nix-using-plug";
-    vimrcConfig.plug.plugins = with vimPlugins; [ vim-nix ];
-  };
-
-  test_vim_with_vim_nix = vim_configurable.customize {
-    name = "vim-with-vim-addon-nix";
-    vimrcConfig.packages.myVimPackage.start = with vimPlugins; [ vim-nix ];
-  };
-
-  # only neovim makes use of `requiredPlugins`, test this here
-  test_nvim_with_vim_nix_using_pathogen = neovim.override {
-    configure.pathogen.pluginNames = [ "vim-nix" ];
-  };
-
-  # regression test for https://github.com/NixOS/nixpkgs/issues/53112
-  # The user may have specified their own plugins which may not be formatted
-  # exactly as the generated ones. In particular, they may not have the `pname`
-  # attribute.
-  test_vim_with_custom_plugin = vim_configurable.customize {
-    name = "vim_with_custom_plugin";
-    vimrcConfig.vam.knownPlugins =
-      vimPlugins // ({
-        vim-trailing-whitespace = buildVimPluginFrom2Nix {
-          name = "vim-trailing-whitespace";
-          src = fetchFromGitHub {
-            owner = "bronson";
-            repo = "vim-trailing-whitespace";
-            rev = "4c596548216b7c19971f8fc94e38ef1a2b55fee6";
-            sha256 = "0f1cpnp1nxb4i5hgymjn2yn3k1jwkqmlgw1g02sq270lavp2dzs9";
-          };
-          # make sure string dependencies are handled
-          dependencies = [ "vim-nix" ];
-        };
-      });
-    vimrcConfig.vam.pluginDictionaries = [ { names = [ "vim-trailing-whitespace" ]; } ];
-  };
-
-  # system remote plugin manifest should be generated, deoplete should be usable
-  # without the user having to do `UpdateRemotePlugins`. To test, launch neovim
-  # and do `:call deoplete#enable()`. It will print an error if the remote
-  # plugin is not registered.
-  test_nvim_with_remote_plugin = neovim.override {
-    configure.pathogen.pluginNames = with vimPlugins; [ deoplete-nvim ];
-  };
 }
diff --git a/pkgs/misc/vscode-extensions/cpptools/default.nix b/pkgs/misc/vscode-extensions/cpptools/default.nix
index 8c46b242ef4..188da860530 100644
--- a/pkgs/misc/vscode-extensions/cpptools/default.nix
+++ b/pkgs/misc/vscode-extensions/cpptools/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, vscode-utils
+{ lib, vscode-utils
 , fetchurl, unzip
 , mono, writeScript, runtimeShell
 , jq, clang-tools
@@ -50,13 +50,13 @@ vscode-utils.buildVscodeMarketplaceExtension rec {
   mktplcRef = {
     name = "cpptools";
     publisher = "ms-vscode";
-    version = "0.29.0";
+    version = "1.0.1";
   };
 
   vsix = fetchurl {
     name = "${mktplcRef.publisher}-${mktplcRef.name}.zip";
     url = "https://github.com/microsoft/vscode-cpptools/releases/download/${mktplcRef.version}/cpptools-linux.vsix";
-    sha256 = "0qw21wd6hfqrmvyvr2ggydcfsk1hralj5x3s8hhwqyspb7szggxi";
+    sha256 = "1lb5pza2ny1ydan19596amabs1np10nq08yqsfbvvfw7zbg4gnyc";
   };
 
   buildInputs = [
@@ -92,7 +92,7 @@ vscode-utils.buildVscodeMarketplaceExtension rec {
     chmod a+x ./bin/cpptools{-srv,}
   '';
 
-    meta = with stdenv.lib; {
+    meta = with lib; {
       license = licenses.unfree;
       maintainers = [ maintainers.jraygauthier ];
       # A 32 bit linux would also be possible with some effort (specific download of binaries +
diff --git a/pkgs/misc/vscode-extensions/default.nix b/pkgs/misc/vscode-extensions/default.nix
index 04eabef9ec3..2941c95bb4e 100644
--- a/pkgs/misc/vscode-extensions/default.nix
+++ b/pkgs/misc/vscode-extensions/default.nix
@@ -1,209 +1,1532 @@
-{ stdenv, callPackage, vscode-utils, llvmPackages_8 }:
+{ config
+, lib
+, buildEnv
+, callPackage
+, vscode-utils
+, asciidoctor
+, nodePackages
+, jdk
+, llvmPackages_8
+, nixpkgs-fmt
+, jq
+, shellcheck
+, moreutils
+, racket-minimal
+, clojure-lsp
+}:
 
 let
   inherit (vscode-utils) buildVscodeMarketplaceExtension;
-in
-#
-# Unless there is a good reason not to, we attempt to use the same name as the
-# extension's unique identifier (the name the extension gets when installed
-# from vscode under `~/.vscode`) and found on the marketplace extension page.
-# So an extension's attribute name should be of the form:
-# "${mktplcRef.publisher}.${mktplcRef.name}".
-#
-{
-
-  alanz.vscode-hie-server = buildVscodeMarketplaceExtension {
-    mktplcRef = {
-      name = "vscode-hie-server";
-      publisher = "alanz";
-      version = "0.0.27"; # see the note above
-      sha256 = "1mz0h5zd295i73hbji9ivla8hx02i4yhqcv6l4r23w3f07ql3i8h";
-    };
-    meta = {
-      license = stdenv.lib.licenses.mit;
-    };
-  };
 
-  bbenoist.Nix = buildVscodeMarketplaceExtension {
-    mktplcRef = {
-        name = "Nix";
-        publisher = "bbenoist";
-        version = "1.0.1";
-        sha256 = "0zd0n9f5z1f0ckzfjr38xw2zzmcxg1gjrava7yahg5cvdcw6l35b";
-    };
-    meta = with stdenv.lib; {
-      license = licenses.mit;
-    };
-  };
+  #
+  # Unless there is a good reason not to, we attempt to use the same name as the
+  # extension's unique identifier (the name the extension gets when installed
+  # from vscode under `~/.vscode`) and found on the marketplace extension page.
+  # So an extension's attribute name should be of the form:
+  # "${mktplcRef.publisher}.${mktplcRef.name}".
+  #
+  baseExtensions = self: lib.mapAttrs (_n: lib.recurseIntoAttrs)
+    {
+      _4ops.terraform = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          publisher = "4ops";
+          name = "terraform";
+          version = "0.2.1";
+          sha256 = "196026a89pizj8p0hqdgkyllj2spx2qwpynsaqjq17s8v15vk5dg";
+        };
+        meta = {
+          license = lib.licenses.mit;
+          maintainers = with lib.maintainers; [ kamadorueda ];
+        };
+      };
 
-  cmschuetz12.wal = buildVscodeMarketplaceExtension {
-    mktplcRef = {
-        name = "wal";
-        publisher = "cmschuetz12";
-        version = "0.1.0";
-        sha256 = "0q089jnzqzhjfnv0vlb5kf747s3mgz64r7q3zscl66zb2pz5q4zd";
-    };
-    meta = with stdenv.lib; {
-      license = licenses.mit;
-    };
-  };
+      a5huynh.vscode-ron = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "vscode-ron";
+          publisher = "a5huynh";
+          version = "0.9.0";
+          sha256 = "0d3p50mhqp550fmj662d3xklj14gvzvhszm2hlqvx4h28v222z97";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
 
-  formulahendry.auto-close-tag = buildVscodeMarketplaceExtension {
-    mktplcRef = {
-      name = "auto-close-tag";
-      publisher = "formulahendry";
-      version = "0.5.6";
-      sha256 = "058jgmllqb0j6gg5anghdp35nkykii28igfcwqgh4bp10pyvspg0";
-    };
-    meta = {
-      license = stdenv.lib.licenses.mit;
-    };
-  };
+      alanz.vscode-hie-server = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "vscode-hie-server";
+          publisher = "alanz";
+          version = "0.0.27"; # see the note above
+          sha256 = "1mz0h5zd295i73hbji9ivla8hx02i4yhqcv6l4r23w3f07ql3i8h";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
 
-  james-yu.latex-workshop = buildVscodeMarketplaceExtension {
-    mktplcRef = {
-      name = "latex-workshop";
-      publisher = "James-Yu";
-      version = "8.2.0";
-      sha256 = "1ai16aam4v5jzhxgms589q0l24kyk1a9in6z4i7g05b3sahyxab2";
-    };
-    meta = with stdenv.lib; {
-      license = licenses.mit;
-    };
-  };
+      alefragnani.project-manager = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "project-manager";
+          publisher = "alefragnani";
+          version = "12.1.0";
+          sha256 = "sha256-fYBKmWn9pJh2V0fGdqVrXj9zIl8oTrZcBycDaMOXL/8=";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
 
-  justusadam.language-haskell = buildVscodeMarketplaceExtension {
-    mktplcRef = {
-      name = "language-haskell";
-      publisher = "justusadam";
-      version = "3.2.1";
-      sha256 = "0lxp8xz17ciy93nj4lzxqvz71vw1zdyamrnh2n792yair8890rr6";
-    };
-    meta = {
-      license = stdenv.lib.licenses.bsd3;
-    };
-  };
+      alexdima.copy-relative-path = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "copy-relative-path";
+          publisher = "alexdima";
+          version = "0.0.2";
+          sha256 = "06g601n9d6wyyiz659w60phgm011gn9jj5fy0gf5wpi2bljk3vcn";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
 
-  ms-azuretools.vscode-docker = buildVscodeMarketplaceExtension {
-    mktplcRef = {
-      name = "vscode-docker";
-      publisher = "ms-azuretools";
-      version = "0.8.1";
-      sha256 = "0n59whmcrx8946xix6skvc50f2vsc85ckvn8cs06w9mqmymm1q0s";
-    };
-    meta = {
-      license = stdenv.lib.licenses.mit;
-    };
-  };
+      alygin.vscode-tlaplus = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "vscode-tlaplus";
+          publisher = "alygin";
+          version = "1.5.3";
+          sha256 = "1cy0qn8iyjrinscn9p5ckpsa2hyryapxfi7is6s2zk2mpligbb1d";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
 
-  ms-kubernetes-tools.vscode-kubernetes-tools = buildVscodeMarketplaceExtension {
-    mktplcRef = {
-      name = "vscode-kubernetes-tools";
-      publisher = "ms-kubernetes-tools";
-      version = "1.0.6";
-      sha256 = "12a4phl1pddsajy3n0ld6rp607iy0pif6pqrs6ljbg2x97fyra28";
-    };
-    meta = {
-      license = stdenv.lib.licenses.mit;
-    };
-  };
+      angular.ng-template = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "ng-template";
+          publisher = "Angular";
+          version = "12.1.2";
+          sha256 = "sha256-fIHh1eRmu4zSgrtZr0XwLB+1Ad6a/0ABC55akGr0DOA=";
+        };
+        meta = with lib; {
+          changelog = "https://marketplace.visualstudio.com/items/Angular.ng-template/changelog";
+          description = "Editor services for Angular templates";
+          downloadPage = "https://marketplace.visualstudio.com/items?itemName=Angular.ng-template";
+          homepage = "https://github.com/angular/vscode-ng-language-service";
+          license = licenses.mit;
+          maintainers = with maintainers; [ ratsclub ];
+        };
+      };
 
-  ms-vscode.Go = buildVscodeMarketplaceExtension {
-    mktplcRef = {
-      name = "Go";
-      publisher = "ms-vscode";
-      version = "0.11.7";
-      sha256 = "1l6jjdfivw1pn9y4d4i7zf80ls1k1b0ap1d828ah57ad3bgmyqfi";
-    };
-    meta = {
-      license = stdenv.lib.licenses.mit;
-    };
-  };
+      antfu.icons-carbon = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "icons-carbon";
+          publisher = "antfu";
+          version = "0.2.2";
+          sha256 = "0mfap16la09mn0jhvy8s3dainrmjz64vra7d0d4fbcpgg420kv3f";
+        };
+        meta = with lib; {
+          license = licenses.mit;
+        };
+      };
 
-  ms-vscode.cpptools = callPackage ./cpptools {};
+      arrterian.nix-env-selector = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "nix-env-selector";
+          publisher = "arrterian";
+          version = "1.0.7";
+          sha256 = "0e76885c9dbb6dca4eac8a75866ec372b948cc64a3a3845327d7c3ef6ba42a57";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
 
-  ms-vscode-remote.remote-ssh = callPackage ./remote-ssh {};
+      asciidoctor.asciidoctor-vscode = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "asciidoctor-vscode";
+          publisher = "asciidoctor";
+          version = "2.8.9";
+          sha256 = "1xkxx5i3nhd0dzqhhdmx0li5jifsgfhv0p5h7xwsscz3gzgsdcyb";
+        };
 
-  ms-python.python = callPackage ./python {
-    extractNuGet = callPackage ./python/extract-nuget.nix { };
-  };
+        postPatch = ''
+          substituteInPlace dist/src/text-parser.js \
+            --replace "get('asciidoctor_command', 'asciidoctor')" \
+                      "get('asciidoctor_command', '${asciidoctor}/bin/asciidoctor')"
+          substituteInPlace dist/src/commands/exportAsPDF.js \
+            --replace "get('asciidoctorpdf_command', 'asciidoctor-pdf')" \
+                      "get('asciidoctorpdf_command', '${asciidoctor}/bin/asciidoctor-pdf')"
+        '';
 
-  redhat.vscode-yaml = buildVscodeMarketplaceExtension {
-    mktplcRef = {
-      name = "vscode-yaml";
-      publisher = "redhat";
-      version = "0.5.3";
-      sha256 = "03swlsp906rqlrx6jf3ibh7pk36sm0zdr8jfy6sr3w5lqjg27gka";
-    };
-    meta = {
-      license = stdenv.lib.licenses.mit;
-    };
-  };
+        meta = with lib; {
+          license = licenses.mit;
+        };
+      };
 
-  matklad.rust-analyzer = callPackage ./rust-analyzer {};
+      ms-python.vscode-pylance = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "vscode-pylance";
+          publisher = "MS-python";
+          version = "2020.11.2";
+          sha256 = "0n2dm21vgzir3hx1m3pmx7jq4zy3hdxfsandd2wv5da4fs9b5g50";
+        };
 
-  scala-lang.scala = buildVscodeMarketplaceExtension {
-    mktplcRef = {
-      name = "scala";
-      publisher = "scala-lang";
-      version = "0.3.8";
-      sha256 = "17dl10m3ayf57sqgil4mr9fjdm7i8gb5clrs227b768pp2d39ll9";
-    };
-    meta = {
-      license = stdenv.lib.licenses.mit;
-    };
-  };
+        buildInputs = [ nodePackages.pyright ];
 
-  scalameta.metals = buildVscodeMarketplaceExtension {
-    mktplcRef = {
-      name = "metals";
-      publisher = "scalameta";
-      version = "1.9.0";
-      sha256 = "0p2wbnw98zmjbfiz4mi1mh131s78r01kjnja339lwdigqxg88gi6";
-    };
-    meta = {
-      license = stdenv.lib.licenses.asl20;
-    };
-  };
+        meta = {
+          license = lib.licenses.unfree;
+        };
+      };
 
-  skyapps.fish-vscode = buildVscodeMarketplaceExtension {
-    mktplcRef = {
-      name = "fish-vscode";
-      publisher = "skyapps";
-      version = "0.2.1";
-      sha256 = "0y1ivymn81ranmir25zk83kdjpjwcqpnc9r3jwfykjd9x0jib2hl";
-    };
-    meta = with stdenv.lib; {
-      license = licenses.mit;
-    };
-  };
+      b4dm4n.vscode-nixpkgs-fmt = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "nixpkgs-fmt";
+          publisher = "B4dM4n";
+          version = "0.0.1";
+          sha256 = "sha256-vz2kU36B1xkLci2QwLpl/SBEhfSWltIDJ1r7SorHcr8=";
+        };
+        nativeBuildInputs = [ jq moreutils ];
+        postInstall = ''
+          cd "$out/$installPrefix"
+          jq '.contributes.configuration.properties."nixpkgs-fmt.path".default = "${nixpkgs-fmt}/bin/nixpkgs-fmt"' package.json | sponge package.json
+        '';
+        meta = with lib; {
+          license = licenses.mit;
+        };
+      };
 
-  vscodevim.vim = buildVscodeMarketplaceExtension {
-    mktplcRef = {
-      name = "vim";
-      publisher = "vscodevim";
-      version = "1.11.3";
-      sha256 = "1smzsgcrkhghbnpy51gp28kh74l7y4s2m8pfxabb4ffb751254j0";
-    };
-    meta = {
-      license = stdenv.lib.licenses.mit;
-    };
-  };
+      baccata.scaladex-search = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "scaladex-search";
+          publisher = "baccata";
+          version = "0.0.1";
+          sha256 = "1y8p4rr8qq5ng52g4pbx8ayq04gi2869wrx68k69rl7ga7bzcyp9";
+        };
+        meta = {
+          license = lib.licenses.asl20;
+        };
+      };
 
-  xaver.clang-format = buildVscodeMarketplaceExtension {
-    mktplcRef = {
-      name = "clang-format";
-      publisher = "xaver";
-      version = "1.9.0";
-      sha256 = "abd0ef9176eff864f278c548c944032b8f4d8ec97d9ac6e7383d60c92e258c2f";
-    };
-    meta = with stdenv.lib; {
-      license = licenses.mit;
-      maintainers = [ maintainers.zeratax ];
+      bbenoist.Nix = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "Nix";
+          publisher = "bbenoist";
+          version = "1.0.1";
+          sha256 = "0zd0n9f5z1f0ckzfjr38xw2zzmcxg1gjrava7yahg5cvdcw6l35b";
+        };
+        meta = with lib; {
+          license = licenses.mit;
+        };
+      };
+
+      betterthantomorrow.calva = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "calva";
+          publisher = "betterthantomorrow";
+          version = "2.0.205";
+          sha256 = "sha256-umnG1uLB42fUNKjANaKcABjVmqbdOQakd/6TPsEpF9c";
+        };
+        nativeBuildInputs = [ jq moreutils ];
+        postInstall = ''
+          cd "$out/$installPrefix"
+          jq '.contributes.configuration[0].properties."calva.clojureLspPath".default = "${clojure-lsp}/bin/clojure-lsp"' package.json | sponge package.json
+        '';
+        meta = with lib; {
+          license = licenses.mit;
+        };
+      };
+
+      bodil.file-browser = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "file-browser";
+          publisher = "bodil";
+          version = "0.2.10";
+          sha256 = "sha256-RW4vm0Hum9AeN4Rq7MSJOIHnALU0L1tBLKjaRLA2hL8=";
+        };
+        meta = with lib; {
+          license = licenses.mit;
+        };
+      };
+
+      bradlc.vscode-tailwindcss = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "vscode-tailwindcss";
+          publisher = "bradlc";
+          version = "0.6.13";
+          sha256 = "098vrm28b7jpzk0c2d0cgxvdw4jsswzf18cx1m9jwsm1j40fp5f4";
+        };
+        meta = with lib; {
+          license = licenses.mpl20;
+        };
+      };
+
+      brettm12345.nixfmt-vscode = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "nixfmt-vscode";
+          publisher = "brettm12345";
+          version = "0.0.1";
+          sha256 = "07w35c69vk1l6vipnq3qfack36qcszqxn8j3v332bl0w6m02aa7k";
+        };
+        meta = with lib; {
+          license = licenses.mpl20;
+        };
+      };
+
+      cmschuetz12.wal = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "wal";
+          publisher = "cmschuetz12";
+          version = "0.1.0";
+          sha256 = "0q089jnzqzhjfnv0vlb5kf747s3mgz64r7q3zscl66zb2pz5q4zd";
+        };
+        meta = with lib; {
+          license = licenses.mit;
+        };
+      };
+
+      codezombiech.gitignore = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "gitignore";
+          publisher = "codezombiech";
+          version = "0.6.0";
+          sha256 = "0gnc0691pwkd9s8ldqabmpfvj0236rw7bxvkf0bvmww32kv1ia0b";
+        };
+        meta = with lib; {
+          license = licenses.mit;
+        };
+      };
+
+      CoenraadS.bracket-pair-colorizer = buildVscodeMarketplaceExtension {
+        meta = with lib; {
+          changelog = "https://marketplace.visualstudio.com/items/CoenraadS.bracket-pair-colorizer/changelog";
+          description = "A customizable extension for colorizing matching brackets";
+          downloadPage = "https://marketplace.visualstudio.com/items?itemName=CoenraadS.bracket-pair-colorizer";
+          homepage = "https://github.com/CoenraadS/BracketPair";
+          license = licenses.mit;
+          maintainers = with maintainers; [ superherointj ];
+        };
+        mktplcRef = {
+          name = "bracket-pair-colorizer";
+          publisher = "CoenraadS";
+          version = "1.0.61";
+          sha256 = "0r3bfp8kvhf9zpbiil7acx7zain26grk133f0r0syxqgml12i652";
+        };
+      };
+
+      coenraads.bracket-pair-colorizer-2 = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "bracket-pair-colorizer-2";
+          publisher = "CoenraadS";
+          version = "0.2.1";
+          sha256 = "0bfvzs4ac537zqhnqaa38jf4lhiy1fmqcv6lq89nnx8k963380z7";
+        };
+        meta = with lib; {
+          license = licenses.mit;
+        };
+      };
+
+      coolbear.systemd-unit-file = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          publisher = "coolbear";
+          name = "systemd-unit-file";
+          version = "1.0.6";
+          sha256 = "0sc0zsdnxi4wfdlmaqwb6k2qc21dgwx6ipvri36x7agk7m8m4736";
+        };
+        meta = {
+          license = lib.licenses.mit;
+          maintainers = with lib.maintainers; [ kamadorueda ];
+        };
+      };
+
+      dbaeumer.vscode-eslint = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "vscode-eslint";
+          publisher = "dbaeumer";
+          version = "2.1.14";
+          sha256 = "sha256-bVGmp871yu1Llr3uJ+CCosDsrxJtD4b1+CR+omMUfIQ=";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      davidanson.vscode-markdownlint = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "vscode-markdownlint";
+          publisher = "DavidAnson";
+          version = "0.42.1";
+          sha256 = "c8c0647e0dd786fe68becca6dc73eade5f4220a26ab9faff8dd813a14b25df51";
+        };
+        meta = with lib; {
+          license = licenses.mit;
+        };
+      };
+
+      dhall.dhall-lang = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "dhall-lang";
+          publisher = "dhall";
+          version = "0.0.4";
+          sha256 = "0sa04srhqmngmw71slnrapi2xay0arj42j4gkan8i11n7bfi1xpf";
+        };
+        meta = { license = lib.licenses.mit; };
+      };
+
+      dhall.vscode-dhall-lsp-server = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "vscode-dhall-lsp-server";
+          publisher = "dhall";
+          version = "0.0.4";
+          sha256 = "1zin7s827bpf9yvzpxpr5n6mv0b5rhh3civsqzmj52mdq365d2js";
+        };
+        meta = { license = lib.licenses.mit; };
+      };
+
+      divyanshuagrawal.competitive-programming-helper = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "competitive-programming-helper";
+          publisher = "DivyanshuAgrawal";
+          version = "5.8.5";
+          sha256 = "25v2tdAX7fVl2B5nvOIKN9vP1G5rA0G67CiDQn9n9Uc=";
+        };
+        meta = with lib; {
+          changelog = "https://marketplace.visualstudio.com/items/DivyanshuAgrawal.competitive-programming-helper/changelog";
+          description = "Makes judging, compiling, and downloading problems for competitve programming easy. Also supports auto-submit for a few sites.";
+          downloadPage = "https://marketplace.visualstudio.com/items?itemName=DivyanshuAgrawal.competitive-programming-helper";
+          homepage = "https://github.com/agrawal-d/cph";
+          license = licenses.gpl3;
+          maintainers = with maintainers; [ arcticlimer ];
+        };
+      };
+
+      donjayamanne.githistory = buildVscodeMarketplaceExtension {
+        meta = with lib; {
+          changelog = "https://marketplace.visualstudio.com/items/donjayamanne.githistory/changelog";
+          description = "View git log, file history, compare branches or commits";
+          downloadPage = "https://marketplace.visualstudio.com/items?itemName=donjayamanne.githistory";
+          homepage = "https://github.com/DonJayamanne/gitHistoryVSCode/";
+          license = licenses.mit;
+          maintainers = with maintainers; [ superherointj ];
+        };
+        mktplcRef = {
+          name = "githistory";
+          publisher = "donjayamanne";
+          version = "0.6.14";
+          sha256 = "11x116hzqnhgbryp2kqpki1z5mlnwxb0ly9r1513m5vgbisrsn0i";
+        };
+      };
+
+      dotjoshjohnson.xml = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "xml";
+          publisher = "dotjoshjohnson";
+          version = "2.5.1";
+          sha256 = "1v4x6yhzny1f8f4jzm4g7vqmqg5bqchyx4n25mkgvw2xp6yls037";
+        };
+        meta = {
+          description = "XML Tools";
+          homepage = "https://github.com/DotJoshJohnson/vscode-xml";
+          license = lib.licenses.mit;
+        };
+      };
+
+      dracula-theme.theme-dracula = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "theme-dracula";
+          publisher = "dracula-theme";
+          version = "2.22.3";
+          sha256 = "0wni9sriin54ci8rly2s68lkfx8rj1cys6mgcizvps9sam6377w6";
+        };
+        meta = with lib; {
+          changelog = "https://marketplace.visualstudio.com/items/dracula-theme.theme-dracula/changelog";
+          description = "Dark theme for many editors, shells, and more";
+          downloadPage = "https://marketplace.visualstudio.com/items?itemName=dracula-theme.theme-dracula";
+          homepage = "https://draculatheme.com/";
+          license = licenses.mit;
+        };
+      };
+
+      eamodio.gitlens = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "gitlens";
+          publisher = "eamodio";
+          version = "11.6.0";
+          sha256 = "sha256-JxCNE/IL/v94xWmhebsRZo1Gw+nSSpDgZ41ZGongGVI=";
+        };
+        meta = with lib; {
+          changelog = "https://marketplace.visualstudio.com/items/eamodio.gitlens/changelog";
+          description = "GitLens supercharges the Git capabilities built into Visual Studio Code.";
+          longDescription = ''
+            Supercharge the Git capabilities built into Visual Studio Code — Visualize code authorship at a glance via Git
+            blame annotations and code lens, seamlessly navigate and explore Git repositories, gain valuable insights via
+            powerful comparison commands, and so much more
+          '';
+          downloadPage = "https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens";
+          homepage = "https://gitlens.amod.io/";
+          license = licenses.mit;
+          maintainers = with maintainers; [ ratsclub ];
+        };
+      };
+
+      editorconfig.editorconfig = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "EditorConfig";
+          publisher = "EditorConfig";
+          version = "0.16.4";
+          sha256 = "0fa4h9hk1xq6j3zfxvf483sbb4bd17fjl5cdm3rll7z9kaigdqwg";
+        };
+        meta = with lib; {
+          changelog = "https://marketplace.visualstudio.com/items/EditorConfig.EditorConfig/changelog";
+          description = "EditorConfig Support for Visual Studio Code";
+          downloadPage = "https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig";
+          homepage = "https://github.com/editorconfig/editorconfig-vscode";
+          license = licenses.mit;
+          maintainers = with maintainers; [ dbirks ];
+        };
+      };
+
+      edonet.vscode-command-runner = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "vscode-command-runner";
+          publisher = "edonet";
+          version = "0.0.116";
+          sha256 = "0fxvplyk080m0cdsvzynp6wjillrd4flr5qz7af7fibb2jbmfdkn";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      elmtooling.elm-ls-vscode = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "elm-ls-vscode";
+          publisher = "Elmtooling";
+          version = "2.0.1";
+          sha256 = "06x5ld2r1hzns2s052mvhmfiaawjzcn0jf5lkfprhmrkxnmfdd43";
+        };
+        meta = with lib; {
+          changelog = "https://marketplace.visualstudio.com/items/Elmtooling.elm-ls-vscode/changelog";
+          description = "Elm language server";
+          downloadPage = "https://marketplace.visualstudio.com/items?itemName=Elmtooling.elm-ls-vscode";
+          homepage = "https://github.com/elm-tooling/elm-language-client-vscode";
+          license = licenses.mit;
+          maintainers = with maintainers; [ mcwitt ];
+        };
+      };
+
+      emmanuelbeziat.vscode-great-icons = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "vscode-great-icons";
+          publisher = "emmanuelbeziat";
+          version = "2.1.79";
+          sha256 = "1cr1pxgxlfr643sfxbcr2xd53s1dnzcpacjj0ffkgizfda2psy78";
+        };
+        meta = with lib; {
+          license = licenses.mit;
+        };
+      };
+
+      esbenp.prettier-vscode = buildVscodeMarketplaceExtension {
+        meta = with lib; {
+          changelog = "https://marketplace.visualstudio.com/items/esbenp.prettier-vscode/changelog";
+          description = "Code formatter using prettier";
+          downloadPage = "https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode";
+          homepage = "https://github.com/prettier/prettier-vscode";
+          license = licenses.mit;
+          maintainers = with maintainers; [ superherointj ];
+        };
+        mktplcRef = {
+          name = "prettier-vscode";
+          publisher = "esbenp";
+          version = "8.0.1";
+          sha256 = "017lqpmzjxq5f1zr49akcm9gfki0qq8v7pj7gks6a3szjdx16mnl";
+        };
+      };
+
+      eugleo.magic-racket = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "magic-racket";
+          publisher = "evzen-wybitul";
+          version = "0.5.7";
+          sha256 = "sha256-34/H0WgM73yzuOGU2w6Ipq7KuEBuN1bykcLGuvzY3mU=";
+        };
+        nativeBuildInputs = [ jq moreutils ];
+        postInstall = ''
+          cd "$out/$installPrefix"
+          jq '.contributes.configuration.properties."magic-racket.general.racketPath".default = "${racket-minimal}/bin/racket"' package.json | sponge package.json
+        '';
+        meta = with lib; {
+          changelog = "https://marketplace.visualstudio.com/items/evzen-wybitul.magic-racket/changelog";
+          description = "The best coding experience for Racket in VS Code ";
+          downloadPage = "https://marketplace.visualstudio.com/items?itemName=evzen-wybitul.magic-racket";
+          homepage = "https://github.com/Eugleo/magic-racket";
+          license = licenses.agpl3Only;
+        };
+      };
+
+      file-icons.file-icons = buildVscodeMarketplaceExtension {
+        meta = with lib; {
+          changelog = "https://marketplace.visualstudio.com/items/file-icons.file-icons/changelog";
+          description = "File-specific icons in VSCode for improved visual grepping.";
+          downloadPage = "https://marketplace.visualstudio.com/items?itemName=file-icons.file-icons";
+          homepage = "https://github.com/file-icons/vscode";
+          license = licenses.mit;
+          maintainers = with maintainers; [ superherointj ];
+        };
+        mktplcRef = {
+          name = "file-icons";
+          publisher = "file-icons";
+          version = "1.0.28";
+          sha256 = "1lyx0l42xhi2f3rdnjddc3mw7m913kjnchawi98i6vqsx3dv7091";
+        };
+      };
+
+      foam.foam-vscode = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "foam-vscode";
+          publisher = "foam";
+          version = "0.14.1";
+          sha256 = "sha256-w9xGkezS3A9z6sTk8WWgW7g8qYX6mJFfRV0lv5cu160=";
+        };
+        meta = with lib; {
+          changelog = "https://marketplace.visualstudio.com/items/foam.foam-vscode/changelog";
+          description = "A personal knowledge management and sharing system for VSCode ";
+          downloadPage = "https://marketplace.visualstudio.com/items?itemName=foam.foam-vscode";
+          homepage = "https://foambubble.github.io/";
+          license = licenses.mit;
+          maintainers = with maintainers; [ ratsclub ];
+        };
+      };
+
+      formulahendry.auto-close-tag = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "auto-close-tag";
+          publisher = "formulahendry";
+          version = "0.5.6";
+          sha256 = "058jgmllqb0j6gg5anghdp35nkykii28igfcwqgh4bp10pyvspg0";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      formulahendry.auto-rename-tag = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "auto-rename-tag";
+          publisher = "formulahendry";
+          version = "0.1.6";
+          sha256 = "0cqg9mxkyf41brjq2c764w42lzyn6ffphw6ciw7xnqk1h1x8wwbs";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      formulahendry.code-runner = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "code-runner";
+          publisher = "formulahendry";
+          version = "0.11.2";
+          sha256 = "0qwcxr6m1xwhqmdl4pccjgpikpq1hgi2hgrva5abn8ixa2510hcy";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      foxundermoon.shell-format = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "shell-format";
+          publisher = "foxundermoon";
+          version = "7.1.0";
+          sha256 = "09z72mdr5bfdcb67xyzlv7lb9vyjlc3k9ackj4jgixfk40c68cnj";
+        };
+        meta = with lib; {
+          downloadPage = "https://marketplace.visualstudio.com/items?itemName=foxundermoon.shell-format";
+          homepage = "https://github.com/foxundermoon/vs-shell-format";
+          license = licenses.mit;
+          maintainers = with maintainers; [ dbirks ];
+        };
+      };
+
+      freebroccolo.reasonml = buildVscodeMarketplaceExtension {
+        meta = with lib; {
+          changelog = "https://marketplace.visualstudio.com/items/freebroccolo.reasonml/changelog";
+          description = "Reason support for Visual Studio Code";
+          downloadPage = "https://marketplace.visualstudio.com/items?itemName=freebroccolo.reasonml";
+          homepage = "https://github.com/reasonml-editor/vscode-reasonml";
+          license = licenses.asl20;
+          maintainers = with maintainers; [ superherointj ];
+        };
+        mktplcRef = {
+          name = "reasonml";
+          publisher = "freebroccolo";
+          version = "1.0.38";
+          sha256 = "1nay6qs9vcxd85ra4bv93gg3aqg3r2wmcnqmcsy9n8pg1ds1vngd";
+        };
+      };
+
+      jkillian.custom-local-formatters = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          publisher = "jkillian";
+          name = "custom-local-formatters";
+          version = "0.0.4";
+          sha256 = "1pmqnc759fq86g2z3scx5xqpni9khcqi5z2kpl1kb7yygsv314gm";
+        };
+        meta = {
+          license = lib.licenses.mit;
+          maintainers = with lib.maintainers; [ kamadorueda ];
+        };
+      };
+
+      github = {
+        github-vscode-theme = buildVscodeMarketplaceExtension {
+          mktplcRef = {
+            name = "github-vscode-theme";
+            publisher = "github";
+            version = "4.1.1";
+            sha256 = "14wz2b0bn1rnmpj28c0mivz2gacla2dgg8ncv7qfx9bsxhf95g68";
+          };
+          meta = with lib; {
+            description = "GitHub theme for VS Code";
+            downloadPage =
+              "https://marketplace.visualstudio.com/items?itemName=GitHub.github-vscode-theme";
+            homepage = "https://github.com/primer/github-vscode-theme";
+            license = licenses.mit;
+            maintainers = with maintainers; [ hugolgst ];
+          };
+        };
+
+        vscode-pull-request-github = buildVscodeMarketplaceExtension {
+          mktplcRef = {
+            name = "vscode-pull-request-github";
+            publisher = "github";
+            version = "0.22.0";
+            sha256 = "13p3z86vkra26npp5a78pxdwa4z6jqjzsd38arhgdnjgwmi6bnrw";
+          };
+          meta = { license = lib.licenses.mit; };
+        };
+      };
+
+      golang.Go = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "Go";
+          publisher = "golang";
+          version = "0.25.1";
+          sha256 = "sha256-ZDUWN9lzDnR77W7xcMFQaaFl/6Lf/x1jgaBkwZPqGGw=";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      graphql.vscode-graphql = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "vscode-graphql";
+          publisher = "GraphQL";
+          version = "0.3.13";
+          sha256 = "sha256-JjEefVHQUYidUsr8Ce/dh7hLDm21WkyS+2RwsXHoY04=";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      gruntfuggly.todo-tree = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "todo-tree";
+          publisher = "Gruntfuggly";
+          version = "0.0.213";
+          sha256 = "0fj7vvaqdldhbzm9dqh2plqlhg34jv5khd690xd87h418sv8rk95";
+        };
+        meta = with lib; {
+          license = licenses.mit;
+        };
+      };
+
+      haskell.haskell = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "haskell";
+          publisher = "haskell";
+          version = "1.1.0";
+          sha256 = "1wg06lyk0qn9jd6gi007sg7v0z9z8gwq7x2449d4ihs9n3w5l0gb";
+        };
+        meta = with lib; {
+          license = licenses.mit;
+        };
+      };
+
+      hashicorp.terraform = callPackage ./terraform { };
+
+      hookyqr.beautify = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "beautify";
+          publisher = "HookyQR";
+          version = "1.5.0";
+          sha256 = "1c0kfavdwgwham92xrh0gnyxkrl9qlkpv39l1yhrldn8vd10fj5i";
+        };
+        meta = with lib; {
+          license = licenses.mit;
+        };
+      };
+
+      ibm.output-colorizer = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "output-colorizer";
+          publisher = "IBM";
+          version = "0.1.2";
+          sha256 = "0i9kpnlk3naycc7k8gmcxas3s06d67wxr3nnyv5hxmsnsx5sfvb7";
+        };
+        meta = with lib; {
+          license = licenses.mit;
+        };
+      };
+
+      iciclesoft.workspacesort = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "workspacesort";
+          publisher = "iciclesoft";
+          version = "1.6.0";
+          sha256 = "1pbk8kflywll6lqhmffz9yjf01dn8xq8sk6rglnfn2kl2ildfhh6";
+        };
+        meta = with lib; {
+          changelog = "https://marketplace.visualstudio.com/items/iciclesoft.workspacesort/changelog";
+          description = "Sort workspace-folders alphabetically rather than in chronological order";
+          downloadPage = "https://marketplace.visualstudio.com/items?itemName=iciclesoft.workspacesort";
+          homepage = "https://github.com/iciclesoft/workspacesort-for-VSCode";
+          license = licenses.mit;
+          maintainers = with maintainers; [ dbirks ];
+        };
+      };
+
+      ionide.ionide-fsharp = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "Ionide-fsharp";
+          publisher = "Ionide";
+          version = "5.5.5";
+          sha256 = "xrBNiIbZVJ0sGUk/4PudD8kSyX94QkrFtf7Ho/sB0Vs=";
+        };
+        meta = with lib; {
+          changelog = "https://marketplace.visualstudio.com/items/Ionide.Ionide-fsharp/changelog";
+          description = "Enhanced F# Language Features for Visual Studio Code";
+          downloadPage = "https://marketplace.visualstudio.com/items?itemName=Ionide.Ionide-fsharp";
+          homepage = "https://ionide.io";
+          license = licenses.mit;
+          maintainers = with maintainers; [ ratsclub ];
+        };
+      };
+
+      jakebecker.elixir-ls = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "elixir-ls";
+          publisher = "JakeBecker";
+          version = "0.7.0";
+          sha256 = "sha256-kFrkElD7qC1SpOx1rpcHW1D2hybHCf7cqvIO7JfPuMc=";
+        };
+        meta = with lib; {
+          license = licenses.mit;
+        };
+      };
+
+      james-yu.latex-workshop = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "latex-workshop";
+          publisher = "James-Yu";
+          version = "8.2.0";
+          sha256 = "1ai16aam4v5jzhxgms589q0l24kyk1a9in6z4i7g05b3sahyxab2";
+        };
+        meta = with lib; {
+          license = licenses.mit;
+        };
+      };
+
+      jnoortheen.nix-ide = buildVscodeMarketplaceExtension {
+        meta = with lib; {
+          changelog = "https://marketplace.visualstudio.com/items/jnoortheen.nix-ide/changelog";
+          description = "Nix language support with formatting and error report";
+          downloadPage = "https://marketplace.visualstudio.com/items?itemName=jnoortheen.nix-ide";
+          homepage = "https://github.com/jnoortheen/vscode-nix-ide";
+          license = licenses.mit;
+          maintainers = with maintainers; [ superherointj ];
+        };
+        mktplcRef = {
+          name = "nix-ide";
+          publisher = "jnoortheen";
+          version = "0.1.7";
+          sha256 = "1bw4wyq9abimxbhl7q9g8grvj2ax9qqq6mmqbiqlbsi2arvk0wrm";
+        };
+      };
+
+      jock.svg = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "svg";
+          publisher = "jock";
+          version = "1.4.7";
+          sha256 = "04ghqg4s7g7yylmvbxzwzpnyy4zin2bwlgvflh18m77w4j0ckpiq";
+        };
+        meta = with lib; {
+          license = licenses.mit;
+        };
+      };
+
+      johnpapa.vscode-peacock = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "vscode-peacock";
+          publisher = "johnpapa";
+          version = "3.9.1";
+          sha256 = "1g7apzzgfm8s9sjavhwr8jpf9slhq8b9jfkww3q5n41mzzx8m94p";
+        };
+        meta = with lib; {
+          license = licenses.mit;
+        };
+      };
+
+      jpoissonnier.vscode-styled-components = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "vscode-styled-components";
+          publisher = "jpoissonnier";
+          version = "1.4.1";
+          sha256 = "sha256-ojbeuYBCS+DjF5R0aLuBImzoSOb8mXw1s0Uh0CzggzE=";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      justusadam.language-haskell = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "language-haskell";
+          publisher = "justusadam";
+          version = "3.2.1";
+          sha256 = "0lxp8xz17ciy93nj4lzxqvz71vw1zdyamrnh2n792yair8890rr6";
+        };
+        meta = {
+          license = lib.licenses.bsd3;
+        };
+      };
+
+      kahole.magit = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "magit";
+          publisher = "kahole";
+          version = "0.6.18";
+          sha256 = "0sqzz5bbqqg60aypvwxcqnxrr72gmwfj9sv0amgkyaf60zg5sf7w";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      mads-hartmann.bash-ide-vscode = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          publisher = "mads-hartmann";
+          name = "bash-ide-vscode";
+          version = "1.11.0";
+          sha256 = "1hq41fy2v1grjrw77mbs9k6ps6gncwlydm03ipawjnsinxc9rdkp";
+        };
+        meta = {
+          license = lib.licenses.mit;
+          maintainers = with lib.maintainers; [ kamadorueda ];
+        };
+      };
+
+      mikestead.dotenv = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "dotenv";
+          publisher = "mikestead";
+          version = "1.0.1";
+          sha256 = "sha256-dieCzNOIcZiTGu4Mv5zYlG7jLhaEsJR05qbzzzQ7RWc=";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      mishkinf.goto-next-previous-member = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "goto-next-previous-member";
+          publisher = "mishkinf";
+          version = "0.0.5";
+          sha256 = "0kgzap1k924i95al0a63hxcsv8skhaapgfpi9d7vvaxm0fc10l1i";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      mskelton.one-dark-theme = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "one-dark-theme";
+          publisher = "mskelton";
+          version = "1.7.2";
+          sha256 = "1ks6z8wsxmlfhiwa51f7d6digvw11dlxc7mja3hankgxcf5dyj31";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      mechatroner.rainbow-csv = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "rainbow-csv";
+          publisher = "mechatroner";
+          version = "1.7.1";
+          sha256 = "0w5mijs4ll5qjkpyw7qpn1k40pq8spm0b3q72x150ydbcini5hxw";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      ms-azuretools.vscode-docker = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "vscode-docker";
+          publisher = "ms-azuretools";
+          version = "1.9.1";
+          sha256 = "1l7pm3s5kbf2vark164ykz4qbpa1ac9ls691hham36f6v91dmff9";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      ms-dotnettools.csharp = callPackage ./ms-dotnettools-csharp { };
+
+      ms-kubernetes-tools.vscode-kubernetes-tools = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "vscode-kubernetes-tools";
+          publisher = "ms-kubernetes-tools";
+          version = "1.0.6";
+          sha256 = "12a4phl1pddsajy3n0ld6rp607iy0pif6pqrs6ljbg2x97fyra28";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      ms-vscode.cpptools = callPackage ./cpptools { };
+
+      ms-vscode-remote.remote-ssh = callPackage ./remote-ssh { };
+
+      ms-python.python = callPackage ./python {
+        extractNuGet = callPackage ./python/extract-nuget.nix { };
+      };
+
+      msjsdiag.debugger-for-chrome = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "debugger-for-chrome";
+          publisher = "msjsdiag";
+          version = "4.12.11";
+          sha256 = "sha256-9i3TgCFThnFF5ccwzS4ATj5c2Xoe/4tDFGv75jJxeQ4=";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      ms-toolsai.jupyter = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "jupyter";
+          publisher = "ms-toolsai";
+          version = "2021.5.745244803";
+          sha256 = "0gjpsp61l8daqa87mpmxcrvsvb0pc2vwg7xbkvwn0f13c1739w9p";
+        };
+        meta = {
+          license = lib.licenses.unfree;
+        };
+      };
+
+      naumovs.color-highlight = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "color-highlight";
+          publisher = "naumovs";
+          version = "2.3.0";
+          sha256 = "1syzf43ws343z911fnhrlbzbx70gdn930q67yqkf6g0mj8lf2za2";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      octref.vetur = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "vetur";
+          publisher = "octref";
+          version = "0.34.1";
+          sha256 = "09w3bik1mxs7qac67wgrc58vl98ham3syrn2anycpwd7135wlpby";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      redhat.java = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "java";
+          publisher = "redhat";
+          version = "0.76.0";
+          sha256 = "0xb9brki4s00piv4kqgz6idm16nk6x1j6502jljz7y9pif38z32y";
+        };
+        buildInputs = [ jdk ];
+        meta = {
+          license = lib.licenses.epl20;
+          broken = lib.versionOlder jdk.version "11";
+        };
+      };
+
+      redhat.vscode-yaml = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "vscode-yaml";
+          publisher = "redhat";
+          version = "0.13.0";
+          sha256 = "046kdk73a5xbrwq16ff0l64271c6q6ygjvxaph58z29gyiszfkig";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      rubymaniac.vscode-paste-and-indent = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "vscode-paste-and-indent";
+          publisher = "Rubymaniac";
+          version = "0.0.8";
+          sha256 = "0fqwcvwq37ndms6vky8jjv0zliy6fpfkh8d9raq8hkinfxq6klgl";
+        };
+        meta = with lib; {
+          license = licenses.mit;
+        };
+      };
+
+      matklad.rust-analyzer = callPackage ./rust-analyzer { };
+
+      ocamllabs.ocaml-platform = buildVscodeMarketplaceExtension {
+        meta = with lib; {
+          changelog = "https://marketplace.visualstudio.com/items/ocamllabs.ocaml-platform/changelog";
+          description = "Official OCaml Support from OCamlLabs";
+          downloadPage = "https://marketplace.visualstudio.com/items?itemName=ocamllabs.ocaml-platform";
+          homepage = "https://github.com/ocamllabs/vscode-ocaml-platform";
+          license = licenses.isc;
+          maintainers = with maintainers; [ superherointj ];
+        };
+        mktplcRef = {
+          name = "ocaml-platform";
+          publisher = "ocamllabs";
+          version = "1.5.1";
+          sha256 = "0jkxpcrbr8xmwfl8jphmarjz2jk54hvmc24ww89d4bgx1awayqfh";
+        };
+      };
+
+      pkief.material-icon-theme = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "material-icon-theme";
+          publisher = "pkief";
+          version = "4.4.0";
+          sha256 = "1m9mis59j9xnf1zvh67p5rhayaa9qxjiw9iw847nyl9vsy73w8ya";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      rubbersheep.gi = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "gi";
+          publisher = "rubbersheep";
+          version = "0.2.11";
+          sha256 = "0j9k6wm959sziky7fh55awspzidxrrxsdbpz1d79s5lr5r19rs6j";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      ryu1kn.partial-diff = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "partial-diff";
+          publisher = "ryu1kn";
+          version = "1.4.1";
+          sha256 = "1r4kg4slgxncdppr4fn7i5vfhvzcg26ljia2r97n6wvwn8534vs9";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      scala-lang.scala = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "scala";
+          publisher = "scala-lang";
+          version = "0.5.3";
+          sha256 = "0isw8jh845hj2fw7my1i19b710v3m5qsjy2faydb529ssdqv463p";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      scalameta.metals = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "metals";
+          publisher = "scalameta";
+          version = "1.10.4";
+          sha256 = "0q6zjpdi98png4vpzz39q85nxmsh3h1nnan58saz5rr83d6jgj89";
+        };
+        meta = {
+          license = lib.licenses.asl20;
+        };
+      };
+
+      serayuzgur.crates = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "crates";
+          publisher = "serayuzgur";
+          version = "0.5.9";
+          sha256 = "0l26pyvw7n3bszf97yx6qps72acq112akg3q4jq5mvlibng1nwk0";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      shardulm94.trailing-spaces = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          publisher = "shardulm94";
+          name = "trailing-spaces";
+          version = "0.3.1";
+          sha256 = "0h30zmg5rq7cv7kjdr5yzqkkc1bs20d72yz9rjqag32gwf46s8b8";
+        };
+        meta = {
+          license = lib.licenses.mit;
+          maintainers = with lib.maintainers; [ kamadorueda ];
+        };
+      };
+
+      shyykoserhiy.vscode-spotify = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "vscode-spotify";
+          publisher = "shyykoserhiy";
+          version = "3.2.1";
+          sha256 = "14d68rcnjx4a20r0ps9g2aycv5myyhks5lpfz0syr2rxr4kd1vh6";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      skyapps.fish-vscode = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "fish-vscode";
+          publisher = "skyapps";
+          version = "0.2.1";
+          sha256 = "0y1ivymn81ranmir25zk83kdjpjwcqpnc9r3jwfykjd9x0jib2hl";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      slevesque.vscode-multiclip = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "vscode-multiclip";
+          publisher = "slevesque";
+          version = "0.1.5";
+          sha256 = "1cg8dqj7f10fj9i0g6mi3jbyk61rs6rvg9aq28575rr52yfjc9f9";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      spywhere.guides = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "guides";
+          publisher = "spywhere";
+          version = "0.9.3";
+          sha256 = "1kvsj085w1xax6fg0kvsj1cizqh86i0pkzpwi0sbfvmcq21i6ghn";
+        };
+        meta = with lib; {
+          license = licenses.mit;
+        };
+      };
+
+      stephlin.vscode-tmux-keybinding = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "vscode-tmux-keybinding";
+          publisher = "stephlin";
+          version = "0.0.6";
+          sha256 = "0mph2nval1ddmv9hpl51fdvmagzkqsn8ljwqsfha2130bb7la0d9";
+        };
+        meta = with lib; {
+          changelog = "https://marketplace.visualstudio.com/items/stephlin.vscode-tmux-keybinding/changelog";
+          description = "A simple extension for tmux behavior in vscode terminal.";
+          downloadPage = "https://marketplace.visualstudio.com/items?itemName=stephlin.vscode-tmux-keybinding";
+          homepage = "https://github.com/StephLin/vscode-tmux-keybinding";
+          license = licenses.mit;
+          maintainers = with maintainers; [ dbirks ];
+        };
+      };
+
+      streetsidesoftware.code-spell-checker = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "code-spell-checker";
+          publisher = "streetsidesoftware";
+          version = "1.10.2";
+          sha256 = "1ll046rf5dyc7294nbxqk5ya56g2bzqnmxyciqpz2w5x7j75rjib";
+        };
+        meta = with lib; {
+          license = licenses.mit;
+        };
+      };
+
+      svelte.svelte-vscode = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "svelte-vscode";
+          publisher = "svelte";
+          version = "105.3.0";
+          sha256 = "11plqsj3c4dv0xg2d76pxrcn382qr9wbh1lhln2x8mzv840icvwr";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      svsool.markdown-memo = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "markdown-memo";
+          publisher = "svsool";
+          version = "0.3.9";
+          sha256 = "sha256-BsKFHR3wkSRHS8QOi63vLwGj3T2CPzvqXhgtEOq6gJM=";
+        };
+        meta = with lib; {
+          changelog = "https://marketplace.visualstudio.com/items/svsool.markdown-memo/changelog";
+          description = "Markdown knowledge base with bidirectional [[link]]s built on top of VSCode";
+          downloadPage = "https://marketplace.visualstudio.com/items?itemName=svsool.markdown-memo";
+          homepage = "https://github.com/svsool/vscode-memo";
+          license = licenses.mit;
+          maintainers = with maintainers; [ ratsclub ];
+        };
+      };
+
+      tamasfe.even-better-toml = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "even-better-toml";
+          publisher = "tamasfe";
+          version = "0.9.3";
+          sha256 = "16x2y58hkankazpwm93j8lqdn3mala7iayck548kki9zx4qrhhck";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      tiehuis.zig = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "zig";
+          publisher = "tiehuis";
+          version = "0.2.5";
+          sha256 = "sha256-P8Sep0OtdchTfnudxFNvIK+SW++TyibGVI9zd+B5tu4=";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+
+      timonwong.shellcheck = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "shellcheck";
+          publisher = "timonwong";
+          version = "0.14.4";
+          sha256 = "05z314sw9nqym3qlj7dcwm0fz1hb23xppzqn3nr2wcj17hs8zz4m";
+        };
+        nativeBuildInputs = [ jq moreutils ];
+        postInstall = ''
+          cd "$out/$installPrefix"
+          jq '.contributes.configuration.properties."shellcheck.executablePath".default = "${shellcheck}/bin/shellcheck"' package.json | sponge package.json
+        '';
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      tomoki1207.pdf = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "pdf";
+          publisher = "tomoki1207";
+          version = "1.1.0";
+          sha256 = "0pcs4iy77v4f04f8m9w2rpdzfq7sqbspr7f2sm1fv7bm515qgsvb";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      tyriar.sort-lines = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "sort-lines";
+          publisher = "Tyriar";
+          version = "1.9.0";
+          sha256 = "0l4wibsjnlbzbrl1wcj18vnm1q4ygvxmh347jvzziv8f1l790qjl";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      usernamehw.errorlens = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "errorlens";
+          publisher = "usernamehw";
+          version = "3.2.4";
+          sha256 = "0caxmf6v0s5kgp6cp3j1kk7slhspjv5kzhn4sq3miyl5jkrn95kx";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      vadimcn.vscode-lldb = callPackage ./vscode-lldb { };
+
+      vincaslt.highlight-matching-tag = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "highlight-matching-tag";
+          publisher = "vincaslt";
+          version = "0.10.0";
+          sha256 = "1albwz3lc9i20if77inm1ipwws8apigvx24rbag3d1h3p4vwda49";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      ms-vsliveshare.vsliveshare = callPackage ./ms-vsliveshare-vsliveshare { };
+
+      vscodevim.vim = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "vim";
+          publisher = "vscodevim";
+          version = "1.21.5";
+          sha256 = "1v1xs1wcigisr6xip31i02cfryxrb157sla34y59pwlnhc5x1gny";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      vspacecode.vspacecode = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "vspacecode";
+          publisher = "VSpaceCode";
+          version = "0.10.1";
+          sha256 = "sha256-H7SCC/ZhDswMQjLX+qpQa6A1N83MobJRPC4pyIbZ1kA=";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      vspacecode.whichkey = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "whichkey";
+          publisher = "VSpaceCode";
+          version = "0.9.2";
+          sha256 = "sha256-f+t2d8iWW88OYzuYFxzQPnmFMgx/DELBywYhA8A/0EU=";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      wix.vscode-import-cost = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "vscode-import-cost";
+          publisher = "wix";
+          version = "2.15.0";
+          sha256 = "0d3b6654cdck1syn74vmmd1jmgkrw5v4c4cyrhdxbhggkip732bc";
+        };
+        meta = with lib; {
+          license = licenses.mit;
+        };
+      };
+
+      xaver.clang-format = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "clang-format";
+          publisher = "xaver";
+          version = "1.9.0";
+          sha256 = "abd0ef9176eff864f278c548c944032b8f4d8ec97d9ac6e7383d60c92e258c2f";
+        };
+        meta = with lib; {
+          license = licenses.mit;
+          maintainers = [ maintainers.zeratax ];
+        };
+      };
+
+      xyz.local-history = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "local-history";
+          publisher = "xyz";
+          version = "1.8.1";
+          sha256 = "1mfmnbdv76nvwg4xs3rgsqbxk8hw9zr1b61har9c3pbk9r4cay7v";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      yzhang.markdown-all-in-one = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "markdown-all-in-one";
+          publisher = "yzhang";
+          version = "3.4.0";
+          sha256 = "0ihfrsg2sc8d441a2lkc453zbw1jcpadmmkbkaf42x9b9cipd5qb";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      zhuangtongfa.material-theme = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "material-theme";
+          publisher = "zhuangtongfa";
+          version = "3.9.12";
+          sha256 = "017h9hxplf2rhmlhn3vag0wypcx6gxi7p9fgllj5jzwrl2wsjl0g";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
+
+      llvm-org.lldb-vscode = llvmPackages_8.lldb;
+
+      WakaTime.vscode-wakatime = callPackage ./wakatime { };
+
+      wholroyd.jinja = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "jinja";
+          publisher = "wholroyd";
+          version = "0.0.8";
+          sha256 = "1ln9gly5bb7nvbziilnay4q448h9npdh7sd9xy277122h0qawkci";
+        };
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
     };
+
+  aliases = self: super: {
+    # aliases
+    ms-vscode = lib.recursiveUpdate super.ms-vscode { inherit (super.golang) Go; };
   };
 
-  llvm-org.lldb-vscode = llvmPackages_8.lldb;
+  # TODO: add overrides overlay, so that we can have a generated.nix
+  # then apply extension specific modifcations to packages.
 
-  WakaTime.vscode-wakatime = callPackage ./wakatime {};
-}
+  # overlays will be applied left to right, overrides should come after aliases.
+  overlays = lib.optionals (config.allowAliases or true) [ aliases ];
+
+  toFix = lib.foldl' (lib.flip lib.extends) baseExtensions overlays;
+in
+lib.fix toFix
diff --git a/pkgs/misc/vscode-extensions/ms-dotnettools-csharp/default.nix b/pkgs/misc/vscode-extensions/ms-dotnettools-csharp/default.nix
new file mode 100644
index 00000000000..6f4bbfb7e92
--- /dev/null
+++ b/pkgs/misc/vscode-extensions/ms-dotnettools-csharp/default.nix
@@ -0,0 +1,142 @@
+{ lib
+, fetchurl
+, vscode-utils
+, unzip
+, patchelf
+, makeWrapper
+, icu
+, stdenv
+, openssl
+, mono
+}:
+
+let
+  # Get as close as possible as the `package.json` required version.
+  # This is what drives omnisharp.
+  rtDepsSrcsFromJson = builtins.fromJSON (builtins.readFile ./rt-deps-bin-srcs.json);
+
+  rtDepsBinSrcs = builtins.mapAttrs (k: v:
+      let
+        # E.g: "OmniSharp-x86_64-linux"
+        kSplit = builtins.split "(-)" k;
+        name = builtins.elemAt kSplit 0;
+        arch = builtins.elemAt kSplit 2;
+        platform = builtins.elemAt kSplit 4;
+      in
+      {
+        inherit name arch platform;
+        installPath = v.installPath;
+        binaries = v.binaries;
+        bin-src = fetchurl {
+          urls = v.urls;
+          inherit (v) sha256;
+        };
+      }
+    )
+    rtDepsSrcsFromJson;
+
+  arch = "x86_64";
+  platform = "linux";
+
+  rtDepBinSrcByName = bSrcName:
+    rtDepsBinSrcs."${bSrcName}-${arch}-${platform}";
+
+  omnisharp = rtDepBinSrcByName "OmniSharp";
+  vsdbg = rtDepBinSrcByName "Debugger";
+  razor = rtDepBinSrcByName "Razor";
+in
+
+vscode-utils.buildVscodeMarketplaceExtension {
+  mktplcRef = {
+    name = "csharp";
+    publisher = "ms-dotnettools";
+    version = "1.23.2";
+    sha256 = "0ydaiy8jfd1bj50bqiaz5wbl7r6qwmbz9b29bydimq0rdjgapaar";
+  };
+
+  nativeBuildInputs = [
+    unzip
+    patchelf
+    makeWrapper
+  ];
+
+  postPatch = ''
+    declare ext_unique_id
+    # See below as to why we cannot take the whole basename.
+    ext_unique_id="$(basename "$out" | head -c 32)"
+
+    # Fix 'Unable to connect to debuggerEventsPipeName .. exceeds the maximum length 107.' when
+    # attempting to launch a specific test in debug mode. The extension attemps to open
+    # a pipe in extension dir which would fail anyway. We change to target file path
+    # to a path in tmp dir with a short name based on the unique part of the nix store path.
+    # This is however a brittle patch as we're working on minified code.
+    # Hence the attempt to only hold on stable names.
+    # However, this really would better be fixed upstream.
+    sed -i \
+      -E -e 's/(this\._pipePath=[a-zA-Z0-9_]+\.join\()([a-zA-Z0-9_]+\.getExtensionPath\(\)[^,]*,)/\1require("os").tmpdir(), "'"$ext_unique_id"'"\+/g' \
+      "$PWD/dist/extension.js"
+
+    unzip_to() {
+      declare src_zip="''${1?}"
+      declare target_dir="''${2?}"
+      mkdir -p "$target_dir"
+      if unzip "$src_zip" -d "$target_dir"; then
+        true
+      elif [[ "1" -eq "$?" ]]; then
+        1>&2 echo "WARNING: unzip('$?' -> skipped files)."
+      else
+        1>&2 echo "ERROR: unzip('$?')."
+      fi
+    }
+
+    patchelf_add_icu_as_needed() {
+      declare elf="''${1?}"
+      declare icu_major_v="${
+        with builtins; head (splitVersion (parseDrvName icu.name).version)}"
+
+      for icu_lib in icui18n icuuc icudata; do
+        patchelf --add-needed "lib''${icu_lib}.so.$icu_major_v" "$elf"
+      done
+    }
+
+    patchelf_common() {
+      declare elf="''${1?}"
+
+      patchelf_add_icu_as_needed "$elf"
+      patchelf --add-needed "libssl.so" "$elf"
+      patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+        --set-rpath "${lib.makeLibraryPath [ stdenv.cc.cc openssl.out icu.out ]}:\$ORIGIN" \
+        "$elf"
+    }
+
+    declare omnisharp_dir="$PWD/${omnisharp.installPath}"
+    unzip_to "${omnisharp.bin-src}" "$omnisharp_dir"
+    rm "$omnisharp_dir/bin/mono"
+    ln -s -T "${mono}/bin/mono" "$omnisharp_dir/bin/mono"
+    chmod a+x "$omnisharp_dir/run"
+    touch "$omnisharp_dir/install.Lock"
+
+    declare vsdbg_dir="$PWD/${vsdbg.installPath}"
+    unzip_to "${vsdbg.bin-src}" "$vsdbg_dir"
+    chmod a+x "$vsdbg_dir/vsdbg-ui"
+    chmod a+x "$vsdbg_dir/vsdbg"
+    touch "$vsdbg_dir/install.complete"
+    touch "$vsdbg_dir/install.Lock"
+    patchelf_common "$vsdbg_dir/vsdbg"
+    patchelf_common "$vsdbg_dir/vsdbg-ui"
+
+    declare razor_dir="$PWD/${razor.installPath}"
+    unzip_to "${razor.bin-src}" "$razor_dir"
+    chmod a+x "$razor_dir/rzls"
+    touch "$razor_dir/install.Lock"
+    patchelf_common "$razor_dir/rzls"
+  '';
+
+  meta = with lib; {
+    description = "C# for Visual Studio Code (powered by OmniSharp)";
+    homepage = "https://github.com/OmniSharp/omnisharp-vscode";
+    license = licenses.mit;
+    maintainers = [ maintainers.jraygauthier ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/pkgs/misc/vscode-extensions/ms-dotnettools-csharp/rt-deps-bin-srcs.json b/pkgs/misc/vscode-extensions/ms-dotnettools-csharp/rt-deps-bin-srcs.json
new file mode 100644
index 00000000000..91ee056efc1
--- /dev/null
+++ b/pkgs/misc/vscode-extensions/ms-dotnettools-csharp/rt-deps-bin-srcs.json
@@ -0,0 +1,37 @@
+{
+  "OmniSharp-x86_64-linux": {
+    "installPath": ".omnisharp/1.37.1",
+    "binaries": [
+      "./mono.linux-x86_64",
+      "./run"
+    ],
+    "urls": [
+      "https://download.visualstudio.microsoft.com/download/pr/46933d64-075c-4f9f-b205-da4a839e2e3c/4bba2c3f40106056b53721c164ff86fa/omnisharp-linux-x64-1.37.1.zip",
+      "https://roslynomnisharp.blob.core.windows.net/releases/1.37.1/omnisharp-linux-x64-1.37.1.zip"
+    ],
+    "sha256": "0yzxkbq0fyq2bv0s7qmycxl0w54lla0vykg1a5lpv9j38k062vvz"
+  },
+  "Debugger-x86_64-linux": {
+    "installPath": ".debugger",
+    "binaries": [
+      "./vsdbg-ui",
+      "./vsdbg"
+    ],
+    "urls": [
+      "https://download.visualstudio.microsoft.com/download/pr/292d2e01-fb93-455f-a6b3-76cddad4f1ef/2e9b8bc5431d8f6c56025e76eaabbdff/coreclr-debug-linux-x64.zip",
+      "https://vsdebugger.blob.core.windows.net/coreclr-debug-1-22-2/coreclr-debug-linux-x64.zip"
+    ],
+    "sha256": "1lhyjq6g6lc1b4n4z57g0ssr5msqgsmrl8yli8j9ah5s3jq1lrda"
+  },
+  "Razor-x86_64-linux": {
+    "installPath": ".razor",
+    "binaries": [
+      "./rzls"
+    ],
+    "urls": [
+      "https://download.visualstudio.microsoft.com/download/pr/757f5246-2b09-43fe-9a8d-840cfd15092b/2b6d8eee0470acf725c1c7a09f8b6475/razorlanguageserver-linux-x64-6.0.0-alpha.1.20418.9.zip",
+      "https://razorvscodetest.blob.core.windows.net/languageserver/RazorLanguageServer-linux-x64-6.0.0-alpha.1.20418.9.zip"
+    ],
+    "sha256": "1hksxq867anb9h040497phszq64f6krg4a46w0xqrm6crj8znqr5"
+  }
+}
diff --git a/pkgs/misc/vscode-extensions/ms-dotnettools-csharp/update-bin-srcs b/pkgs/misc/vscode-extensions/ms-dotnettools-csharp/update-bin-srcs
new file mode 100755
index 00000000000..ecd7efba05d
--- /dev/null
+++ b/pkgs/misc/vscode-extensions/ms-dotnettools-csharp/update-bin-srcs
@@ -0,0 +1,25 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -I nixpkgs=../../../.. -i bash -p curl jq unzip
+set -euf -o pipefail
+
+declare scriptDir
+scriptDir=$(cd "$(dirname "$0")"; pwd)
+1>&2 echo "scriptDir='$scriptDir'"
+
+. "$scriptDir/update-bin-srcs-lib.sh"
+
+declare extPublisher="ms-dotnettools"
+declare extName="csharp"
+declare defaultExtVersion="1.23.2"
+declare extVersion="${1:-$defaultExtVersion}"
+
+formatExtRuntimeDeps \
+  "$extPublisher" "$extName" "$extVersion" \
+  | computeAndAttachExtRtDepsChecksums \
+  | jqStreamToJson \
+  | tee "$scriptDir/rt-deps-bin-srcs.json" \
+  | jq '.'
+
+# TODO: Unfortunatly no simple json to nix implementation available.
+# This would allow us to dump to './rt-deps-bin-srcs.nix' instead.
+# jsonToNix
diff --git a/pkgs/misc/vscode-extensions/ms-dotnettools-csharp/update-bin-srcs-lib.sh b/pkgs/misc/vscode-extensions/ms-dotnettools-csharp/update-bin-srcs-lib.sh
new file mode 100755
index 00000000000..ad494a37908
--- /dev/null
+++ b/pkgs/misc/vscode-extensions/ms-dotnettools-csharp/update-bin-srcs-lib.sh
@@ -0,0 +1,154 @@
+#!/usr/bin/env bash
+
+prefetchExtensionZip() {
+  declare publisher="${1?}"
+  declare name="${2?}"
+  declare version="${3?}"
+
+  1>&2 echo
+  1>&2 echo "------------- Downloading extension ---------------"
+
+  declare extZipStoreName="${publisher}-${name}.zip"
+  declare extUrl="https://${publisher}.gallery.vsassets.io/_apis/public/gallery/publisher/${publisher}/extension/${name}/${version}/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage";
+  1>&2 echo "extUrl='$extUrl'"
+  declare nixPrefetchArgs=( --name "$extZipStoreName" --print-path "$extUrl" )
+
+  1>&2 printf "$ nix-prefetch-url"
+  1>&2 printf " %q" "${nixPrefetchArgs[@]}"
+  1>&2 printf " 2> /dev/null\n"
+  declare zipShaWStorePath
+  zipShaWStorePath=$(nix-prefetch-url "${nixPrefetchArgs[@]}" 2> /dev/null)
+
+  1>&2 echo "zipShaWStorePath='$zipShaWStorePath'"
+  echo "$zipShaWStorePath"
+}
+
+
+prefetchExtensionUnpacked() {
+  declare publisher="${1?}"
+  declare name="${2?}"
+  declare version="${3?}"
+
+  declare zipShaWStorePath
+  zipShaWStorePath="$(prefetchExtensionZip "$publisher" "$name" "$version")"
+
+  declare zipStorePath
+  zipStorePath="$(echo "$zipShaWStorePath" | tail -n1)"
+  1>&2 echo "zipStorePath='$zipStorePath'"
+
+  function rm_tmpdir() {
+    1>&2 printf "rm -rf -- %q\n" "$tmpDir"
+    rm -rf -- "$tmpDir"
+    unset tmpDir
+    trap - INT TERM HUP EXIT
+  }
+  function make_trapped_tmpdir() {
+    tmpDir=$(mktemp -d)
+    trap rm_tmpdir INT TERM HUP EXIT
+  }
+
+  1>&2 echo
+  1>&2 echo "------------- Unpacking extension ---------------"
+
+  make_trapped_tmpdir
+  declare unzipArgs=( -q -d "$tmpDir" "$zipStorePath" )
+  1>&2 printf "$ unzip"
+  1>&2 printf " %q" "${unzipArgs[@]}"
+  1>&2 printf "\n"
+  unzip "${unzipArgs[@]}"
+
+  declare unpackedStoreName="${publisher}-${name}"
+
+  declare unpackedStorePath
+  unpackedStorePath="$(nix add-to-store -n "$unpackedStoreName" "$tmpDir")"
+  declare unpackedSha256
+  unpackedSha256="$(nix hash-path --base32 --type sha256 "$unpackedStorePath")"
+  1>&2 echo "unpackedStorePath='$unpackedStorePath'"
+  1>&2 echo "unpackedSha256='$unpackedSha256'"
+
+  rm_tmpdir
+
+  echo "$unpackedSha256"
+  echo "$unpackedStorePath"
+}
+
+
+prefetchExtensionJson() {
+  declare publisher="${1?}"
+  declare name="${2?}"
+  declare version="${3?}"
+
+  declare unpackedShaWStorePath
+  unpackedShaWStorePath="$(prefetchExtensionUnpacked "$publisher" "$name" "$version")"
+
+  declare unpackedStorePath
+  unpackedStorePath="$(echo "$unpackedShaWStorePath" | tail -n1)"
+  1>&2 echo "unpackedStorePath='$unpackedStorePath'"
+
+  declare jsonShaWStorePath
+  jsonShaWStorePath=$(nix-prefetch-url --print-path "file://${unpackedStorePath}/extension/package.json" 2> /dev/null)
+
+  1>&2 echo "jsonShaWStorePath='$jsonShaWStorePath'"
+  echo "$jsonShaWStorePath"
+}
+
+
+formatExtRuntimeDeps() {
+  declare publisher="${1?}"
+  declare name="${2?}"
+  declare version="${3?}"
+
+  declare jsonShaWStorePath
+  jsonShaWStorePath="$(prefetchExtensionJson "$publisher" "$name" "$version")"
+
+  declare jsonStorePath
+  jsonStorePath="$(echo "$jsonShaWStorePath" | tail -n1)"
+  1>&2 echo "jsonStorePath='$jsonStorePath'"
+
+  declare jqQuery
+  jqQuery=$(cat <<'EOF'
+.runtimeDependencies \
+| map(select(.platforms[] | in({"linux": null}))) \
+| map(select(.architectures[] | in({"x86_64": null}))) \
+| .[] | {(.id + "-" + (.architectures[0]) + "-" + (.platforms[0])): \
+{installPath, binaries, urls: [.url, .fallbackUrl]}}
+EOF
+)
+
+  1>&2 printf "$ cat %q | jq '%s'\n" "$jsonStorePath" "$jqQuery"
+  cat "$jsonStorePath" | jq "$jqQuery"
+}
+
+
+computeExtRtDepChecksum() {
+  declare rtDepJsonObject="${1?}"
+  declare url
+  url="$(echo "$rtDepJsonObject" | jq -j '.[].urls[0]')"
+  declare sha256
+  1>&2 printf "$ nix-prefetch-url '%s'\n" "$url"
+  sha256="$(nix-prefetch-url "$url")"
+  1>&2 echo "$sha256"
+  echo "$sha256"
+}
+
+
+computeAndAttachExtRtDepsChecksums() {
+  while read -r rtDepJsonObject; do
+    declare sha256
+    sha256="$(computeExtRtDepChecksum "$rtDepJsonObject")"
+    echo "$rtDepJsonObject" | jq --arg sha256 "$sha256" '.[].sha256 = $sha256'
+  done < <(cat - | jq  -c '.')
+}
+
+
+jqStreamToJson() {
+  cat - | jq --slurp '. | add'
+}
+
+
+jsonToNix() {
+  # TODO: Replacing this non functional stuff with a proper json to nix
+  # implementation would allow us to produce a 'rt-deps-bin-srcs.nix' file instead.
+  false
+  cat - | sed -E -e 's/": /" = /g' -e 's/,$/;/g' -e 's/  }$/  };/g'  -e 's/  ]$/  ];/g'
+}
diff --git a/pkgs/misc/vscode-extensions/ms-vsliveshare-vsliveshare/default.nix b/pkgs/misc/vscode-extensions/ms-vsliveshare-vsliveshare/default.nix
new file mode 100644
index 00000000000..0fa9a4bb4be
--- /dev/null
+++ b/pkgs/misc/vscode-extensions/ms-vsliveshare-vsliveshare/default.nix
@@ -0,0 +1,134 @@
+# Based on previous attempts:
+#  -  <https://github.com/msteen/nixos-vsliveshare/blob/master/pkgs/vsliveshare/default.nix>
+#  -  <https://github.com/NixOS/nixpkgs/issues/41189>
+{ lib, gccStdenv, vscode-utils
+, jq, autoPatchelfHook, bash, makeWrapper
+, dotnet-sdk_3, curl, gcc, icu, libkrb5, libsecret, libunwind, libX11, lttng-ust, openssl, util-linux, zlib
+, desktop-file-utils, xprop, xsel
+}:
+
+with lib;
+
+let
+  # https://docs.microsoft.com/en-us/visualstudio/liveshare/reference/linux#install-prerequisites-manually
+  libs = [
+    # .NET Core
+    openssl
+    libkrb5
+    zlib
+    icu
+
+    # Credential Storage
+    libsecret
+
+    # NodeJS
+    libX11
+
+    # https://github.com/flathub/com.visualstudio.code.oss/issues/11#issuecomment-392709170
+    libunwind
+    lttng-ust
+    curl
+
+    # General
+    gcc.cc.lib
+    util-linux # libuuid
+  ];
+
+in ((vscode-utils.override { stdenv = gccStdenv; }).buildVscodeMarketplaceExtension {
+  mktplcRef = {
+    name = "vsliveshare";
+    publisher = "ms-vsliveshare";
+    version = "1.0.4498";
+    sha256 = "01gg9jqkq9z05ckw0mnqfr769359j6h3z8ay6r17jj6m4mhy2m5g";
+  };
+}).overrideAttrs({ nativeBuildInputs ? [], buildInputs ? [], ... }: {
+  nativeBuildInputs = nativeBuildInputs ++ [
+    bash
+    jq
+    autoPatchelfHook
+    makeWrapper
+  ];
+  buildInputs = buildInputs ++ libs;
+
+  # Using a patch file won't work, because the file changes too often, causing the patch to fail on most updates.
+  # Rather than patching the calls to functions, we modify the functions to return what we want,
+  # which is less likely to break in the future.
+  postPatch = ''
+    sed -i \
+      -e 's/updateExecutablePermissionsAsync() {/& return;/' \
+      -e 's/isInstallCorrupt(traceSource, manifest) {/& return false;/' \
+      out/prod/extension-prod.js
+
+    declare ext_unique_id
+    ext_unique_id="$(basename "$out")"
+
+    # Fix extension attempting to write to 'modifiedInternalSettings.json'.
+    # Move this write to the tmp directory indexed by the nix store basename.
+    substituteInPlace out/prod/extension-prod.js \
+      --replace "path.resolve(constants_1.EXTENSION_ROOT_PATH, './modifiedInternalSettings.json')" \
+                "path.join(os.tmpdir(), '$ext_unique_id-modifiedInternalSettings.json')"
+
+    # Fix extension attempting to write to 'vsls-agent.lock'.
+    # Move this write to the tmp directory indexed by the nix store basename.
+    substituteInPlace out/prod/extension-prod.js \
+      --replace "path + '.lock'" \
+                "__webpack_require__('path').join(__webpack_require__('os').tmpdir(), '$ext_unique_id-vsls-agent.lock')"
+
+    # Hardcode executable paths
+    echo '#!/bin/sh' >node_modules/@vsliveshare/vscode-launcher-linux/check-reqs.sh
+    substituteInPlace node_modules/@vsliveshare/vscode-launcher-linux/install.sh \
+      --replace desktop-file-install ${desktop-file-utils}/bin/desktop-file-install
+    substituteInPlace node_modules/@vsliveshare/vscode-launcher-linux/uninstall.sh \
+      --replace update-desktop-database ${desktop-file-utils}/bin/update-desktop-database
+    substituteInPlace node_modules/@vsliveshare/vscode-launcher-linux/vsls-launcher \
+      --replace /bin/bash ${bash}/bin/bash
+    substituteInPlace out/prod/extension-prod.js \
+      --replace xprop ${xprop}/bin/xprop \
+      --replace "'xsel'" "'${xsel}/bin/xsel'"
+  '';
+
+  postInstall = ''
+    cd $out/share/vscode/extensions/ms-vsliveshare.vsliveshare
+
+    bash -s <<ENDSUBSHELL
+    shopt -s extglob
+
+    # A workaround to prevent the journal filling up due to diagnostic logging.
+    # See: https://github.com/MicrosoftDocs/live-share/issues/1272
+    # See: https://unix.stackexchange.com/questions/481799/how-to-prevent-a-process-from-writing-to-the-systemd-journal
+    gcc -fPIC -shared -ldl -o dotnet_modules/noop-syslog.so ${./noop-syslog.c}
+
+    # Normally the copying of the right executables is done externally at a later time,
+    # but we want it done at installation time.
+    cp dotnet_modules/exes/linux-x64/* dotnet_modules
+
+    # The required executables are already copied over,
+    # and the other runtimes won't be used and thus are just a waste of space.
+    rm -r dotnet_modules/exes dotnet_modules/runtimes/!(linux-x64|unix)
+
+    # Not all executables and libraries are executable, so make sure that they are.
+    jq <package.json '.executables.linux[]' -r | xargs chmod +x
+
+    # Lock the extension downloader.
+    touch install-linux.Lock externalDeps-linux.Lock
+    ENDSUBSHELL
+  '';
+
+  postFixup = ''
+    # We cannot use `wrapProgram`, because it will generate a relative path,
+    # which will break when copying over the files.
+    mv dotnet_modules/vsls-agent{,-wrapped}
+    makeWrapper $PWD/dotnet_modules/vsls-agent{-wrapped,} \
+      --prefix LD_LIBRARY_PATH : "${makeLibraryPath libs}" \
+      --set LD_PRELOAD $PWD/dotnet_modules/noop-syslog.so \
+      --set DOTNET_ROOT ${dotnet-sdk_3}
+  '';
+
+  meta = {
+    description = "Live Share lets you achieve greater confidence at speed by streamlining collaborative editing, debugging, and more in real-time during development";
+    homepage = "https://aka.ms/vsls-docs";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ jraygauthier V ];
+    platforms = [ "x86_64-linux" ];
+  };
+})
diff --git a/pkgs/misc/vscode-extensions/ms-vsliveshare-vsliveshare/noop-syslog.c b/pkgs/misc/vscode-extensions/ms-vsliveshare-vsliveshare/noop-syslog.c
new file mode 100644
index 00000000000..c76ec57a382
--- /dev/null
+++ b/pkgs/misc/vscode-extensions/ms-vsliveshare-vsliveshare/noop-syslog.c
@@ -0,0 +1 @@
+void syslog(int priority, const char *format, ...) { }
diff --git a/pkgs/misc/vscode-extensions/python/default.nix b/pkgs/misc/vscode-extensions/python/default.nix
index 7dea6794521..89950a51598 100644
--- a/pkgs/misc/vscode-extensions/python/default.nix
+++ b/pkgs/misc/vscode-extensions/python/default.nix
@@ -41,13 +41,13 @@ in vscode-utils.buildVscodeMarketplaceExtension rec {
   mktplcRef = {
     name = "python";
     publisher = "ms-python";
-    version = "2020.7.96456";
+    version = "2021.5.829140558";
   };
 
   vsix = fetchurl {
     name = "${mktplcRef.publisher}-${mktplcRef.name}.zip";
     url = "https://github.com/microsoft/vscode-python/releases/download/${mktplcRef.version}/ms-python-release.vsix";
-    sha256 = "0bk2wnbjcraxilzxszl00r799xf3apkfyzpy88xxv87j7787dsm8";
+    sha256 = "0y2HN4WGYUUXBfqp8Xb4oaA0hbLZmE3kDUXMBAOjvPQ=";
   };
 
   buildInputs = [
diff --git a/pkgs/misc/vscode-extensions/python/extract-nuget.nix b/pkgs/misc/vscode-extensions/python/extract-nuget.nix
index e4d3b6a0ed1..1e70cabe035 100644
--- a/pkgs/misc/vscode-extensions/python/extract-nuget.nix
+++ b/pkgs/misc/vscode-extensions/python/extract-nuget.nix
@@ -4,7 +4,7 @@
 stdenv.mkDerivation {
   inherit name version src;
 
-  buildInputs = [ unzip ];
+  nativeBuildInputs = [ unzip ];
   dontBuild = true;
   unpackPhase = "unzip $src";
   installPhase = ''
diff --git a/pkgs/misc/vscode-extensions/remote-ssh/default.nix b/pkgs/misc/vscode-extensions/remote-ssh/default.nix
index e58ea98a606..29ca973a0aa 100644
--- a/pkgs/misc/vscode-extensions/remote-ssh/default.nix
+++ b/pkgs/misc/vscode-extensions/remote-ssh/default.nix
@@ -1,8 +1,8 @@
-{ stdenv
+{ lib
 , vscode-utils
 , useLocalExtensions ? false}:
 # Note that useLocalExtensions requires that vscode-server is not running
-# on host. If it is, you'll need to remove ~/.vscode-server,
+# on host. If it is, you'll need to remove $HOME/.vscode-server,
 # and redo the install by running "Connect to host" on client
 
 let
@@ -11,7 +11,7 @@ let
   # patch runs on remote machine hence use of which
   # links to local node if version is 12
   patch = ''
-    f="/home/''$USER/.vscode-server/bin/''$COMMIT_ID/node"
+    f="$HOME/.vscode-server/bin/$COMMIT_ID/node"
     localNodePath=''$(which node)
     if [ -x "''$localNodePath" ]; then
       localNodeVersion=''$(node -v)
@@ -21,12 +21,12 @@ let
         ln -s ''$localNodePath ''$f
       fi
     fi
-    ${stdenv.lib.optionalString useLocalExtensions ''
+    ${lib.optionalString useLocalExtensions ''
       # Use local extensions
-      if [ -d ~/.vscode/extensions ]; then
-        if ! test -L "~/.vscode-server/extensions"; then
-          mkdir -p ~/.vscode-server
-          ln -s ~/.vscode/extensions ~/.vscode-server/
+      if [ -d $HOME/.vscode/extensions ]; then
+        if ! test -L "$HOME/.vscode-server/extensions"; then
+          mkdir -p $HOME/.vscode-server
+          ln -s $HOME/.vscode/extensions $HOME/.vscode-server/
         fi
       fi
     ''}
@@ -45,7 +45,7 @@ in
         --replace "# install extensions" '${patch}'
     '';
 
-    meta = with stdenv.lib; {
+    meta = with lib; {
       description ="Use any remote machine with a SSH server as your development environment.";
       license = licenses.unfree;
       maintainers = with maintainers; [
diff --git a/pkgs/misc/vscode-extensions/rust-analyzer/build-deps/package.json b/pkgs/misc/vscode-extensions/rust-analyzer/build-deps/package.json
index ac2da521c22..d54ad42b1f6 100644
--- a/pkgs/misc/vscode-extensions/rust-analyzer/build-deps/package.json
+++ b/pkgs/misc/vscode-extensions/rust-analyzer/build-deps/package.json
@@ -2,25 +2,26 @@
   "name": "rust-analyzer",
   "version": "0.4.0-dev",
   "dependencies": {
-    "node-fetch": "^2.6.0",
-    "vscode-languageclient": "7.0.0-next.1",
-    "@rollup/plugin-commonjs": "^13.0.0",
-    "@rollup/plugin-node-resolve": "^8.1.0",
-    "@types/glob": "^7.1.2",
-    "@types/mocha": "^7.0.2",
-    "@types/node": "~12.7.0",
+    "https-proxy-agent": "^5.0.0",
+    "node-fetch": "^2.6.1",
+    "vscode-languageclient": "^7.1.0-next.5",
+    "@rollup/plugin-commonjs": "^17.0.0",
+    "@rollup/plugin-node-resolve": "^11.0.0",
+    "@types/glob": "^7.1.3",
+    "@types/mocha": "^8.0.4",
+    "@types/node": "~12.12.6",
     "@types/node-fetch": "^2.5.7",
-    "@types/vscode": "^1.44.1",
-    "@typescript-eslint/eslint-plugin": "^3.4.0",
-    "@typescript-eslint/parser": "^3.4.0",
-    "eslint": "^7.3.1",
+    "@types/vscode": "^1.53.0",
+    "@typescript-eslint/eslint-plugin": "^4.9.0",
+    "@typescript-eslint/parser": "^4.9.0",
+    "eslint": "^7.15.0",
     "glob": "^7.1.6",
-    "mocha": "^8.0.1",
-    "rollup": "^2.18.1",
-    "tslib": "^2.0.0",
-    "typescript": "^3.9.5",
+    "mocha": "^8.2.1",
+    "rollup": "^2.34.2",
+    "tslib": "^2.0.3",
+    "typescript": "^4.1.2",
     "typescript-formatter": "^7.2.2",
-    "vsce": "^1.75.0",
-    "vscode-test": "^1.4.0"
+    "vsce": "=1.88.0",
+    "vscode-test": "^1.5.1"
   }
 }
diff --git a/pkgs/misc/vscode-extensions/rust-analyzer/default.nix b/pkgs/misc/vscode-extensions/rust-analyzer/default.nix
index d19027fa576..0136bf4e5b1 100644
--- a/pkgs/misc/vscode-extensions/rust-analyzer/default.nix
+++ b/pkgs/misc/vscode-extensions/rust-analyzer/default.nix
@@ -1,5 +1,5 @@
 # Update script: pkgs/development/tools/rust/rust-analyzer/update.sh
-{ lib, stdenv, vscode-utils, jq, rust-analyzer, nodePackages
+{ lib, vscode-utils, jq, rust-analyzer, nodePackages
 , setDefaultServerPath ? true
 }:
 
diff --git a/pkgs/misc/vscode-extensions/terraform/default.nix b/pkgs/misc/vscode-extensions/terraform/default.nix
new file mode 100644
index 00000000000..e934f03b209
--- /dev/null
+++ b/pkgs/misc/vscode-extensions/terraform/default.nix
@@ -0,0 +1,25 @@
+{ lib, fetchurl, vscode-utils, terraform-ls }:
+vscode-utils.buildVscodeMarketplaceExtension rec {
+  mktplcRef = {
+    name = "terraform";
+    publisher = "hashicorp";
+    version = "2.13.2";
+  };
+
+  vsix = fetchurl {
+    name = "${mktplcRef.publisher}-${mktplcRef.name}.zip";
+    url = "https://github.com/hashicorp/vscode-terraform/releases/download/v${mktplcRef.version}/${mktplcRef.name}-${mktplcRef.version}.vsix";
+    sha256 = "0h7c6p2dcwsg7wlp49p2fsq0f164pzkx65929imd1m2df77aykqa";
+  };
+
+  patches = [ ./fix-terraform-ls.patch ];
+
+  postPatch = ''
+    substituteInPlace out/clientHandler.js --replace TERRAFORM-LS-PATH ${terraform-ls}/bin/terraform-ls
+  '';
+
+  meta = with lib; {
+    license = licenses.mit;
+    maintainers = with maintainers; [ rhoriguchi ];
+  };
+}
diff --git a/pkgs/misc/vscode-extensions/terraform/fix-terraform-ls.patch b/pkgs/misc/vscode-extensions/terraform/fix-terraform-ls.patch
new file mode 100644
index 00000000000..9153276d367
--- /dev/null
+++ b/pkgs/misc/vscode-extensions/terraform/fix-terraform-ls.patch
@@ -0,0 +1,43 @@
+diff --git a/out/clientHandler.js b/out/clientHandler.js
+index 7f9716d..a543d60 100644
+--- a/out/clientHandler.js
++++ b/out/clientHandler.js
+@@ -33,8 +33,7 @@ class ClientHandler {
+             this.reporter.sendTelemetryEvent('usePathToBinary');
+         }
+         else {
+-            const installPath = path.join(context.extensionPath, 'lsp');
+-            this.pathToBinary = path.join(installPath, 'terraform-ls');
++            this.pathToBinary = 'TERRAFORM-LS-PATH';
+         }
+     }
+     startClients(folders) {
+diff --git a/out/extension.js b/out/extension.js
+index 7a271fc..726bbf8 100644
+--- a/out/extension.js
++++ b/out/extension.js
+@@ -149,24 +149,6 @@ function updateLanguageServer(clientHandler, installPath) {
+             updateLanguageServer(clientHandler, installPath);
+         }, 24 * hour);
+         // skip install if a language server binary path is set
+-        if (!vscodeUtils_1.config('terraform').get('languageServer.pathToBinary')) {
+-            const installer = new languageServerInstaller_1.LanguageServerInstaller(installPath, reporter);
+-            const install = yield installer.needsInstall();
+-            if (install) {
+-                yield clientHandler.stopClients();
+-                try {
+-                    yield installer.install();
+-                }
+-                catch (err) {
+-                    console.log(err); // for test failure reporting
+-                    reporter.sendTelemetryException(err);
+-                    throw err;
+-                }
+-                finally {
+-                    yield installer.cleanupZips();
+-                }
+-            }
+-        }
+         return clientHandler.startClients(vscodeUtils_1.prunedFolderNames()); // on repeat runs with no install, this will be a no-op
+     });
+ }
diff --git a/pkgs/misc/vscode-extensions/updateSettings.nix b/pkgs/misc/vscode-extensions/updateSettings.nix
index a033229c589..c7fecf08072 100644
--- a/pkgs/misc/vscode-extensions/updateSettings.nix
+++ b/pkgs/misc/vscode-extensions/updateSettings.nix
@@ -16,7 +16,7 @@ let
 
   updateVSCodeSettingsCmd = ''
   (
-    echo 'updateSettings.nix: Updating ${vscodeSettingsFile}...' 
+    echo 'updateSettings.nix: Updating ${vscodeSettingsFile}...'
     oldSettings=$(cat ${vscodeSettingsFile})
     echo $oldSettings' ${builtins.toJSON settings}' | ${jq}/bin/jq -s add > ${vscodeSettingsFile}
   )'';
@@ -25,10 +25,10 @@ let
   fileName = builtins.baseNameOf vscodeSettingsFile;
   symlinkFromUserSettingCmd = lib.optionalString symlinkFromUserSetting
     '' && mkdir -p "${userSettingsFolder}" && ln -sfv "$(pwd)/${vscodeSettingsFile}" "${userSettingsFolder}/" '';
-in 
+in
 
   writeShellScriptBin ''vscodeNixUpdate-${lib.removeSuffix ".json" (fileName)}''
-  (lib.optionalString (settings != {}) 
+  (lib.optionalString (settings != {})
     (if createIfDoesNotExists then ''
       [ ! -f "${vscodeSettingsFile}" ] && ${createEmptySettingsCmd}
       ${updateVSCodeSettingsCmd} ${symlinkFromUserSettingCmd}
diff --git a/pkgs/misc/vscode-extensions/update_installed_exts.sh b/pkgs/misc/vscode-extensions/update_installed_exts.sh
index fdbc14fb264..8e0af182cec 100755
--- a/pkgs/misc/vscode-extensions/update_installed_exts.sh
+++ b/pkgs/misc/vscode-extensions/update_installed_exts.sh
@@ -8,7 +8,7 @@ function fail() {
     exit 1
 }
 
-# Helper to clean up after ourself if we're killed by SIGINT
+# Helper to clean up after ourselves if we're killed by SIGINT.
 function clean_up() {
     TDIR="${TMPDIR:-/tmp}"
     echo "Script killed, cleaning up tmpdirs: $TDIR/vscode_exts_*" >&2
@@ -18,7 +18,7 @@ function clean_up() {
 function get_vsixpkg() {
     N="$1.$2"
 
-    # Create a tempdir for the extension download
+    # Create a tempdir for the extension download.
     EXTTMP=$(mktemp -d -t vscode_exts_XXXXXXXX)
 
     URL="https://$1.gallery.vsassets.io/_apis/public/gallery/publisher/$1/extension/$2/latest/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage"
@@ -32,7 +32,7 @@ function get_vsixpkg() {
 
     # Clean up.
     rm -Rf "$EXTTMP"
-    # I don't like 'rm -Rf' lurking in my scripts but this seems appropriate
+    # I don't like 'rm -Rf' lurking in my scripts but this seems appropriate.
 
     cat <<-EOF
   {
@@ -44,11 +44,11 @@ function get_vsixpkg() {
 EOF
 }
 
-# See if can find our code binary somewhere.
+# See if we can find our `code` binary somewhere.
 if [ $# -ne 0 ]; then
     CODE=$1
 else
-    CODE=$(command -v code)
+    CODE=$(command -v code || command -v codium)
 fi
 
 if [ -z "$CODE" ]; then
diff --git a/pkgs/misc/vscode-extensions/vscode-lldb/build-deps/package.json b/pkgs/misc/vscode-extensions/vscode-lldb/build-deps/package.json
new file mode 100644
index 00000000000..86d7b1aa6fa
--- /dev/null
+++ b/pkgs/misc/vscode-extensions/vscode-lldb/build-deps/package.json
@@ -0,0 +1,23 @@
+{
+  "name": "vscode-lldb",
+  "version": "1.6.5",
+  "dependencies": {
+    "string-argv": "^0.3.1",
+    "yaml": "^1.10.0",
+    "yauzl": "^2.10.0",
+    "@types/vscode": "^1.31.0",
+    "@types/node": "^8.10.50",
+    "@types/mocha": "^7.0.1",
+    "@types/yauzl": "^2.9.0",
+    "typescript": "^4.2.4",
+    "mocha": "^8.4.0",
+    "source-map-support": "^0.5.12",
+    "memory-streams": "^0.1.3",
+    "vscode-debugprotocol": "^1.47.0",
+    "vscode-debugadapter-testsupport": "^1.47.0",
+    "vsce": "=1.88.0",
+    "webpack": "^5.37.1",
+    "webpack-cli": "^4.7.0",
+    "ts-loader": "^8.0.0"
+  }
+}
diff --git a/pkgs/misc/vscode-extensions/vscode-lldb/cmake-build-extension-only.patch b/pkgs/misc/vscode-extensions/vscode-lldb/cmake-build-extension-only.patch
new file mode 100644
index 00000000000..fb55816b942
--- /dev/null
+++ b/pkgs/misc/vscode-extensions/vscode-lldb/cmake-build-extension-only.patch
@@ -0,0 +1,36 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 37745b5..cad11a0 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -16,13 +16,6 @@ endif()
+ set(VERSION "${VERSION}${VERSION_SUFFIX}")
+ message("Version ${VERSION}")
+ 
+-set(LLDB_PACKAGE $ENV{LLDB_PACKAGE} CACHE PATH "Zip archive containing LLDB files")
+-if (LLDB_PACKAGE)
+-    message("Using LLDB_PACKAGE=${LLDB_PACKAGE}")
+-else()
+-    message(FATAL_ERROR "LLDB_PACKAGE not set." )
+-endif()
+-
+ set(TEST_TIMEOUT 5000 CACHE STRING "Test timeout [ms]")
+ 
+ # General OS-specific definitions
+@@ -87,16 +80,6 @@ configure_file(package.json ${CMAKE_CURRENT_BINARY_DIR}/package.json @ONLY)
+ configure_file(webpack.config.js ${CMAKE_CURRENT_BINARY_DIR}/webpack.config.js @ONLY)
+ file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/package-lock.json DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
+ 
+-# Run 'npm install'
+-execute_process(
+-    COMMAND ${NPM} ci # like install, but actually respects package-lock file.
+-    WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+-    RESULT_VARIABLE Result
+-)
+-if (NOT ${Result} EQUAL 0)
+-    message(FATAL_ERROR "npm intall failed: ${Result}")
+-endif()
+-
+ # Copy it back, so we can commit the lock file.
+ file(COPY ${CMAKE_CURRENT_BINARY_DIR}/package-lock.json DESTINATION ${CMAKE_CURRENT_SOURCE_DIR})
+ 
+
diff --git a/pkgs/misc/vscode-extensions/vscode-lldb/default.nix b/pkgs/misc/vscode-extensions/vscode-lldb/default.nix
new file mode 100644
index 00000000000..0ef98818dbd
--- /dev/null
+++ b/pkgs/misc/vscode-extensions/vscode-lldb/default.nix
@@ -0,0 +1,104 @@
+{ lib, stdenv, fetchFromGitHub, rustPlatform, makeWrapper, callPackage
+, nodePackages, cmake, nodejs, unzip, python3
+}:
+assert lib.versionAtLeast python3.version "3.5";
+let
+  publisher = "vadimcn";
+  pname = "vscode-lldb";
+  version = "1.6.5";
+
+  vscodeExtUniqueId = "${publisher}.${pname}";
+
+  src = fetchFromGitHub {
+    owner = "vadimcn";
+    repo = "vscode-lldb";
+    rev = "v${version}";
+    sha256 = "sha256-ppiEWFKJiUtlF8LSqBb8Xvg26B+wHcIZJhU+ANE4J2k=";
+  };
+
+  lldb = callPackage ./lldb.nix {};
+
+  adapter = rustPlatform.buildRustPackage {
+    pname = "${pname}-adapter";
+    inherit version src;
+
+    # It will pollute the build environment of `buildRustPackage`.
+    cargoPatches = [ ./reset-cargo-config.patch ];
+
+    cargoSha256 = "sha256-ksRFlbtrFAbcX/Pc6rgWUHVl859GVUOvNckxM7Q971U=";
+
+    nativeBuildInputs = [ makeWrapper ];
+
+    buildAndTestSubdir = "adapter";
+
+    cargoFlags = [
+      "--lib"
+      "--bin=codelldb"
+      "--features=weak-linkage"
+    ];
+
+    # Tests are linked to liblldb but it is not available here.
+    doCheck = false;
+  };
+
+  nodeDeps = nodePackages."vscode-lldb-build-deps-../../misc/vscode-extensions/vscode-lldb/build-deps";
+
+in stdenv.mkDerivation {
+  pname = "vscode-extension-${publisher}-${pname}";
+  inherit src version vscodeExtUniqueId;
+
+  installPrefix = "share/vscode/extensions/${vscodeExtUniqueId}";
+
+  nativeBuildInputs = [ cmake nodejs unzip makeWrapper ];
+
+  patches = [ ./cmake-build-extension-only.patch ];
+
+  postConfigure = ''
+    cp -r ${nodeDeps}/lib/node_modules/vscode-lldb/{node_modules,package-lock.json} .
+  '';
+
+  cmakeFlags = [
+    # Do not append timestamp to version.
+    "-DVERSION_SUFFIX="
+  ];
+  makeFlags = [ "vsix_bootstrap" ];
+
+  installPhase = ''
+    ext=$out/$installPrefix
+    runHook preInstall
+
+    unzip ./codelldb-bootstrap.vsix 'extension/*' -d ./vsix-extracted
+
+    mkdir -p $ext/{adapter,formatters}
+    mv -t $ext vsix-extracted/extension/*
+    cp -t $ext/adapter ${adapter}/{bin,lib}/* ../adapter/*.py
+    wrapProgram $ext/adapter/codelldb \
+      --set-default LLDB_DEBUGSERVER_PATH "${lldb.out}/bin/lldb-server"
+    cp -t $ext/formatters ../formatters/*.py
+    ln -s ${lldb.lib} $ext/lldb
+    # Mark that all components are installed.
+    touch $ext/platform.ok
+
+    runHook postInstall
+  '';
+
+  # `adapter` will find python binary and libraries at runtime.
+  postFixup = ''
+    wrapProgram $out/$installPrefix/adapter/codelldb \
+      --prefix PATH : "${python3}/bin" \
+      --prefix LD_LIBRARY_PATH : "${python3}/lib"
+  '';
+
+  passthru = {
+    inherit lldb adapter;
+  };
+
+  meta = with lib; {
+    description = "A native debugger extension for VSCode based on LLDB";
+    homepage = "https://github.com/vadimcn/vscode-lldb";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ oxalica ];
+    platforms = platforms.all;
+    broken = stdenv.isDarwin; # Build failed on x86_64-darwin currently.
+  };
+}
diff --git a/pkgs/misc/vscode-extensions/vscode-lldb/lldb.nix b/pkgs/misc/vscode-extensions/vscode-lldb/lldb.nix
new file mode 100644
index 00000000000..e04e9ad0b5b
--- /dev/null
+++ b/pkgs/misc/vscode-extensions/vscode-lldb/lldb.nix
@@ -0,0 +1,23 @@
+# Patched lldb for Rust language support.
+{ lldb_12, fetchFromGitHub }:
+let
+  llvmSrc = fetchFromGitHub {
+    owner = "vadimcn";
+    repo = "llvm-project";
+    rev = "f2e9ff34256cd8c6feaf14359f88ad3f538ed687";
+    sha256 = "sha256-5UsCBu3rtt+l2HZiCswoQJPPh8T6y471TBF4AypdF9I=";
+  };
+in lldb_12.overrideAttrs (oldAttrs: {
+  src = "${llvmSrc}/lldb";
+
+  passthru = (oldAttrs.passthru or {}) // {
+    inherit llvmSrc;
+  };
+
+  doInstallCheck = true;
+  postInstallCheck = (oldAttrs.postInstallCheck or "") + ''
+    versionOutput="$($out/bin/lldb --version)"
+    echo "'lldb --version' returns: $versionOutput"
+    echo "$versionOutput" | grep -q 'rust-enabled'
+  '';
+})
diff --git a/pkgs/misc/vscode-extensions/vscode-lldb/reset-cargo-config.patch b/pkgs/misc/vscode-extensions/vscode-lldb/reset-cargo-config.patch
new file mode 100644
index 00000000000..e95df0a9cef
--- /dev/null
+++ b/pkgs/misc/vscode-extensions/vscode-lldb/reset-cargo-config.patch
@@ -0,0 +1,19 @@
+diff --git a/.cargo/config b/.cargo/config
+index c3c75e4..e69de29 100644
+--- a/.cargo/config
++++ b/.cargo/config
+@@ -1,14 +0,0 @@
+-[build]
+-target-dir = "build/target"
+-
+-[target.armv7-unknown-linux-gnueabihf]
+-rustflags = [
+-    "-C", "link-arg=-fuse-ld=lld",
+-    "-C", "link-arg=--target=armv7-unknown-linux-gnueabihf",
+-]
+-
+-[target.aarch64-unknown-linux-gnu]
+-rustflags = [
+-    "-C", "link-arg=-fuse-ld=lld",
+-    "-C", "link-arg=--target=aarch64-unknown-linux-gnu",
+-]
diff --git a/pkgs/misc/vscode-extensions/vscode-lldb/update.sh b/pkgs/misc/vscode-extensions/vscode-lldb/update.sh
new file mode 100755
index 00000000000..8511ea3b12e
--- /dev/null
+++ b/pkgs/misc/vscode-extensions/vscode-lldb/update.sh
@@ -0,0 +1,38 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p jq nix-prefetch
+set -eo pipefail
+cd "$(dirname "${BASH_SOURCE[0]}")"
+if [[ $# -ne 1 ]]; then
+    echo "Usage: ./update.sh <version>"
+    exit 1
+fi
+
+echo "
+FIXME: This script doesn't update patched lldb. Please manually check branches
+of https://github.com/vadimcn/llvm-project and update lldb with correct version of LLVM.
+"
+
+nixpkgs=../../../..
+nixFile=./default.nix
+owner=vadimcn
+repo=vscode-lldb
+version="$1"
+
+sed -E 's/\bversion = ".*?"/version = "'$version'"/' --in-place "$nixFile"
+srcHash=$(nix-prefetch fetchFromGitHub --owner vadimcn --repo vscode-lldb --rev "v$version" --fetchSubmodules)
+sed -E 's#\bsha256 = ".*?"#sha256 = "'$srcHash'"#' --in-place "$nixFile"
+cargoHash=$(nix-prefetch "{ sha256 }: (import $nixpkgs {}).vscode-extensions.vadimcn.vscode-lldb.adapter.cargoDeps.overrideAttrs (_: { outputHash = sha256; })")
+sed -E 's#\bcargoSha256 = ".*?"#cargoSha256 = "'$cargoHash'"#' --in-place "$nixFile"
+
+src="$(nix-build $nixpkgs -A vscode-extensions.vadimcn.vscode-lldb.src --no-out-link)"
+jq '{ name, version: $version, dependencies: (.dependencies + .devDependencies) }' \
+    --arg version "$version" \
+    "$src/package.json" \
+    > build-deps/package.json
+
+# FIXME: vsce@1.93.0 breaks the build.
+sed 's/"vsce": ".*"/"vsce": "=1.88.0"/' --in-place build-deps/package.json
+
+# Regenerate nodePackages.
+cd "$nixpkgs/pkgs/development/node-packages"
+exec ./generate.sh
diff --git a/pkgs/misc/vscode-extensions/vscodeEnv.nix b/pkgs/misc/vscode-extensions/vscodeEnv.nix
index 6e4bb7b3ea8..7c58a4bdfb3 100644
--- a/pkgs/misc/vscode-extensions/vscodeEnv.nix
+++ b/pkgs/misc/vscode-extensions/vscodeEnv.nix
@@ -21,13 +21,13 @@
 , user-data-dir ? ''"''${TMP}''${name}"/vscode-data-dir''
 # if file exists will use it and import the extensions in it into this dervation else will use empty extensions list
 # this file will be created/updated by vscodeExts2nix when vscode exists
-, mutableExtensionsFile 
+, mutableExtensionsFile
 }:
-let  
+let
   mutableExtensionsFilePath = toString mutableExtensionsFile;
-  mutableExtensions = if builtins.pathExists mutableExtensionsFile 
+  mutableExtensions = if builtins.pathExists mutableExtensionsFile
                       then import mutableExtensionsFilePath else [];
-  vscodeWithConfiguration = import ./vscodeWithConfiguration.nix { 
+  vscodeWithConfiguration = import ./vscodeWithConfiguration.nix {
     inherit lib writeShellScriptBin extensionsFromVscodeMarketplace;
     vscodeDefault = vscode;
   }
@@ -63,19 +63,19 @@ let
     symlinkFromUserSetting = (user-data-dir != "");
   };
 
-  vscodeExts2nix = import ./vscodeExts2nix.nix { 
+  vscodeExts2nix = import ./vscodeExts2nix.nix {
     inherit lib writeShellScriptBin;
     vscodeDefault = vscodeWithConfiguration;
   }
   {
     extensionsToIgnore = nixExtensions;
-    extensions = mutableExtensions; 
+    extensions = mutableExtensions;
   };
   code = writeShellScriptBin "code" ''
     ${updateSettingsCmd}/bin/vscodeNixUpdate-settings
     ${updateLaunchCmd}/bin/vscodeNixUpdate-launch
     ${updateKeybindingsCmd}/bin/vscodeNixUpdate-keybindings
-    ${vscodeWithConfiguration}/bin/code --wait "$@" 
+    ${vscodeWithConfiguration}/bin/code --wait "$@"
     echo 'running vscodeExts2nix to update ${mutableExtensionsFilePath}...'
     ${vscodeExts2nix}/bin/vscodeExts2nix > ${mutableExtensionsFilePath}
   '';
diff --git a/pkgs/misc/vscode-extensions/vscodeEnvTest.nix b/pkgs/misc/vscode-extensions/vscodeEnvTest.nix
index d7e586cab6e..19a9edbf1af 100644
--- a/pkgs/misc/vscode-extensions/vscodeEnvTest.nix
+++ b/pkgs/misc/vscode-extensions/vscodeEnvTest.nix
@@ -1,5 +1,5 @@
 with import <nixpkgs>{};
-callPackage (import ./vscodeEnv.nix) { 
+callPackage (import ./vscodeEnv.nix) {
   extensionsFromVscodeMarketplace = vscode-utils.extensionsFromVscodeMarketplace;
   vscodeDefault = vscode;
 } {
@@ -9,4 +9,3 @@ callPackage (import ./vscodeEnv.nix) {
     t = "test";
   };
 }
-
diff --git a/pkgs/misc/vscode-extensions/vscodeExts2nix.nix b/pkgs/misc/vscode-extensions/vscodeExts2nix.nix
index afd176b4c5e..58cbe663c90 100644
--- a/pkgs/misc/vscode-extensions/vscodeExts2nix.nix
+++ b/pkgs/misc/vscode-extensions/vscodeExts2nix.nix
@@ -1,24 +1,24 @@
-# based on the passed vscode will stdout a nix expression with the installed vscode extensions 
+# based on the passed vscode will stdout a nix expression with the installed vscode extensions
 { lib
 , vscodeDefault
 , writeShellScriptBin
 }:
 
 ##User input
-{ vscode             ? vscodeDefault 
+{ vscode             ? vscodeDefault
 , extensionsToIgnore ? []
 # will use those extensions to get sha256 if still exists when executed.
-, extensions         ? [] 
+, extensions         ? []
 }:
-let 
+let
   mktplcExtRefToFetchArgs = import ./mktplcExtRefToFetchArgs.nix;
 in
 writeShellScriptBin "vscodeExts2nix" ''
-  echo '[' 
+  echo '['
 
   for line in $(${vscode}/bin/code --list-extensions --show-versions \
     ${lib.optionalString (extensionsToIgnore != []) ''
-      | grep -v -i '^\(${lib.concatMapStringsSep "\\|" (e : ''${e.publisher}.${e.name}'') extensionsToIgnore}\)' 
+      | grep -v -i '^\(${lib.concatMapStringsSep "\\|" (e : "${e.publisher}.${e.name}") extensionsToIgnore}\)'
     ''}
   ) ; do
     [[ $line =~ ([^.]*)\.([^@]*)@(.*) ]]
@@ -26,7 +26,7 @@ writeShellScriptBin "vscodeExts2nix" ''
     publisher=''${BASH_REMATCH[1]}
     version=''${BASH_REMATCH[3]}
 
-    extensions="${lib.concatMapStringsSep "." (e : ''${e.publisher}${e.name}@${e.sha256}'') extensions}"
+    extensions="${lib.concatMapStringsSep "." (e : "${e.publisher}${e.name}@${e.sha256}") extensions}"
     reCurrentExt=$publisher$name"@([^.]*)"
     if [[ $extensions =~ $reCurrentExt ]]; then
       sha256=''${BASH_REMATCH[1]}
diff --git a/pkgs/misc/vscode-extensions/vscodeWithConfiguration.nix b/pkgs/misc/vscode-extensions/vscodeWithConfiguration.nix
index f15d14c7441..39479d7c2f2 100644
--- a/pkgs/misc/vscode-extensions/vscodeWithConfiguration.nix
+++ b/pkgs/misc/vscode-extensions/vscodeWithConfiguration.nix
@@ -1,54 +1,54 @@
 # wrapper over vscode to control extensions per project (extensions folder will be created in execution path)
-{ lib                             
-, writeShellScriptBin             
-, extensionsFromVscodeMarketplace 
+{ lib
+, writeShellScriptBin
+, extensionsFromVscodeMarketplace
 , vscodeDefault
 }:
 ## User input
-{ vscode ? vscodeDefault                          
+{ vscode ? vscodeDefault
 # extensions to be symlinked into the project's extensions folder
-, nixExtensions        ? []                   
+, nixExtensions        ? []
 # extensions to be copied into the project's extensions folder
-, mutableExtensions    ? []        
-, vscodeExtsFolderName ? ".vscode-exts"        
+, mutableExtensions    ? []
+, vscodeExtsFolderName ? ".vscode-exts"
 , user-data-dir ? ''"''${TMP}vscodeWithConfiguration/vscode-data-dir"''
 }:
-let 
+let
   nixExtsDrvs = extensionsFromVscodeMarketplace nixExtensions;
   mutExtsDrvs = extensionsFromVscodeMarketplace mutableExtensions;
-  mutableExtsPaths = lib.forEach mutExtsDrvs ( e: 
+  mutableExtsPaths = lib.forEach mutExtsDrvs ( e:
   {
-    origin = ''${e}/share/vscode/extensions/${e.vscodeExtUniqueId}'';
-    target = ''${vscodeExtsFolderName}/${e.vscodeExtUniqueId}-${(lib.findSingle (ext: ''${ext.publisher}.${ext.name}'' == e.vscodeExtUniqueId) "" "m" mutableExtensions ).version}'';
+    origin = "${e}/share/vscode/extensions/${e.vscodeExtUniqueId}";
+    target = ''${vscodeExtsFolderName}/${e.vscodeExtUniqueId}-${(lib.findSingle (ext: "${ext.publisher}.${ext.name}" == e.vscodeExtUniqueId) "" "m" mutableExtensions ).version}'';
   }
   );
 
   #removed not defined extensions
   rmExtensions =  lib.optionalString (nixExtensions++mutableExtensions != []) ''
     find ${vscodeExtsFolderName} -mindepth 1 -maxdepth 1 ${
-        lib.concatMapStringsSep " " (e : ''! -iname ${e.publisher}.${e.name} '') nixExtensions
+        lib.concatMapStringsSep " " (e : "! -iname ${e.publisher}.${e.name} ") nixExtensions
         +
-        lib.concatMapStringsSep " " (e : ''! -iname ${e.publisher}.${e.name}-${e.version} '') mutableExtensions
+        lib.concatMapStringsSep " " (e : "! -iname ${e.publisher}.${e.name}-${e.version} ") mutableExtensions
       } -exec rm -rf {} \;
   '';
   #copy mutable extension out of the nix store
   cpExtensions = ''
-    ${lib.concatMapStringsSep "\n" (e : ''ln -sfn ${e}/share/vscode/extensions/* ${vscodeExtsFolderName}/'') nixExtsDrvs}
+    ${lib.concatMapStringsSep "\n" (e : "ln -sfn ${e}/share/vscode/extensions/* ${vscodeExtsFolderName}/") nixExtsDrvs}
     ${lib.concatMapStringsSep "\n" (ePath : ''
       if [ ! -d ${ePath.target} ]; then
         cp -a ${ePath.origin} ${ePath.target}
         chmod -R u+rwx ${ePath.target}
       fi
-      '') mutableExtsPaths} 
+      '') mutableExtsPaths}
   '';
 in
   writeShellScriptBin "code" ''
-    if ! [[ "$@" =~ "--list-extension" ]]; then 
-      mkdir -p "${vscodeExtsFolderName}" 
+    if ! [[ "$@" =~ "--list-extension" ]]; then
+      mkdir -p "${vscodeExtsFolderName}"
       ${rmExtensions}
       ${cpExtensions}
     fi
-    ${vscode}/bin/code --extensions-dir "${vscodeExtsFolderName}" ${ 
-      lib.optionalString (user-data-dir != "") ''--user-data-dir ${user-data-dir }''
+    ${vscode}/bin/code --extensions-dir "${vscodeExtsFolderName}" ${
+      lib.optionalString (user-data-dir != "") "--user-data-dir ${user-data-dir}"
       } "$@"
   ''
diff --git a/pkgs/misc/vscode-extensions/wakatime/default.nix b/pkgs/misc/vscode-extensions/wakatime/default.nix
index 30b2f94f1a5..7290c04342e 100644
--- a/pkgs/misc/vscode-extensions/wakatime/default.nix
+++ b/pkgs/misc/vscode-extensions/wakatime/default.nix
@@ -1,4 +1,4 @@
-{ stdenv
+{ lib
 , wakatime, vscode-utils }:
 
 let
@@ -8,16 +8,16 @@ in
     mktplcRef = {
       name = "vscode-wakatime";
       publisher = "WakaTime";
-      version = "4.0.0";
-      sha256 = "0bwxz8dg00k8frnvkvcngll5yaf9k7z13dg309vmw8xbdgkiyid4";
+      version = "4.0.9";
+      sha256 = "0sm2fr9zbk1759r52dpnz9r7xbvxladlpinlf2i0hyaa06bhp3b1";
     };
 
     postPatch = ''
-      mkdir -p wakatime-master
-      cp -rt wakatime-master --no-preserve=all ${wakatime}/lib/python*/site-packages/wakatime
+      mkdir wakatime-cli
+      ln -s ${wakatime}/bin/wakatime ./wakatime-cli/wakatime-cli
     '';
 
-    meta = with stdenv.lib; {
+    meta = with lib; {
       description = ''
         Visual Studio Code plugin for automatic time tracking and metrics generated
         from your programming activity
diff --git a/pkgs/misc/xosd/default.nix b/pkgs/misc/xosd/default.nix
index 561f915d663..3190cfb380d 100644
--- a/pkgs/misc/xosd/default.nix
+++ b/pkgs/misc/xosd/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, libX11, libXext, libXt, xorgproto }:
+{ lib, stdenv, fetchurl, libX11, libXext, libXt, xorgproto }:
 
 stdenv.mkDerivation rec {
   pname = "xosd";
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ libX11 libXext libXt xorgproto ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Displays text on your screen";
     homepage = "https://sourceforge.net/projects/libxosd";
     license = licenses.gpl2;